Apple Silicon Macに内蔵された加速度センサーをIOKitで読み取る方法
GitHubユーザーのolvvier氏が、Apple Silicon搭載MacBook(M1/M2/M3/M4チップ)に内蔵されている未公開のMEMS加速度センサーを読み取る方法を公開しました。このセンサーは、センサ処理ユニット(SPU)によって管理されており、公的なAPIやフレームワークを通じてアクセスできません。olvvier氏はIOKit HIDコールバックを使用して、約800Hzで生の3軸加速度データを読み取ることができます。
現在、M3 Pro MacBook Proでのみテスト済みであり、他のApple Silicon Macでも動作する可能性はありますが、保証はありません。センサーはiokitレジストリ内のAppleSPUHIDDeviceの下にあり、ベンダー使用ページ0xFF00、使用3にあります。ドライバは、センサ処理ユニットの一部であるAppleSPUHIDDriverです。IOHIDDeviceCreateを使用して開いて、IOHIDDeviceRegisterInputReportCallbackを介して非同期コールバックを登録します。データは、バイトオフセット6、10、14にint32リトルエンディアンでx/y/zとして含まれる22バイトのHIDレポートとして送信されます。値をg単位にするには、65536で割ります。コールバックレートは約100Hzです。
このプロジェクトは、root権限が必要です。IOKit HIDデバイスへのアクセスには、Apple Siliconでは昇格された特権が必要になります。
背景
Apple Silicon Macに内蔵されている未公開のMEMS加速度センサーに関する情報が公開されました。このセンサーは、公的なAPIやフレームワークを通じてアクセスできないため、IOKit HIDコールバックを使用して読み取る方法が示されています。
重要用語解説
IOKit: macOSでデバイスドライバとシステム間を接続するソフトウェアインタフェース。[重要性:高]。[具体例:Apple Silicon Macの加速度センサーへのアクセスに使用される]。
HID: Human Interface Device(人間インターフェースデバイス)。キーボード、マウス、ゲームコントローラなどの入力デバイスを指す用語。[重要性:中]。[具体例:Apple Silicon Macの加速度センサーはHIDとして認識される]。
SPU: Sensor Processing Unit(センサ処理ユニット)。Apple Siliconチップに内蔵された、センサーデータの処理を行う専用のハードウェアモジュール。[重要性:高]。[具体例:Apple Silicon Macの加速度センサーを管理する]。
今後の影響
この技術は、Apple Silicon Macの未公開機能へのアクセス方法を示すものであり、将来的な研究や開発に役立つ可能性があります。ただし、IOKit HIDコールバックを使用するにはroot権限が必要であり、macOSアップデートによって動作が変更される可能性があるため、注意が必要です。