No sound output from USB headsets on Ubuntu 21.04
I just upgraded from Ubuntu 20.04 to 21.04. Since the upgrade, I'm unable to get any sound output to USB headsets. The microphone on the headsets works. Output to the built-in speakers or headset jack also works.
This worked perfectly on Ubuntu 20.04.
In Sound settings, if I try to test the headphones, no speakers are displayed. This happens for the two USB headsets I tested (Sennheiser PC 8 and Plantronics 5200)
From what I understand, the audio implementation was changed from Pulseaudio to Pipewire. Anything I find via Google still refers to Pulseaudio. So I'm a bit lost.
Any advice on how to debug this issue would be greatly appreciated.
Update:
pactl list cards
Shows the headset. I believe this looks ok... but I'm not an expert.
Card #71
Name: alsa_card.usb-Sennheiser_Communications_Sennheiser_USB_headset-00
Driver: alsa
Owner Module: n/a
Properties:
device.enum.api = "udev"
device.api = "alsa"
media.class = "Audio/Device"
api.alsa.path = "hw:1"
api.alsa.card = "1"
api.alsa.card.name = "Sennheiser USB headset"
api.alsa.card.longname = "Sennheiser Communications Sennheiser USB headset at usb-0000:00:14.0-2, full sp"
device.plugged.usec = "998216405"
device.bus_path = "pci-0000:00:14.0-usb-0:2:1.0"
device.sysfs.path = "/sys/devices/pci0000:00/0000:00:14.0/usb1/1-2/1-2:1.0/sound/card1"
device.bus-id = "usb-Sennheiser_Communications_Sennheiser_USB_headset-00"
device.bus = "usb"
device.subsystem = "sound"
device.vendor.id = "5013"
device.vendor.name = "Sennheiser Communications"
device.product.id = "37"
device.product.name = "Headset [PC 8]"
device.serial = "Sennheiser_Communications_Sennheiser_USB_headset"
device.form_factor = "headset"
device.name = "alsa_card.usb-Sennheiser_Communications_Sennheiser_USB_headset-00"
device.description = "Headset [PC 8]"
device.nick = "Sennheiser USB headset"
device.icon_name = "audio-headset-usb"
api.alsa.use-acp = "true"
api.acp.auto-profile = "false"
api.acp.auto-port = "false"
api.dbus.ReserveDevice1 = "Audio1"
factory.id = "14"
client.id = "31"
object.id = "71"
object.path = "alsa:pcm:1"
alsa.card = "1"
alsa.card_name = "Sennheiser USB headset"
alsa.long_card_name = "Sennheiser Communications Sennheiser USB headset at usb-0000:00:14.0-2, full sp"
alsa.driver_name = "snd_usb_audio"
device.string = "1"
Profiles:
off: Off (sinks: 0, sources: 0, priority: 0, available: yes)
output:analog-stereo+input:mono-fallback: Analog Stereo Output + Mono Input (sinks: 1, sources: 1, priority: 6501, available: yes)
output:analog-stereo: Analog Stereo Output (sinks: 1, sources: 0, priority: 6500, available: yes)
pro-audio: Pro Audio (sinks: 1, sources: 1, priority: 1, available: yes)
input:mono-fallback: Mono Input (sinks: 0, sources: 1, priority: 1, available: yes)
Active Profile: output:analog-stereo+input:mono-fallback
Ports:
analog-input-mic: Microphone (type: Mic, priority: 8700, latency offset: 0 usec, availability unknown)
Properties:
port.type = "mic"
device.icon_name = "audio-input-microphone"
card.profile.port = "0"
Part of profile(s): input:mono-fallback, output:analog-stereo+input:mono-fallback
analog-output-headphones: Headphones (type: Headphones, priority: 9900, latency offset: 0 usec, availability unknown)
Properties:
port.type = "headphones"
device.icon_name = "audio-headphones"
card.profile.port = "1"
Part of profile(s): output:analog-stereo, output:analog-stereo+input:mono-fallback
However, pactl list sinks short
does not show it, only the built-in speakers that are working:
43 alsa_output.pci-0000_00_1f.3.analog-stereo PipeWire s32le 2ch 48000Hz SUSPENDED
Continuing my research, I eventually found the issue in journalctl --user -u pipewire
:
Aug 02 10:46:32 backxp-HP-EliteBook-840-G5 pipewire[2007]: ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'cards.USB-Audio.pcm.front.0:CARD=1'
Aug 02 10:46:32 backxp-HP-EliteBook-840-G5 pipewire[2007]: ALSA lib conf.c:4745:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
Aug 02 10:46:32 backxp-HP-EliteBook-840-G5 pipewire[2007]: ALSA lib conf.c:5233:(snd_config_expand) Evaluate error: No such file or directory
Aug 02 10:46:32 backxp-HP-EliteBook-840-G5 pipewire[2007]: ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM front:1
Aug 02 10:46:32 backxp-HP-EliteBook-840-G5 pipewire[2007]: 'front:1': playback open failed: No such file or directory
Aug 02 10:46:32 backxp-HP-EliteBook-840-G5 pipewire[2007]: adapter 0x55c2e968c8b0: can't get format: No such file or directory
Aug 02 10:46:32 backxp-HP-EliteBook-840-G5 pipewire[2007]: usage: node.name=<string>
This lead me to the following bug report: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/332
I have pipewire 0.3.32, so I don't understand why this did not fix my issue.
Until the bug mentioned at the end of my question is properly resolved, the correct answer (and workaround) to my question seems to be to manually restart all Pipewire related services:
systemctl --user restart pipewire-media-session pipewire-pulse pipewire
Update: I have filed a new Pipewire issue for this, as I do not seem to be able to re-open the previous one: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1478