Osegi
Hardware·2 Min. Lesezeit

Switch 2 Dock: USB-C-Hub für 40 Euro dank 540 Byte Code nutzbar

Ein 40-Euro-USB-C-Hub zeigt von der Switch 2 kein Bild am Fernseher. Mit rund 540 Byte Zusatzcode in der Firmware verhält er sich wie das offizielle Dock.

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

Die Switch 2 lädt an einem gewöhnlichen USB-C-Hub und startet sogar den DisplayPort Alt Mode. Dann passiert nichts: kein TV-Modus, kein Bild. Ein Bastler, dem Nintendos sperriges Dock auf Reisen zu lästig war, wollte wissen, warum, und machte aus einem Hub ein Switch-2-Dock.

Warum ein USB-C-Hub kein Switch-2-Dock ist

Der Hub war ein Cable Matters 7-in-1 mit DisplayPort, HDMI, VGA und bis zu 60 Watt Leistung. Mit der Original-Firmware handelte die Switch 2 die Stromversorgung aus, betrat den DisplayPort Alt Mode und stellte sogar Pin Assignment D ein. Dann war Schluss. Vorher musste offenbar noch etwas anderes passieren.

Der Autor hängte deshalb einen USB-PD-Sniffer (einen WITRN K2, der mitten ins Kabel kommt) an das offizielle Dock. Das Dock meldet sich als Nintendo-Gerät (Vendor-ID 057E, Produkt 2062). Neben DisplayPort nennt es eine eigene SVID, 057E, und die Konsole betritt den Nintendo-Modus vor dem DisplayPort-Modus. Nach dem DP-Setup folgt eine Reihe herstellerspezifischer Nachrichten. Jede Anfrage beginnt mit 057E0001 plus Befehlsnummer, das Dock antwortet mit 057E0041, demselben Befehl und Daten.

Was das meiste bedeutet, weiß der Autor nicht. Einige Antworten sehen aus wie Firmware-Versionseinträge.

So wurde der Hub gepatcht

Der Power-Controller des Hubs, ein VL103, enthält einen 8051-Mikrocontroller mit 32 KiB Firmware. Der Autor fügte im gelöschten Speicherbereich einen Handler von etwa 540 Byte ein, der in den vorhandenen PD-Stack eingehängt ist. Er beantwortet Nintendos Nachrichten, alles Unbekannte bekommt weiter die Standardantwort „Not supported“. Die Versionsantworten sind vom offiziellen Dock kopiert und beschreiben nichts, was im Hub tatsächlich existiert.

Die Vendor-ID allein reichte nicht, die Switch prüft die Identität umfassender. Eine weitere Version beseitigte eine Pause von rund 3 Sekunden: Die Konsole fragte Befehl 02 an, bekam „Not supported“ und wartete. Außerdem bietet der Hub nun wie das Dock 15 V bei 2,8 A an.

Der TV-Modus lief, aber HDR wirkte blass. Display, RGB-Bereich, der Hub an sich und der PD-Verkehr waren es nicht. Wahrscheinlich liegt es am Farbraum: Der DP-zu-HDMI-Wandler RTD2142 kennzeichnete das Bild im HDMI-AVI-InfoFrame als BT.709, während die Konsole BT.2020 sendet. Um weiterzusuchen, las der Autor die unsignierte 2-MiB-Firmware des Chips mit flashrom über DP AUX aus.

Claude und GPT halfen laut Autor stark beim Disassemblieren und Patchen. Als Claude Ghidra starten wollte, stoppte ihn allerdings ein Sicherheitsklassifikator, daher übernahm GPT die Dekompilierung.

Apps, die sich lohnen

SUMO: das Zahlenrätsel

Tippe die richtigen Felder, addiere, triff das Ziel. Leicht zu lernen, schwer zu meistern. Kostenlos, für jedes Alter.

Schlagwörter:nintendo switch 2usb-c hubfirmwareusb-pdreverse engineeringhdr

Mehr von diesem Tag

Alle anzeigen →

Mehr aus: Hardware

Alle anzeigen →