Nintendo Switch Homebrew 101

Disclaimer

This post contains content including:

  • How to exploit RCM so one can run custom firmware on Switch
  • How to run games one dumped from legitimate game cartridges
  • How to have a super fancy quadra-boot console1
  • Recommended Apps on Switchroot (Android)
  • Extra tips about emulation

However, it WILL NOT tell you:

  • How/Where to download pirated games
  • How to install unauthorized game copies on Switch
  • How to weld inner circuit to make patched Switch RCM-exploitable
  • How to do resource unpacking of Switch games
  • How to play DOOM on all quadra-boot systems

Basics

Exploit

Payloads

  • fusee: bundled with Atmosphère
  • FuseCheck: check fuse to ensure you can safely boot into stock firmware
  • hekate_ctcaer: hekate, obviously
  • KitNX
    • toggle sysMMC network blocking, like NetMan
    • repaire downgrade state, like DowngradeFixer
  • Lockpick_RCM_Pro: dump *.keys
    • Relation: shchmue/Lockpick_RCM -> THZoria/Lockpick_RCMaster -> Lockpick_RCM_Pro
    • SD Card/switch/*.keys
    • eden/user/keys/*.keys
    • ryujinx/portable/system/prod.keys
    • NxFileViewer/prod.keys
  • TegraExplorer-Ext: file explorer

Software

Tool

NRO

A small list of homebrew apps I use

  • bundled with Atmosphère
    • daybreak, offline firmware installer
    • haze, USB file transfer
    • hbmenu, homebrew menu, obviously
    • reboot_to_payload
  • JKSV, Save Manager
  • Switch_90DNS_tester, test Atmosphère DNS MITM, not reliable as it would not really send requests to remote listed in hosts file
  • See #Cheats for (offline!) single player cheating related stuff
  • Sphaira, alternative homebrew menu
  • NX-Activity-Log
  • nxdumptool
    • Dump XCI/NSP/HFS0/ExeFS/RomFS/Certificate/Ticket from gamecards
    • See usage guide at ZeldaMods
  • PPSSPP for Switch uncompatible with current ABI

Overlay

Streaming

Stream switch games to PC via USB or network w/ 720p@30fps video & 16bit PCM@48kHz stereo audio (can’t be higher due to hardware limit):

Amiibo

Generate Amiibo via emuiibo:

  1. java --enable-native-access=ALL-UNNAMED -jar emuiigen.jar
  2. Batch generation -> Generate all -> Tick Save images
  3. Generate virtual amiibos

Linux Host

udev

sudo mkdir -p /etc/udev/rules.d/
sudo -e /etc/udev/rules.d/10-switch.rules

sudo udevadm control --reload
udevadm trigger
# /etc/udev/rules.d/10-switch.rules

# https://switch.hacks.guide/extras/adding_udev.html
# Tegra X1 USB?
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="NVIDIA Corp.", ATTRS{product}=="APX", MODE="0666"

# https://github.com/pheki/nx-udev
# Switch USB
SUBSYSTEM=="usb", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="3000", MODE="0666"
# RCM
SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7321", MODE="0666"

Switchroot

Guides

  • 14, 15 (aka. LineageOS 21/22 TBA)
    • real, upstream LineageOS release, with Switch support
    • HAC-001
    • Known bugs that I care as of 2024-07-05: JoyCon autopair, overlocking, Android partition on SD
  • 11/R Setup Guide
    • Unlike Android 10/Q, Android 11 bundles Gapps by default
    • Tips & Tricks
    • known bugs
    • Be sure to do Factory Reset and wipe data and system EVEN IF you don’t have previous Switchroot installation

Apps

  • Regular Apps
    • Aurora Store
    • Cromite
    • Droid-ify
    • Magisk (w/ LSPosed)
    • Material Files
    • Red Moon
    • NekoBox (do NOT download from Google Play, dev account is hijacked)
    • Termux
  • Gaming
    • Kirikiroid2_yuri
    • Moonlight
    • PS Remote Play
    • SteamLink
    • Xbox

Cheats

Database

Usage

Edited from r/Ryujinx:

  1. Get the attached cheat file named titles.rar from GBAtemp.
  2. Extract that RAR file and find the folder 010093801237C000. You can also just search Metroid Dread.
  3. Copy the cheats folder in that folder.
  4. Open up Ryujinx and right click on the game file and click on “Open Mods Directory”. This will open a new folder. Paste that cheats folder in this new mods folder that opened up.
  5. Go into the cheats folder and open up the file 49161D9CCBC15DF9.txt. Remove any cheats you don’t want to activate and only leave the cheats you want to have on. Save the file and close the text editor. (You can also enable only a few of them in Ryujinx GUI)
  6. Now run the game and the cheats should be activated.

In Eden, instead of standard Atmosphère mod folder, create a new folder and put cheats in that folder. The path should look like <eden-path>\user\load\01009BF0072D4000\[1.3] Cheats\cheats\8f75c9b8b7ff69d9.txt. Note that silly [1.3] Cheats folder.

The most important thing is version. Make sure game build ID (and title ID ofc) matches the cheat. Install/Add update if required.

💡 Tip

Some cheats only apply to older versions, you have to choose between new content or old cheats in such case. Of course, you can play old versions with cheats, and enjoy new content later by loading old save files.

Mods

GameBanana is the main source I usually check.

Fire Emblem: Three Houses is somewhat a dating sim or Otome/gal game. Let’s say I want to have a skin mod called Agarthan Academy which would make female characters look more charming.

Usually emulators work a bit differently, so mods created for Switch may not be compatible. This mod offers both versions so no worries. Just download the zip, extract the content and copy it to mod directory (N.B. when using Ryujinx, use the mod directory instead of Atmosphere mod directory).

Lakka

  • Lakka
  • No need to install, just replace lakka.ini bootloader profile and content inside sdmc:/lakka.
  • No need to reinstall when upgrading, just use Lakka built-in updater.
  • To upgrade offline, download tarball & checksum (7z won’t work) of latest edition (e.g. Lakka-Switch.aarch64-6.1.tar) or nightly builds (e.g. Lakka-Switch.aarch64-6.1-20260827-4f70542.tar) and place it to sdmc:/lakka/storage/.update/ AS IS, no need to unarchive or rename or whatever.

Emulation

ℹ️ Note

For cheats: check #Cheats. Compatibility list, save & shader caches are no longer available.

EmuMMC Upgrade Guide

This only serves as a reference and many things are redacted.

  1. scoop download sb/nxfw
  2. new firmware waitlist
    • hekate/hekatos
    • Atmosphère (prerelease, check todo)
    • key & firmware dump (Lockpick_RCM_Pro & TegraExplorer-Ext)
  3. backup BOOT0 & BOOT1 in hekate, do NOT backup eMMC RAW GPP or GPP Partitions (due to size)
  4. backup & remove atmosphere/contents/*
  5. update Atmosphère, hekate
  6. update #Cheats, #Amiibo
  7. enter stock OS (sysNAND) & update firmware
  8. enter store to check if switch is banned
  9. dump *.keys in hekate via Lockpick_RCM_Pro
  10. dump sysNAND firmware in hekate via TegraExplorer
  11. update firmware in emuMMC via Daybreak
  12. restore atmosphere/contents/*, backup dumped keys
  13. check if titles are playable
  14. backup BOOT partition, transfer keys & update firmware in Eden/Ryujinx/other places listed in #Payloads

  1. They are: Horizon OS (Stock OS), Atmosphère (CFW w/ emuMMC), LineageOS (Switchroot), and Lakka (RetroArch w/ CPU & GPU overlocking). Depending on your understanding of operating system, it could be tri-boot or penta-boot. ↩︎

Vinfall's Geekademy

Sine īrā et studiō