# LibrePods: AirPods features on Android and Linux through a reverse-engineered protocol

> Implements the proprietary protocol that AirPods use with Apple devices, which the author reports reverse-engineering, so that Android and Linux apps can switch noise-control modes, read ear detection and accurate battery levels, and use conversational awareness, head gestures and hearing-aid settings. The repository documents captured packet formats, opcodes and control commands alongside the Android app and the Linux app. Several features need root on Android or remain experimental.

- Type: Case study
- Targets: App · Protocol
- Category: Independent reconstruction cases
- Relationship: Independent reconstruction project
- Sources reviewed: 2026-10-19
- Added to the catalog: 2026-11-09
- Original resource: <https://github.com/librepods-org/librepods>
- Primary source: <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/README.md>
- Catalog page: <https://awesomerea.org/resources/librepods-airpods-protocol-case/>
- Record JSON: <https://awesomerea.org/resources/librepods-airpods-protocol-case/record.json>
- Chinese version: [简体中文](https://awesomerea.org/zh/resources/librepods-airpods-protocol-case/index.md)

## Requirements & limits

- Android release v1.0.4 is at the pinned main commit. The v2.0.0 Android rewrite is alpha; main contains the Qt 6 Linux app, and a Rust rewrite is on linux/rust. Find My, head-tracked spatial audio and high-quality two-way audio remain unknown, planned or experimental.
- Use your own AirPods and a supported Android or Linux device. Protocol notes describe Bluetooth L2CAP traffic observed on AirPods Pro 2 (USB-C) firmware 7A305; other models and firmware may differ.
- On Android, root and Xposed are needed for the Bluetooth-stack workaround except on ColorOS/OxygenOS 16, realme UI 7.0 and Pixel devices on Android 16 QPR3. Vendor-ID-hook features always need root. The Linux app needs CMake 3.16+, Qt 6, OpenSSL and libpulse.
- Android CI builds FOSS APKs; the Rust Linux branch has a binary build workflow. The repository has no published protocol conformance suite.
- License: GPL-3.0-or-later. Some UI components are Apache-2.0. Apple fonts, product images and AirPods firmware retain their own rights; the Android build includes SF Pro and AirPods images, and the Linux app uses SF Symbols 6.

## Primary sources

1. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/README.md>
2. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/docs/AAP%20Definitions.md>
3. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/docs/control_commands.md>
4. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/docs/opcodes.md>
5. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/android/README.md>
6. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/android/app/build.gradle.kts>
7. <https://github.com/librepods-org/librepods/tree/89356c08cea3db0b6b54792d9329d09a87cc85fa/android/app/src/main/res-apple>
8. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/linux/README.md>
9. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/linux/CMakeLists.txt>
10. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/.github/workflows/ci-android.yml>
11. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/.github/workflows/ci-linux-rust.yml>
12. <https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/LICENSE>
13. <https://github.com/librepods-org/librepods/releases/tag/v1.0.4>

## More in Apps

- [OpenHaystack: tracking tags that use Apple Find My](https://awesomerea.org/resources/openhaystack-find-my-case/index.md) · Case study
- [PC-BASIC: a GW-BASIC-family interpreter](https://awesomerea.org/resources/pcbasic-interpreter-case/index.md) · Case study
- [ReactOS: a Windows NT-compatible operating system](https://awesomerea.org/resources/reactos-nt-compatible-case/index.md) · Case study
- [viaduct: a Linux port of NetNewsWire](https://awesomerea.org/resources/viaduct-netnewswire-case/index.md) · Case study
- [zalo-linux: a Linux package of the Zalo desktop app](https://awesomerea.org/resources/zalo-linux-desktop-case/index.md) · Case study
- [Free-BBN: recreating the PlayStation Broadband Navigator dashboard](https://awesomerea.org/resources/free-bbn-case/index.md) · Case study

## About this entry

The description was reviewed against primary sources.
Original editorial content: MIT. Linked projects, papers and assets retain their own rights and licenses.
