kavishdevar/librepods
GitHub: kavishdevar/librepods
在非Apple设备上解锁AirPods专属功能的开源项目,通过逆向蓝牙协议打破生态锁定。
Stars: 26259 | Forks: 1453

## 什么是 LibrePods?
LibrePods 在非 Apple 设备上解锁了 Apple 独家的 AirPods 功能。您可以访问噪声控制模式、自适应通透模式、入耳检测、助听器、自定义通透模式、电池状态等功能——所有这些您已经付费,却被 Apple 锁定在其生态系统中的高级功能。
## 设备兼容性
| 状态 | 设备 | 功能 |
| ------ | --------------------- | ---------------------------------------------------------- |
| ✅ | AirPods Pro (2nd Gen) | 完全支持且已测试 |
| ✅ | AirPods Pro (3rd Gen) | 完全支持(心率监测除外) |
| ✅ | AirPods Max | 完全支持(客户端会显示不支持的功能) |
| ⚠️ | 其他 AirPods 型号 | 基础功能(电池状态、入耳检测)应该可以工作 |
大多数功能应该能在任何型号的 AirPods 上使用。目前,我只有 AirPods Pro 2 可供测试。但是,我相信所有其他 AirPods 的协议都是相同的(基于对 macOS 上蓝牙协议栈的分析)。
## 主要功能
- **噪声控制模式**:轻松切换不同的噪声控制模式,无需伸手去长按您的 AirPods
- **入耳检测**:当您戴上或摘下 AirPods 时自动控制音乐,并在您摘下时切换到手机扬声器
- **电池状态**:准确的电池电量
- **头部手势**:只需点头即可接听电话
- **对话感知**:您说话时音量会自动降低
- **助听器\***
- **自定义通透模式\***
- **多设备连接\***(最多 2 台设备)
- **其他自定义功能**:
- 重命名您的 AirPods
- 自定义长按操作
- 所有辅助功能设置
- 以及更多!
* 标有星号的功能需要将 VendorID 更改为 Apple 的 VendorID。
## 平台支持
### Linux
关于旧版本,请参阅 [Linux README](./linux/README.md)。(功能不多,维护者没有时间处理)
新版本开发中 ([#241](https://github.com/kavishdevar/librepods/pull/241))

### Android
#### 截图
| | | |
| --------------------------------------------------------------------------------------- | -------------------------------------------------- | ---------------------------------------------------------------------------- |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |
|  |  |  |
这是一个非常不专业的演示视频
https://github.com/user-attachments/assets/43911243-0576-4093-8c55-89c1db5ea533
#### Root 需求
如果您使用的是 ColorOS/OxygenOS 16、Android 16 QPR3、Anroid 17 Beta 3 或更高版本,除了自定义通透模式、设置助听器以及使用蓝牙多点连接外,您不需要 root。更改 ANC、对话感知、入耳检测和其他自定义功能无需 root 即可使用。
对于其他所有人:
**您必须拥有一台已 root 并安装了 Xposed 的设备才能在 Android 上使用 LibrePods。**
## 在 DID 配置文件中将 VendorID 更改为 Apple
事实证明,如果您将 DID 配置文件中的 VendorID 更改为 Apple,就可以访问多项特殊功能!
在 Linux 上,您可以通过编辑 `/etc/bluetooth/main.conf` 中的 DeviceID 来实现。将此行添加到配置文件中:`DeviceID = bluetooth:004C:0000:0000`。在 Android 上,您可以在应用的设置中启用 `act as Apple device`(作为 Apple 设备运行)设置。
### 多设备连接
最多两台设备可以同时连接到 AirPods,进行音频传输和控制。无缝切换连接。当 Android 接管 AirPods 时,会像 Apple 设备一样在 Apple 设备上显示相同的通知(“移至 iPhone”)。当其他设备接管时,Android 也会显示一个弹窗。
### 辅助功能设置和助听器
可以配置辅助功能设置,如自定义通透模式(放大、平衡、音调、对话增强和环境降噪)以及降低高音量。
所有助听器自定义功能都可以在 Android 上完成(Linux 即将支持),包括设置听力图结果。该应用程序不提供听力测试的功能,因为这需要更高的精度。使用现有的听力图结果要好得多。
#### 一些注意事项
- 由于近期 AirPods 的固件升级,您必须启用 `Off listening mode`(Off 监听模式)才能切换至 `Off`。这是因为在此模式下,不会降低高音量。
- 如果您将两个 AirPods 都摘下,应用程序将自动切换到手机扬声器。但是,Android 可能会继续尝试连接 AirPods,因为手机仍与它们连接着,只是 A2DP 配置文件未连接。如果检测到 AirPods 不在耳中且 Android 已重新连接,应用程序会尽快断开 A2DP 配置文件。
- 通过应用程序重命名您的 AirPods 时,您需要将它们与手机重新配对才能使名称更改生效。这是 Android 上蓝牙设备命名工作方式的限制。
- 如果您希望在 Android 设置应用中显示 AirPods 图标和电池状态,请通过使用 root 模块将此应用安装为系统应用。
## 支持者
非常感谢所有支持该项目的人!
- @davdroman
- @tedsalmon
- @wiless
- @SmartMsg
- @lunaroyster
- @ressiwage
## 特别感谢
- @tyalie 制作了该协议的第一份文档!([tyalie/AAP-Protocol-Definition](https://github.com/tyalie/AAP-Protocol-Defintion))
- @rithvikvibhu 以及 lagrangepoint 的小伙伴们协助开发助听器功能 ([gist](https://gist.github.com/rithvikvibhu/45e24bbe5ade30125f152383daf07016))
- @devnoname120 协助开发了第一个 root 补丁
- @timgromeyer 制作了 Linux 应用程序的第一个版本
- @hackclub 举办了 [High Seas](https://highseas.hackclub.com) 和 [Low Skies](https://low-skies.hackclub.com)!
# 许可证
LibrePods - 从 Apple 生态系统中解放出来的 AirPods
Copyright (C) 2025 LibrePods 贡献者
本程序是自由软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证的条款对其进行重新分发和/或修改,许可证的版本为第三版,或(根据您的选择)任何更高版本。
分发本程序是希望它能有用,但不对提供任何保证;甚至没有对适销性或特定用途适用性的默示保证。有关更多详细信息,请参见 GNU 通用公共许可证。
您应该已经随本程序收到一份 GNU 通用公共许可证的副本。如果没有,请参见 。
所有商标、标识和品牌名称均归其各自所有者所有。使用它们并不意味着有任何附属关系或 endorsements。所有 AirPods 图像、符号和 SF Pro 字体均为 Apple Inc. 的财产。
标签:AirPods, BLE, iOS生态, LibrePods, 安卓, 开源硬件, 生态解绑, 硬件交互, 第三方客户端, 耳机控制, 蓝牙低能耗, 蓝牙协议逆向, 越狱, 跨平台开发, 防御绕过, 降噪控制, 非苹果设备, 音频处理