librepods

2025-12-13

android

把事情做到极致,就是一种美。——杨洪基

解放 AirPods:LibrePods 带你跨越苹果生态,让高阶功能拥抱 Android 和 Linux

原仓库地址:kavishdevar/librepods
项目 Star:22,000+
许可证:GPLv3
描述:AirPods liberated from Apple’s ecosystem.


目录

  1. 项目起源 —— 为什么需要“解放 AirPods”
  2. 支持设备&兼容性简述
  3. 功能一览:不仅仅是“能听歌”
  4. 多平台支持:Linux、Android体验
  5. 部署与使用(含各平台代码/命令演示)
  6. 技术亮点:核心实现解析
  7. 进阶玩法:高级定制和解锁额外功能
  8. 生态与社区
  9. 结语:开源,让硬件不设限

1. 项目起源 —— 为什么需要“解放 AirPods”

Apple 的 AirPods 系列(Pro, Max 等)凭借优秀的硬件和降噪表现,俨然成为高端无线耳机用户的首选,但完整的专属功能(比如降噪模式切换、耳朵检测、听力辅助、手势接听、个性化设置等)却被锁定在苹果自家生态(iOS/macOS)中!

LibrePods 致力于打破品牌生态墙,让这些高阶特性来到 Android、Linux 甚至更广泛的设备上。 换句话说,只要你有 AirPods,无论用什么操作系统,都能大幅度体验“苹果独占”的官方功能!


2. 支持设备 & 兼容性简述

状态 设备 功能支持
AirPods Pro (2nd Gen) 完全支持并实机测试
AirPods Pro (3rd Gen) 基本完全支持(除心率监控)
AirPods Max 完全支持(部分显示为不支持功能)
⚠️ 其它 AirPods 支持(电量、耳套检测等基础功能)

实测以 Pro 2 最全,但协议分析表明绝大多数功能在其它型号同样适用,如果你有其它型号请积极反馈!


3. 功能一览:不仅仅是“能听歌”

  • 降噪/环境音/自适应/关闭模式:软件内一键切换,无需再捏设备本体
  • 耳朵检测&自动切换:摘下自动切歌/转扬声器
  • 电量获取:精准显示左右耳&充电盒剩余电量
  • 头部手势识别:点头接听电话,摇头拒接来电
  • 对话感知:说话自动降低音量
  • 听力辅助(Hearing Aid):个性化听力增强,全参数自定义
  • 个性化定制:改名、捏压功能自定义、Accessibility深度设置
  • 多设备连接:最多支持两设备(音频和控制同步)

以及更丰富的实验及进阶功能(需修改 VendorID):

  • 自主调整透明模式/Conversation Boost/声音均衡等
  • 听力测试&补偿曲线自定义(Audiogram)

4. 多平台支持:Linux、Android 体验

Linux

Linux 下 LibrePods 原生 GUI 管理程序,支持绝大部分官方专属功能(参见 linux/README.md):

  • 支持 Qt6,跨发行版编译
  • 电量、降噪、耳朵检测、听力辅助、环境感知、交互式系统托盘菜单
  • 媒体控制兼容 PipeWire、PulseAudio

Android

  • 完整适配 Android 13/14

  • 设定页面图形丰富(见多幅截图演示),通知栏显示、快捷开关、自定义长按、手势感应、Widget等

  • 深度定制透明模式、辅助设置

  • 注意:安卓部分功能需 ROOT + Xposed 框架支持,因 Android 蓝牙栈历史 bug 所致

    详见官方 Wiki/README 指南,部分 ColorOS/OxygenOS 可免 root 对某些功能。


5. 部署与使用(含各平台代码/命令演示)

Linux 安装&运行(以 Debian/Arch 为例):

依赖环境准备

1
2
3
4
5
6
7
# Arch Linux / EndeavourOS
sudo pacman -S qt6-base qt6-connectivity qt6-multimedia-ffmpeg qt6-multimedia openssl libpulse cmake

# Debian / Ubuntu
sudo apt-get install qt6-base-dev qt6-declarative-dev qt6-connectivity-dev qt6-multimedia-dev \
qml6-module-qtquick-controls qml6-module-qtqml-workerscript qml6-module-qtquick-templates \
qml6-module-qtquick-window qml6-module-qtquick-layouts libssl-dev libpulse-dev cmake

编译&运行

1
2
3
4
5
6
git clone https://github.com/kavishdevar/librepods.git
cd librepods/linux
mkdir build && cd build
cmake ..
make -j $(nproc)
./librepods # 运行桌面应用

小贴士 — 蓝牙协议小改动解锁更多功能

添加到 /etc/bluetooth/main.conf 末尾:

1
DeviceID = bluetooth:004C:0000:0000

重启蓝牙服务(sudo systemctl restart bluetooth)并重新配对 AirPods,可让系统在协议级被识别为 Apple 设备,解锁听力辅助/自定义透明等高级特性。


Android 部署

  1. 编译 APK 并以系统应用或通过 Xposed 框架安装
  2. 界面可以配置降噪、捏压、音量、透明增强等,无线切换
  3. 开启 VendorID 模拟后无需 iPhone即可定制全部细节

头部手势追踪高级玩法(Python 快速演示)

对于开发者,仓库 head-tracking/README.md 提供了极具 geek 趣味的头部动作追踪原型(如点头接听电话):

1
2
3
# plot.py 简易演示
# (需提前设定 AirPods 的蓝牙 MAC 地址)
python plot.py

如果想要纯粹动作判别:

1
python gestures.py

识别算法关键点(伪代码)

1
2
3
4
5
6
# pitch = (o2_norm + o3_norm) / 2 / 32000 * 180 # 上下点头
# yaw = (o2_norm - o3_norm) / 2 / 32000 * 180 # 左右摇头

# 判断节奏、幅度、方向切换,最终置信度阈值判定为 Yes/No
if confidence > 0.7:
print("Detected head gesture!")

6. 技术亮点:核心实现解析

蓝牙协议逆向

基于 AAP-Protocol-Definition 等社区文档通过蓝牙 HID/L2CAP 定制通信,重新实现 Apple 设备与 AirPods 之间的专有特性:

  • 修改 VendorID/DeviceID,让非 Apple 设备模拟“苹果手机”,解锁隐藏功能
  • 高频数据包分析,实现精准电量/动作/状态同步
  • 手动构造/监听命令包,比如降噪/自适应/辅助功能

可扩展性&辅助功能

  • 支持多台设备间无缝音频与控制切换(Android + Linux 交接)
  • 丰富 Accessibility、自定义强大
  • 开源协议,便于二次开发集成任意平台

7. 进阶玩法:高级定制和解锁额外功能

  • Hearing Aid定制:用 hearing_aid.py 自行配置8频段的听力补偿(需提供个人听力曲线);

    1
    python3 hearing_aid.py
  • 自定义 VendorID:在安卓/桌面端模拟苹果厂牌,开启超级权限

  • 多设备协同:官方原生一般只支持苹果设备自动切换,LibrePods 跨平台同样无缝


8. 生态与社区

  • 贡献者包括蓝牙协议逆向大神(tyalie 等),多名开发者。感谢 @rithvikvibhu、[@timgromeyer]、[@devnoname120] 等的文档与代码助力
  • 整合了 hackclub 高性能主机
  • Star 飞速增长,欢迎 issue / PR / 讨论更多新特性与 bug

9. 结语:开源,让硬件不设限

LibrePods 让顶尖硬件不再被生态和“专属功能”锁链束缚,是真正把用户和开发者放在首位的优秀开源项目。它“解构”苹果独占的同时也为业界打下跨平台定制和 accessibility 的范本。

无论你是安卓党、Linux 极客、硬件黑客,还是渴望更多自定义的重度用户,LibrePods 都值得你一试


“解锁即自由,开放即未来!”

👉 仓库地址:kavishdevar/librepods