[!WARNING] librepods.org 并非 LibrePods 项目的官方网站。该网站通过声明版权并在页脚使用 LibrePods 徽标,不准确地声称自己是该项目的官方网站。同时,他们又表示该项目与 LibrePods 项目或其开发者并无关联。
请将任何其他此类网站报告至 [email protected]
LibrePods 让你能够在非 Apple 设备上使用 AirPods 的 Apple 设备专属功能。它实现了 AirPods 与 Apple 设备之间交换数据所用的专有协议,从而在非 Apple 平台上支持切换噪声控制模式、快速入耳检测、准确的电池状态、头部手势、对话感知等功能。
| 功能 | Linux | Android |
|---|---|---|
| 更改聆听模式 | ✅ | ✅ |
| 入耳检测 | ✅ | ✅ |
| 电池状态 | ✅ | ✅ |
重命名 AirPods Android 注意事项在 Android 上,重命名后需要重新配对 AirPods,因为 Android 可能不会使用最新的名称。 | ✅ | ✅ |
| 降低响亮声音 | 🔴 | ⚪ |
| 头部手势 | ⛔ | ✅ |
| 对话感知 | ✅ | ✅ |
| 自动连接 AirPods | ✅ | ✅ |
| 助听器 | 🔴 | ⚪ |
| 通透模式自定义 | 🔴 | ⚪ |
| 多设备连接(蓝牙多点连接;仅限 2 台设备) | ⚪ | ⚪ |
其他辅助功能配置(点击展开)
| 🔴 | ✅ |
其他通用配置
| 🔴 | ✅ |
| 头部追踪空间音频 | ❓ | ❓ |
| 心率监测 | 🔴 | 🟡 |
| 查找我的 | ❓ | ❓ |
| 高质量双向音频 | 🟡 | 🟡 |
| 符号 | 含义 |
|---|---|
| ✅ | 已实现且运行良好 |
| ⚪ | 需要 VendorID 欺骗;请自行承担风险 |
| 🟡 | 实验性/进行中 |
| 🔴 | 尚未实现;已计划 |
| ⛔ | 不会实现 |
| ❓ | 未知 |
以下与“查找我的”相关的功能已计划,但需要进一步逆向工程,且在 Android 上可能需要 root:
该应用目前不会向 Android 提供头部追踪信息,以供操作系统执行 HRTF。此功能尚未完全探索,且可能需要 root。
将立体声空间化超出了本项目的范围,永远不会提供。许多 OEM 厂商都有自己的实现。
在 android/rewrite 分支中可用。构建
尚不可用(不过这在电脑上似乎也没什么用。如果你有任何建议,请创建讨论。)
在 iOS/iPadOS 上,你可以继续使用 A2DP,同时 AirPods 通过 AACP 从其麦克风发送高分辨率(AAC-ELD 单声道 64kHz?)音频流。
在应用内使用 AirPods 的麦克风录制音频,而无需切换到 Headset/Handsfree 配置文件从而降低播放质量。但是,将此功能提供给其他应用/电话系统可能需要 root 权限,如果可行的话。
录音器仍在开发中;可在 android/rewrite 分支中使用。构建
请查看 PR #655。
事实证明,如果你将 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 生成:
其余所有内容——后台服务、蓝牙管理器类(AACP 和 ATT)、整个 UI,甚至最小的组件都是手动编写的。
部分 UI 组件借鉴自 Kyant0 的演示应用,该应用采用 Apache License 2.0 许可。
aacp.rs 和 att.rs 文件由 AI 从 Kotlin 翻译为 Rust。media_controller.rs 文件的部分内容,主要是 pulse 集成,也是由 AI 生成的。
衷心感谢每一位支持本项目的人!