Osegi
Hardware·2 min de lectura

Dock de Switch 2: un hub USB-C de 40 € imita al de Nintendo

Un hub USB-C de 40 € no saca imagen de la Switch 2 en el televisor. Con unos 540 bytes de código añadidos al firmware, se comportó como el dock oficial.

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

La Switch 2 se carga con un hub USB-C normal e incluso inicia el modo DisplayPort Alt Mode. Y ahí se queda: sin modo TV ni imagen. Un aficionado harto de cargar con el voluminoso dock de Nintendo en los viajes quiso saber por qué y acabó convirtiendo un hub en un dock para Switch 2.

Por qué un hub USB-C no funciona como dock de Switch 2

El hub era un Cable Matters 7 en 1 con salidas DisplayPort, HDMI y VGA y hasta 60 W. Con su firmware original, la Switch 2 negociaba la alimentación, entraba en DisplayPort Alt Mode e incluso configuraba el pin assignment D. Después, nada. Antes tenía que ocurrir otra cosa.

Para averiguarlo, el autor conectó un sniffer USB-PD (un WITRN K2, que se intercala en el cable) al dock oficial. El dock se presenta como un dispositivo de Nintendo (ID de fabricante 057E, producto 2062). Además de DisplayPort, anuncia un SVID propio, 057E, y la consola entra en el modo de Nintendo antes que en el de DisplayPort. Tras configurar DP llega una serie de mensajes propietarios. Cada petición empieza por 057E0001 más un número de comando, y el dock responde con 057E0041, el mismo comando y datos.

El autor no sabe qué significa la mayor parte. Algunas respuestas parecen registros de versiones de firmware.

Cómo se parcheó el hub

El controlador de energía del hub, un VL103, lleva un microcontrolador 8051 con 32 KiB de firmware. El autor añadió en la zona borrada un manejador de unos 540 bytes, integrado en la pila PD original. Responde a los mensajes de Nintendo, y todo lo demás sigue recibiendo el «Not supported» de serie. Las versiones están copiadas del dock oficial y no describen nada real del hub.

El ID de fabricante no bastaba: la Switch comprueba la identidad de forma más amplia. Otra revisión eliminó una pausa de unos 3 segundos, causada por la consola al pedir el comando 02 y esperar tras un «Not supported». También se ofrecen ahora 15 V a 2,8 A, como el dock.

El modo TV funcionó, pero el HDR se veía pálido. Se descartaron la pantalla, el rango RGB, el hub en general y el tráfico PD. La causa probable es el espacio de color: el conversor DP a HDMI, un RTD2142, etiquetaba la imagen como BT.709 en el AVI InfoFrame de HDMI, mientras la consola envía BT.2020. Para investigar, el autor volcó con flashrom, a través de DP AUX, el firmware sin firmar de 2 MiB de ese chip.

Según el autor, Claude y GPT ayudaron mucho con el desensamblado y los parches. Cuando Claude intentó lanzar Ghidra, un clasificador de seguridad lo detuvo, así que GPT se encargó de la decompilación.

Apps que merecen la pena

SUMO: el puzle de números

Toca las casillas correctas, suma y alcanza el objetivo. Fácil de aprender, difícil de dominar. Gratis, para todas las edades.

Etiquetas:nintendo switch 2usb-c hubfirmwareusb-pdreverse engineeringhdr

Más de este día

Ver todas →

Más en: Hardware

Ver todas →