ハードウェア

iPhoneやiPadで採用されているAppleの「Lightning」の仕様を詳細に調査した結果が公開中


Appleが開発したインターフェース規格である「Lightning」は、iPhoneやiPadといったデバイスに搭載され、デバイスの充電やコンピューターとのデータのやりとりを行う重要なインターフェースです。そのLightningについて、Apple製品の解析を行っているNyanSatan氏が調査し、詳細な仕様をブログ上に公開しています。

Apple Lightning
https://nyansatan.github.io/lightning/

デバイス側のLightningポートのピン配置はこんな感じ。5番「PWR」の給電用ピンや4番の「ID0」と8番の「ID1」で表される認証管理用ピンなどがあるとのこと。


Lightningは差し込むケーブルの向きに関わらず使用できますが、ポートのピン配置は上側と下側で異なっています。


Lightningを構成する回路のひとつである「Tristar」は、入力された複数の信号を単一の信号として出力できるマルチプレクサで、デバイス本体のポートに実装されているとのこと。ケーブル側のLightningプラグの向きやアクセサリーIDの識別などにTristarが使われているとNyanSatan氏は説明しています。また、iPhone 8/Xからはワイヤレス給電に対応した「Hydra」が採用されていますが、役割としてはTristarと同じだそうです。


HiFive」は、SN2025やBQ2025といったチップを内蔵した、ケーブル側のLightningプラグのこと。デバイス側のTristarとケーブル側のHiFiveは「IDBUS」と呼ばれるプロトコルによって通信を行っています。IDBUS通信はデバイスとケーブル間のデータのやりとりの他に、デバイスへの給電制御などにも利用されています。


NyanSatan氏はデジタル信号を解析できるロジックアナライザーを用いて、TristarとHiFive間のIDBUS通信を分析。


Lightning周辺機器を接続していない状態では、Tristarは周辺機器を探すポーリング信号を発信し続けます。


ポーリング信号を詳細に見てみると、電圧が高いだけで何も起こっていない時間が1.1ミリ秒程度あるとのこと。これはケーブル側のHiFiveに搭載されたコンデンサを充電している時間であり、HiFiveはその電力を用いて内部チップを起動させるとNyanSatan氏は説明。


HiFiveへの電力供給後、Tristarからデータを含むポーリング信号が送信されています。データを含む信号は先ほどの画像だと赤枠の部分にあたります。


データを含む信号を詳細に見てみると、電圧が低い状態から高い状態へ移行する部分をひとつのまとまりとしてとらえることができます。NyanSatan氏は赤線で区切ったこのまとまりを「単語」と表現。


単語は「意味のある段階」と「回復段階」に分けられるとNyanSatan氏。「意味のある段階」は意味のある単語を定義する段階であり、「回復段階」は送受信の準備段階であるとのこと。それぞれの時間の間隔によって表現される単語の定義が異なります。


時間間隔と単語の定義の関係は解析済みなので、ロジックアナライザーで解析した信号の意味を理解することも可能です。


単語の定義を利用してTristarとHiFive間のIDBUS通信を解析すると、Tristarは最初に「BREAK」を送信していることがわかります。その後、16進数の「0x74」などのビット列で表現されるリクエストタイプを送信して通信内容を通信相手に伝え、実データ部分にあたる「0x00」や「0x02」といったビット列を送信して、リクエストタイプと実データ部分のCRC8を送信。最後にもう一度BREAKを送信しているとNyanSatan氏は分析しています。ただ、この段階では周辺機器を装着していないため、Tristarのリクエストに反応はありません。


次にNyanSatan氏はデバイスに周辺機器を装着して信号を解析。解析用のボードにLightningケーブルを挿入しています。


Tristarがリクエストを送信すると……


HiFiveからリクエストに対する応答信号が返ってきました。


リクエストはほとんどの場合「0x74」のビット列で表現され、応答信号はリクエストに1を加えた「0x75」のビット列で表現されるとNyanSatan氏。判明しているHiFiveからの応答信号の内容は以下で、周辺機器の種類を表す「ACCx」「Dx」部分と実データ部分に分けることができます。


先頭2ビットの「ACCx」部分は、Lightningポートに搭載された2つの認証管理用ピンのどちらが反応するかで信号の定義が異なります。上の表は認証管理用ピンの「ID0」が反応した場合の定義で、下の表は「ID1」が反応した場合の定義です。


「Dx」部分もACCx部分と同じく、反応した認証管理用ピンによって信号の定義が異なるとのこと。


周辺機器とケーブルIDの対応表が以下。


接続した周辺機器のIDは、デバイス本体が脱獄済みの場合は「accctl」コマンドを実行することで確認できるとのこと。


iOS7以降のデバイスであれば「tristar」コマンドで周辺機器の種類を確認することもできます。


デバイスが送信するリクエストには「HOSTID」と呼ばれる16ビットの値が含まれており、HOSTIDが正規の値でなければHiFiveは動作しないとのこと。例えばHOSTIDを0にセットしてtristarコマンドを実行した場合は、周辺機器の情報を入手することができません。


また、Tristarは「ESN」と呼ばれるデータをEEPROMに保持しており、特殊なケーブルを用いることでESNを取得することができるとのこと。ESNを「ttrs.apple.com」に送信することで、デバイスIDを取得することも可能であり、Apple Storeのスタッフは起動しない端末からデバイスIDを取得するためにESNを使用しているとNyanSatan氏は指摘しています。

NyanSatan氏の説明はリークされたAppleの内部情報やNyanSatan氏自身が調査して入手した情報などに基づくものであり、一部もしくはすべてが間違っている可能性があるとのこと。「記事を読む際は自分の責任で読んでください」とただし書きが付けられています。

この記事のタイトルとURLをコピーする

・関連記事
2021年に登場する新型iPhoneはLightningポートもUSB-Cポートもない「ポートレスiPhone」になるというウワサ - GIGAZINE

Thunderboltポート経由でPCのシステムメモリを直接読み書き可能となる脆弱性「Thunderclap」 - GIGAZINE

リリースされたばかりのiOS 13.5を脱獄可能にする「unc0ver」が公開 - GIGAZINE

AppleがLightningコネクタに防水処理を施すための特許を申請 - GIGAZINE

in ハードウェア, Posted by log1n_yi

You can read the machine translated English article here.