2026 年 11 月 6 日,独立开发者 Matteo Gaudioso 正式发布开源 Python 工具 MousePods。它摆脱了苹果设备束缚。Linux 用户无需 Mac 或 iPhone,即可直接提取 AirPods 3 与 Pro 2 的空间音频体感数据。此前多年,开源社区尝试逆向 AirPods 头部追踪,却始终无法突破 2021 年发布的 AirPods 3。这道看似坚固的硬件封锁,破局点只在蓝牙底层传输单元的一行配置参数。
在过去很长时间里,AirPods 头部追踪是苹果专属生态的特权。用户转动头部时,内置传感器通过私有协议向苹果设备同步姿态,支撑动态空间音频。在非苹果系统上,这副耳机往往只能充当普通音频播放器。六轴惯性测量单元(IMU)始终处于静默黑盒状态。MousePods 撕开了这道封闭屏障,将硬件传感器还原为通用系统可调度的输入源。
672字节默认上限掩盖了关键传感器
Linux 蓝牙协议栈 BlueZ 的 L2CAP 连接,默认将接收端最大传输单元(MTU)设为 672 字节。过去十余年,这一数值足以应付常规音频信令与键鼠输入。但在面对苹果定制的传感器描述符时,它成了阻断通信的隐形筛子。
AirPods 3 建立 AACP(苹果配件协议)通道时,固件会根据主机宣告的缓冲区大小,动态决定公布哪些特性。MousePods 逆向分析表明,AirPods 3 内部挂载了 8 组独立虚拟 HID。其中负责六轴融合姿态的 devmotion6 描述符长达 817 字节,封装后需要 833 字节空间。三维陀螺仪 gyro 占用 803 字节,三维加速度计 accel 占用 804 字节。
这些关键运动传感器的描述符,全部超过了 672 字节上限。Linux 主机使用默认参数发起握手时,耳机固件检测到链路无法容纳大包,便直接放弃广播运动模块。系统最终只能拿到 mando(574 字节)、neorelay(617 字节)和 iedrelay(633 字节)等小型私有服务。
社区此前一度误判 AirPods 3 在硬件层面删除了传感器输出。Matteo 抓包对比了 iOS 原生连接行为。结果显示,iOS 默认将 L2CAP 接收端 MTU 设定为 2582 字节。在 Linux 上建立连接前,只需将套接字的 imtu 显式改写为 2582 字节。此前消失的 8 组虚拟传感器,瞬间全数恢复广播。
图:开源工具 MousePods 运行实时捕获的 AirPods 3 头部转动与姿态追踪动画。来源:Hackaday
绕开SensorDataWX重构RemoteHID通信链路
突破封包尺寸限制后,协议通信逻辑是第二道阻碍。在此之前,主流开源工具依赖名为 SensorDataWX 的私有子协议。该协议基于 Protobuf 序列化机制,挂载在 RTBuddy 操作码的 0x00100000 通道,向 14 号或 16 号服务发包即可拉起数据流。
AirPods 3 没有沿用这套机制。逆向脚本向其发送 SensorDataWX 启动指令时,耳机固件毫无回应,甚至不返回报错包。开发者尝试了从 1 到 82 号服务标识符,均以失败告终。
转机来自对苹果系统固件与第三方兼容耳机的交叉比对。开发者调取了 RemoteHID.framework 伪代码,并逆向了第三方耳机的反汇编逻辑。分析证实,AirPods 3 转向了更底层的 RemoteHID 架构。它将数据流部署于 RTBuddy 操作码 0x17 对应的 0x00000800 专用传感器通道。
在这一通道中,主机按标准三步流程拉起驱动。首先发送 HostConnect 握手帧,随后等待耳机返回各个传感器的 DeviceConnect 描述。最后向 devmotion6 设备下发 HID SetReport,将采样间隔微秒值写入特征报告 1。流程没有涉及不可破解的数字签名,硬件壁垒主要依靠未公开协议的分层隐蔽性。
210Hz高采样率把耳机变身低延迟输入设备
苹果原生系统的 CoreMotion 框架,通常将耳机体感采样率限制在 25Hz 左右。这一设定主要出于功耗与音频带宽考虑,但在精确交互中延迟明显。
MousePods 接管底层 SetReport 特征后,解除了频率限制。在 Linux 硬件实测中,将周期设为 20000 微秒可输出稳定的 57Hz 数据,压到 10000 微秒则提升至 110Hz。当间隔进一步缩短至 5000 微秒时,硬件采样率被推高至约 210Hz。
耳机吐出的 58 字节运动数据块结构规整。姿态四元数采用 Q15 定点数格式。空间角速度以每 LSB 约 0.122 度/秒输出,重力与用户加速度以每 g 对应 1000 计数值标定。由于 210Hz 超高频容易干扰 A2DP 蓝牙音频,项目默认将工作频率设在均衡的 100Hz。
通过 Linux 内核的 uinput 子系统,MousePods 将头部偏转映射为系统鼠标位移。光标滑动流畅自然。程序还集成了 UDP 转发,直接对接开源头部追踪软件 opentrack。
这为 PC 模拟飞行与赛车游戏提供了廉价方案。玩家在微软模拟飞行或神力科莎中,免去了购置数百元红外追踪架或 VR 头显的开销。戴上一副日常无线耳机,即可在保留立体声音频的同时,实现精确的视角环顾。
图:MousePods 应用界面实时呈现的欧拉角、四元数姿态与六轴加速度图表。来源:Hackaday
蓝牙底层通用性终结专有驱动排他垄断
消费数码行业长期通过软件锁闭硬件功能。厂商为了绑定用户,倾向于将通用传感器包裹在私有驱动层内,制造出硬件绑定系统的技术错觉。
真无线耳机内部的 MEMS 传感器芯片,物理上遵循通用总线标准。对外无线传输,受制于标准蓝牙 BR/EDR 物理层规范。无论上层协议如何包装,射频传输必须遵守通用物理准则。只要底层通信链路开放,专有软件封装便无法构成牢固的封闭防线。
无障碍交互领域由此获得了新支点。肢体障碍用户无法灵活操作传统鼠标,往往依赖动辄数千元的特种医疗辅具。MousePods 让普及型消费耳机化身高精度头部鼠标,显著降低了无障碍交互的经济门槛。
消费硬件的潜能不应受制于商业边界。当沉睡在耳机里的惯性传感器被开源代码唤醒,硬件功能不再取决于单一厂商的定义,而是交还给了更广阔的通用计算生态。
参考链接:
- Hackaday 技术报道
- MousePods 项目开源代码仓库与技术发现文档
- Apple RemoteHID 传输协议规范文档