
librepods nightly-53679cc
AirPods从苹果生态系统中解放出来。
[!WARNING] librepods.org 不是 LibrePods 项目的官方网站。它通过声明版权并在页脚使用 LibrePods 徽标,错误地声称自己是项目的官方网站。同时,他们声明该项目与 LibrePods 项目或其开发者无关。
请将任何其他此类网站报告至 [email protected]
什么是 LibrePods?
LibrePods 允许你在非 Apple 设备上使用原本仅限 Apple 设备的 AirPods 功能。它实现了 AirPods 与 Apple 设备之间数据交换所用的专有协议,使得你可以在非 Apple 平台上切换降噪模式、快速入耳检测、精确显示电池状态、头部手势、对话感知等更多功能。
功能可用性
| 功能 | Linux | Android |
|---|---|---|
| 切换收听模式 | ✅ | ✅ |
| 入耳检测 | ✅ | ✅ |
| 电池状态 | ✅ | ✅ |
重命名 AirPods Android 注意事项在 Android 上,重命名后需要重新配对 AirPods,因为 Android 可能不会使用最新的名称。 | ✅ | ✅ |
| 响亮声音降低 | 🔴 | ⚪ |
| 头部手势 | ⛔ | ✅ |
| 对话感知 | ✅ | ✅ |
| 自动连接 AirPods | ✅ | ✅ |
| 助听器 | 🔴 | ⚪ |
| 通透模式自定义 | 🔴 | ⚪ |
| 多设备连接(蓝牙多点连接;仅限 2 台设备) | ⚪ | ⚪ |
其他辅助功能配置(点击展开)
| 🔴 | ✅ |
其他通用配置
| 🔴 | ✅ |
| 头部跟踪空间音频 | ❓ | ❓ |
| 心率监测 | ⛔ | 🔴 |
| 查找我的 | ❓ | ❓ |
| 高质量双向音频 | 🔴 | 🔴 |
| 符号 | 含义 |
|---|---|
| ✅ | 已实现且运行良好 |
| ⚪ | 需要 VendorID 伪装;自行承担风险 |
| 🔴 | 尚未实现;计划中 |
| ⛔ | 不会实现 |
| ❓ | 未知 |
查找我的
与“查找我的”相关的以下功能已计划,但需要进一步的逆向工程,并且在 Android 上可能需要 root:
- 将 AirPods 添加到“查找我的”网络
- 让充电盒发声以帮助寻找
- 遗留时通知
- 切换充电盒充电提示音
空间音频
该应用目前不向 Android 系统提供头部跟踪信息以实现 HRTF。此功能尚未完全探索,并且可能需要 root。
立体声的空间化超出本项目的范围,永远不会提供。许多 OEM 厂商已有自己的实现方案。
心率监测(AirPods Pro 3 及更新型号)
此功能正在开发中,有关更多信息,请查看 LibrePods Discord 服务器上的 #reverse-engineering 频道。如果将来实现,在 Android 上很可能需要 root。
高质量双向音频
在 iOS/iPadOS 上,你可以在 AirPods 通过 AACP 发送麦克风音频流的同时继续使用 A2DP。
由于这需要与 Android 音频系统进行更深层次的集成,因此很可能需要 root。
安装
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)的 Wireshark 解析器插件:pabloaul/apple-wireshark
解析器在 LibrePods 的大部分实现中并未使用;我是自己逆向工程了协议之后才制作了这个解析器。但是,如果没有他们的逆向工程工作,许多(未来)功能(包括高质量双向音频和空间音频)将无法实现!
AI 的使用
Android 应用
以下应用部分完全由 AI 生成:
- 头部手势 - 全部内容,包括逻辑和 UI
- 使用 r2 + xposed 模块的偏移设置(两个版本)
- 故障排除工具和日志收集器
其余所有内容——后台服务、蓝牙管理器类(AACP 和 ATT)、整个 UI,甚至最小的组件——都是手动编写的。
部分 UI 组件借用了 Kyant0 的演示应用,该应用基于 Apache License 2.0 许可。
Linux(重写)
aacp.rs 和 att.rs 文件是使用 AI 从 Kotlin 翻译为 Rust 的。media_controller.rs 文件的部分内容(主要是 Pulse 集成)也是 AI 生成的。
支持者
非常感谢所有支持该项目的人!
|
@davdroman |
@tedsalmon |
@wiless |
|
@SmartMsg |
@lunaroyster |
@ressiwage |
|
@kkjdroid |
@CitrusJoules |
@DanielReyesDev |
|
@sumitduster |
@GrifTheDev |
特别感谢
- @tyalie 撰写了第一份协议文档!(tyalie/AAP-Protocol-Definition)
- @rithvikvibhu 以及 lagrangepoint 的各位在助听器功能上的帮助(gist)
- @devnoname120 在第一个 root 补丁上的帮助
- @timgromeyer 制作了第一个 Linux 应用版本
- @hackclub 主办了 High Seas 和 Low Skies!
- 当然,还要感谢所有以任何方式为项目做出贡献的人,包括测试、分享反馈或仅仅表示兴趣!
其他平台的替代方案:
- CAPod - Android 上的 AirPods 伴侣应用(Play 商店 | 源代码)。如果你使用 Android 版本 16 QPR3 或更低版本且未 root,请使用此应用。
- Steam Deck 的 MagicPods(网站)
- MagicPods - 如果你正在寻找“Windows 版 LibrePods”(MS 商店 安装程序 | 网站)
Star 历史
许可证
LibrePods - 从 Apple 生态系统中解放 AirPods Copyright (C) 2025 LibrePods 贡献者
本程序是自由软件:你可以根据自由软件基金会发布的 GNU 通用公共许可证(GPL)的条款重新分发和/或修改它,无论是许可证的第 3 版,还是(由你选择的)任何更高版本。
分发本程序是希望它有用,但不提供任何担保;甚至没有对适销性或特定用途适用性的默示担保。有关更多详细信息,请参阅 GNU 通用公共许可证。
你应该已经收到了本程序附带的 GNU 通用公共许可证副本。如果没有,请参阅 https://www.gnu.org/licenses/。
商标声明
GPL 不授予任何使用 LibrePods 名称、徽标或品牌的权利。未经事先许可,不得以暗示与官方 LibrePods 项目有关联、认可或联系的方式,将 LibrePods 名称和徽标用于软件、网站、域名、产品、服务或其他项目。
如果您发现任何滥用 LibrePods 名称或徽标的行为,请报告至 [email protected]。
Android 应用中使用的 SF Pro 字体是 Apple Inc. 的财产。在未来的应用版本中,该字体将被移除,并很快替换为开源替代品。
AirPods、AirPods Pro、AirPods Max 以及 AirPods 徽标是 Apple Inc. 的商标。LibrePods 项目与 Apple Inc. 没有任何关联或认可。