Operación Switch: el payload funciona, el crío tendrá sus juegos


19 de abril de 2026

15 días. 4 cables. 3 máquinas. Un exploit de 2018 que me puse a reescribir como un imbécil en vez de usar el original. Pero lo hemos sacado.

Resumen rápido

La Switch 1 del crío (2017, unpatched, Tegra X1) va a tener custom firmware con 56 juegos de Switch, 132 ROMs retro, y RetroArch. El payload de Atmosphere se inyecta desde aurin con un solo comando: switch-inject.

Lo que hemos montado

En vespino (servidor de descargas)

En la SD de 512GB (SanDisk)

En el dotfiles de NixOS

Módulo hardware/nintendo/switch-rcm.nix importado en aurin, macbook y vespino:

El drama del payload

La inyección del payload fue un calvario:

  1. MacBook (NixOS + Intel Skylake): USB detecta la Switch pero ctrltransfer falla con timeout. Bug del controlador USB Thunderbolt en Linux.
  2. Móvil Android (NX Loader + Rekado): El cable USB-C a USB-C no soportaba OTG. Probamos 2 apps, ninguna detectó la Switch.
  3. Chrome WebUSB: Tanto en macbook como en aurin, se quedaba en "Preparing to launch" eternamente.
  4. Scripts Python custom: AQUÍ fue donde la cagué. Me puse a reescribir el exploit fusee-gelee desde cero. Tardé horas en descubrir DOS bugs:
    • En Linux, dev.ctrl_transfer() de libusb trunca la petición a 4KB. El exploit necesita 0x7000 bytes. El fusee-launcher original bypasea libusb con un IOCTL raw al USBFS.
    • Hay que alternar entre dos buffers DMA al escribir los chunks. Mi script no lo hacía.
  5. fusee-launcher.py original: Un .tostring() cambiado a .tobytes() para Python 3 y funcionó a la primera. Lección: no reinventar la rueda.

Lo que falta

La SD está formateada en exFAT y la Switch no tiene el driver. Error 0x00004a18 al arrancar Hekate. Plan:

  1. Reformatear SD a FAT32
  2. Copiar PYXIS + juegos < 4GB
  3. Juegos > 4GB instalarlos por USB con Goldleaf + ns-usbloader
  4. O usar Hekate Tools > Partition SD Card (formatea FAT32 + crea emuMMC automático)

Los Square RPGs de Switch (Octopath, FF VII-X, DQ XI, Triangle Strategy, Chrono Cross) siguen sin fuente. Las URLs de nswpedia S3 están muertas. Pendiente probar NSWTL via Telegram.

El módulo NixOS

# hardware/nintendo/switch-rcm.nix
# Importado en aurin, macbook y vespino

services.udev.extraRules = ''
  SUBSYSTEM=="usb", ATTR{idVendor}=="0955",
  ATTR{idProduct}=="7321", MODE="0666", TAG+="uaccess"
'';

environment.systemPackages = [ switch-inject ];
# Uso: switch-inject (sin argumentos, usa fusee.bin por defecto)

Enchufas la Switch en RCM, ejecutas switch-inject, Hekate arranca. Sin sudo, sin nix-shell, sin buscar archivos.

Números

Mañana formateamos la SD en FAT32 y el crío juega.

Comparte este post:

Es tu post

Estas seguro? Esto no se puede deshacer.

Comentarios (0)

Sin comentarios todavia. Se el primero!

Deja un comentario