While setting up my new notebook, I discovered that my bluetooth headset would not work after suspend to RAM.
It works perfectly fine when cold-booting (or restarting) - however after resume I struggled to get it to work without restarting the bluetooth service (or pulseaudio).
I did a lot of research around this area, suspecting the default configurations of either pulseaudio or bluez to be at fault, however none of the "ultimate guides for bluetooth headsets in linux" I found online did work. I also could not rule out the headset (The Dash), which has a certain age and is not without flaws.
The headset would connect, but then would immediately disconnect (or connect and not be recognized as Audio device).
The log would show the following errors
Jan 18 22:30:57 xps pulseaudio: E: [pulseaudio] backend-native.c: Device doesnt exist for /org/bluez/hci0/dev_XX_XX_XX_XX_XX_XX Jan 18 22:30:57 xps bluetoothd: Headset Voice gateway replied with an error: org.bluez.Error.InvalidArguments, Unable to handle n Jan 18 22:31:03 xps bluetoothd: Discover: Connection timed out (110) Jan 18 22:31:11 xps bluetoothd: Discover: Connection timed out (110)
After searching for quite some time (a few hours), I ran into this bugreport in Red Hat's bug tracker, which seemed to somehow match my problem.
I didn't search for problematic updates as the laptop is brand-new and the headset never worked flawlessly, but looking back (and knowing the solution) it does make sense.
After downloading the package from archive.archlinux.org and downgrading bluez from
bluez-5.47-2 the headset connected immediately. I then added the package to
IgnorePkg so regular updates are not affected.
I'll be monitoring the bug-report for changes, hoping for a soonish fix in bluez.
UPDATE: The new release (bluez-5.48-2) fixed the problem according to the bug-report. I installed it on my system, and indeed, the problem is now gone.
After fixing my bluetooth headset (which i use most of the days), I also tried my wired headset (while recharging the bluetooth headset) only to discover that there was a constant background noise (hissing, crackling, ...).
Again, the problem only manifested itself after Suspend or hibernate, but not when restarting / cold booting.
I could not get to the bottom of this problem yet (I will update this post should i ever find a permanent solution) - but for now I am not 100% sure what the problem is.
What i know is:
- the noise is only present after resume
- the noise is only present in devices connected via 3.5mm Jack
- the noise is gone if i reload the kernel-module snd_hda_intel
Changing the power-related settings of the module did not help (with power-saving turned off, the problem still appears after every resume).
The only solution i found so far is to reload the kernel-module (for now manually, whenever i need it) using the following script:
#!/bin/bash #fix pulseaudio headset crackling systemctl --user stop pulseaudio sudo rmmod snd_hda_intel sudo modprobe snd_hda_intel systemctl --user start pulseaudio echo "pulseaudio restarted"
The script stops pulseaudio, removes and reloads the module, and starts pulseaudio again.
It produces a fairly loud crack in the headset, and afterwards i need to unplug/replug my headset so it is set as default source, however at least i don't have to reboot whenever i want my headset to work.
I have not given up on a permanent solution, but this is something that does not bother me too much short-term and i don't currently want to invest too much time.