Skip to content

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.

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.

Mount your NAS music folder via NFS into MPD’s music directory:

/media/USB/Music nfs 192.168.1.21:/export/Music

After mounting, trigger a database update:

Terminal window
mpc update

Your library is now browsable from any MPD client (MALP, mympd, etc.).

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.

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 resolves localhost to IPv6 ::1 which can cause connection issues.

Restart MPD on the NAS:

Terminal window
systemctl restart mpd.service

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.

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.

For library browsing and queue management, you can use any MPD client: