Hacker News new | ask | show | jobs
by jmgao 220 days ago
It doesn't seem obvious to me that this is actually a bug in the Android implementation, it seems like this is due to AirPods violating the spec and requiring a special handshake before responding to standard requests. It doesn't seem reasonable to expect Android to work around a device that appears to be intentionally breaking the spec for vendor lock-in purposes: the possibility of them just OTAing an update that breaks in some other way means that you'd have to be entirely bug compatible with iOS's bluetooth implementation.
7 comments

It not that hard to imagine Apple going out of their way to do something that would break functionality on Android, honestly. Although, I believe Fluoride also is to be blamed here because a simple timeout can not possible cause any issues (it seems that a timeout is there, but never called- at least from my tinkering). I am not planning to spend a single second tracing back the actual problem and suggesting a fix, given that Google just asked me to reproduce twice (!!) and did nothing about it.
when you’ve worked long enough in any given industry you know that all companies "violate" standards to satisfy requirements of their product management.
Apple have been ‘extending’ the Bluetooth stack for quite awhile. They introduced some BLE features before the spec was finished (I think some 3rd party hearing aids were also compatible).

I haven’t used non apple earphones for awhile but the seamless connectivity performance of AirPods would suggest this was done for performance, not to deliberately lock in devices.

This 2020 paper is great at breaking down some of the extensions: https://www.usenix.org/system/files/woot20-paper-heinze.pdf

> They introduced some BLE features before the spec was finished

In their defence, they went with Lightning shortly before the USB-C spec was finalized. Then, to avoid their customers being screwed over by constantly changing the connector, they kind of had to stick with it for a decade.

People will complain if they push features that are ahead of the spec, and they'll complain if they let the spec be finalized before they use it. Being guided by "What's the best we can do for UX, assuming out users are our users in every product category we enter" seems to be their reasonable middle ground.

The only reason Apple ditched Lightning port and finally gave USB-C port in the iDevices, is because EU forced Apple to do so. But do you think your oh-so-common USB-C cables will work with a new iPhone?

In my country (India), Apple still doesn't sell charger and cable along with its new iDevices, even though those gadgets are exorbitantly expensive. And Apple doesn't allow custom repair here, even though my country mandated the Right to Repair, like EU did so. My old Mac Mini 2012 is gathering dust in a cupboard, because Apple service center refused to upgrade it to new RAM and new SATA SSD, citing Apple policies.

Couldn't you just upgrade yourself in the pre Apple silicone days?

Like within minutes, with no big changes?

I didn't think it's rare that a company refuses to do any work on devices they no longer support. Their employees will no longer be trained to do this work, hence they'd have a nontrivial chance of causing damages. That's exactly why a right to repair is so important, so that other people can pick up their slack

Back when RAM and HDD were using standard parts, Apple packaged manuals with documentation as to how to proceed to such upgrades.
The higher end iPads started coming with USB C long before the EU mandate
That seemed like a product segmentation choice to encourage more laptop like use cases out of the higher end iPads.

Less friction for devices like passkeys, external hard drives, etc.

It doesn't seem like they were keen on moving that down the product line since they had to be dragged kicking and screaming to do so.

That was a much easier way to get usb3 on them than the special lightning port + cables they tried earlier.
>But do you think your oh-so-common USB-C cables will work with a new iPhone?

They seem to work just fine, yeah.

"Seem". Until they don't. I've had multiple instances of Airpods stopping to connect with phones until I charged them at least once with original Apple cables. They might work fine for months, then stop ehaving unless connected through an all-Apple power pipeline (cable and charger). It's probably firmware updates requiring some sort of validation every now and then.
Sounds like you have a flaky / damaged device or bad cables. If there really was some kind of conspiratorial timer requiring you to use 1P cables it would certainly be documented. Can’t hide that stuff. Loads of people use Apple devices with 3P cables all the time and they work just fine, as long as the cables aren’t junk. There really are quality and capability differences in USB C cables. Just because it looks right and physically connects doesn’t mean it can electrically do all the things.
I think this is a problem with USB-C. The cables all look the same, but they don't actually always work for every device, at least in my experience.
I know that Apple MFI certified Lightning cables work well with iDevices, but I found that third-party non-MFI-certified Lightning cables to be finicky with iDevices. But I never faced such problem with USB cables for non-Apple devices (Android phones, cameras, etc.).

Apple MFI certifies USB-C cables also, so I'm not sure if it is throttling its iDevices to be finicky with non-MFI USB-C cables.

I know for a fact that Apple did software updates to older iPhones to make them sluggish and drain battery quickly. I realised this when I went to Apple Genius Bar to get my iPhone 7 Plus battery replaced after it started draining too quickly daily, but even with new battery same problem persisted. The friendly staff member unofficially told me it is because of the recent software updates by Apple for older iPhones, and advised not to hold out hope that any future software update will fix the problem. Even a year later, his warning remained true. I gave away the iPhone to my nephew as a backup device for his studies, but he sold it soon, as it was a nightmare to keep charging it frequently.

Apple has faced multiple fines for deliberately slowing down older iPhones without informing users, including a €25 million fine in France and a $41 million fine for deceptive marketing practices. The company admitted to slowing down devices to prevent unexpected shutdowns due to aging batteries, but critics argued it was misleading.

These days, I wouldn't trust Apple with a barge pole, let alone the money from my wallet.

What? Upgrade it yourself! Swapping the RAM in a mini 2012 doesn't even require tools. Both SoDIMMs are right under the bottom cover.

The SSD is a bit more fiddly, but can also be done at home. Check iFixit.

https://www.ifixit.com/Guide/Mac+mini+Late+2012+Hard+Drive+R...

That iFixit guide to upgrade the Max Mini is daunting for newbies.

But you've inspired me to gather courage and do the DIY upgrade myself next month during the holidays. No use having a working PC lying unused, merely because it is very sluggish due to old hardware. Wish me luck (for the upgrade), I think I'll need it.

You’re just limiting yourself for no reason. It’s not Apples fault that you are sitting in front of an un-upgraded computer that is tool-less (for one of your tasks, at least) and has step by step instructions meant for beginners.
If Apple wasn't forced by the EU, they would try to preserve their walled garden as much as possible. iMessage is the prime example of this.
Can another company federate with WhatsApp or Facebook Messenger?
Yes, because the EU mandated them to. Just no one seems to want to federate.
And you are perfectly capable of interacting with iMessage users now through SMS/MMS/RCS
both scenarios speak to either an incredible impatience, or deliberate incompatibility to tie people to their ecosystem.
In general, rigidity of stack is a malfeasance. Over protecting the user brings fragility, un-adaptability, that curses the world. Android certainly is a rigid narrow protective stack that refuses to accommodate, again and again. Different genre, but decades latter and it still won't work on many ipv6 networks because for no clearly stated reason it won't support DHCPv6: Android is full of these weirdly unstated "principled" anti-compatibilities, and I can't excuse blaming the devices or networks for being what they are: it's the unbending rigid OS that offends me.

I do rather hope perhaps perhaps perhaps the EU & DMA or other may perhaps bend Apple off their rotten course of making non-standard bespoke systems. It seems like very recently the EU is getting ready to cave & abandon all their demands for trying to use standards, that their fear of the US is about to make them fold on insisting upon better. Demanding Apple stop doing everything in bespoke incompatible ways is something that should have happened a long time ago, imo, and it's so horrifying to see one of the only stands in my lifetime against the propeietarization & domination of systems by a bespoke corporate lord abandoned.

There's some rays of hope here & there. Seemoo Lab has a ton of amazing reverse engineering efforts, figuring out how many many many undocumented locked down Apple systems & protocols work & trying to give control back. This is the highest virtue, the best hacker nature. Here's Open Wireless Link, but they have so many other amazing projects they've similarly figured out out to pry open. Amazing best human spirit. https://github.com/seemoo-lab/owl

is there evidence it’s for vendor lock in purposes? airpods have a pretty stellar connection for bluetooth, wouldn’t be surprised if there were performance reasons for them going off spec
I doubt it’s for any reason at all. The obvious explanation is that they just developed and tested these extra firmware features against Apple devices because that was the product decision. Since nobody was tasked with targeting Android they might not have even noticed that it wasn’t perfectly spec-compliant if those states were never encountered, nor expected to be encountered.
No there isn’t. I’ve said this a million times before, but usually just downvoted: this is about reducing support costs, not increasing revenue from lock-in. This is not a theory, I’ve sat in meetings at Cupertino and been told first hand.

Support is very expensive. Say what you want about Apple, but they provide absolutely stellar support, especially with the stupidly inexpensive Apple Care insurance. This is only cost effective if they can make reasonable predictions about how their devices will behave in any given scenario. Interfacing Apple hardware with non-certified (MFi, BLE, etc) third party hardware has a non-trivial risk of unpredictability high support costs, either from excessive Apple Care claims, customer support communications, or just overloading the Genius Bar.

Reducing support cost could easily explain the motivation of the entire walled garden if they are sufficiently high.

That's tautological. Everything that is not supported is so because supporting it has a cost. The question is what is the cost? It seems quite obvious that the marginal revenue from airpods would be overshadowed by the revenue of getting a user in the ecosystem.
Having to test the AirPods with more standards compliant devices, having to waste time to tell customers to fuck off if their phone/laptop/toaster is not standards compliant, having to waste engineering time to investigate non compliant aliexpress phones/laptops/toasters, wasting time to implement additional functionality for Apple customers because it has to go into the spec first
Yes, all that is a part of the cost equation, which points to the same thing, namely, that $200-$300 widgets are not worth selling to the general public; they would rather sell them to a customer who will spend a lot more in the ecosystem. Same as razors and blades or consoles and games.
Customer support costs are higher at Apple than its competitors, because they provide a better support experience. This is not a tautology, it’s one of their core value propositions
They couldn't just write (and make people aware at point of sale, ofc) 'no support for using devices with non-Apple Computers products' into Apple Care. They had to purposely break compatibility?
if (name == 'APPLE') will surely improve performance.
Specifications are there for a reason... Why use Bluetooth at all if they don't actually use it properly?
You can still connect AirPods to an android device using Bluetooth, you just don’t get the seamless connection or support for Spatial Audio that use the extended protocols
You can't even change noise cancel's mode.
It's just on and off, and doesn't let you choose between the different ones (transparency, conversation aware, etc)
> Why use Bluetooth at all if they don't actually use it properly?

Because they needed a way to get audio to the AirPods wirelessly and to work with their devices? That’s a pretty good reason to use Bluetooth.

I doubt they got together and tried to scheme a way to break Bluetooth in this one tiny little way for vendor lock in. You can use the basic AirPod features with other Bluetooth devices. It’s just these extended features that were never developed for other platforms.

HN comments lean heavily conspiratorial but I think the obvious explanation is that the devs built and tested it against iPhone and Mac targets and optimized for that. This minor discrepancy wasn’t worked around because it isn’t triggered on Apple platforms and it’s not a target for them.

It reminds me of the USB keyboard extender that came with old Macs. There’s a little notch in the socket so you can only use it with Apple keyboards. At the time I thought it was a petty way of preventing you from using it with any other device, but apparently the reason they didn’t want you to use it with other devices is because the cable didn’t comply with the USB spec.

Some pictures here: https://www.reddit.com/r/assholedesign/comments/b1u08k/this_...

Yes, USB extenders are not spec-legal (because the device isn't built expecting to be extended).

But you can have an extension cord which accepts USB on one end but doesn't accept USB on the other.

So the keyboard has a superset connector so that it can go in regular USB and notched USB, because it is verified to work right when using the extension cord.

This design also means you can't plug one extension cord into another to get an even longer distance (which the keyboard wouldn't expect). Pretty clever solution.

Did you even bother about reading the comments on your own citation?
Yes, I did actually. I genuinely don’t know what you’re referring to?
>doubt they got together and tried to scheme a way to break Bluetooth in this one tiny little way for vendor lock in.

No conspiracy needed, surely it would be unilateral? It seems exactly the sort of thing Apple Computers would do to protect their ecosystem.

Perhaps Apple correctly implemented the specification here
This is Microsoft's playbook from many years ago: embrace, extend, extinguish.
Apple is a promoter member of the Bluetooth standard organization for a while now, so it could submit that as an enhancement.
Assuming they even went off spec at all.
Performance reasons LOL. Apple fans love plausible deniability.
And haters love a conspiracy.

Truth is, no one has the full facts so any reasons as to why this was made the way it was is pure speculation. Only a fool would move to condemn or endorse what is not yet fully understood.

As someone who's implemented custom Bluetooth protocols, it's actually quite easy to condemn an Apple manufacturer ID check to expose custom services.

And what do you mean by "conspiracy"? I would be shocked to find out this was done by some lone wolf and wasn't built with broad (even if grumbly) consensus in the relevant teams. That's how corporate software is built.

Every time someone opens an argument with the classic appeal to authority “as someone who has…” you can almost certainly expect to have that person miss the point of the discussion entirely.
What a fantastic way to keep from addressing anything I said while still allowing you to act condescendingly.
You make a good point

Though I wonder why it works with Linux, which I assume doesn't have code for a special handshake specific to AirPods

Google works around a ton of out-of-spec hardware / driver quirks for Android's ExoPlayer media player stack. So it is more than reasonable to expect Google to add a workaround for this.