The one thing I'm hoping for in every Linux kernel release is better support for Bluetooth and associated drivers. Besides some GPU issues, Bluetooth is the big thing preventing me from having a good consumer desktop experience on Linux.
The first thing I've done for the last few releases was immediately search the release log for "bluetooth".
I agree with you. Bluetooth works, but just barely, and it feels like it's getting worse.
Somewhere between 5.8 and 5.9 reconnecting became incredibly flaky for me (XPS 9300). Headphones will pair and connect fine the first time, but then completely fail to reconnect properly if I turn them off or walk out of range.
Sometimes I can connect to them again, but they don't get registered in pulseaudio, even after killing and restarting it.
Sometimes they will connect, then immediately disconnect again 5 seconds later (rinse and repeat until removed and repaired)
Sometimes they fail to connect entirely.
I end up consistently removing the device, restarting the bluetooth service, and then repairing fresh. In which case they work until the next disconnect.
---
It's hardly the end of the world, and it's a little amazing that my biggest complaint about linux desktop these days is flaky bluetooth, but it's certainly annoying.
I had a similar problem -- the "pairs and connects fine but then fails later" sounds very much like https://bugs.archlinux.org/task/68346, which is now fixed!
The bluetooth support certainly could be improved in many respects, although I have to say that it does seem like things have been getting considerably better as compared to ~4 years ago when I first started using bluetooth on Linux.
I've also wondered if a lot of the bluetooth problems on Linux are actually caused by the desktop manager.
Most of the problems I've personally experienced have seemingly been tied to using old versions of Gnome on Ubuntu. In fact, Gnome in general has always been rough for me on bluetooth; the bluetooth connection app still needs some love, but I've noticed it being more reliable with recent versions. I particularly noticed this when I was running a newer version of Gnome on Fedora 31, but then running an older version of Gnome on Ubuntu 18.04 (for work). The older version of Gnome's bluetooth was considerably worse.
For about the past year, however, I've been using Fedora / KDE on desktop and OpenSUSE / KDE on my laptop. This has been by far the best bluetooth experience I've had on Linux. Thank you to whoever wrote the KDE bluetooth code, because it is consistent and reliable.
So I don't think it is totally a kernel problem. YMMV depending on what cards/adapters you're using (I'm using a mix of Intel and some USB sticks from a fly-by-night vendor).
What doesn't work with Bluetooth today on a distro like Debian 10?
I have Bluetooth 4.1 built into my WiFi card, over the last year the only issue I have had was manually having to switch to HSP mode on my headphones to use the Mic. Switching from A2DP to HSP was easy, just click Audio in the settings menu in the upper right corner in Gnome.
Besides that, Bluetooth mice and headphones &keyboards just work.
On my Dell 13in XPS laptop from 2018 (9370), Bluetooth used to allmost work, but I had to manually pair my headset every time. Now, with the latest Ubuntu, it often connects automatically, but then looses connection immediately, or fails to see that the device can play audio. After some fiddling and turning the device on an off it will work if i start playing audio right away. It will then work for a long time. The amount of fiddling and rebooting of headphones seems to grow with every new Ubuntu release. It may also be a user space error, but in any case, Bluetooth is far from "just working", unfortunately.
Are you using an Intel wireless chipset or the terrible Broadcom one that Dell used to use? Not sure what Dell was using in 2018, but I replaced the garbage Broadcom chip in my 2015-era XPS 13 with a much more reliable Intel model, and most of by bluetooth problems were immediately fixed.
That said, the replacement process is pretty fiddly...Dell likes using lots of very small screws made of very soft metal.
I've also found that Gnome's bluetooth handling varies from barely acceptable to confusingly horrible. KDE's bluetooth handling has been way more reliable for me across multiple machines and distros. So the problem may very well be in userspace.
I have the XPS13 9380 (also 2018), and it came with an Atheros WiFi chipset (Killer, I believe). Looks like the Bluetooth is on separate hardware here; lsusb reports it as a "Foxconn / Hon Hai" chipset.
I don't really use BT for anything, so I can't comment on its quality. WiFi has been completely fine, though. Either way, I believe both the WiFi and BT hardware are soldered in on this model.
Many bluetooth headphones support microphones with A2DP, though. And if yours do, you likely want to use that rather than HSP, because HSP has much worse audio quality.
> Each A2DP service, of possibly many, is designed to uni-directionally transfer an audio stream in up to 2 channel stereo, either to or from the Bluetooth host.
This matches what I has heard: Bluetooth devices with A2DP profile can either receive or send high-quality audio, but not both at the same time.
I don't know if there are Bluetooth headsets that have separate A2DP devices for input and output sound, I have never heard about them, but I would be very interested in knowing of their existence.
Also from the article:
> These systems often also implement Headset (HSP) or Hands-Free (HFP) profiles for telephone calls, which may be used separately.
This is the common case for Bluetooth headsets, the Bluetooth manager switches profile when the microphone is needed, but that greatly reduces audio quality.
What this setting does, is that when an application requests the Microphone, then it automatically switches to HSP, and once the source is destroyed, it switches back to A2DP.
When I am using the headphones, and IF an application requests microphone, THEN I do want this switch to happen automatically. After the Microphone is not needed anymore, I want it to switch back to the HQ A2DP.
HSP makes the headphone quality much worse, and mono. Even while using the mic, that's not ideal. You might not notice if you're just having a conversation, but if you're sharing a video or watching/playing a game, you want the audio output quality.
I understand the quality issue, of course I also notice it.
But how else would my mic work? If it stays on A2DP, then there is no Mic input, so I used to have to manually switch it to HSP. With the solution I linked above, this is not manual.
So... I am not sure it does support it, TBH. I have a Bose QuietComfort 35 (II), and on linux I definitely have the low quality HSP+ mic (other thatn the quality, works well) and for listening only, A2DP is working too.
On Android though, calls are _MUCH_ higher quality with the mic on. (still somewhat different than from output-only, but less degradation than under my desktop linux)
I'm on latest Fedora and sometime this year headphone volume synchronization stopped working for headphones that never had this issue for me since release (Sony WH-1000XM2). Volume synchronization continues to work as expected on Android.
I had bad experience on linux-bluetooth mailing list when I tried to add battery reporting to bluez.
Saying that it's hard to get through is an understatement.
I can say I can let this pass if the maintainer was really an overworked volunteer who shared his work on Linux with his day job, but not if the guy works for the biggest electronics company in the world.
I believe Linux core devs need to put stricter criteria on system maintainers if they are working on company's payroll.