SolarOS

SolarOS 4.13.4 manual · app

webradio

Stream a direct MP3 URL through the default registered audio output. On a graphical display shell, WebRadio opens a two-tab media-player GUI. On UART, USB CDC, Telnet, SSH, and other text shells, it opens a station-list TUI.

The catalog is stored as .solar/webradio/catalog.bin on the current storage root and starts with the Nightride, Chillsynth, Datawave, Spacesynth, Darksynth, Horrorsynth, EBSM, and Rekt streams. Catalog changes survive reboot. On first use after an upgrade, WebRadio moves an older NVS catalog to this file and removes the large NVS blob. reset restores the initial list.

Usage:

webradio
webradio --tui
webradio https://stream.nightride.fm/nightride.mp3
webradio list
webradio add MyStation https://example.net/live.mp3
webradio remove MyStation
webradio reset

--tui forces the station-list TUI even on a graphical shell and can be combined with a direct stream URL. Catalog-management commands also accept it as a harmless interface override.

URLs are literal HTTP or HTTPS MP3 stream URLs. WebRadio does not translate station names or website addresses and does not discover streams from HTML pages. The initial implementation does not support playlists, HLS, or AAC.

Controls:

The app is available on Wi-Fi builds even when the board has no built-in audio hardware. Playback starts when a default output device has been registered, including an output supplied by a runtime-attached expansion.

Network reception and MP3 decoding feed an app-owned PCM jitter buffer. A separate playback worker consumes that buffer at the audio device's steady rate. Both workers continue while the resumable WebRadio session is suspended or another foreground app is selected. Closing WebRadio cancels the network operation through its bounded read timeout, stops both workers, and releases the audio device. The network worker exclusively owns the HTTP request during that shutdown.

The playback worker, not the decoder, publishes visualizer samples after each audio write. The widgets retain only the latest played block and may drop intermediate display frames, so buffering does not put the visualization ahead of the audio. WebRadio uses 256 scope samples and a 256-point SIMD-eligible FFT, grouped into 32 displayed frequency bands.

service.signal-widgets provides the reusable thread-safe signed-16-bit oscilloscope and spectrum components used by the graphical player. The widgets accept mono or interleaved multichannel PCM and own their snapshot storage; applications retain ownership of their audio streams.

Join us on: