Nintendo SwitchのDisplayPort Alternate Modeは純正ドックでしか動作しないように制限されている

Nintendo SwitchのTVモードは非純正ドックでは有効にならず、純正ドックを使用する必要がありますが、その原因はSwitch本体のDisplayPort Alternate Modeが制限されているからです。今回はその辺について調べてみました。

※ Nintendo Switch 2019年モデル HAC-001(-01) (本体システムバージョン : 9.2.0)

広告

純正ドックを使用した場合

※ドックとSwitchの間にUSB PDパケットアナライザを挟むのは、Switchがやじろべえ状態になるので良い子のみなさんは真似しないでください。下手するとポキっと折れます。

写真の通り、Switch + 純正ドック + 純正ACアダプターの組み合わせではTVモードが有効になり、外部モニターに映像が出力されます。

そして、その際のドック – Switch間のUSB PDのパケットが以下です。

大まかな流れとしては以下の通りです。

  • 電力のネゴシエーションが行われる
  • SVID 057EのAlternate Modeに入る (赤枠部分)
  • SVID FF01のAlternate Modeに入る (青枠部分)

※電力の話は別の記事にまとめたので飛ばします。詳しくはこちらの記事を参照して下さい。

057Eは10進数に直すと1406で、1406はNintendoのVendor IDです。そのため、これは言わばNintendo Alternate Modeです。

そしてそのNintendo Alternate Modeに入った後に、Standard ID FF01のAlternate Modeに入っています。DisplayPortにはStandard ID FF01が割り振られているため、これはDisplayPort Alternate Modeです。

まとめると、SwitchはTVモード動作時に、電力のネゴシエーション後にNintendo Alternate Modeに入り、その後DisplayPort Alternate Modeに入っているということになります。

USB Type-C to DisplayPortケーブルを使用した場合

SwitchがDP Alt Modeに対応していることが分かったので、もっとも単純な方法としてUSB Type-C to DisplayPortケーブルを使用してモニターに接続してみました。

使用したのはClub 3D CAC-1557です。

写真の通り、モニターに接続しても映像が出力されませんでした。

USB PDのパケットを確認したところ、電力のネゴシエーション自体は正常に行われているものの、Discover Identifyコマンドがやり取りされておらず、Alternate Modeに入ろうとした痕跡がありませんでした。

このことから、Nintendoがソフトウェアアップデートで仕様を変更しない限り、SwitchがSourceとして動作している状態 (電源に接続されていない状態) でTVモードを有効にするのは逆立ちしても不可能と考えられます。

USB Type-Cハブを使用した場合

次はUSB Type-Cハブを使用した場合です。写真の通り、モニターに映像は出力されませんでした。

一応使用している機器を書いておくと、

  • USB Type-Cハブ : USB PD入力とD-Sub出力があるタイプ (ノーブランド品)
  • USB PD電源 : USB PD 60W出力できるもの (Anker A2015113)

を接続しています。 (純正ドックとは異なり、HDMIではなくD-Subでモニターに接続していますが、Alt ModeでDisplayPortを取り出した後にHDMIに変換するかD-Subに変換するかという違いなので、Alt Modeには直接影響しません)

なぜ純正ACアダプターを使用していないかと言うと、通常のUSB Type-Cハブは自分が使用する数ワットを差し引いて接続先デバイス (今回はSwitch) に電力を通知するからです。純正ACアダプターを使用してしまうと、TVモード動作に必要となる15V/2.6Aに達しないため、純正ドックでTVモードが有効になることを確認している60WのサードパーティACアダプターを使用しています。 (ちなみに、なぜか純正ドックはACアダプターから39Wを受け取って、そのまま39WをSwitchに通知します)

そして、その時のUSB PDのパケットが以下です。

電力のネゴシエーション後、Sink/DFPであるSwitchがDiscover Identifyコマンドで「お前は何者だ?」ということをSource/UFPであるハブに対して確認しています。純正ドックの場合、ここでVendor ID 057Eを通知して「Nintendo純正品ですよ〜」ということをSwitch本体に伝えますが、今回使用したサードパーティ製ハブは別のVIDを通知するため、そこでUSB PDのパケットのやり取りは終了していました。

 
広告

考察

USB Type-Cハブを使用した際も15.0V/2.67Aで電力のネゴシエーションを行っていることから電力不足という線は考えにくく、また、正常にUSB PDのパケットはやり取りされていることから相性問題の可能性も低いと考えられます。このことから、あくまでSwitch側が意図的にDisplayPort Alternate Modeに入っていないと考えるべきでしょう。

純正ドック・USB Type-Cハブの違いはDisplayPort Alt Mode前のNintendo Alt Modeであるため、これがDisplayPort Alt Modeの可否を決めている可能性が大です。そもそもNintendo Alt Modeは入り方は適切ではなく、その実装自体がある種のDRMと言えます。通常、Alt Modeは

  • Discover Identifyコマンドで、相手のVendor IDとProduct IDを確認
  • Discover SVIDsコマンドで、相手がどのSVIDのAlt Modeに対応しているかを確認
  • Discover Modesコマンドで、相手がそのSVIDのどういったAlt Modeに対応しているかを確認

という手順を踏んでからEnter Modeが実行されます。しかし、SwitchはDiscover IdenitifyコマンドでVIDとPIDを確認した後すぐにNintendo Alt Modeに入るという特殊な挙動をします。これを利用して、Nintendo Switchは純正ドック以外を弾く……というか純正ドック使用時のみDisplayPort Alt Modeに入るようになっていると考えられます。

巷では「TVモード対応が謳われている非純正ドック」が販売されていますが、それらは純正ドックを模して同じようなパケットをしゃべるように細工がされているものと思われます。非純正ドックの多くは実売3000円程度で品質には期待できませんし、全ての機能が完璧に動作するという保証はどこにもないため、極力純正ドックを使用することをオススメします。

関連記事

Nintendo SwitchのTVモードに使える充電器・使えない充電器
Nintendo SwitchのTVモードに使える充電器と使えない充電器を、USB PDのパケットから探ってみました。※ Nintendo Switch 2019年モデル HAC-001(-01) (本体システムバージョン : 9
Nintendo Switch本体の充電の仕様を調べてみた
Nintendo Switchに色々なACアダプタを接続して、充電の仕様を調べてみました。※ Nintendo Switch 2019年モデル (本体システムバージョン : 9.2.0)
タイトルとURLをコピーしました