←back to thread

1424 points moonleay | 10 comments | | HN request time: 0s | source | bottom
Show context
isoprophlex ◴[] No.45943174[source]
From a bit further down the page

> Bluetooth DID (Device Identification) Hook > Turns out, if you change the manufacturerid to that of Apple, you get access to several special features!

I hope Apple gets slammed hard by some regulatory body. Apparently there's absolutely zero magic reasons why their airpods are unable to connect to non-Apple devices; pretend you're an iPhone and you're in.

EDIT: read "unable to connect" => "unable to expose advanced functionality", ofc they connect just fine

replies(15): >>45943218 #>>45943230 #>>45943299 #>>45943335 #>>45943389 #>>45943452 #>>45943491 #>>45943620 #>>45943639 #>>45943933 #>>45944000 #>>45945287 #>>45945990 #>>45946884 #>>45950063 #
exitb ◴[] No.45943230[source]
AirPods can connect to any device and perform on par with other Bluetooth headphones. This is about availability of special features which require a dedicated driver non-Apple devices are not expected to have.
replies(6): >>45943697 #>>45944080 #>>45944871 #>>45946495 #>>45947945 #>>45952870 #
xps ◴[] No.45944080[source]
They don't report battery status to non-Apple devices. This is a pretty basic feature and without this I wouldn't consider them to perform "on par" with other Bluetooth headphones.
replies(3): >>45944228 #>>45946874 #>>45946905 #
alickz ◴[] No.45944228[source]
Also if the README is to be believed the following are also hidden behind an Apple DID (not driver):

- Multi-device Connectivity

- Accessibility Settings and Hearing Aid

While the following are exclusive to Apple devices for market reasons:

- Receive Battery Information

- Set/Receive ANC Modes

- Set Adaptive Audio Noise settings

- Receive In-Ear detection Status

- Personalized Volume (use at your own risk - might randomly boost volume to some high level)

- Conversational Awareness

- Ear Detection

- Siri (Voice assistant on long stem press)

- Hold and Press configuration

- Head Tracking (for Spatial Audio and Head Gestures)

- Rename AirPods

https://github.com/kavishdevar/librepods/issues/20

I imagine limiting such features to Apple devices is more about incentivizing the Apple Ecosystem than quality or software concerns

replies(3): >>45945360 #>>45945981 #>>45951863 #
trollbridge ◴[] No.45945360[source]
Or Apple just doesn't want to bother with the nightmare of supplying and supporting an app to do all those things on other platforms, and in particular, there are regulatory approvals around the "hearing aid" feature that would pretty much require a specific device.

They have a basic app for some of their other devices like the Beats line. One other thing you simply can't do without pairing AirPods with an Apple device is enrol them in AppleCare One.

replies(3): >>45945798 #>>45946238 #>>45946403 #
angoragoats ◴[] No.45945798[source]
You're responding in a sub-thread where others have specifically called out the fact that you can't get battery status from AirPods on non-Apple platforms. This is, to my knowledge, a feature that is supported natively by the Bluetooth stacks on every mainstream OS and requires no "apps" at all. For example, I can connect my Bluetooth mouse to my Linux machine and it happily reports the state of the battery.

Care to offer a justification for why this is the case without resorting to "the multi-trillion-dollar behemoth can't be bothered to build an app"?

replies(5): >>45946898 #>>45947620 #>>45947632 #>>45947736 #>>45955668 #
sroussey ◴[] No.45947632[source]
The multi battery levels thing is native proprietary on every platform since there is no Bluetooth spec for more than one battery level and even that just uses uint8.
replies(2): >>45949952 #>>45962090 #
1. angoragoats ◴[] No.45949952[source]
As I posted elsewhere in the thread, this is incorrect. The Bluetooth Battery Service spec allows for a single device with multiple batteries and individual battery reporting for each. [0] They even give the example in that doc of earbuds which are one “logical device” but two physically separate pieces, each with its own battery.

As additional evidence, there are "AirPods-like" earbuds on the market such as the Sony WF-C700N, which have no problem reporting three battery levels over standard Bluetooth on e.g. Linux.

[0] https://www.bluetooth.com/wp-content/uploads/Files/Specifica...

replies(1): >>45960656 #
2. inferiorhuman ◴[] No.45960656[source]

  The Bluetooth Battery Service spec allows for a single device with multiple batteries
As of version 1.1 of the battery service which was finalized at the end of 2022. Given Bluetooth's track record, who knows what kind of interoperability landmines exist.
replies(1): >>45964296 #
3. angoragoats ◴[] No.45964296[source]
Man, HN really likes to make excuses for Apple.

No, implementing multiple instances of the Battery Service to report battery state for several batteries has been there since the 1.0 spec. [0]

This spec was released in 2011, five years before the first AirPods were released.

Doing what several commenters claimed was impossible has in fact been possible with native Bluetooth for a decade and a half.

[0] https://www.bluetooth.org/docman/handlers/downloaddoc.ashx?d...

replies(1): >>45967165 #
4. inferiorhuman ◴[] No.45967165{3}[source]
If you don't like the Apple device, use something else. It's not like a messaging platform where you'd need compatibility with other peoples' phones.

If you'd bothered to dig into the spec, v1.0 basically says do what you want. v1.1 defines a proper namespace and well known descriptions for multiple batteries. Apple did well to avoid the interoperability minefield.

replies(1): >>45967789 #
5. angoragoats ◴[] No.45967789{4}[source]
Stop moving the goalposts.

> If you don't like the Apple device, use something else. It's not like a messaging platform where you'd need compatibility with other peoples' phones.

I own and use lots of devices, for both work and personal tasks, including Apple and non-Apple devices. I own a pair of AirPods. I'd like them to work well across all the platforms that I use. There is nothing technically preventing Apple from achieving this, aside from Apple's arguably illegal tying behavior.

> If you'd bothered to dig into the spec, v1.0 basically says do what you want. v1.1 defines a proper namespace and well known descriptions for multiple batteries. Apple did well to avoid the interoperability minefield.

I have read the spec; please don't accuse me of not reading it. Have you written Bluetooth device firmware before? In case you haven't, at a high level:

* The BT device exposes a "profile," which defines one or more "services", which are essentially different types of data that can be read from or written to the device.

* Multiple instances of the same type of service (the Battery Service in this case) can be exposed in the profile. I don't know if this ability was always present in the spec or was added after the fact, but it was, at minimum, present in 2011 when the BAS 1.0 spec was released.

* So, if your device has more than one battery, its profile will have an instance of the Battery Service defined for each one.

I will grant that the 1.1 spec document is a lot clearer and provides lots of diagrammed examples, but the only net new functionality in 1.1 are a set of new battery-related fields (these are called out near the beginning).

1.0 absolutely does not say "do what you want."

replies(1): >>45967907 #
6. inferiorhuman ◴[] No.45967907{5}[source]
1.0 says:

  When a device has more than one instance of the Battery service, each Battery
  Level characteristic shall include a Characteristic Presentation Format
  descriptor that has a namespace/description value that is unique for that
  instance of the Battery service.
1.1 says:

  When a device has more than one instance of the Battery Service, each Battery
  Level characteristic shall include a Characteristic Presentation Format descriptor
  (Volume 3, Part G, Section 3.3.3.5 in [1]) that has the Name Space field set to
  ”Bluetooth SIG” and the Description field set to a valid value from the GATT
  Namespace Descriptors [4] and that is unique among all instances of the Battery
  Service exposed by the GATT Server.
1.0 was a mess and your anger over a poorly defined and relatively minor feature seems quite misplaced. Bluetooth interoperability has historically been a mess (still is from my experience). But go ahead be big mad that Airpods only play audio from third party devices and don't provide battery status in a way that adheres to a recent revision of the standard. Meanwhile I'm sure Sony would never use a proprietary format ever…
replies(2): >>45969615 #>>45969686 #
7. ◴[] No.45969615{6}[source]
8. angoragoats ◴[] No.45969686{6}[source]
I had posted a reply addressing your points, but I don't think this discussion is productive and you don't seem to want to engage honestly with what I'm saying and stay on topic. So I'll just say have a good day.
replies(1): >>45973281 #
9. inferiorhuman ◴[] No.45973281{7}[source]
You're lambasting Apple for not implementing part of a standard that hadn't been standardized.
replies(1): >>45974421 #
10. angoragoats ◴[] No.45974421{8}[source]
Nope. Bye!
replies(1): >>45977205 #