Stuck on "Dummy Output" after login: WirePlumber does not retry when the
ALSA device is briefly busy (EBUSY) due to a race with GDM's greeter
PipeWire
Hardware / system:
- Desktop ASUS, AMD Ryzen APU (Phoenix1), Realtek ALC1220 on the Ryzen HD
Audio Controller (snd_hda_intel, pci 0000:0a:00.6), plus AMD HDMI audio.
- Debian 13 (trixie), GNOME on Wayland.
- Kernel: 7.1.13+deb13-amd64 (backports).
- pipewire 1.4.2-1, wireplumber 0.5.8-2, pipewire-pulse 1.4.2-1,
gdm3 48.0-2, gnome-shell 48.7-0+deb13u2.
Steps to reproduce:
1. Reboot and log in at the GDM screen (intermittent; depends on timing
between the greeter session and the user session).
2. Check sound output in GNOME: only "Dummy Output" is offered.
Expected behavior:
The ALC1220 analog sink should be available.
Actual behavior:
Only "Dummy Output" appears, even though the ALSA card is present
(aplay -l shows "card 1: Generic_1, device 0: ALC1220 Analog").
What I found in the logs of a failing boot:
- 12:05:35 kernel: the codec probes fine at boot
("snd_hda_codec_alc882 hdaudioC1D0: autoconfig for ALC1220"), so the
kernel/driver side is OK.
- 12:05:37 two independent PipeWire stacks start at the same time:
one for the GDM greeter session (user Debian-gdm, uid 110) and one for
the user session (uid 1000). Both start pipewire + wireplumber +
pipewire-pulse.
- 12:05:38 the user session's pipewire fails to open the PCM because the
greeter's pipewire is holding it:
pipewire: spa.alsa: 'front:1': capture open failed: Dispositivo o
recurso ocupado (EBUSY)
pipewire: mod.adapter: can't get format: Dispositivo o recurso ocupado
wireplumber: s-monitors: Failed to create
alsa_input.pci-0000_0a_00.6.analog-stereo:
Object activation aborted: PipeWire proxy destroyed
- A few seconds later the greeter session is torn down and the device is
released, but WirePlumber never retries, so the session is stuck with
the dummy output until the audio stack is restarted.
Workaround:
systemctl --user restart pipewire pipewire-pulse wireplumber
brings the ALC1220 sink back immediately. Currently I run this via an
autostart script with a 3-second delay.
Notes:
- The same symptom has also appeared after suspend/resume.
- It would be nice if WirePlumber retried node creation when opening the
ALSA device fails with EBUSY (or if the GDM greeter did not hold the
audio device while the user session is starting).
Thanks,
Juan Pablo