Librepods: AirPods liberated
TL;DR · AI 摘要
LibrePods 通过逆向工程实现 AirPods 在非苹果设备的跨平台使用,支持 Linux/Android 系统部分核心功能。
核心要点
- Linux/Android 可实现降噪模式切换、电池状态等 7 项核心功能
- 空间音频等 3 项功能需 Root 权限或未实现
- Find My 网络功能需进一步逆向工程
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- LibrePods
- 功能实现
- 7 项核心功能
- 3 项需 Root
- 技术挑战
- 协议逆向工程
- Android Root 限制
- 未来计划
- Find My 网络
- 心率监测
金句 / Highlights
值得收藏与分享的关键句。
Linux/Android 支持降噪模式切换、电池状态等 7 项功能,但空间音频等 3 项功能需 Root 或未实现
Find My 网络功能需要进一步逆向工程,且可能需要 Android Root 权限
空间音频的 HRTF 头追踪功能未实现,且该项目不涉及立体声空间化处理
GitHub - librepods-org/librepods: 从苹果生态中解放的 AirPods · GitHub
警告
librepods.org 并非 LibrePods 项目的官方网站。该网站错误地声称拥有项目版权,并在页脚使用 LibrePods 标志,同时声称项目与 LibrePods 及其开发者无任何关联。
请将其他类似网站报告给 me@kavish.xyz
什么是 LibrePods?
LibrePods 可让您在非苹果设备上使用原本仅限苹果设备的 AirPods 功能。它实现了 AirPods 与苹果设备之间数据交换的专有协议,使非苹果平台能够实现降噪模式切换、快速耳部检测、精准电量显示、头部手势、对话感知等功能。
功能支持情况
| 功能 | Linux | Android | |------|-------|---------| | 更改聆听模式 | ✅ | ✅ | | 耳部检测 | ✅ | ✅ | | 电量状态 | ✅ | ✅ | | 重命名 AirPods | ✅ | ✅ | | Android 注意事项 | 重命名后需要重新配对,因为安卓系统可能未使用最新名称 | | | 响应式降噪 | 🔴 | ⚪ | | 头部手势 | ⛔ | ⛔ | | 对话感知 | ✅ | ✅ | | 自动连接 AirPods | ✅ | ✅ | | 助听功能 | ✅ | ✅ | | 透明模式自定义 | ✅ | ✅ | | 多设备连接(蓝牙多点;仅限 2 台设备) | ✅ | ✅ |
其他辅助功能配置(点击展开)
- 按压速度
- 长按持续时间
- 单只 AirPod 降噪
- 滑动调节音量
- 音量滑动速度
其他通用配置
- 长按切换聆听模式/唤醒数字助手(唤醒数字助手需要最新固件)
- 配置通话控制
- 个性化音量
- 响应式降噪(需要 VendorID 欺骗)
- 麦克风侧
- 入睡时暂停媒体(需要最新固件)
- 启用关闭聆听模式切换至关闭
头部追踪空间音频
❓
心率监测
查找我的设备
高质量双向音频
符号说明
| 符号 | 含义 | |------|------| | ✅ | 已实现且运行良好 | | 🔴 | 需要 VendorID 欺骗;使用需谨慎 | | ⚪ | 需要 VendorID 欺骗;使用需谨慎 | | ⛔ | 尚未实现;计划中 | | ❓ | 未知 |
查找我的设备
以下与查找我的设备相关的功能正在规划中,但需要进一步逆向工程,安卓设备可能需要 root 权限:
- 将 AirPods 添加到查找网络
- 通过充电盒播放声音定位
- 离开时通知
- 切换充电盒充电声音
空间音频
当前应用未向安卓系统提供头部追踪信息以实现 HRTF。该功能尚未完全探索,可能需要 root 权限。
立体声空间化超出本项目范围,将永远不会实现。许多 OEM 厂商已有自己的实现方案。
心率监测(AirPods Pro 3 及更新版本)
该功能正在开发中,请查看 LibrePods Discord 服务器的 #reverse-engineering 频道获取更多信息。如果最终实现,安卓设备可能需要 root 权限。
高质量双向音频
在 iOS/iPadOS 上,您可以在 AirPods 通过其麦克风使用 AACP 传输音频流的同时继续使用 A2DP。
由于安卓需要更深入的音频集成,该功能很可能需要 root 权限。
安装
- Android
- Linux
VendorID 欺骗
事实证明,如果您将 DID 配置文件中的 VendorID 更改为苹果的,您将可以访问多个特殊功能!
你可以在 Linux 上通过编辑 /etc/bluetooth/main.conf 文件中的 DeviceID 实现此功能。在配置文件中添加以下行:DeviceID = bluetooth:004C:0000:0000。对于 Android,你可以在应用设置中启用“作为 Apple 设备运行”的选项(仅在安装了 Xposed 框架且启用了 LibrePods 模块时显示)。
多设备连接
AirPods 最多可同时连接两台设备,用于音频和控制。支持无缝切换连接。当 Android 设备接管 AirPods 时,Apple 设备会显示相同的提示通知,就像 AirPods 是 Apple 设备一样(显示“转移到 iPhone”)。当另一台设备接管时,Android 也会显示弹窗提示。
辅助功能设置与助听设备
可以配置的辅助功能包括自定义透明模式(包括放大、平衡、音调、对话增强和环境噪音降低)以及降低大音量。所有助听设备的自定义设置都可以在 Android 上完成(Linux 版本即将支持),包括设置听力图结果。应用本身不提供听力测试功能,因为这需要更高的精度。建议使用已有的听力图结果。
协议与逆向工程
有关协议的详细信息,请参考 Nojus(@pabloaul)开发的 Wireshark 分析插件:pabloaul/apple-wireshark
在 LibrePods 的大部分实现中并未使用该分析插件;在该插件开发之前,我曾自行对协议进行了逆向工程。但如果没有他们的逆向工程工作,许多(未来)功能(包括双向高质量音频和空间音频)将无法实现!
AI 的使用
Android 应用
应用中完全由 AI 生成的部分包括:
- 头部手势 - 所有内容,包括逻辑和用户界面
- 与 r2 + Xposed 模块的偏移设置(两个版本)
- 故障排除器和日志收集器
其余所有内容 - 后台服务、蓝牙管理类(AACP 和 ATT)、整个用户界面,甚至最小的组件都是手动编写的。
部分用户界面组件借鉴自 Kyant0 的演示应用,该应用采用 Apache License 2.0 许可证。
Linux(重写)
aacp.rs 和 att.rs 文件是从 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 store | source code)。如果你使用的是 Android 16 QPR3 或更低版本且未越狱,请使用此应用。
- Steam Deck 的 MagicPods(website)
- MagicPods - 如果你在寻找“Windows 版 LibrePods”(ms store 安装程序 | website)
星标历史
许可证
LibrePods - 从 Apple 生态系统中解放的 AirPods Copyright (C) 2025 LibrePods 贡献者
该程序是免费软件:您可以根据 GNU 通用公共许可证(由自由软件基金会发布,许可证版本 3 或任何后续版本)的条款重新分发和/或修改该程序。
本程序的发布是基于其可能有用的期望,但不提供任何担保,甚至不包括对适销性或特定用途适用性的隐含担保。更多细节请参见 GNU 通用公共许可证。
您应该已经随本程序收到了 GNU 通用公共许可证的副本。如果没有,请查看 https://www.gnu.org/licenses/ 。
商标声明
GPL 许可证并未授予使用 LibrePods 名称、标志或品牌标识的任何权利。在未经事先许可的情况下,不得将 LibrePods 名称和标志用于软件、网站、域名、产品、服务或其他项目,且不得暗示与官方 LibrePods 项目存在关联、认可或合作关系。
如果您发现 LibrePods 名称或标志的任何不当使用,请通过 me@kavish.xyz 向我报告。
Android 应用中使用的 SF Pro 字体是 Apple Inc. 的财产。该字体将在未来版本的 app 中被移除,并尽快替换为开源替代方案。
AirPods、AirPods Pro、AirPods Max 以及 AirPods 标志是 Apple Inc. 的商标。LibrePods 项目与 Apple Inc. 不存在任何形式的关联或认可关系。