{
  "added_at": "2026-11-09",
  "additional_evidence_urls": [
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/docs/AAP%20Definitions.md",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/docs/control_commands.md",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/docs/opcodes.md",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/android/README.md",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/android/app/build.gradle.kts",
    "https://github.com/librepods-org/librepods/tree/89356c08cea3db0b6b54792d9329d09a87cc85fa/android/app/src/main/res-apple",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/linux/README.md",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/linux/CMakeLists.txt",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/.github/workflows/ci-android.yml",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/.github/workflows/ci-linux-rust.yml",
    "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/LICENSE",
    "https://github.com/librepods-org/librepods/releases/tag/v1.0.4"
  ],
  "category": "reconstruction-cases",
  "class": "hardware",
  "description_en": "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.",
  "description_zh": "实现 AirPods 与苹果设备之间使用的专有协议（作者称由其本人逆向得出），使 Android 和 Linux 应用能够切换降噪模式、读取入耳检测和准确电量，并使用对话感知、头部手势和助听设置。仓库除 Android 应用和 Linux 应用外，还记录了抓包得到的数据包格式、操作码和控制命令。部分功能在 Android 上需要 root，或仍处于实验阶段。",
  "entry_url": "https://awesomerea.org/resources/librepods-airpods-protocol-case/",
  "entry_url_zh": "https://awesomerea.org/zh/resources/librepods-airpods-protocol-case/",
  "evidence_url": "https://github.com/librepods-org/librepods/blob/89356c08cea3db0b6b54792d9329d09a87cc85fa/README.md",
  "group": "cases",
  "id": "librepods-airpods-protocol-case",
  "json_url": "https://awesomerea.org/resources/librepods-airpods-protocol-case/record.json",
  "kind": "case-study",
  "markdown_url": "https://awesomerea.org/resources/librepods-airpods-protocol-case/index.md",
  "markdown_url_zh": "https://awesomerea.org/zh/resources/librepods-airpods-protocol-case/index.md",
  "name": "LibrePods: AirPods features on Android and Linux through a reverse-engineered protocol",
  "name_zh": "LibrePods：借助逆向得出的协议在 Android 和 Linux 上使用 AirPods 功能",
  "record_type": "resource",
  "relationship": "independent-reconstruction",
  "requirements": [
    "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."
  ],
  "requirements_zh": [
    "固定的 main 提交对应 Android v1.0.4。v2.0.0 Android 重写版处于 alpha 阶段；main 包含 Qt 6 Linux 应用，Rust 重写版位于 linux/rust。“查找”、头部追踪空间音频及高质量双向音频仍为未知、计划中或实验性功能。",
    "需要自有 AirPods 及受支持的 Android 或 Linux 设备。协议笔记描述在 AirPods Pro 2（USB-C）固件 7A305 上观察到的蓝牙 L2CAP 通信；其他型号和固件可能不同。",
    "Android 上的蓝牙协议栈绕行方案需要 root 和 Xposed，但 ColorOS/OxygenOS 16、realme UI 7.0 与 Android 16 QPR3 的 Pixel 设备例外。依赖厂商 ID 钩子的功能始终需要 root。Linux 应用需要 CMake 3.16+、Qt 6、OpenSSL 与 libpulse。",
    "Android CI 构建 FOSS APK；Rust Linux 分支有二进制构建工作流。仓库未发布协议一致性测试套件。",
    "许可证：GPL-3.0-or-later。部分界面组件采用 Apache-2.0。苹果字体、产品图片和 AirPods 固件保留各自权利；Android 构建包含 SF Pro 和 AirPods 图片，Linux 应用使用 SF Symbols 6。"
  ],
  "targets": [
    "app",
    "protocol"
  ],
  "url": "https://github.com/librepods-org/librepods",
  "verification": "source-reviewed",
  "verified_at": "2026-10-19"
}
