Yesterday I ended up disappearing down an mpd_old rabbit hole after upgrading one of my Volumio players from a HiFiBerry DAC+ Zero to an IQAudio DAC Pro.
Posting the experience here as it might save someone a lot of rebooting and trawling through documentation.
System.
Volumio 3.378
Raspberry Pi 3B+
IQ Audio DAC Pro (same results with IQ Audio DAC Plus)
mpd_oled plugin 1.1.1 (same results with 1.0.18)
SH1106 I2C OLED (type 6)
Symptom.
Starting playback after rebooting produces an ‘alsa device not found’ pop-up. The pop-up may refer to a ‘volumio’ device or it may say something oddly different.
alsacap reports device busy for the audio interface.
Workaround.
- Install your audio interface and make sure Volumio is working properly after rebooting. If you are changing audio interfaces as I was I recommend uninstalling the mpd_oled plug-in while you get the audio interface working. A couple additional reboots now can save some head scratching later.
- Install the mpd_oled plug-in. Enable the plug-in and configure as required.
- Disable the plug in and reboot.
- After Volumio has started go ahead and enable the mpd_oled plug-in.
- Reselect your music track from the library before clicking Play. (Otherwise you might hear nothing and think you still have a problem to solve, like I did.)
- mpd_oled works fine.
- Try to remember to disable the mpd_oled plug-in before rebooting.
Additional.
As an aside I also discovered /var/log/mpd.log was being spammed around once a second
Dec 08 23:17 : client: [30] opened from local
Dec 08 23:17 : client: [30] closed
The log spam appears to be down to a bug in mpd whereby the log level defaults to ‘secure’ despite what it says in the mpd.conf file. The spam starts as soon as the mpd_oled plug in is enabled and is not specific to the IQAudio card. My HiFi Berry was producing the same behaviour, I just had not noticed it.
Resolution.
Edit /volumio/app/plugins/music_service/mpd/mpd.conf.tmpl
Uncomment the line
log_level "default"
Reboot, which should trigger volumio to regenerate /etc/mpd.conf
Comments.
As far as I can tell the mpd_oled / device busy issue is down to the mpd_oled_plugin and mpd_oled services starting before the volumio and mpd services are ready for them. I did take a look at trying to delay systemd from starting mpd_oled but couldn’t quite fathom the interaction with cava. I managed to get mpd_oled working but without the cava element of the display.