I've got some wireless bluetooth headsets which I really like except for the fact that I have little to no control over whether the bluetooth subsystem chooses A2DP (high quality music) versus the HFP (low latency skype-type hands-free) protocols.

Whenever I launch Google hangouts, for example, and I choose the microphone as the input device the bluetooth system switches the audio quality on my headset. Using bluetooth explorer I see that it's using HFP with the SCO codec:

AudioDeviceCurrentProtocolName = HFP;
HSP = {
    AudioProtocolCodec = { AudioCodecBitrate = 64; AudioCodecName = SCO; };

Ok fine. If I stop using Google hangouts sometimes it switches by itself back to A2DP which uses the SBC protocol (I don't think my headset supports apX):

AudioDeviceCurrentProtocolName = A2DP;
A2DP = {
    AudioProtocolCodec = { AudioCodecBitrate = 325; AudioCodecName = SBC; };

The problem is when Google hangouts finishes, sometimes it doesn't switch back to A2DP on it's own and I can't seem for the life of me to figure out why. Restarting Chrome doesn't do it and trying various buttons on the Bluetooth Explorer also seems to have no effect.

What has worked sometimes in the past is to change the output sound device to the internal speakers and then back to bluetooth a couple of times which can cause the bluetooth subsystem to remove and re-add the device in A2DP mode. However this doesn't always work and just now I had to completely re-pair the bluetooth headset to get my Macbook to finally get back to using the A2DP protocol. Sigh.

Any help? Anything I can do to force the hardware to choose one protocol versus another? Anyone know what is happening when the device is removed and then re-added to the sound hardware list? I'm on a MacBook Pro (Retina, 15-inch, Early 2013) running 10.11.6. Thanks in advance.

You must log in to answer this question.

Browse other questions tagged .