Raspberry PI upgrade to Debian 11 (bullseye)
Debian 11 became available for the Raspberry Pi Model B Rev 2 I have. The upgrade was relatively painless, apart from:
- The Pi was requesting a DHCP address on boot, and ignoring the static IP I had set.
-
The Music Player Daemon (
mpd) stopped working (this was not unexpected).
Network adapter addressing
At first, I thought this was caused by a renaming of the ethernet
device by systemd and hence could be solved by using
systemd-networkd, as I had done previously on amber. To that end, I created a file called
/etc/systemd/network/ethernet.networks with the following
contentst:
[Match] Name=enx* [Network] Address=192.168.0.17/24 Gateway=192.168.0.1 DNS=192.168.0.4 Domains=hydrus.org.uk
Then, enable systemd-networkd and systemd-resolved. Also disable
the networking.service which handles the old-style
/etc/networking/interfaces settings:
sudo systemctl enable systemd-networkd sudo systemctl enable systemd-resolved sudo systemctl disable networking.service
Confidently rebooted and found the Pi was still requesting a DHCP
address. After rummaging through /var/log/daemon.log,
I tracked down the offending package - connman, some
Intel-provided network connection manager. After:
sudo apt purge connman
and a reboot, the DHCP problem was solved.
Getting mpd working
Mpd under buster (Debian 10) had been built locally (so
as to obtain an up-to-date version), therefore the shared libraries it had
been linked with no longer existed on bullseye. The
mpd version in ports was now in advance of the local
mpd version, so I figured I could just install from
ports from now on.
I noted that the configuration file location was
/etc/mpd.conf, so as an initial test, I copied the
existing local version of mpd.conf to /etc
to minimise the number of changes (the local config runs
mpd as root). The Android client I use
(MALP) worked just fine against the new version of
mpd. In the provided configuration file, it
recommended against running mpd as root (sensible
advice). However, when I copied the local settings to the package
configuration file and restarted mpd, the volume
control on MALP did not work. Played music though.
At first I thought this might be a permissions issue, so I ensured
the mpd user was part of the audio group and tried again. No luck.
Eventually, I found that the root user had an .asoundrc
file that set the on-board sound card as the default (default is
normally 0, i.e. HDMI).
It's contents are as follows:
pcm.!default {
type asym
playback.pcm {
type plug
slave.pcm "output"
}
capture.pcm {
type plug
slave.pcm "input"
}
}
pcm.output {
type hw
card 1
}
ctl.!default {
type hw
card 1
}
I copied this .asoundrc file to the
mpd user home directory (/var/lib/mpd) and tried
again. This worked; MALP had a usable volume control.
I am unclear as to why mpd needs the on-board sound
card to be set as the default but as this solution works for me,
I'll not investigate further.
Note, another solution (not tested by me) is to set the default
sound card globally in /usr/share/alsa/alsa.conf by
changing 0 to 1 in these lines:
defaults.ctl.card 0 defaults.pcm.card 0