Content:
A recent update to pipewire has broken audio on my system.
A quick check of the system journal shows the following repeated messages:
pipewire-media-session[2663]: device 'alsa_card.pci-0000_00_1f.3': can't restore profile: No such device
pipewire[2662]: ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.4/work/alsa-lib-1.2.4/src/dlmisc.c:224:(snd_dlsym_verify) unable to verify version for symbol snd_func_private_integer
pipewire[2662]: ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.4/work/alsa-lib-1.2.4/src/conf.c:4733:(_snd_config_evaluate) symbol snd_func_private_integer is not defined inside (null)
pipewire[2662]: ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.4/work/alsa-lib-1.2.4/src/conf.c:5233:(snd_config_expand) Evaluate error: No such device or address
pipewire[2662]: ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.4/work/alsa-lib-1.2.4/src/conf.c:3917:(snd_config_hook_load) Unable to expand filenames in the pre-load section
pipewire[2662]: ALSA lib /var/tmp/portage/media-libs/alsa-lib-1.2.4/work/alsa-lib-1.2.4/src/conf.c:3739:(snd_config_hooks_call) function snd_config_hook_load_for_all_cards returned error: No such device or address
Fortunately, the fix for this was simple.
systemctl --user enable --now wireplumber.service
It turns out that since version 0.3.39, pipewire requires wireplumber as its session handler. Version 0.3.49 is the newly stabilised version, replacing the much older 0.3.36, so this requirement will now impact Gentoo users.
The update did pull wireplumber in as a dependency, but pipewire needs it to actually be running as well. Makes sense I guess.