I did a deep dive to understand why sound quality is really bad –or reduced, as Apple puts it– when using my bluetooth headphones.<p>I read through Apple's documentation, Bluetooth standards, and Wikipedia articles for different codecs, and I tried to summarize my findings in this post. The post talks about Mac, but it's probably relevant to other OSs as well.<p>As a disclaimer, I want to state that I've made this investigation for fun, learning, but also profit. I'm working on a Mac app that aims to help with the audio quality when using bluetooth headphones. I decided to work on this project out of frustration, probably shared with more people here, and that's why I'm submitting it.<p>I hope you find it interesting.
Yes, bloody HFP.<p>I can't believe we're in 2023, WiFi can do 40Gbps, but Bluetooth still has no reasonable high quality, bidirectional audio mode.<p>Skype, Zoom and the like have been around for ages. The usefulness of high quality voice communication is very, very old at this point.<p>So what's the holdup?<p>Also, I don't quite understand why nobody worked around this yet? I never looked into Bluetooth properly, but it's a protocol that like USB can present a set of capabilities and negotiate features, right?<p>What's stopping anyone from say, supporting a higher bandwidth mode of HFP, or offering sensible modern codecs like Opus, while remaining compatible with the normal standard?
I don't think it's accurate that there is "no way" to "prevent your mac from using the headphone's microphone." There are several workarounds like creating an Aggregate Audio Device in Audio MIDI Setup [0] or disabling HFP [1]. I wish you success with your paid utility though.<p>[0] <a href="https://www.reddit.com/r/MacOS/comments/n6trw3/comment/gx98uun/" rel="nofollow noreferrer">https://www.reddit.com/r/MacOS/comments/n6trw3/comment/gx98u...</a><p>[1] <a href="https://discussions.apple.com/thread/7495115?sortBy=best" rel="nofollow noreferrer">https://discussions.apple.com/thread/7495115?sortBy=best</a>
Perhaps such an app is useful, but I've actually found the macOS behaviour desirable. I get good quality unless the mic is used, which I only do deliberately.<p>The Windows behaviour is what really annoys me. When the mic is used, the headphones switch profile. But Windows continues to send output to the audio device for the other profile, which means you get no sound at all. You have to manually change the audio output device every time the mic is used to be able to have audio.
Do you know how bluetooth is handling play/pause buttons while listening?<p>By using a different protocol named AVCTP, while the stream uses AVDTP (with A2DP on top).<p>A nice way to fix this issue would be to have a kind of bluetooth bonding: 1 connection for receiving audio/video, and the other for sending audio from the mic. That would use up to twice the bandwidth, so fewer bluetooth devices could be around maybe, but it would be nicer.<p>The real issue, I think, is mostly the fact that supported codecs are all in firmware of the chips used in the headset and laptop, and cannot be upgraded.
Otherwise we could have used Opus for voice codec a long time ago.
Bluetooth is eternally frustrating, to varying degrees and in different ways in every platform. There are few pieces of tech that I hate as much.<p>Whenever I marvel at the amazing tech we have, I remember that this remarkable culture chose to inflict Bluetooth on itself.
A similar fix for Windows is to manually disable the HFP<p><a href="https://shkspr.mobi/blog/2023/09/better-bluetooth-sound-quality-on-microsoft-teams-in-windows-11/" rel="nofollow noreferrer">https://shkspr.mobi/blog/2023/09/better-bluetooth-sound-qual...</a><p>On Linux, I can manually select the codec I want to use from a GUI drop down.
macOS is frustrating with Bluetooth. I use an external USB microphone and would like to lock it. Still, any time I put my AirPods on, it auto connects for both listening and microphone, even though I have a much better quality microphone already selected. So I have to open the Sound settings every single time, which is incredibly frustrating; please just let me prioritize which device I prefer using and stick to that.
ToothFairy for macOS is what I've been using to handle this. It has an advanced setting for headphones that "Improve sound quality by disabling audio input from device". It's always good to have multiple tools out there to solve problems like this.
Oh how I hate HFP.<p>I'm not surprised this catches people off guard. I'm usually among the gadget folks and was intellectually aware of the A2DP/HFP situation, but hadn't put it all together until I tried to use my new headphones (which support AptiX, etc), went to play a video game, and my (Windows[0]) computer flipped me to HFP, destroying the game audio to my headphones. It was at that point that I understood why the console makers shied away from "just using bluetooth" for their headset channels[1].<p>It was a new laptop that has some rather slick features you can apply to the mic array which causes it to only pick up the voice of the person directly in front of the laptop, or limit it to the people in the room (but not, say, televisions/stereos/PC audio). If I want the higher quality audio from my headphones, I just use my laptop's mic; it sounds as good to everyone else.<p>It's a shame for my phone, though. Many conferencing apps support High Definition audio and there's a not-always-small difference between the Bluetooth and USB versions of some conferencing devices.<p>[0] Which, AFAIK, doesn't support AptiX; but my phone does.<p>[1] I haven't looked into this in three years or so -- I recall something about PS4/PS5 supporting certain Sony headphones and there are plenty of wireless headphones that work with a USB stick (along with at least one on the Xbox platform [Turtle Beach] that required no USB stick, licensing/utilizing whatever the wireless controllers use -- since most/all have a 3.5mm jack -- for communication).
I've occasionally seen gadgets that have non-bluetooth wireless. (For example, a gaming mouse.) Is there anything good for headphones? Since I play an instrument, I'd like both low latency and high quality.
Notably, while SBC is ubiquitous and sounds quite ok for A2DP/"music mode", there's are two possible codecs for HFP:<p>- Uncompressed 8-bit, 8-kHz PCM: Potato quality, equivalent to a legacy digital phone line)<p>- mSBC: A latency optimized version of SBC, offering at least 16 kHz thanks to some level of compression. (Sweet potato quality?)<p>Make sure that your headset supports at least the latter to make HFP mode slightly less unbearable!
I have to regularly restart my MBP because after a few days, when I'm using my AirPods, my volume buttons lag the entire system to a halt, and simultaneously get stuck. Nice way to blow out my eardrums. I just don't use the buttons anymore.
The other annoying thing OS X does is launch iTunes when Bluetooth headphones are connected. This steals audio from whatever the Bluetooth device was already doing, at least for me. iTunes can't be removed or disabled, apparently.
One weird thing I noticed awhile back:<p>If I'm using my bluetooth headphones on zoom, the audio quality is kinda bad. But if I plug in my USB microphone, it immediately gets significantly better - like going from AM radio to FM radio.<p>I guess this article explains why!
FYI: I bought this to try it out but it does not even launch in macOS Sonoma 14.2, the most up-to-date version of macOS.<p>> “Recadio.app” can’t be opened because Apple cannot check it for malicious software.
It would be a lot simpler to say BT audio has two modes, one is listen only and higher quality, the other is two way but lower quality. Sometimes your device gets stuck in the wrong mode.<p>End of explanation.
I have a button on my headset that changes modes / disables mic. There even was a notification in the manual for this. Don't most headphones do this?
If you don't want to pay $7.99, you can just open a terminal and type:<p>>defaults write com.apple.BluetoothAudioAgent "Disable HFP" -int 1
I did some similar research when the airpods first came out and found the same thing "its needed for low latency" but never thought about using the laptop mic, having a huge facepalm moment right now.