You are not logged in.
I think I've narrowed this down enough to post.
When using bluetooth headphones (WH-1000XM5) audio from newly started applications/browser windows etc there is some chance that all audio will then stop being sent to the bluetooth headphones. It's pretty reproducible too about 10-20% of new playback can cause this outcome.
This echo cancel config seems like the crux of the issue:
❯ cat .config/pipewire/pipewire.conf.d/60-echo-cancel.conf
# from https://wiki.archlinux.org/title/PipeWire/Examples#Echo_cancellation
context.modules = [
# Echo cancellation
{
name = libpipewire-module-echo-cancel
args = {
# Monitor mode: Instead of creating a virtual sink into which all
# applications must play, in PipeWire the echo cancellation module can read
# the audio that should be cancelled directly from the current fallback
# audio output
monitor.mode = true
# The audio source / microphone wherein the echo should be cancelled is not
# specified explicitly; the module follows the fallback audio source setting
source.props = {
# Name and description of the virtual source where you get the audio
# without echoed speaker output
node.name = "source_ec"
node.description = "Echo-cancelled source"
}
aec.args = {
# Settings for the WebRTC echo cancellation engine
webrtc.gain_control = true
webrtc.extended_filter = false
# Other WebRTC echo cancellation settings which may or may not exist
# Documentation for the WebRTC echo cancellation library is difficult
# to find
#webrtc.analog_gain_control = false
#webrtc.digital_gain_control = true
#webrtc.experimental_agc = true
#webrtc.noise_suppression = true
}
}
}
]If I disable this config, it's not reproducible anymore.
These are the symptoms I see when the problem occurs.
journal
Dec 18 09:40:16 hostname pipewire[2251]: pw.node: (alsa_input.pci-0000_11_00.6.analog-stereo-60) graph xrun not-triggered (749 suppressed)
Dec 18 09:40:16 hostname pipewire[2251]: pw.node: (alsa_input.pci-0000_11_00.6.analog-stereo-60) xrun state:0x759fec9d3008 pending:2/7 s:6768717876191 a:6768720545861 f:6768720546392 waiting:2669670 process:531 status:triggered
Dec 18 09:40:18 hostname pipewire[2251]: pw.node: (alsa_input.pci-0000_11_00.6.analog-stereo-60) graph xrun not-triggered (750 suppressed)
Dec 18 09:40:18 hostname pipewire[2251]: pw.node: (alsa_input.pci-0000_11_00.6.analog-stereo-60) xrun state:0x759fec9d3008 pending:2/6 s:6770720540990 a:6770723208326 f:6770723208566 waiting:2667336 process:240 status:triggered
Dec 18 09:40:20 hostname pipewire[2251]: pw.node: (alsa_input.pci-0000_11_00.6.analog-stereo-60) graph xrun not-triggered (750 suppressed)
Dec 18 09:40:20 hostname pipewire[2251]: pw.node: (alsa_input.pci-0000_11_00.6.analog-stereo-60) xrun state:0x759fec9d3008 pending:2/6 s:6772723180921 a:6772725856623 f:6772725856813 waiting:2675702 process:190 status:triggered
Dec 18 09:40:22 hostname pipewire[2251]: pw.node: (alsa_input.pci-0000_11_00.6.analog-stereo-60) graph xrun not-triggered (749 suppressed)pasystray
The bar below the output device will dissapear.
* Screenshot when audio is playing and healthy
* Screenshot When audio is playing and broken
I can restore the audio by toggling the headphones fallback checkbox in the UI.
Other wireplumber/pipewire configs:
❯ cat .config/wireplumber/wireplumber.conf.d/11-bluetooth-policy.conf
wireplumber.settings = {
bluetooth.autoswitch-to-headset-profile = false
}❯ cat /etc/pipewire/pipewire-pulse.conf.d/50-pulse-autoswitch.conf
context.exec = [
{ path = "pactl" args = "load-module module-always-sink" }
{ path = "pactl" args = "load-module module-switch-on-connect" }
]Package versions
alsa-card-profiles 1:1.2.7-1
alsa-lib 1.2.13-1
alsa-plugins 1:1.2.12-4
alsa-topology-conf 1.2.5.1-4
alsa-ucm-conf 1.2.13-2
alsa-utils 1.2.13-2
blueman 2.4.3-1
bluez 5.79-1
bluez-libs 5.79-1
bluez-utils 5.79-1
lib32-alsa-lib 1.2.13-1
lib32-alsa-plugins 1.2.12-1
lib32-libpulse 17.0+r43+g3e2bb8a1e-1
libpulse 17.0+r43+g3e2bb8a1e-1
libwireplumber 0.5.7-1
linux 6.12.4.arch1-1
pasystray 0.8.2-2
pipewire-alsa 1:1.2.7-1
pipewire-pulse 1:1.2.7-1
wireplumber 0.5.7-1linux-lts does not change behavior.
I even installed a new PCIE btooth controller to test (Intel AX210 bluetooth/wireless PCIE) versus my mobo controller (Mediatek MT7922) - but again no difference.
Would appreciate any help!
Offline
I use Gentoo but I have a similar issue. I also use the same echo cancellation config (copied from the Arch Wiki). The echo cancellation works, but I get crackling audio. Disabling the config fixes the issue. My headset is Logitech G733, which is wireless but doesn't use Bluetooth.
When the config is active and audio is being played, a lot of warnings like the following appear in the journal:
pw.node: (alsa_input.usb-Logitech_G733_Gaming_Headset-00.mono-fallback-61) graph xrun not-triggered (108 suppressed)
pw.node: (alsa_input.usb-Logitech_G733_Gaming_Headset-00.mono-fallback-61) xrun state:0x7fadb49b0008 pending:4/6 s:6167772143340 a:6167788749893 f:6167788752353 waiting:16606553 process:2460 status:triggered
pw.node: (echo-cancel-capture-41) xrun state:0x7fadb6026008 pending:0/1 s:6167788749893 a:6167772177684 f:6167772191738 waiting:18446744073692979407 process:14054 status:triggered
pw.node: (source_ec-42) xrun state:0x7fadb6025008 pending:0/1 s:6167788749893 a:6167772192645 f:6167772202696 waiting:18446744073692994368 process:10051 status:triggered
pw.node: (alsa_output.pci-0000_01_00.1.hdmi-stereo-60) xrun state:0x7fadb49b2008 pending:0/2 s:6167788876583 a:6167772327798 f:6167772392169 waiting:18446744073693002831 process:64371 status:triggeredI don't have any other config besides the one you also use.
Offline