Hacker News Best

Librepods: AirPods liberated

8.5内容质量

TL;DR · AI 摘要

LibrePods 通过逆向工程实现 AirPods 在非苹果设备的跨平台使用,支持 Linux/Android 系统部分核心功能。

核心要点

  • Linux/Android 可实现降噪模式切换、电池状态等 7 项核心功能
  • 空间音频等 3 项功能需 Root 权限或未实现
  • Find My 网络功能需进一步逆向工程

结构提纲

按章节快速跳转。

  1. 警告非官方网站 librepods.org 存在版权冒用行为

  2. Linux/Android 支持 7 项核心功能,3 项需 Root

  3. 空间音频需 OEM 自研方案,未在项目范围内实现

  4. Find My 网络功能需进一步逆向工程和 Root 权限

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • LibrePods
    • 功能实现
      • 7 项核心功能
      • 3 项需 Root
    • 技术挑战
      • 协议逆向工程
      • Android Root 限制
    • 未来计划
      • Find My 网络
      • 心率监测

金句 / Highlights

值得收藏与分享的关键句。

  • Linux/Android 支持降噪模式切换、电池状态等 7 项功能,但空间音频等 3 项功能需 Root 或未实现

    Feature availability 表格

    ⬇︎ 下载 PNG𝕏 分享到 X
  • Find My 网络功能需要进一步逆向工程,且可能需要 Android Root 权限

    Find My 小节

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 空间音频的 HRTF 头追踪功能未实现,且该项目不涉及立体声空间化处理

    Spatial Audio 小节

    ⬇︎ 下载 PNG𝕏 分享到 X
#开源项目#逆向工程#AirPods#跨平台
打开原文

GitHub - librepods-org/librepods: 从苹果生态中解放的 AirPods · GitHub

警告

librepods.org 并非 LibrePods 项目的官方网站。该网站错误地声称拥有项目版权,并在页脚使用 LibrePods 标志,同时声称项目与 LibrePods 及其开发者无任何关联。

请将其他类似网站报告给 me@kavish.xyz

什么是 LibrePods?

LibrePods 可让您在非苹果设备上使用原本仅限苹果设备的 AirPods 功能。它实现了 AirPods 与苹果设备之间数据交换的专有协议,使非苹果平台能够实现降噪模式切换、快速耳部检测、精准电量显示、头部手势、对话感知等功能。

功能支持情况

| 功能 | Linux | Android | |------|-------|---------| | 更改聆听模式 | ✅ | ✅ | | 耳部检测 | ✅ | ✅ | | 电量状态 | ✅ | ✅ | | 重命名 AirPods | ✅ | ✅ | | Android 注意事项 | 重命名后需要重新配对,因为安卓系统可能未使用最新名称 | | | 响应式降噪 | 🔴 | ⚪ | | 头部手势 | ⛔ | ⛔ | | 对话感知 | ✅ | ✅ | | 自动连接 AirPods | ✅ | ✅ | | 助听功能 | ✅ | ✅ | | 透明模式自定义 | ✅ | ✅ | | 多设备连接(蓝牙多点;仅限 2 台设备) | ✅ | ✅ |

其他辅助功能配置(点击展开)

  • 按压速度
  • 长按持续时间
  • 单只 AirPod 降噪
  • 滑动调节音量
  • 音量滑动速度

其他通用配置

  • 长按切换聆听模式/唤醒数字助手(唤醒数字助手需要最新固件)
  • 配置通话控制
  • 个性化音量
  • 响应式降噪(需要 VendorID 欺骗)
  • 麦克风侧
  • 入睡时暂停媒体(需要最新固件)
  • 启用关闭聆听模式切换至关闭

头部追踪空间音频

心率监测

查找我的设备

高质量双向音频

符号说明

| 符号 | 含义 | |------|------| | ✅ | 已实现且运行良好 | | 🔴 | 需要 VendorID 欺骗;使用需谨慎 | | ⚪ | 需要 VendorID 欺骗;使用需谨慎 | | ⛔ | 尚未实现;计划中 | | ❓ | 未知 |

查找我的设备

以下与查找我的设备相关的功能正在规划中,但需要进一步逆向工程,安卓设备可能需要 root 权限:

  • 将 AirPods 添加到查找网络
  • 通过充电盒播放声音定位
  • 离开时通知
  • 切换充电盒充电声音

空间音频

当前应用未向安卓系统提供头部追踪信息以实现 HRTF。该功能尚未完全探索,可能需要 root 权限。

立体声空间化超出本项目范围,将永远不会实现。许多 OEM 厂商已有自己的实现方案。

心率监测(AirPods Pro 3 及更新版本)

该功能正在开发中,请查看 LibrePods Discord 服务器的 #reverse-engineering 频道获取更多信息。如果最终实现,安卓设备可能需要 root 权限。

高质量双向音频

在 iOS/iPadOS 上,您可以在 AirPods 通过其麦克风使用 AACP 传输音频流的同时继续使用 A2DP。

由于安卓需要更深入的音频集成,该功能很可能需要 root 权限。

安装

  • Android
  • Linux

VendorID 欺骗

事实证明,如果您将 DID 配置文件中的 VendorID 更改为苹果的,您将可以访问多个特殊功能!

你可以在 Linux 上通过编辑 /etc/bluetooth/main.conf 文件中的 DeviceID 实现此功能。在配置文件中添加以下行:DeviceID = bluetooth:004C:0000:0000。对于 Android,你可以在应用设置中启用“作为 Apple 设备运行”的选项(仅在安装了 Xposed 框架且启用了 LibrePods 模块时显示)。

多设备连接

AirPods 最多可同时连接两台设备,用于音频和控制。支持无缝切换连接。当 Android 设备接管 AirPods 时,Apple 设备会显示相同的提示通知,就像 AirPods 是 Apple 设备一样(显示“转移到 iPhone”)。当另一台设备接管时,Android 也会显示弹窗提示。

辅助功能设置与助听设备

可以配置的辅助功能包括自定义透明模式(包括放大、平衡、音调、对话增强和环境噪音降低)以及降低大音量。所有助听设备的自定义设置都可以在 Android 上完成(Linux 版本即将支持),包括设置听力图结果。应用本身不提供听力测试功能,因为这需要更高的精度。建议使用已有的听力图结果。

协议与逆向工程

有关协议的详细信息,请参考 Nojus(@pabloaul)开发的 Wireshark 分析插件:pabloaul/apple-wireshark

在 LibrePods 的大部分实现中并未使用该分析插件;在该插件开发之前,我曾自行对协议进行了逆向工程。但如果没有他们的逆向工程工作,许多(未来)功能(包括双向高质量音频和空间音频)将无法实现!

AI 的使用

Android 应用

应用中完全由 AI 生成的部分包括:

  • 头部手势 - 所有内容,包括逻辑和用户界面
  • 与 r2 + Xposed 模块的偏移设置(两个版本)
  • 故障排除器和日志收集器

其余所有内容 - 后台服务、蓝牙管理类(AACP 和 ATT)、整个用户界面,甚至最小的组件都是手动编写的。

部分用户界面组件借鉴自 Kyant0 的演示应用,该应用采用 Apache License 2.0 许可证。

Linux(重写)

aacp.rsatt.rs 文件是从 Kotlin 翻译到 Rust 的,部分 media_controller.rs 文件内容(主要是 Pulse 集成部分)也是 AI 生成的。

感谢支持

衷心感谢所有支持该项目的人!

@davdroman

@tedsalmon

@wiless

@SmartMsg

@lunaroyster

@ressiwage

@kkjdroid

@CitrusJoules

@DanielReyesDev

@sumitduster

@GrifTheDev

特别致谢

  • @tyalie 为协议编写了第一份文档!(tyalie/AAP-Protocol-Definition)
  • @rithvikvibhu 以及 lagrangepoint 的团队帮助实现了助听设备功能(gist)
  • @devnoname120 帮助实现了第一个 root 补丁
  • @timgromeyer 开发了第一个 Linux 应用版本
  • @hackclub 主办了 High Seas 和 Low Skies!
  • 当然,所有以任何方式为项目做贡献的人,包括测试、提供反馈或只是表达兴趣的人!

其他平台替代方案:

  • CAPod - Android 平台的 AirPods 伴侣应用。(play store | source code)。如果你使用的是 Android 16 QPR3 或更低版本且未越狱,请使用此应用。
  • Steam Deck 的 MagicPods(website)
  • MagicPods - 如果你在寻找“Windows 版 LibrePods”(ms store 安装程序 | website)

星标历史

许可证

LibrePods - 从 Apple 生态系统中解放的 AirPods Copyright (C) 2025 LibrePods 贡献者

该程序是免费软件:您可以根据 GNU 通用公共许可证(由自由软件基金会发布,许可证版本 3 或任何后续版本)的条款重新分发和/或修改该程序。

本程序的发布是基于其可能有用的期望,但不提供任何担保,甚至不包括对适销性或特定用途适用性的隐含担保。更多细节请参见 GNU 通用公共许可证。

您应该已经随本程序收到了 GNU 通用公共许可证的副本。如果没有,请查看 https://www.gnu.org/licenses/ 。

商标声明

GPL 许可证并未授予使用 LibrePods 名称、标志或品牌标识的任何权利。在未经事先许可的情况下,不得将 LibrePods 名称和标志用于软件、网站、域名、产品、服务或其他项目,且不得暗示与官方 LibrePods 项目存在关联、认可或合作关系。

如果您发现 LibrePods 名称或标志的任何不当使用,请通过 me@kavish.xyz 向我报告。

Android 应用中使用的 SF Pro 字体是 Apple Inc. 的财产。该字体将在未来版本的 app 中被移除,并尽快替换为开源替代方案。

AirPods、AirPods Pro、AirPods Max 以及 AirPods 标志是 Apple Inc. 的商标。LibrePods 项目与 Apple Inc. 不存在任何形式的关联或认可关系。