Osegi
ハードウェア·2 分で読めます

Switch 2ドックを40ユーロのUSB-Cハブで再現した話

40ユーロのUSB-Cハブでは、Switch 2の映像はテレビに出ない。約540バイトのコードを足すと、ハブは公式ドックのように振る舞った。

A Nintendo Switch 2 connected to a TV through a small USB-C hub and cables on a desk
画像: Хабр

Switch 2は普通のUSB-Cハブから充電できるのに、テレビには映らない。この「Switch 2 ドック」問題に、40ユーロのハブのファームウェアへ約540バイトのコードを足して挑んだ人がいる。

筆者は旅行に公式ドックを持ち出したくなかった。かさばるうえ壊れやすそうだからだ。手元にはCable Mattersの7-in-1ハブ(最大60W、3画面対応)があった。友人からUSB-PDスニッファ(WITRN K2)をもらい、コンソールが何を確認しているのか調べ始めた。

Switch 2が普通のハブで映らない理由

純正ファームのままでも、Switchは電力交渉をしてDisplayPort Alt Modeに入る。それでもTVモードにならない。公式ドックはUSB-PD上でNintendo独自のやり取りをしていたからだ。ドックはNintendo製機器(VID 057E、製品2062)として名乗り、独自のSVID 057Eを告げ、本体が送るベンダー定義メッセージに返答する。

ハブのPDコントローラはVL103で、32KiBのファームを持つ8051マイコンだ。筆者は空き領域にハンドラを追加した。Nintendoのメッセージだけに応答し、残りは元のコードに任せる。変更を一つずつ試すと、ベンダーIDだけでは足りず、Switchはもっと広く識別情報を調べているとわかった。供給も公式ドックと同じ15V/2.8Aにした(元のハブは2.53A)。返答に入れたバージョン情報は公式ドックの写しで、このハブの実際のバージョンではない。未知のコマンドには従来どおり「Not supported」が返る。

HDRで色が薄くなる問題

TVモードは動いたが、HDRをオンにすると色が明らかに薄かった。同じモニターと同じゲームで、公式ドックは正常だった。ディスプレイ、RGBレンジ、PDの通信は原因ではなく、LinuxのPCは同じハブでHDRを正しく出力できた。

疑いはRTD2142チップ(ここではDP→HDMI変換)に向かった。HDMI側のAVI InfoFrameの色情報はBT.709を示していた。筆者はこのチップのファームも吸い出した。原文の見出しによると、HDRの修正には約108バイトが使われた。

注目のアプリ

SUMO:数字パズル

正しいマスを選んで足し算、目標の数に。覚えるのは簡単、極めるのは難しい。無料、全年齢向け。

Dialo:話して学ぶ語学アプリ

AIの会話パートナーと話すだけ。一文ごとに添削され、あなたの言語で解説が返ってきます。9言語、A1からC2まで。

タグ:nintendo switch 2usb-c hubfirmwareusb-pdreverse engineeringhdr

同じ日のニュース

すべて見る →

関連カテゴリ: ハードウェア

すべて見る →