You are not logged in.
On my brand new HP laptop, auto-switching works fine between speaker and 3.5mm headphones when the laptop is stand-alone. I plug the headphones into the jack, PW/WP recognizes it, removes the speaker sink, adds the headphone sink, and all is well. (I don't know why PW/WP removes the sinks, rather than just disabling or muting them, but whatever.)
However, when I connect the laptop to my usb-c dock, the auto-switching stops working correctly. When I unplug the headphones, the speaker sink doesn't get added, and the laptop switches the audio to HDMI 1. I've tried a million different things (remove the pipewire state dir, disabling WP automatic suspensions, etc.) but nothing seems to fix it. So when docked, I wind up having to manually switch the WP profile in order to switch from speaker to headphone and back, which is becoming a real nuisance
The only thing that does fix it is when I blacklist the hdmi sound kernel module. But that's not a proper long-term fix, as I occasionally need to use hdmi sound. (I.e., when I connect the laptop to an HDMI tv.)
I'd really like to get this fixed, as about 80% of the time I use the laptop is with the dock.
Additional details:
* Relevant audio modules in use are snd_sof_pci_intel_mtl, snd_hda_codec_alc269, and snd_hda_scodec_cs35l56. (I.e., ALC269 and cirrus CS35L56)
* All relevant firmware packages are installed. (sof-firmware, linux-firmware-intel, linux-firmware-cirrus, etc.)
* USB Dock is an Anker USB C 5-in-1 (https://www.anker.com/products/a8338)
* Connected to the dock is a Logitech USB WebCam, and an HDMI monitor (without speakers).
Any suggestions for a fix much appreciated!
Last edited by darose (2025-10-15 22:01:01)
Offline
Solution found:
~/.config/wireplumber/wireplumber.conf.d/50-alsa-config.conf
monitor.alsa.rules = [
{
matches = [
{ device.name = "~alsa_card.pci-0000_00_1f.3*" }
]
actions = {
update-props = {
api.alsa.use-acp = true
api.acp.auto-profile = false
api.acp.auto-port = false
}
}
}
]
Then: systemctl --user restart wireplumber
This disables auto-switching and shows all sinks (Speaker + HDMI) in pavucontrol.
Tested on ThinkPad X1 Carbon Gen9 with USB-C dock.
NOTE:
To find your device name:
pactl list cards | grep "device.name"
Or more detailed:
wpctl status
wpctl inspect <device_id>
Last edited by lylid (Yesterday 13:12:19)
Offline