Osegi
Matériel·2 min de lecture

Dock Switch 2 : un hub USB-C à 40 € imite le dock de Nintendo

Un hub USB-C à 40 € n'affiche pas l'image de la Switch 2 sur un téléviseur. Environ 540 octets de code ajoutés au firmware l'ont fait passer pour le dock officiel.

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

La Switch 2 se recharge sur un hub USB-C ordinaire et lance même le mode DisplayPort Alt Mode. Ensuite, plus rien : pas de mode TV, pas d'image. Un bricoleur lassé de trimballer l'encombrant dock de Nintendo en voyage a cherché pourquoi, et a fini par transformer un hub en dock pour Switch 2.

Pourquoi un hub USB-C ne fait pas un dock Switch 2

Le hub est un Cable Matters 7-en-1 avec sorties DisplayPort, HDMI et VGA, jusqu'à 60 W. Avec son firmware d'origine, la Switch 2 négocie l'alimentation, entre en DisplayPort Alt Mode et règle même le pin assignment D. Puis s'arrête. Il fallait qu'autre chose se passe avant.

L'auteur a donc branché un sniffer USB-PD (un WITRN K2, placé au milieu du câble) sur le dock officiel. Celui-ci se présente comme un appareil Nintendo (identifiant fabricant 057E, produit 2062). Il annonce aussi un SVID propre à Nintendo, 057E, à côté de DisplayPort, et la console entre dans le mode Nintendo avant celui de DisplayPort. Après la configuration DP arrive une série de messages propriétaires. Chaque requête commence par 057E0001 suivi d'un numéro de commande, et le dock répond 057E0041, la même commande et des données.

L'auteur ignore ce que signifie la plupart de ces échanges. Certaines réponses ressemblent à des numéros de version de firmware.

Comment le hub a été modifié

Le contrôleur d'alimentation du hub, un VL103, embarque un microcontrôleur 8051 avec 32 Kio de firmware. L'auteur a inséré dans l'espace effacé un gestionnaire d'environ 540 octets, greffé sur la pile PD d'origine. Il répond aux messages de Nintendo ; tout le reste reçoit toujours la réponse « Not supported ». Les versions renvoyées sont copiées du dock officiel et ne décrivent rien de réel dans le hub.

L'identifiant fabricant ne suffisait pas : la Switch vérifie l'identité plus largement. Une révision a aussi supprimé une pause d'environ 3 secondes, due à la commande 02 que la console demandait avant d'attendre après un « Not supported ». Le hub propose désormais 15 V à 2,8 A, comme le dock.

Le mode TV fonctionnait, mais le HDR paraissait délavé. L'écran, la plage RGB, le hub en général et le trafic PD ont été écartés. Le coupable probable est l'espace colorimétrique : le convertisseur DP vers HDMI, un RTD2142, étiquetait l'image en BT.709 dans l'AVI InfoFrame HDMI, alors que la console envoie du BT.2020. Pour creuser, l'auteur a extrait le firmware non signé de 2 Mio de cette puce via DP AUX avec flashrom.

Claude et GPT l'ont beaucoup aidé pour le désassemblage et les correctifs. Quand Claude a voulu lancer Ghidra, un classificateur de sécurité l'a toutefois arrêté ; GPT a donc pris en charge la décompilation.

Des apps à découvrir

SUMO : le puzzle de nombres

Touche les bonnes cases, additionne, atteins l'objectif. Facile à apprendre, difficile à maîtriser. Gratuit, pour tous les âges.

Mots-clés:nintendo switch 2usb-c hubfirmwareusb-pdreverse engineeringhdr

Plus d'actus de ce jour

Tout voir →

Plus dans: Matériel

Tout voir →