librepods-org/librepods

GitHub: librepods-org/librepods

LibrePods 是一个跨平台开源工具,通过逆向实现 Apple 专有蓝牙协议,使 AirPods 在 Linux 和 Android 上获得完整的原厂功能体验。

Stars: 28059 | Forks: 1578

LibrePods
# 什么是 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, 可视化界面, 硬件互联, 第三方工具, 网络流量审计, 蓝牙协议