Full text · 原文
2,010 字
henry 发自 凹非寺<br>
量子位 | 公众号 QbitAI<br>
亏贼!<br>
居然有人直接黑进了苹果没公开的传感器接口?发现隐藏的加速度计和陀螺仪接口!!<br>
苹果API文档里找不到相关信息,但它们就藏在你的MacBook里。<br>
通过它,程序可以实时读取笔记本电脑的三轴加速度(x/y/z)和三轴角速度数据。<br>
也就是说,你的MacBook在空间中的晃动、旋转、倾斜,都能被精确记录。<br>
只要轻轻晃一晃电脑、改变一下角度,终端里的数值就会跟着跳。<br>
更离谱的是,把手腕贴近心率板10-20秒,程序还能捕捉到类似心率产生的微弱振动信号——<br>
相当于在MacBook上“测了个心率”(当然完全不具备医疗意义)。<br>
这个发现一出,网友直接炸锅:原来MacBook还有这玩意?<br>
也有人开始联想:<br>
他们会用这些数据来判断你在申请AppleCare赔偿时,是否摔过你的 MacBook。<br>
毕竟,苹果的标准保修并不包含意外损坏,而AppleCare则是付费维修、收取服务费。<br>
如果设备内部真的有加速度传感器,那下次修电脑找理由岂不是都不好找了?(doge)<br>
M3 Pro上已证实<br>
根据开发者小哥的GitHub,在搭载M3芯片的MacBook Pro上,确实存在加速度计和陀螺仪数据流。<br>
这些传感器数据是小哥通过系统底层的IOKit HID接口读取到的。<br>
苹果并没有公开API,也没有在官方文档中说明它的用途。<br>
具体来说,这个传感器挂在macOS的IOKit设备树下面,名叫AppleSPUHIDDevice。<br>
它属于苹果的SPU(Sensor Processing Unit,传感器处理单元)体系,由系统驱动AppleSPUHIDDriver管理。<br>
在HID设备里,usage 3→加速度计,usage 9→陀螺仪,两者来自同一个物理IMU芯片。<br>
根据拆机分析,外界推测可能是Bosch BMI286(未被官方确认)。<br>
就目前来看,已经证实的机型有M3系列MacBook Pro,而已经被确认没有的包括搭载英特尔芯片的老mac和初代M1芯片的MacBook。<br>
这个传感器能干嘛?<br>
根据项目说明和网友分析,这个接口可以读取:三轴加速度、三轴陀螺仪、开盖角度以及环境光相关数据。<br>
至于它的用途,小哥并没有进一步说明,但不少网友也是直接把这个跟MacBook的保修政策联系了起来。<br>
但有一说一,开盖角度检测一直就有——<br>
MacBook判断你是否合盖(屏幕休眠),本身就需要姿态或磁感应判断。<br>
而环境光数据也不奇怪,Mac的屏幕和键盘都有自动亮度调节功能,本身就依赖光线传感器。<br>
至于“测心跳”,那确实很有意思,有不少网友表示自己确实想体验一下。<br>
把手腕放在触控板附近10–20秒,程序会尝试捕捉心跳引发的微弱机械振动(BCG原理)。<br>
它通过0.8–3Hz带通滤波,自相关算法估算BPM。<br>
不过需要强调的是,这并不能用作医疗用途,只是展示传感器灵敏度。<br>
所以,目前还没有切实的证据表明:它会记录历史摔落数据、参与保修判定以及上传用户运动信息。<br>
而且,据小哥透露,这个传感器数据流还可能会因为苹果系统的更新而被和谐掉。<br>
至于大家最关心的能不能实时检测电脑的位姿,尤其是在摔了后拒保,还要看苹果后续的回应。<br>
自己测试一下<br>
最后,如果感兴趣的话,你也可以在自己的电脑上玩一下。<br>
(详情可参考https://github.com/olvvier/apple-silicon-accelerometer)<br>
先在终端运行:<br>
ioreg -l -w0 | grep -A5 AppleSPUHIDDevice<br>
如果能看到 AppleSPUHIDDevice 节点,说明设备存在。<br>
然后:<br>
git clone https://github.com/olvvier/apple-silicon-accelerometer
<br>
cd apple-silicon-accelerometerpip
<br>
install -e .
<br>
sudo python3 motion_live.py<br>
值得一提的是,这里需要 sudo,因为Apple Silicon上访问IOKit HID需要root权限。<br>
成功运行后晃动电脑,终端数值会实时变化。<br>
把手腕放在触控板附近10–20 秒,可以尝试“心跳检测”演示。<br>
参考链接<br>
[1]https://github.com/olvvier/apple-silicon-accelerometer<br>
[2]https://x.com/QingQ77/status/2025556429331943667?s=20<br>
[3]https://medium.com/@oli.bourbonnais/your-macbook-has-an-accelerometer-and-you-can-read-it-in-real-time-in-python-28d9395fb18