Star on GitHubStar2.4k stars

Case study

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.

Targets
App · Protocol
Category
Independent reconstruction cases
Relationship
Independent reconstruction project
Sources reviewed
Stars
30.7k
Last commit
2026-10-16
Language
Kotlin
License (GitHub)
GPL-3.0

GitHub data as of 2026-11-09

Copy as MarkdownView JSONCite

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.

Cite

BibTeX

@misc{librepods-airpods-protocol-case,
  title = {{LibrePods: AirPods features on Android and Linux through a reverse-engineered protocol}},
  howpublished = {\url{https://github.com/librepods-org/librepods}},
  url = {https://github.com/librepods-org/librepods},
  urldate = {2026-10-19},
  note = {Awesome REA entry: \url{https://awesomerea.org/resources/librepods-airpods-protocol-case/}}
}

Plain text

LibrePods: AirPods features on Android and Linux through a reverse-engineered protocol. https://github.com/librepods-org/librepods (accessed 2026-10-19). Awesome REA entry: https://awesomerea.org/resources/librepods-airpods-protocol-case/

Useful? Star Awesome REA on GitHub2.4k

About this entry

The description was reviewed against primary sources.

Report an outdated entry Suggest a translation fix

Primary sources

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

More in Apps

All 370 entries in AppsApps case studies (233)

↑↓ move↵ open⌘↵ new tab