So if you know me you probably know that you rarely see me without headphones on. I am not really a collector of anything, except when it comes to heaphones. I own way more headphones than anyone should. My latest pair were a Christmas gift from my amazing wife, a pair of Bose Soundlink On Ear Bluetooth headphones(they are absolutely amazing).
The Problem With Standards
I love standards, they make everyones lives easier, but the problem with bluetooth is that it often shows its age. Anyone who has even a little bit of experience knows that bluetooth might be described as “finicky”. The way bluetooth deals with different devices is with different profiles.
Advanced Audio Distribution Profile
When it comes to headphones there are actually a couple of different profiles that come into play. The first two are often combined, and are the “Hands Free Profile“(HFP) and the “Headset Profile“(HSP). Now you might think this is the profile that this is the profile for you! Well let me tell you why these profiles suck. The goal of the Headset Profile is to do things like “use your bluetooth headset to answer calls on Skype or your phone”, which include speaking using the mic. Because bluetooth has been around forever it doesn’t actually have a lot of bandwidth to play around with and the mic uses up half of the bandwidth of the connection leaving not a tonne of bandwidth for the audio that you hear. The result is that you sound and hear in AM radio quality and in mono(i.e. no distinction between left and right). This Profile was standardized very early on and the designers obviously were thinking purely about people using this in the context of phone calls where audio quality is already suspect.
Then came the Advanced Audio Distribution Profile(A2DP). This profile was designed with the idea that you would want better sound quality and want to listen to something in high quality stereo. This profile sacrifices the mic due to the bandwidth constraints of bluetooth, but lets you listen to whatever your listening to in a way that doesn’t sound like chalk on a chalkboard.
But I Don’t Actually Care About Having a “Headset”
The thing is that on my Android phone it does a pretty good job of switching between these to profiles. In Windows, I can actually disable the “headset profile” in the list of audio devices in the audio devices preferences, so that I only hear things in stereo(A2DP). My computer already has a mic thanks very much, I don’t need to use the one built-in to my headphones and sound like I’m from the 1930’s. This solution works well enough, but like most Windows solutions it isn’t “Nirvana”, I still have to often disable the headset profile after re-connecting.
So how do I do it on Linux? I use Linux in virtual machines all the time, but I have recently been using it on a laptop again, and it has driven me crazy how often it flips me into HSP/HSF mode and will not change to A2DP mode. It turns out to be surprisingly easy. I’m using Elementary OS but, I’m sure it would be similar on most Ubuntu/Debian derivatives. Your mileage may vary, with others.
sudo nano /etc/bluetooth/audio.conf
And then add “Disable=Headset” under “[General]”.
Then restart bluetooth.
sudo service bluetooth restart
That is it! You are done. Your headphones will now only connect via A2DP. This solution works even better than Windows, as it happens every time you connect a pair of headphones.