librepods-org/librepods
GitHub: librepods-org/librepods
LibrePods 是一个跨平台开源工具,通过逆向实现 Apple 专有蓝牙协议,使 AirPods 在 Linux 和 Android 上获得完整的原厂功能体验。
Stars: 28059 | Forks: 1578
# 什么是 LibrePods?
LibrePods 让你能够使用 Apple 设备专属的 AirPods 功能。它实现了用于在 AirPods 和 Apple 设备之间交换数据的专有协议,从而在非 Apple 平台上启用了更改降噪模式、快速佩戴检测、精准电量状态、头部手势、对话感知等功能。
# 功能可用性
| 功能 | Linux | Android |
| ----------------------------------------------------------- | ----- | ------- |
| 更改聆听模式 | ✅ | ✅ |
| 佩戴检测 | ✅ | ✅ |
| 电量状态 | ✅ | ✅ |
| 重命名 AirPods
Android 注意事项
在 Android 上,重命名 AirPods 后你需要重新配对,因为 Android 可能不会使用最新的名称。 | ✅ | ✅ |
| 大声声音降噪 | 🔴 | ⚪ |
| 头部手势 | ⛔ | ✅ |
| 对话感知 | ✅ | ✅ |
| 自动连接 AirPods | ✅ | ✅ |
| 助听器 | 🔴 | ⚪ |
| 通透模式自定义 | 🔴 | ⚪ |
| 多设备连接(蓝牙多点;仅限 2 台设备) | ⚪ | ⚪ |
|
其他辅助功能配置(点击展开)
- 按压速度
- 长按时长
- 单只 AirPod 主动降噪
- 滑动控制音量
- 滑动调节音量的速度
| 🔴 | ✅ |
|
其他常规配置
- 长按以在聆听模式间切换/唤醒语音助手(唤醒语音助手需要较新的固件)
- 配置通话控制
- 个性化音量
- 大声声音降噪(需要 VendorID 伪装)
- 麦克风方向
- 入睡时暂停媒体播放(需要较新的固件)
- 启用
关闭聆听模式以切换至关闭
| 🔴 | ✅ |
| [头部追踪空间音频](#spatial-audio) | ❓ | ❓ |
| [心率监测](#heart-rate-monitoring) | ⛔ | 🔴 |
| [查找我的](#find-my) | ❓ | ❓ |
| [高质量双向音频](#high-quality-two-way-audio) | 🔴 | 🔴 |
| 图标 | 含义 |
| ------ | ------------------------------------------------------------------- |
| ✅ | 已实现且运行良好 |
| ⚪ | 需要 [VendorID 伪装](#vendorid-spoofing);使用风险自负 |
| 🔴 | 尚未实现;已规划 |
| ⛔ | 不会实现 |
| ❓ | 未知 |
## 查找我的
以下与“查找我的”相关的功能已规划,但需要进一步的逆向工程,并且在 Android 上可能需要 root 权限:
- 将你的 AirPods 添加到“查找我的”网络
- 通过充电盒播放声音以找到它
- 遗落时通知
- 切换充电盒充电提示音
## 空间音频
该应用目前不向 Android 提供头部追踪信息以供操作系统执行 HRTF。这一点尚未完全探索,并且可能需要 root 权限。
立体声空间化超出了本项目的范围,永远不会提供。许多 OEM 厂商对此都有自己的实现。
## 心率监测(AirPods Pro 3 及后续机型)
该功能正在开发中,请查看 LibrePods Discord 服务器上的 #reverse-engineering 频道以获取更多信息。如果最终得以实现,在 Android 上极有可能需要 root 权限。
## 高质量双向音频
在 iOS/iPadOS 上,当 AirPods 通过 AACP 发送其麦克风的音频流时,你可以继续使用 A2DP。
由于这需要与 Android 上的音频系统进行更深度的集成,因此极有可能需要 root 权限。
# 安装
- [**Android**](/android/README.md)
- [**Linux**](/linux/README.md)
# VendorID 伪装
事实证明,如果你将 DID Profile 中的 VendorID 更改为 Apple 的 VendorID,你就可以获得多项特殊功能!
在 Linux 上,你可以通过编辑 `/etc/bluetooth/main.conf` 中的 DeviceID 来实现。将这一行添加到配置文件中:`DeviceID = bluetooth:004C:0000:0000`。在 Android 上,你可以在此应用的设置中启用 `作为 Apple 设备运行`(仅在 Xposed 可用且启用了 LibrePods 模块时才会显示)。
## 多设备连接
最多可有两台设备同时连接到 AirPods,同时进行音频传输和控制。无缝切换连接。当 Android 接管 AirPods 时,Apple 设备上会显示相同的通知,就像它是一台 Apple 设备一样(“移至 iPhone”)。当另一台设备接管时,Android 也会显示一个弹出窗口。
## 辅助功能设置和助听器
辅助功能设置,如自定义通透模式(放大、平衡、音调、对话增强和环境噪音降低)以及大声声音降噪,都可以进行配置。
所有的助听器自定义都可以在 Android 上完成(Linux 即将支持),包括设置听力图结果。该应用不提供进行听力测试的方法,因为这需要更高的精度。使用现有的听力图结果要好得多。
# 协议与逆向工程
有关所使用协议的更多信息,请参阅 Nojus ([@pabloaul](https://github.com/pabloaul)) 编写的 Wireshark 解析器插件:[pabloaul/apple-wireshark](https://github.com/pabloaul/apple-wireshark)
在大部分实现过程中,LibrePods 并未使用该解析器;在这个解析器制作出来之前,我已经自己对协议进行了逆向工程。但是,如果没有他们的逆向工程努力,许多(未来的)功能(包括双向高质量音频和空间音频)是不可能实现的!
# AI 的使用
## Android 应用
应用的以下部分完全由 AI 生成:
- 头部手势 - 全部内容,包括逻辑和 UI
- 使用 r2 + xposed 模块的偏移量设置(两个版本皆是)
- 故障排除器和日志收集器
其余所有内容——后台服务、蓝牙管理类(AACP 和 ATT)、整个 UI,甚至是最小的组件,都是手动编写的。
UI 组件的某些部分借用了 [Kyant0 的演示应用](https://github.com/Kyant0/AndroidLiquidGlass/tree/master/catalog),该应用基于 [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0) 获得许可。
## Linux(重写版)
`aacp.rs` 和 `att.rs` 文件是使用 AI 从 Kotlin 翻译为 Rust 的。`media_controller.rs` 文件的一些部分(主要是 pulse 集成)也是由 AI 生成的。
# 其他平台的替代方案:
- CAPod - Android 上的 AirPods 伴侣应用。([Play 商店](https://play.google.com/store/apps/details?id=eu.darken.capod) | [源代码](https://github.com/d4rken-org/capod))。如果你使用的是 Android 16 QPR3 或更低版本,且未进行 root,请使用此应用。
- 适用于 Steam Deck 的 MagicPods([网站](https://magicpods.app/steamdeck/))
- MagicPods - 如果你正在寻找“Windows 版的 LibrePods”([MS 商店](https://apps.microsoft.com/store/detail/9P6SKKFKSHKM) [安装程序](https://magicpods.app/installer/MagicPods.appinstaller) | [网站](https://magicpods.app/))
# 许可证
LibrePods - 从 Apple 生态系统中解放出来的 AirPods
版权所有 (C) 2025 LibrePods 贡献者
本程序为自由软件:你可以自由 redistribute 和/或修改
它基于 Free Software Foundation 发布的 GNU General Public License 条款,无论是该 License 的第 3 版,还是(由你选择的)任何更高版本。
本程序的发布是希望它能发挥作用,
但没有任何保证;甚至没有暗示的适销性或
特定用途的适用性保证。详见
GNU General Public License 以获取更多细节。
你应该已经随本程序收到了一份 GNU General Public License 的副本。
如果没有,请参见
。
# 商标声明
GPL 不授予任何使用 LibrePods 名称、Logo 或品牌的权利。未经事先许可,LibrePods 名称和 Logo 不得用于软件、网站、域名、产品、服务或其他项目,且不得以暗示与官方 LibrePods 项目有关联、认可或联系的方式使用。
如果你看到任何滥用 LibrePods 名称或 Logo 的行为,请向 [me@kavish.xyz](mailto:me@kavish.xyz) 报告。
Android 应用中使用的 SF Pro 字体归 Apple Inc. 所有。这将在应用的未来版本中删除,并很快被一个开放替代品取代。
AirPods、AirPods Pro、AirPods Max 和 AirPods Logo 是 Apple Inc. 的商标。LibrePods 项目与 Apple Inc. 没有任何形式的附属关系或认可关系。
标签:AirPods, Android, DSL, Rust, 可视化界面, 硬件互联, 第三方工具, 网络流量审计, 蓝牙协议