Why Is Bluetooth Sound Quality Bad on My Mac
The reason behind bad audio quality when using bluetooth headphones with your mac. Spoiler, it is not –just– your headphones. Read why and learn how to fix it.
This post is the summary version of a deep dive I've done on this topic. I might release an in depth version if there's interest and link it here if and when it's ready. In the meantime you can read this shorter version.
For an even shorter version, just read the text on call-outs like this one
#Introduction
If you found this post you've probably been searching about bluetooth sound quality for a while. I have good news and bad news.
Bad news first, most of what you've read is quite outdated and not very useful. Enabling AAC and AptX audio codecs –more on audio codecs later– won't fix your problems, which is probably what you've read a few times already.
But the good news are that I've done a deep dive to really understand why the sound quality is so bad sometimes, even if you paid a few hundred bucks for your headphones, and I have a workaround to offer.
To be fair I already knew how to fix patch the issue, and that's why I built Recadio, but I wanted to know why this happened at a technical level. Here's what I found.
#How Mac Handles Bluetooth Headphones
The starting point of the research was this article written by Apple where they write:
[Using] Bluetooth headphones' microphone, audio quality and volume are reduced. You might also hear static or popping sounds:
This happens because Bluetooth has two modes:
- The first mode is for listening to higher-quality audio.
- The second mode is for both speaking through the microphone and listening to audio. When Bluetooth switches to the second mode, audio quality is reduced until the microphone is no longer in use.
We already found the first piece of this puzzle:
But what do they mean with "modes"? And why is the audio quality awful reduced? Let me introduce you the concept of Bluetooth profiles.
#Bluetooth Profile
The bluetooth profile defines the set of things the bluetooth device can do. A few examples that you've probably used already are:
- Human Interface Device, or HID profile, used for keyboards, mice, etc.
- Advanced Audio Distribution Profile, or A2DP, used for streaming audio from one device to another.
- Hands-Free Profile, or HFP, used for taking calls with hands-free devices, like a car.
There are many different profiles, and you can read more about them in the Wikipedia page , but the two that are important to understand our problem are the A2DP and HFP.
One important difference is that the A2DP allows streaming from one device to another, not both ways, while the HFP does.
As you could guess, when Apple mentions first mode they're talking about A2DP, and second mode refers to HFP.
We can rephrase the previous piece of the puzzle as:
But that doesn't explain much on its own. That's because we need to talk about another important concept here: audio codecs.
#Audio Codec
According to Cambridge Dictionary , a codec is:
a device or computer program that compresses data (= makes it use less space) so it can be sent or stored, and decompresses it (= returns it to its original form) so it can be seen or used.
And an audio codec is just that, but especially designed for audio files.
Some codecs might prioritize higher quality by compromising how much the audio can be compressed, while others could give priority to the compression rate sacrificing audio quality. There's a good amount of complexity that I might cover if I write an extended version of this post, but for now let's keep it here.
An important point is that both the sender and receiver need to know the same codec to use it, otherwise the compressed audio couldn't be decompressed and listened to.
#Relation Between Bluetooth Profile and Audio Codecs
Different profiles support different codecs, and some also specify a mandatory codec for the profile. The codecs have properties that match the use case of the profile. Let's look at the ones we care about.
The A2DP use case is to support high-quality audio distribution, so quality is obviously a priority. Communication only goes in one direction, therefore the sender can use the full connection to fit audio. Both compression and delay are not critical. As a result, A2DP uses codecs that produce high audio quality.
The HFP use case is handling phone calls, so audio quality is not very important, but latency is. Data travels both ways, each device taking turns sending their data. As a consequence bandwidth is halved, making compression important. Therefore, HFP uses codecs with low latency sacrificing audio quality.
This is the second piece to understand our problem:
So even the codecs with best audio quality for the HFP will be quite bad. And odds are your devices doesn't even have the best ones. Yes, even if you spent a few hundred bucks on them.
There's a promising update for both profiles with the release of a new codec LC3-SWB , which was released in January 2020 and is supposed to deliver much better audio with significant compression. The question now is, when are devices going to have that codec so we can actually take advantage of it?
#Then Why Is My Audio Quality So Low?
On the one hand you have that Macs will use a HFP when the microphone is in use, and on the other you have that HFP use audio codecs which prioritizes low latency over audio quality. Therefore,
Then, your headphones might have 10 year old codecs, which will need to really lower the quality of the sound to get decent latency.
But you might have read you have to enable AAC and AptX. Well, that's because Apple didn't do a great job about selecting the best codec for A2DP in the past, and defaulted to the mandatory one –named SBC –. But that's no longer necessary.
And even if that was necessary, it'd improve the A2DP mode, not the HFP, which is the one with awful quality.
#How to Fix the Sound Quality
The most important point is to avoid switching to the HFP. To do that, just prevent your Mac from selecting the headphone's microphone as audio input. If it only was that simple!
The truth is there's no way to configure this on your Mac. That's why I built Recadio, an app that remembers your input and output preferences for any combination of connected devices.
You can also change your audio input device manually when your Mac switches to the wrong microphone. I've covered the different ways you can do that in a different post, but here's a very quick summary of your options:
- Manually via Audio preferences
- Manually via Control Center
- Automatically using ToothFairy, priced at $5.99. I'll write a post to compare it with Recadio and link here when it's ready. Find more about them at their website
- Automatically with Recadio, priced at $9.99 $7.99 using BLOG20.
I've setup a discount for people coming from the blog. You can use BLOG20 at the store to get a 20% discount.
Enjoy 😊