Skip to content

Webradios

odio plays internet radio out of the box. The most polished entry point is myMPD's built-in WebradioDB browser on the odio node itself; the upmpdcli backend also exposes a few built-in station sources in the UPnP/DLNA library for any control point, and Home Assistant or a remote MPD work too.

myMPD is the web UI bundled with odio since 2026.4.2b2, reachable at http://<ip>:8080 on the odio node and pointed at the local MPD. See MPD → myMPD web UI for install details and the rest of its use cases.

myMPD integrates webradiodb natively for browsing, searching, and adding stations to favorites — a much better webradio experience than the raw-playlist approach below. Stations not in WebradioDB can be added by URL directly from the favorites editor, with name, genre, country, codec and the rest of the metadata fields. mympd.service is wired into odio-api's systemd watch list, so the stream shows up as the active MPD media player in the embedded UI like any other MPD playback, with transport controls and the current stream title.

Browsing an odio node from any UPnP/DLNA control point (BubbleDS Next, BubbleUPnP, Home Assistant's media browser) exposes these radio sources as top-level folders in the library:

  • Radio Browser, the radio-browser.info community catalog, navigable by country, language, or tag.
  • Radio Paradise, direct access to Radio Paradise's streams.
  • Mother Earth Radio, high-quality streams from Mother Earth Radio.
  • Upmpdcli Radio List, a server-side curated station list configured in upmpdcli.

Pick a station, it plays through the odio node like any other source. Playback is visible in the odio API as an MPD session, controllable from the embedded UI, the odio application, or Home Assistant.

Embedded UI on raspodio3bwifi showing MPD playing Dub Incorporation - Dario's Dub from La Grosse Radio Reggae, with transport controls and the Built-in Audio Stereo output active

If you'd rather stay inside Home Assistant, its Radio Browser integration is backed by the same radio-browser.info database. It adds a station catalog to the HA media browser that can be played to any odio node exposed as an AirPlay, DLNA/UPnP, or MPD media player entity.

Discovery and browsing live in HA, playback lands on odio as any other network speaker.

Home Assistant Radio Browser grid view with country flags (Popular, By Category, By Language, Local stations, Afghanistan, Albania, Algeria, Argentina, Australia, Austria), La Grosse Radio Reggae playing in the footer with odio Music Player Daemon as the active output

MPD plays HTTP streams natively, so any station URL can be queued directly:

Terminal window
mpc add http://example.stream/radio.mp3
mpc play

Any MPD client (M.A.L.P., myMPD, ncmpcpp) can store stations as playlists or favorites. The remote MPD setup in the MPD guide also applies here, if you already run MPD on a NAS with its library and station list and output audio to the odio node over PulseAudio TCP, your station favorites sit alongside the rest of your library.

Example: drop an M3U station list in MPD's playlist folder

Take any M3U file of station URLs and drop it in MPD's playlist directory, either on the odio node itself or on the NAS running MPD. The playlist then shows up in any MPD client next to your regular playlists.

Format is plain M3U, one #EXTINF line per station followed by the stream URL:

#EXTM3U
#EXTINF:0,FIP
http://icecast.radiofrance.fr/fip-hifi.aac
#EXTINF:0,FIP Jazz
http://direct.fipradio.fr/live/fip-webradio2.mp3
#EXTINF:0,TSF Jazz
http://tsfjazz.ice.infomaniak.ch:80/tsfjazz-high
#EXTINF:0,Radio Nova
http://radionova.ice.infomaniak.ch/radionova-256.aac
#EXTINF:0,Couleur 3
http://stream.srg-ssr.ch/m/couleur3/mp3_128

Drop it as e.g. ~/.mpd/playlists/webradios-fr.m3u (or wherever your playlist_directory points), run mpc lsplaylists to confirm MPD picked it up, then load and play it from any client.

WebradioDB ships its own station artwork, so catalog stations already display cover art. For favorite stations not in any catalog, mpDris2 v0.10.0 added a CUE-based workaround that reuses the same cover-art pipeline as audio CDs: drop a cover.{jpg,png,webp} alongside a playlist.cue in MPD's music_directory, and the cover surfaces in the odio UI, myMPD, and any other MPRIS consumer while the station plays.

Per station, create a folder under MPD's music directory and drop a cover image inside:

Terminal window
mkdir /media/USB/GrosseRadioReggae/
# Place cover.png (or cover.jpg, cover.webp) in there.

Then write a playlist.cue next to the cover, referencing the stream URL:

REM COVER "/media/USB/GrosseRadioReggae/"
REM GENRE "Reggae"
PERFORMER "La Grosse Radio Reggae"
TITLE "La Grosse Radio Reggae"
FILE "http://hd.lagrosseradio.info/lagrosseradio-reggae-192.mp3" MP3
TRACK 01 AUDIO
TITLE "La Grosse Radio Reggae"

The cover surfaces because mpDris2 scans the directory holding the loaded .cue for cover.{jpg,png,webp}, the same CUE fallback step that makes audio CDs work. The REM lines (including REM COVER) are documentation only, mpDris2 doesn't parse them. Run mpc update, browse to the folder in any MPD client, and play the track inside the CUE virtual directory (MPD's CUE plugin is configured with as_directory "true" on odio by default).

Hacky, but useful for favorite stations or motivated setups. See discussion #33 for the full rationale. mpDris2 v0.11.0 will add a MusicBrainz / Cover Art Archive fallback for cases where maintaining folder structures by hand isn't appealing.