t0nAr1sm

Appleを理解して翻訳する。それが「となりずむ」

Apple Silicon搭載MacBookに「非公開の加速度センサー」が内蔵されていることが発見される

MOTION LIVE v3の「Auto-Restart Sensor Reader」画面。コンパス、加速度センサー(Accelerometer)、ジャイロスコープ(Gyroscope)のリアルタイムな計測値と、サンプリング周波数が表示されたデバッグ用UI

✅この記事では、Apple Silicon搭載MacBookで「画面の角度」と「振動(加速度・ジャイロ)」を読み取れる“非公開の経路”が見つかった件を、仕組みとリスクまで含めてまとめます(ここでの「非公開」は、センサー自体が秘密という意味ではなく、一般向けに公開されたAPIとして提供されていない、という意味です)。

「面白い小ネタ」で終わる話なのか、それとも線引きが必要な話なのか、判断材料まで置いていきます。

どうも、となりです。

MacBookって、フタを開け閉めした瞬間に画面が点いたり、スリープから復帰したりしますよね。あれ自体は昔からの挙動ですが、今回話題になっているのは「どれくらい開いているか(角度)」をかなり細かく扱えそうな非公開APIが見つかったことです。

さらにもう一段びっくりなのが、Apple Silicon搭載MacBookに加速度センサー+ジャイロ(IMU)が載っていて、OS上から(条件つきで)データを取れる、という点。ネタっぽいデモから始まったのに、触ってみると“できること”が意外と広い、というタイプの発見です。

要点まとめ:MacBookは「角度」と「振動」を読める

結論から言うと、今回の話は「隠し機能が増えた」というより、既にあるハードウェアと内部実装の一部が“見える化”された、という整理が近いです。

センサー自体はスリープ制御や保護設計など、システムのために存在しているもので、いわゆる「秘密のデバイス」が仕込まれていた、という話とはニュアンスが違います。

  • LidAngleSensorという非公開APIが見つかり、MacBookの画面ヒンジ角度をリアルタイム表示するデモアプリが登場。
  • 別ルートで、Sensor Processing Unit(SPU)配下の加速度センサー+ジャイロをIOKit HID経由で読める例が公開。
  • 加速度/角速度は約800Hz相当の生データを扱っている前提で、コールバックは約100Hzに間引かれる設計。
  • 実行には管理者権限(sudo)が必要。普通のアプリがそのまま常用できる類ではありません。
  • 心拍デモ(バリストカルジオグラフィ)は実験的で、医療用途ではない(作者もその前提を明記)。
  • 今後のmacOSでこの経路が塞がれる可能性は残ります(非公開・実験扱いのため)。

また、将来世代のチップ名やOS名に触れる報告が混ざることがありますが、こうした点はコミュニティ由来の“報告ベース”で流動的になりやすく、断定には向きません。

LidAngleSensorは「フタの角度」をかなり素直に返す

Tom’s Hardwareが取り上げたのは、非公開APIとされるLidAngleSensorを使い、画面の開閉角度をリアルタイムに表示するアプリです。ゆっくり開閉すると、古い木の扉が軋む音を鳴らす“おふざけ機能”まで付いています。

MacBookには、画面ヒンジの正確な角度を認識するセンサーが搭載されています。u /Zestyclose-Salad-290
による投稿 pcmasterrace)

この「扉の音」が妙に話題になったのは、角度センサーの存在を“体験”として分かりやすく見せたからだと思います。角度がそのまま値として取れているなら、例えば角度計、ジェスチャー入力、アクセシビリティ寄りの操作など、発想が一気に広がりますよね。

ちなみにこのアプリには、画面の開閉角度で音程を操るテルミン(電子楽器)のようなモードも紹介されています。ここまで来ると、ネタの顔をしつつ「入力デバイスとしての可能性」をわざと見せに来ている感じがあります。

SPU配下のIMUをIOKit HIDで読むと何が起きる?

もう一つの大きい話が、GitHubで公開されたapple-silicon-accelerometerです。作者の説明では、Apple Silicon搭載MacBookにMEMSのIMU(加速度+ジャイロ)があり、SPUのドライバ(AppleSPUHIDDriver)経由でIOKit HIDとして見える、という整理になっています。

どこにぶら下がっている?

センサーはIOKitレジストリ上でAppleSPUHIDDeviceの下に現れ、HIDのVendor Usage Page(0xFF00)として扱われます。加速度とジャイロは同一IMUの別Usageとして読み分ける構成で、分解情報などからBosch BMI286ベースではないか、という推定も書かれています(ここは推定の域です)。

データはどれくらい速い?

作者の説明だと、加速度・角速度の生データは約800Hzで、コールバックは約100Hzに間引かれます。見た目は“リアルタイム表示”でも、裏では「取り回しやすい速度に落とす」層が挟まっている感じですね。

なぜsudoが必要?

重要なのはここで、読み取りには管理者権限(sudo)が必要と明記されています。つまり、普通のアプリがこっそり覗けるというより、開発者の研究・検証向けに近い触り方が前提の話です。一般の読者が試すなら、未知のスクリプトをsudoで実行すること自体がリスクなので、出どころが不明なものは避けるのが無難です。とはいえ、もしマルウェアが管理者権限を取ってしまうと、こういう“想定していない入力”が増えるのは嫌なところでもあります。

隠しセンサーで心拍数を測る仕組み

心拍デモは、カメラや光学式のセンサーを使うわけではなく、もっと泥臭いです。作者の説明では、トラックパッド付近に手首を置き、心拍が生む微細な振動が筐体に伝わるのを加速度データとして拾う、というやり方になっています。

この手法はバリストカルジオグラフィ(BCG)と呼ばれ、機械的な振動を使って心拍の周期を推定します。実装としては、0.8〜3Hz付近の帯域に寄せるフィルタをかけ、自己相関でBPMを推定する流れが説明されています。

ここ、期待値の置き方が大事です。作者自身が実験的で信頼性は高くないこと、医療用途ではないことを明言しています。なので「測れる=健康管理に使える」には直結しません。ただ、“このくらいの微振動を拾える”という事実は、入力や検知の可能性としてはかなり強いです。

注目したいポイント:面白さより「線引き」が問われる

ぼくが気になるのは、便利さよりも線引きのほうです。今の形だとsudoが必要で、気軽にアプリ化できる類ではありません。そこは一定の歯止めになっています。

ただ、センサーの値が取れる経路が存在する以上、セキュリティの観点では「権限を奪われたときに増える攻撃面」を一つ増やします。この話は、iPhone側の防御強化(たとえば端末が盗まれたときの保護設計)とも地続きで、iOS側のセキュリティ強化の流れと合わせて考えると、判断がしやすいです。

プライバシー寄りの感覚で言うと、「ユーザーが意識していない入力が増える」こと自体が不安の種になりやすい。MacBookのプライバシー設計の話は、“見られない/漏れない”に寄せたディスプレイ周りの発想ともつながります。

Redditの反応:ハックのロマンと、ちょい怖さ

議論の軸はだいたい2つで、「すごい、面白い」と「それ、悪用は大丈夫?」に分かれていました。

「M2でも動く」報告

作者側の返信で、M2でも動作したという報告に触れつつ、心拍は“内蔵機能”ではなく生データ上のアルゴリズムだと補足しています。

「用途は酔い止め(モーション軽減)では?」

加速度センサーがあるなら、移動中の作業を助けるような用途に使われているはず、という指摘も出ています。

「遊びから実用へ広がりそう」

最初はネタに見えるけど、入力や検知としては面白い。アクセシビリティやUIの方向に伸びるかも、という温度感です。

外部リンク:Reddit(ReverseEngineeringのスレッド)

ひとこと:MacBookは“入力”の余白をまだ隠してる

ぼくはこの手の発見を見るたびに、Appleって「できる/できない」より「どこまでを一般に開けるか」を設計してる会社だな、と思います。角度センサーもIMUも、技術的には使い道がある。でも公開してしまうと、アプリの挙動・電力・悪用・誤解(医療っぽい期待値)まで、全部の責任を背負うことになる。

だから現状は、sudo前提の“研究・デモ”として成立しているのがちょうどいい落とし所に見えます。逆に言うと、ここから先は「公式がどう線を引くか」で、便利な未来にも、閉じる未来にも転びます。ここ、ちょっと見守りたいです。

まとめ:今すぐ便利ではないが、意味は大きい

  • LidAngleSensorのデモで、MacBookが画面角度を細かく扱える可能性が見えました。
  • SPU配下のIMUは、IOKit HID経由で読める例が示され、振動や姿勢まで扱える余地が出ています。
  • 一方で、sudo前提・非公開経路という性質上、セキュリティとプライバシーの線引きは避けて通れません。

「面白い」だけで終わらず、どこまで開けるのが正解なのか。ここは読者側も、ちょっと考えたくなる話だと思います。

なお、心拍デモは作者の説明どおり医療用途ではない実験的デモで、結果の扱いは限定的に見ておくのが前提です。

ではまた!

Source: Tom's Hardware, Reddit r/ReverseEngineering, GitHub