henry 发自 凹非寺
量子位 | 公众号 QbitAI
亏贼!
居然有人直接黑进了苹果没公开的传感器接口?发现隐藏的加速度计和陀螺仪接口
苹果API文档里找不到相关信息,但它们就藏在你的MacBook里。

通过它,程序可以实时读取笔记本电脑的三轴加速度(x/y/z)和三轴角速度数据。
也就是说,你的MacBook在空间中的晃动、旋转、倾斜,都能被精确记录。
只要轻轻晃一晃电脑、改变一下角度,终端里的数值就会跟着跳。
更离谱的是,把手腕贴近心率板10-20秒,程序还能捕捉到类似心率产生的微弱振动信号——
相当于在MacBook上“测了个心率”(当然完全不具备医疗意义)。
这个发现一出,网友直接炸锅:原来MacBook还有这玩意?
![]()
也有人开始联想:
他们会用这些数据来判断你在申请AppleCare赔偿时,是否摔过你的 MacBook。
![]()
毕竟,苹果的标准保修并不包含意外损坏,而AppleCare则是付费维修、收取服务费。
![]()
如果设备内部真的有加速度传感器,那下次修电脑找理由岂不是都不好找了?(doge)
M3 Pro上已证实
根据开发者小哥的GitHub,在搭载M3芯片的MacBook Pro上,确实存在加速度计和陀螺仪数据流。
这些传感器数据是小哥通过系统底层的IOKit HID接口读取到的。
苹果并没有公开API,也没有在官方文档中说明它的用途

具体来说,这个传感器挂在macOS的IOKit设备树下面,名叫AppleSPUHIDDevice
它属于苹果的SPU(Sensor Processing Unit,传感器处理单元)体系,由系统驱动AppleSPUHIDDriver管理。
在HID设备里,usage 3→加速度计,usage 9→陀螺仪,两者来自同一个物理IMU芯片。
根据拆机分析,外界推测可能是Bosch BMI286(未被官方确认)。
就目前来看,已经证实的机型有M3系列MacBook Pro,而已经被确认没有的包括搭载英特尔芯片的老mac和初代M1芯片的MacBook。
这个传感器能干嘛?
根据项目说明和网友分析,这个接口可以读取:三轴加速度、三轴陀螺仪、开盖角度以及环境光相关数据。
至于它的用途,小哥并没有进一步说明,但不少网友也是直接把这个跟MacBook的保修政策联系了起来。
但有一说一,开盖角度检测一直就有——
MacBook判断你是否合盖(屏幕休眠),本身就需要姿态或磁感应判断。
![]()
而环境光数据也不奇怪,Mac的屏幕和键盘都有自动亮度调节功能,本身就依赖光线传感器。
至于“测心跳”,那确实很有意思,有不少网友表示自己确实想体验一下。
![]()
把手腕放在触控板附近10–20秒,程序会尝试捕捉心跳引发的微弱机械振动(BCG原理)。
它通过0.8–3Hz带通滤波,自相关算法估算BPM。
不过需要强调的是,这并不能用作医疗用途,只是展示传感器灵敏度。
所以,目前还没有切实的证据表明:它会记录历史摔落数据、参与保修判定以及上传用户运动信息。
而且,据小哥透露,这个传感器数据流还可能会因为苹果系统的更新而被和谐掉。
至于大家最关心的能不能实时检测电脑的位姿,尤其是在摔了后拒保,还要看苹果后续的回应。
自己测试一下
最后,如果感兴趣的话,你也可以在自己的电脑上玩一下。
(详情可参考https://github.com/olvvier/apple-silicon-accelerometer)
先在终端运行:
ioreg-l -w0 | grep -A5 AppleSPUHIDDevice
如果能看到 AppleSPUHIDDevice 节点,说明设备存在。
然后:
gitclonehttps://github.com/olvvier/apple-silicon-accelerometercdapple-silicon-accelerometerpipinstall -e .sudopython3 motion_live.py
值得一提的是,这里需要 sudo,因为Apple Silicon上访问IOKit HID需要root权限。
成功运行后晃动电脑,终端数值会实时变化。
把手腕放在触控板附近10–20 秒,可以尝试“心跳检测”演示。
[1]https://github.com/olvvier/apple-silicon-accelerometer
[2]https://x.com/QingQ77/status/2025556429331943667?s=20
[3]https://medium.com/@oli.bourbonnais/your-macbook-has-an-accelerometer-and-you-can-read-it-in-real-time-in-python-28d9395fb180





京公网安备 11011402013531号