夜雨聆风学习资料网

ARTICLE · 1199734

超赞开源项目-AirPods打穿安卓系统限制

超赞开源项目-AirPods打穿安卓系统限制

手里有 AirPods,用着的却是安卓手机或 Linux 电脑,大概都遇到过这种尴尬:耳机能连上,但降噪模式切不了、电量看不到、戴没戴上系统也不清楚——这些功能被锁在苹果设备里。LibrePods 做的事,就是把 AirPods 与苹果设备之间那套私有通信协议重新实现一遍,让非苹果平台也能用上这些"专属能力"。项目用 Kotlin 写 Android 端,Linux 端正在用 Rust 重写,目前已覆盖监听模式切换、入耳检测、精确电量、头部手势、对话感知等一批核心功能。适合想在自己平台上把 AirPods 用透、又不打算换苹果设备的用户。

LibrePods 项目主视觉

🔗 开源地址

https://github.com/librepods-org/librepods

项目定位:AirPods liberated from Apple's ecosystem —— 把 AirPods 从苹果生态里解放出来。

内容说明

核心功能:把苹果专属能力搬到双端

LibrePods 实现了 AirPods 与苹果设备之间交换数据的私有协议,因此在非苹果平台上可以直接控制:

  • ✓

    监听模式切换:关闭 / 通透 / 自适应 / 降噪四种模式,并可分别为左右耳配置"按住"的行为(切模式或唤起数字助理)。

  • ✓

    入耳检测与自动连接:摘下自动暂停、戴上恢复,耳机断开后可自动回连。

  • ✓

    精确电量显示:左右耳与充电仓电量分别读数,不依赖系统的粗略估算。

  • ✓

    重命名 AirPods:可直接改耳机名称(安卓上改名后需要重新配对,才会用上新名字)。

  • ✓

    对话感知:开始说话时自动降低音量、切到通透;也可配置为直接暂停媒体。

  • ✓

    头部手势:点头接听、摇头拒接(目前仅 Android 支持)。

头部手势:点头接听、摇头拒接

Android 端把这些能力做成了一个完整的控制面板:主界面显示耳机与充电仓电量、监听模式、按压与按住的手势映射,以及来电控制。

Android 端主控制界面

技术亮点:协议逆向 + 主动"冒充"苹果设备

  • ✓

    自行逆向私有协议:作者在 Wireshark 解析插件出现之前就独立完成了协议逆向;插件作者 @pabloaul 整理的 apple-wireshark 解析器,则为双向高清音频、空间音频等尚在计划中的特性提供了基础。

  • ✓

    VendorID 伪造:AirPods 会检查连接的设备是不是苹果设备。把 DID Profile 里的 VendorID 改成苹果的(Linux 在 /etc/bluetooth/main.conf 里加一行 DeviceID = bluetooth:004C:0000:0000;Android 在设置中打开 "act as Apple device",该选项需 Xposed 可用且已启用 LibrePods 模块),就能再解锁一批特性,包括响度降低、助听、通透模式定制与双设备连接。README 把这些标注为"需 VendorID 伪造、自担风险"。

  • ✓

    双设备接管:最多两台设备可同时连接 AirPods,音频与控制都可用,切换是平滑的;安卓接管时,苹果那侧会收到与"Move to iPhone"相同的通知,安卓侧也会弹出提示。

  • ✓

    坦白开源实现方式:README 明确列出了哪些代码由 AI 生成——Android 的头部手势(含逻辑与 UI)、配合 r2 的偏移设置、疑难排查与日志收集工具;Linux 端 aacp.rs / att.rs 由 Kotlin 转译 Rust、media_controller.rs 的 pulse 集成部分。其余如后台服务、蓝牙管理层(AACP / ATT)、整套 UI 均为手工编写。

Linux 端是一个原生桌面应用(初版基于 Qt6),提供噪控模式、对话感知、电量监控、入耳自动播放/暂停、助听功能,并支持 Android 与 Linux 之间的无缝切换;另附一个命令行工具 librepods-ctl,可用脚本直接切模式(noise:anc / noise:transparency / noise:adaptive / noise:off)。Linux 端目前正在 linux/rust 分支上用 Rust 重写。

Linux 原生桌面应用

无障碍与助听配置

除常规功能外,LibrePods 还开放了面向听障用户的一组配置:通透模式下的放大、左右平衡、音色、对话增强、环境噪声抑制,以及响度降低等。助听相关的全部调整都能在 Android 端完成(Linux 端随后跟进),包括导入已有的听力图(audiogram)结果来设定参数。

需要说明的是,App 本身不提供听力测试——听力测试需要更高的精度,项目建议直接使用已有的听力图结果来设置。

助听器参数调整界面

适用场景与前置条件

  • ✓

    Android:无需 root 的机型有限。在 ColorOS / OxygenOS 16、realme UI 7.0,以及升级到 Android 16 QPR3 的 Pixel 设备(须装最新 Google Play 系统更新)上,多数特性无需 root;其余机型会因为 Android 蓝牙协议栈与苹果蓝牙实现不合规的问题而需要 root + Xposed,该问题已在跟踪中,预计 Android 17 会对所有设备解决。安装方式有 Google Play、GitHub Releases,或作为系统应用(root 模块)安装以获取特权蓝牙权限。

  • ✓

    Linux:可下载 AppImage 或可执行文件,初版需 Qt6 等依赖,按 README 中的发行版说明安装即可。

装上 root 模块后,耳机与手机的电量、监听模式可以一起放进桌面小组件。

桌面小组件显示电量与监听模式

总结说明

LibrePods 把 AirPods 的私有协议完整逆向并开源,Android 端的功能覆盖已经相当可观,Linux 端也在用 Rust 重写、持续跟进。它的价值在于让非苹果平台不再被硬件"阉割",适合愿意折腾的 Android / Linux 用户。需要注意的是,部分特性依赖 VendorID 伪造并被官方标注为"自担风险",Android 侧还有 root 与机型的门槛。项目以 GPL-3.0 发布,但 GPL 并不授予 LibrePods 名称与标识的使用权。另外,README 明确声明 librepods.org 并非官方站点,遇到类似站点请留意。

相关学习资料