CivSwitch
Intro
CivSwitch is an open-source userland code-execution toolchain for Nintendo Switch (and tested Switch 2 firmwares) released by Gezine on November 1, 2026. It abuses an XSS bug in the physical Switch 1 cartridge of Civilization VII (game version 1.0.0 only): a Raspberry Pi Pico acts as a USB HID keyboard and types a long chat payload that boots a Remote JS Loader; an installer then writes a persistent save-data trigger so later boots only need "Load Game".
Coverage on GBAtemp and Japanese Switch-hack blogs framed it as a new offline entrypoint for Switch 2 homebrew while cartridge stock lasts.
Explain
Components
- PicoSwitch — Pico firmware (RP2040/RP2350) that types the compressed chat XSS (~87 lines, ~15 minutes).
- installer-creator — builds a boot-persistent
XSTRIG.Civ7Savetrigger for arbitrary JS payloads. - send_js.py — pushes JS to the live loader (TCP :9026).
Limits
Only Civ 7 cartridge 1.0.0; system language must be English (US) during install; future cartridge updates may kill the bug. Treat as research/homebrew tooling — not a consumer "jailbreak app".
Usage
- Get a Civ 7 physical Switch 1 cartridge on 1.0.0 and a Raspberry Pi Pico 2 (recommended).
- Build/flash PicoSwitch UF2 per the repo README; set Switch language to English (US).
- Host a wireless multiplayer lobby, focus chat, plug in the Pico and wait for the loader.
- Run
python installer-creator/install.py <console-ip>then reboot and use Load Game. - Send custom payloads with
send_js.py. Revert language when done.