MPD
MPD (Music Player Daemon) is the local music player on your odio node. It handles audio CD, USB flash drive playback, and can also serve a full music library from a NAS.
No library management by default
Section titled “No library management by default”odio is designed as a streamer, not a library manager. A large music database on a Pi (especially older models like the B+) causes long scan times, high CPU usage, and corrupted database files — particularly over NFS.
By default, MPD only maintains a lightweight local database for CD and USB playback via go-mpd-discplayer.
If you want library browsing, you have two options: mount a NAS share locally, or run MPD on the NAS and output audio to the odio node.
Mounting a NAS share
Section titled “Mounting a NAS share”Mount your NAS music folder via NFS into MPD’s music directory:
/media/USB/Music nfs 192.168.1.21:/export/MusicAfter mounting, trigger a database update:
mpc updateYour library is now browsable from any MPD client (MALP, mympd, etc.).
Using a remote MPD on your NAS
Section titled “Using a remote MPD on your NAS”Instead of running the database locally, you can run MPD on your NAS and have it output audio to the odio node over the network via PulseAudio TCP.
NAS side
Section titled “NAS side”Configure MPD on your NAS to send audio to the odio node:
# /etc/mpd.conf on the NAS
audio_output { type "pulse" name "odio" server "192.168.1.6"}Note: Use the IP address, not
hostname.local— MPD resolveslocalhostto IPv6::1which can cause connection issues.
Restart MPD on the NAS:
systemctl restart mpd.serviceBrowsing
Section titled “Browsing”Point your MPD client (MALP, mympd, etc.) at the NAS address instead of the odio node. The NAS handles the library and database, the odio node handles the audio output.
The NAS MPD instance appears as a PulseAudio client on the odio node, with per-client volume control available from the embedded UI and the odio application.
Playback controls
Section titled “Playback controls”MPD exposes itself as an MPRIS player via mpDris2. This is what allows the odio API to discover and control MPD playback alongside all other sources. Playback is controllable from the embedded UI, the odio application, Home Assistant, or any MPD client.
MPD clients
Section titled “MPD clients”For library browsing and queue management, you can use any MPD client:
- M.A.L.P. — Android MPD client with cover art support
- myMPD — lightweight web-based MPD client (vote to integrate it in odio)