Fixing a Bluetooth headset to A2DP mode (Ubuntu 14.04)

I had a nice pair of Jabra Revo Wireless headphones to toy with, and getting them to work in A2DP (the quality mode better suited for music) on my desktop computer turned out to be a bit more than just plug ‘n’ play, so I’m writing this down for future reference.

Pairing the headphones with my Bluetooth adapter (“ISSCEDRBTA”; one of those cheap thumbnail-sized dongles, I don’t even know whether it does BT 3.0 let alone 4.0) went without problems in both Ubuntu 12.04 and 14.04 so I’ll not cover that here. What became a problem was switching the headset to A2DP (“high fidelity”) mode in system sound settings: it just wouldn’t switch over, instead causing the settings window to freeze and/or crash, or at best just revert back to HSF/HFP (telephony mode).

After scratching my head for quite a while I finally figured out the reason behind this: on sound settings’ input tab the headset, when connected, was the only listed input device. Apparently this always locked it into telephony mode (either on the headset side or Ubuntu’s Bluetooth stack, I don’t know the intricacies) and prevented it from switching/being switched to A2DP. The way I verified my initial suspicion of this was by plugging an analog microphone into the computer, at which point I was immediately able to switch the headset to A2DP without problems.

For first aid I stuck an adapter plug into the rear microphone port to have Pulseaudio think I have an analog microphone always attached. But turns out there’s a slightly more elegant solution, at least if you’re not going to use your headset for telephony at all (like me): adding a Disable=Headset line to the [General] section of /etc/bluetooth/audio.conf (and restarting the Bluetooth stack afterwards with `sudo service bluetooth restart`). This way the headset microphone does not show up in sound settings as an input device, and so won’t get selected even when no other inputs are present.

Overall Bluetooth unfortunately still seems pretty shaky on Ubuntu 14.04. During troubleshooting I had to keep dis- and reconnecting the Bluetooth dongle and turning the headset off and on again to properly reset everything; otherwise even things that otherwise worked would randomly fail. With Android devices the headset Just Works.