Comment by heavyset_go

1 month ago

Currently, on the AirPods side and not iOS side like the article covers, Apple breaks Bluetooth feature parity with other devices by not sticking to the Bluetooth spec with AirPods themselves.

For example, you need to root and patch your Bluetooth stack on your phone if you want to use all of your AirPods features on Android, and not because Android is doing something wrong, it's because the Android Bluetooth stack actually sticks to the spec and AirPods don't.

And even when you do that, you can't do native AAC streaming like you can with iOS/macOS. Even if you're listening to AAC encoded audio, it'll be transcoded again as 256kbps AAC over Bluetooth.

Even no name earbuds on Amazon manage to not break Bluetooth and can offer cross platform high quality audio over Bluetooth.

On the other hand, there’s been a bug open to make a simple harmless change to fix this in Android for 9 months, with no response from Google other than asking for reproduction steps as far as I can tell.

https://issuetracker.google.com/issues/371713238

Some comments on the bug accuse Google of intentionally not fixing it to make people buy Pixel Buds instead of AirPods.

I wouldn’t say that myself, but then again I also wouldn’t say that Apple intentionally violated the spec just to make AirPods not work on Android.

  • Buganizer is not where you submit code to be reviewed and accepted into Android. And by the author's own admission that change is a hack and not a proper fix. Anyone is free to make a proper fix and upstream it if they wanted to.

  • No one has presented a remotely correct fix anywhere on that issue, or elsewhere to my knowledge.

    You're welcome to write an actually correct patch for android if you want, one that isn't just commenting out code and probably breaking some spec-compliant bluetooth devices.

    Make sure to test your patch against all the bluetooth devices in existence to make sure it doesn't regress.

    Do that, make a PR, wait the average third-party-android-PR review time (approximately 5 years), and then if your PR isn't accepted at that point we can maybe say Google is intentionally ignoring this issue.

  • "The bug", aka not implementing spec violating behavior, also exists in BlueZ, the Linux Bluetooth stack. Is the BlueZ team taking kickbacks to make sure earbuds don't work on Linux, too? They were Google Summer of Code partners, too, so this potentially goes pretty deep.

    • Does it? The LibrePods readme doesn’t mention any special patching required on Linux but maybe I’m missing something

They do this on purpose if you didn't get it. Google will never "fix" this issue because they follow the spec. They shouldn't have to add an exception for AirPods.

  • > Google will never "fix" this issue because they follow the spec. They shouldn't have to add an exception for AirPods.

    This seems to go against how OS development (and perhaps consumer software in general, just think about browsers!) works in reality, it's just piles of exceptions on top of exceptions for weird hardware.

> For example, you need to root and patch your Bluetooth stack on your phone if you want to use all of your AirPods features on Android, and not because Android is doing something wrong, it's because the Android Bluetooth stack actually sticks to the spec and AirPods don't.

It’s a mix of bad Bluetooth implementations still on the Android side, and Apple extensions to cram audio features into the BLE envelope.

> And even when you do that, you can't do native AAC streaming like you can with iOS/macOS. Even if you're listening to AAC encoded audio, it'll be transcoded again as 256kbps AAC over Bluetooth.

How would this be Apple’s fault if the OS audio stack can’t do direct AAC streaming? Or are you saying the headphones themselves decode, re-encode and then re-decode the AAC?

  • > How would this be Apple’s fault if the OS audio stack can’t do direct AAC streaming? Or are you saying the headphones themselves decode, re-encode and then re-decode the AAC?

    There are multiple Bluetooth standards for lossless audio that work across platforms. Instead of implementing those features, Apple uses a proprietary protocol to half-ass it only for the case of AAC. Even in that case, it requires a proprietary Bluetooth stack to work. Without that proprietary stack, the Airpods default to low quality transcoding of audio streams at 256kbps, and don't offer true high quality or lossless audio playback. So even in the one case where Airpods offer some semblance of lossless playback, it's non-standard and applicable to AAC only.

    Cross platform high quality and lossless audio, multipoint pairing, etc solved problems and features that even $20 white label earbuds on Amazon are able to implement.

Can headphones that stick to the spec actually play nicely with multiple devices? - switching quickly between phone and laptop like Airpods do?

  • Yes, this is called Bluetooth multipoint and has been common on non-Apple devices (for example Bose) for a few years now. Requires no logins and is vendor-agnostic.

    • It's finnicky though. Sometimes, if I get a call on my phone and hang up, my Bose headphones tell my Mac to start playing music.

  • I can stop music on my phone and immediately listen to music from my laptop. I have non-apple headphones, a non-apple laptop and an iPhone. There is no apple magic dust that makes this happen.

Even no name earbuds on Amazon manage to not break Bluetooth and can offer cross platform high quality audio over Bluetooth

That's because they're all based on a small set of BT SoCs from companies who are not exclusively dependent on the Apple ecosystem and need to interoperate with everything BT-compliant.