
librepods nightly-53679cc
AirPods从苹果生态系统中解放出来。
[!WARNING] librepods.org 并非 LibrePods 项目的官方网站。该网站通过声称拥有版权并在页脚使用 LibrePods 徽标,不准确地宣称自己是该项目的官方网站。同时,他们又表示该项目与 LibrePods 项目或其开发者无关。
请将任何其他此类网站报告至 [email protected]
什么是 LibrePods?
LibrePods 让你能够使用 Apple 设备专属的 AirPods 功能。它实现了 AirPods 与 Apple 设备之间交换数据所用的专有协议,从而在非 Apple 平台上实现诸如更改噪声控制模式、快速入耳检测、精确电量状态、头部手势、对话感知等功能。
功能可用性
| 功能 | Linux | Android |
|---|---|---|
| 更改聆听模式 | ✅ | ✅ |
| 入耳检测 | ✅ | ✅ |
| 电量状态 | ✅ | ✅ |
重命名 AirPods Android 注意事项在 Android 上,重命名后需要重新配对 AirPods,因为 Android 可能不会使用最新的名称。 | ✅ | ✅ |
| 降低响亮声音 | 🔴 | ⚪ |
| 头部手势 | ⛔ | ✅ |
| 对话感知 | ✅ | ✅ |
| 自动连接 AirPods | ✅ | ✅ |
| 助听器 | 🔴 | ⚪ |
| 通透模式自定义 | 🔴 | ⚪ |
| 多设备连接(蓝牙多点连接;仅限 2 台设备) | ⚪ | ⚪ |
其他辅助功能配置(点击展开)
| 🔴 | ✅ |
其他通用配置
| 🔴 | ✅ |
| 头部追踪空间音频 | ❓ | ❓ |
| 心率监测 | 🔴 | 🟡 |
| 查找我的 | ❓ | ❓ |
| 高质量双向音频 | 🟡 | 🟡 |
| 符号 | 含义 |
|---|---|
| ✅ | 已实现且运行良好 |
| ⚪ | 需要 VendorID 伪装;风险自负 |
| 🟡 | 实验性/开发中 |
| 🔴 | 尚未实现;已计划 |
| ⛔ | 不会实现 |
| ❓ | 未知 |
查找我的
以下与“查找我的”相关的功能已列入计划,但需要进一步逆向工程,且在 Android 上可能需要 root:
- 将你的 AirPods 添加到“查找我的”网络
- 通过充电盒播放声音以找到它
- 遗落时通知
- 切换充电盒充电声音
空间音频
该应用目前不会向 Android 提供头部追踪信息,以供操作系统执行 HRTF。这一点尚未被完全探索,可能需要 root。
将立体声空间化超出了本项目的范围,且永远不会提供。许多 OEM 厂商都有自己的实现。
心率监测
Android
在 android/rewrite 分支中可用。构建
Linux
尚不可用(不过这在电脑上似乎也没什么用。如果你有任何建议,请创建讨论。)
高质量双向音频
在 iOS/iPadOS 上,你可以继续使用 A2DP,同时 AirPods 通过 AACP 发送其麦克风的音频流。
Android
可以在应用内使用 AirPods 的麦克风录制音频,而无需切换到耳机/免手持配置文件。但是,若要将其提供给其他应用/电话功能,可能需要 root,如果这有可能实现的话。
录音器正在开发中;在 android/rewrite 分支中可用。构建
Linux
请查看 PR #655。
安装
VendorID 伪装
事实证明,如果你将 DID Profile 中的 VendorID 改为 Apple 的 VendorID,就能获得多项特殊功能!
在 Linux 上,你可以通过编辑 /etc/bluetooth/main.conf 中的 DeviceID 来实现。将以下行添加到配置文件中 DeviceID = bluetooth:004C:0000:0000。在 Android 上,你可以在应用的设置中启用 act as Apple device 设置(仅在 Xposed 可用且 LibrePods 模块已启用时显示)。
多设备连接
最多可以同时将两台设备连接到 AirPods,用于音频和控制。无缝连接切换。当 Android 接管 AirPods 时,Apple 设备上会显示与 Apple 设备相同的通知(“移动到 iPhone”)。当另一台设备接管时,Android 也会显示弹出提示。
辅助功能设置和助听器
可以配置辅助功能设置,例如自定义通透模式(放大、平衡、音调、对话增强和环境噪声降低)以及降低响亮声音。
所有助听器自定义都可以在 Android 上完成(Linux 很快支持),包括设置听力图结果。该应用不提供进行听力测试的方式,因为这需要更高的精确度。使用已有的听力图结果要好得多。
协议与逆向工程
有关所用协议的更多信息,请参考 Nojus(@pabloaul)的 Wireshark 解析器插件:pabloaul/apple-wireshark
在 LibrePods 的大部分实现中并未使用该解析器;在该解析器制作之前,我已自行逆向工程了该协议。但是,如果没有他们的逆向工程努力,许多(未来的)功能,包括双向高质量音频和空间音频,将不可能实现!
AI 的使用
Android 应用
应用的以下部分完全由 AI 生成:
- 头部手势 - 全部内容,包括逻辑和 UI
- 使用 r2+ xposed 模块的偏移设置(两个版本)
- 故障排除工具和 LogCollector
其余所有内容——后台服务、蓝牙管理器类(AACP 和 ATT)、整个 UI,甚至最小的组件——都是手动编写的。
部分 UI 组件借鉴自 Kyant0 的演示应用,该应用采用 Apache License 2.0 许可。
Linux(重写版)
aacp.rs 和 att.rs 文件是使用 AI 从 Kotlin 翻译为 Rust 的。media_controller.rs 文件的部分内容,主要是 pulse 集成,也是由 AI 生成的。
支持者
衷心感谢每一位支持本项目的人!