DisplayPort: Altmode を使いこなす
DisplayPort altmode は半分独自仕様ですが、試してみれば絶対に分解できます。 前回は、DisplayPort altmode について詳しく説明した素晴らしい appnote を見つけ、FUSB302 をパケット スニッフィング モードに切り替えてパケット キャプチャを取得し、PD VDM (ベンダー定義のメッセージ) について学習し、キャプチャされたメッセージを正常に再生して USB-C を切り替えました。ポートを DisplayPort altmode に切り替えます。 今日は、DisplayPort altmode を呼び出し、それらを実装し、それらすべてをライブラリに結び付ける 7 つのメッセージを調べてから、DisplayPort を実際に動作させるために必要なハードウェアを理解します。
まず、図からわかるように、単一のコマンドはリクエストまたはレスポンスのいずれかになります。 たとえば、Discover Identity REQ (リクエスト) を受信した場合は、Discover Identity ACK (応答) で応答し、途中で応答に ID データを追加します。 いくつかのコマンドを使用すると、DP ソースは使用できるデータを追加します。 ほとんどのコマンドでは、代わりに DP シンクが情報を提供する必要があります。提供された PDF とパケット キャプチャを使用して、私たちはまさにそれを行います。
互換性のある USB-C ポートから DisplayPort を取得するために処理する必要があるコマンドが 7 つあります。これらのコマンドについて復習が必要な場合は、DP altmode の ST の PDF の 13 ページにメッセージ シーケンスが表示されます。 これらのコマンドは、ID の検出、SVID の検出、モードの検出、モード開始、DP ステータス更新、DP 構成、およびアテンションです。 これらのうち、最初の 4 つはすでに基本 USB PD 標準で部分的に説明されており、その後の 2 つの DP コマンドは DisplayPort-altmode 固有ですが、私たちが所有する PDF で十分に説明されています。また、Attendance コマンドも同様に基本標準からのものです。主に、HPD ピンの状態を報告するのに役立ちます。 最初の 2 つから始めましょう!
最初の 2 つのコマンドは DisplayPort 固有のものではありません。 特に、Discover Identity メッセージは遍在します。 PSU から要求する必要さえなかった Source_Capabilities メッセージと同様に、DP または Thunderbolt 対応のラップトップの USB-C ポートに接続すると、Discover Identity コマンド メッセージを受け取ります。 デバイスが任意の altmode を処理できる場合、このメッセージに返信することで、この機能を通知することになります。
Discover Identity の応答には、デバイスに関する大量のデータが含まれている必要があります。このデータのほとんどは、完全に偽装することができます。 このデータは、あなたが代替モード アダプタであること、USB ホストまたは USB デバイスの操作が可能かどうかを示す 2 つのビット、完全に空のままにしてもよい「認証」フィールド、および USB VID と PID を示しています。 私の知る限り、VID と PID は、オペレーティング システムでのドライバーの選択に使用されることが知られている通常の USB 接続の PID と VID とは異なり、機能的には何にも使用されていません。 私が所有しているアダプターのベンダー ID は 0xBDA、製品 ID は 0x2172、bcdDevice 番号は 0x201 です。 これらの値は一度送信されると、それ以降の USB-C 通信にはまったく表示されません。
2 番目のコマンドは、Discover SVIDs です。SVID は、基本的に、デバイスがサポートする altmode の 2 バイト コードです。 答えが 0xFF01 の場合 (追加データとして 0xFF010000 を返します)、DisplayPort altmode 対応デバイスとして認識される形で Cookie を取得します。 私が所有しているデバイスの 1 つは、0xFF01 で応答しますが、それに 0x25A4 も追加しています。私の疑いでは、これはファームウェア更新インターフェイスであるため、ペネトレーションテストの目的で USB-C デバイスをプローブしたい場合、これは間違いなくベクトルになります。しらべる。
Discover SVIDs リクエストに 0xFF01 の応答を与えることで、デバイスが DisplayPort altmode をサポートしていると主張します。たとえ、実を言うと、適切な実装の途中で、完成するまで偽装していたとしてもです。 ただし、私たちは正しい方向に進んでいますので、心配する必要はありません。ここからは DisplayPort の詳細について話します。 3 番目のコマンドは Discover Modes で、DisplayPort が USB-C コネクタにどのように正確にマッピングする必要があるかを DP ソースに知らせます。