TegraRcmSmash
A reimplementation of fusee-launcher by ktemkin in C++ for Windows platforms.
Lets you launch fusee/shofEL2 payloads to a USB connected Switch in RCM mode.
Driver setup
- Get your Switch into RCM mode and plug it into your Windows PC. It should show up somewhere (like Device manager) as "APX"
- Download and run Zadig driver installer from https://zadig.akeo.ie/
- From the device list, choose APX (if it's not showing up in the list, go to Options menu and check List All Devices)
- For the driver type, cycle the arrows until you see libusbK (v3.0.7.0) in the text box (IMPORTANT!)
- Click the big Install Driver button. Device manager should now show "APX" under libusbK USB Devices tree item.
Usage
TegraRcmSmash.exe [-V 0x0955] [-P 0x7321] [--relocator=intermezzo.bin] [-w] inputFilename.bin [-r] [--dataini=coreboot.ini] ([PARAM:VALUE]|[0xADDR:filename])*
If your Switch is ready and waiting in RCM mode, you can also just drag and drop the payload right onto TegraRcmSmash.exe
An example cmdline for launching linux using coreboot is something like this (the empty relocator is important): TegraRcmSmash.exe -w --relocator= "coreboot/cbfs.bin" "CBFS:coreboot/coreboot.rom"
A simpler way to load coreboot/other AArch64 payloads is to use https://github.com/rajkosto/memloader and either put the files on microsd or use the --dataini parameter
After that, you can use imx_load as you would on Linux (Windows binaries available here)
Alternatively, setup your u-boot cmdline to just load everything from microSD to not bother with imx_load ;)
Binary releases
Available at https://switchtools.sshnuke.net
Compilation
- Download the binary package for libUSBK from this link (by pressing the big green Download button)
- Run the installer exe and make note of where it installed to (default is C:\libusbK-dev-kit)
- Open your Advanced system settings and set the environment variable LIBUSBK_DIR to the path you noted
- Open TegraRcmSmash.sln with Visual Studio 2017 and build the Release or Debug configuration!
Responsibility
I am not responsible for anything, including dead switches, blown up PCs, loss of life, or total nuclear annihilation.