5 ms·
I did a deep dive to understand why sound quality is really bad –or reduced, as Apple puts it– when using my bluetooth headphones. I read through Apple's docum
by dgrcode 3y ago
I did a deep dive to understand why sound quality is really bad –or reduced, as Apple puts it– when using my bluetooth headphones.
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.
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.
I hope you find it interesting.
- nullindividual 3y agoYou should remove "Mac" from your article, sans to where you first found this issue out and what the Apple-specific nomenclature is. This is simply a Bluetooth issue and why Bluetooth is bad if you care about audio quality.
- deleted 3y ago[deleted]
- lxgr 3y agoFor music, that's just not true. AAC is widely supported and sounds transparent to me; I'm not sure if I could detect SBC at high bitrates either. For voice/HFP, I agree, and LC3 can't arrive soon enough. I'm actually really surprised Apple doesn't use anything proprietary/better than mSBC for their AirPods.
- Kirby64 3y agoI suspect the GP meant for voice. It’s just atrocious no matter what for any device, due to the HFP restriction.
- dgrcode 3y agoYes, with the A2DP profile (high quality music) things work good enough for me not to notice. Maybe you could hear some differences on a side to side comparison, but it's good enough. The real problem comes with the HFP profile. Lack of decent codecs, and bandwidth limitations of Bluetooth make it really hard to solve. Not to mention the vast majority of devices you own can't upgrade codecs, or just won't because there aren't incentives.
- lxgr 3y agoOpus provides excellent voice quality at 10 kbps (less than 1/6th of what PCM uses at 8 kHz), at a latency of 26.5 ms, so it's definitely not a technical problem for HFP either. There's always the risk of unknown patent claims, but the same is true for any other codec not older than 15 or so years.
- dgrcode 3y agoI actually didn't know about Opus, but having read a bit about it, how aren't we using that codec for all things audio? It's open source, has good platform support, quality seems to similar to AAC, it could be used for HPF. What's stopping the adoption of Opus in Bluetooth standards?
- lxgr 3y agoSupposedly Google's Pixel Buds support it! I can only suspect why it's still so rare, but my guess would be either a fear of unknown patent claims, a lack of readily available hardware implementations, or a combination of both.
- dgrcode 3y agoI have the pixel buds A-series, and using my pixel 7a I can feel the quality going down when on a call. It might be just the latest buds, or my pixel 7a not supporting the codec, or the HFP not being set to use it ¯\_(ツ)_/¯
- deleted 3y ago[deleted]
- ho_schi 3y agoIt is a general issue of Bluetooth. And the solution are improved codecs for HFP. Seems like people are skeptical if BLE Audio and L3C can make a big change. Let us see. Ah hear. Pipewire seems to support it already on Linux.
- dgrcode 3y agoI agree improved codecs is one of the solutions. I think other solutions could appear if Bluetooth wasn't restricted to a 3Mbps bandwidth, which seems to me –I have no information on this– it's a very outdated constraint. I mean, 4G has existed for over a decade and it supports 100Mbps bandwidths. With that bandwidth it could use uncompressed audio and support stereo for both output and input. Regarding LC3, I've read people complain that it forces the Bluetooth Low Energy, removing a few features like multi-point connection and a few others.
- summm 3y agoIsn't it possible to use LC3 over Bluetooth Classic HFP? And isn't LE audio advertised as flexibly supporting multiple streams, much better than Classic? That means, it's just bad implementations, not a principal limitation? Apparently some phones and headphones support it now, but oddly enough there is absolutely no information to find about the specific level of support.
- andrelaszlo 3y agoFrom my own experience, and from what I got from the article, the lower quality full duplex BT is only part of the problem. The major issue is that the mode is selected automatically on macOS. I never had this problem with Pulseaudio and Blueman, for example. The microphone isn't even registered until I manually change modes for the connection. Another annoying thing is that the mac is so aggressive when connecting to devices over BT. I regularly have to restart stuff because my mac hijacked the connection. It seems to do it even when the lid is closed.
- DeathArrow 3y agoNot really. I have decent quality when connecting my headphones to my phone or Windows laptop. It's just my Apple laptop that suffers. And if you read the article, it is an Apple problem since macOs chooses the wrong bluetooth profile.
- tambourine_man 3y agoYour app seems nice. I’d love more control over Bluetooth on my Macs. Is this device able to wake this Mac from sleep? If both these headphones are connected, what heuristic should be used to select the input/output?
- dgrcode 3y ago> Is this device able to wake this Mac from sleep? Do you mean my app? It doesn't change the wakeup behavior. For my Mac that means it'll wake up when I turn on my bluetooth headphones. > If both these headphones are connected, what heuristic should be used to select the input/output? My app remember your choice for a given group of connected devices. That means that, if you haven't chosen anything, the default behavior will take place. If you select one of them, it will remember the choice and auto-switch to that one when the same group of devices is connected. I hope it makes sense.
- tambourine_man 3y agoIt does. I was just venting what I think should be built-in functionality and the void third party apps should try to fill if Apple continues to choose otherwise. For instance, I turn on my Sony 1000MX4 in the living room to listen to music on my iPhone. The iMac wakes up in the office and if it has an YouTube video paused in Safari or the Music app in the foreground, the input won't switch to the iPhone unless I manually change it on Sony's app. Or, I have a meeting and need to use a decent microphone in order to be heard, so the wired mic connected to the Mac should be selected when the MX4 is off, but instead it reaches for the AirPods that are sitting in the bedside table in the bedroom. Stuff like that.
- ponector 3y agoSame issue I had with Windows. Bluetooth headset is awful for calls. Interesting enough, no codec-related issues if you use Bluetooth headset with mobile phone.
- rollcat 3y ago> I decided to work on this project out of frustration, probably shared with more people here, and that's why I'm submitting it. Frustration is great to initiate action, but usually doesn't work well as a sustained source of motivation. Sometimes it's just a matter of rephrasing the situation. You have an appreciation for audio quality - let that (rather than the frustration) guide Recadio's continued development. Wish you best on the journey <3
- herpdyderp 3y agoYou mention at the end that you can automatically switch input sources with SoundSource. How do you do this? I have SoundSource and it does not do this.
- dgrcode 3y agoTo be honest I haven't used SoundSource myself, but one of the early users of the app I made talked me about it. He mentioned he could select the input/output devices and Mac wouldn't change them when connecting a bluetooth device, as it does by default. It's not exactly what my app does, but I thought it could fix the auto-switch for many users. I'll definitely update the post if SounceSource cannot be used to fix the auto-switch. Thanks for the heads up!