A Nintendo Switch payload that checks your console's burnt fuse count against the installed firmware version to determine if Official Firmware (OFW) will boot properly.
Based on: Lockpick_RCM_Pro, with fuse checking logic inspired by the fuse-check project and UI design from TegraExplorer and NCA Database checking from NxNandManager
FuseCheck is a bare-metal payload that helps you understand if your Nintendo Switch will boot into Official Firmware (OFW) based on your current fuse count and installed firmware version. This is critical for users who have been using CFW and want to know if they can safely boot into stock firmware.
Nintendo uses a hardware anti-downgrade mechanism called "fuse burning." Each major firmware update burns additional fuses, and the console checks this count during boot:
- Too few fuses burnt = Console will black screen on OFW boot
- Correct fuse count = OFW will boot normally
- Extra fuses burnt = Console will black screen on OFW boot
- Automatic Firmware Detection - Detects firmware version from SystemVersion NCA in SYSTEM partition
- Hardware Fuse Reading - Reads burnt fuse count directly from hardware registers
- Compatibility Analysis - Compares fuses against firmware requirements
- Horizontal UI Layout - Clean, TegraExplorer-inspired interface
- Fuse Database Viewer - Browse complete fuse requirements for all firmware versions
- Scrolling Support - Navigate through unlimited database entries
- Screenshot Support - Capture results with 3-finger touch gesture
- Silent Key Derivation - Keys derived in RAM only, no files written to SD
- External Database - Easy-to-update database file (no recompilation needed)
- Auto-Return to Hekate - Launches bootloader/update.bin after exit
- Condition: Burnt fuses < Required fuses
- Result: OFW WILL NOT BOOT (black screen)
- What will work: CFW (Atmosphère), Semi-stock (Hekate nogc)
- What won't work: Stock OFW
- Condition: Burnt fuses > Required fuses
- Result: OFW WILL NOT BOOT (black screen)
- What will work: CFW (Atmosphère), Semi-stock (Hekate nogc)
- What won't work: Stock OFW
- Note: This is very rare but can happen on some consoles.
- Condition: Burnt fuses = Required fuses
- Result: OFW WILL BOOT NORMALLY
- Note: System is in ideal state for both CFW and OFW
- Download the latest zip from the Releases page
- Extract the zip to the sd card
- Boot into Hekate
- Launch FuseCheck.bin from the payloads menu
The main page displays:
- Firmware Version - Auto-detected from SYSTEM partition
- Burnt Fuses - Hardware fuse count from ODM6+ODM7 registers (X fuses burnt)
- Required Fuses - Fuses needed for detected firmware
- Status - Color-coded compatibility result
- Detailed Info - What will/won't work based on fuse status
Controls:
- VOL+ - View Fuse Database (all firmware versions)
- VOL- - Return to Hekate
- Power - Shutdown console
- 3-Finger Touch - Take screenshot
View complete fuse requirements for all Nintendo Switch firmware versions:
- System version ranges
- Production unit fuse counts
- Development unit fuse counts
- Scroll indicator showing position [start-end/total]
Controls:
- VOL+ - Scroll down (stops at bottom)
- VOL- - Scroll up (stops at top)
- Power - Return to main page
- 3-Finger Touch - Take screenshot
FuseCheck uses an external database file for easy updates without recompilation.
sd:/config/fusecheck_db.txt
The database file supports two entry types:
[FUSE] <version_range> <prod_fuses> <dev_fuses>
Example:
[FUSE] 21.0.0-21.0.1 22 1
[FUSE] 20.0.0-20.5.0 21 1
[FUSE] 19.0.0-19.0.1 20 1
- version_range: Firmware version or range (e.g., "21.0.0" or "20.0.0-20.5.0")
- prod_fuses: Burnt fuses required for production units
- dev_fuses: Burnt fuses required for development units
Source: switchbrew.org/wiki/Fuses (Anti Downgrade section)
[NCA] <version> <nca_filename>
Example:
[NCA] 21.0.1 e7273dd5b560d0ba282fc64206fecb56.nca
[NCA] 21.0.0 4b0130c8b9d2174a6574f6247655acc0.nca
[NCA] 20.5.0 23ce01f1fc55e55a783162d456e5ca58.nca
- version: Exact firmware version (e.g., "21.0.1")
- nca_filename: SystemVersion NCA filename (Title ID 0100000000000809)
Lines starting with # are treated as comments:
# This is a comment
# You can add notes about firmware updates here
When new Switch firmware is released:
- Update the
[FUSE]section with new fuse count from switchbrew - Update the
[NCA]section with the new SystemVersion NCA filename - Copy the updated file to
sd:/config/fusecheck_db.txt - No recompilation needed!
A sample database file is included in the repository at fusecheck_db.txt.
- Hardware Initialization - Initializes display, storage, and DRAM
- Silent Key Derivation - Derives BIS keys in RAM using Lockpick_RCM engine
- Fuse Reading - Reads ODM6 and ODM7 fuse registers and counts all burnt fuses
- SYSTEM Partition Access - Mounts SYSTEM partition using BIS key 2
- Firmware Detection - Scans
/Contents/registered/for SystemVersion NCA - Database Matching - Matches NCA filename against external database
- Compatibility Check - Compares burnt fuses vs required fuses
- Status Display - Shows results in horizontal layout
Note: The Switch has two anti-downgrade fuse registers (ODM6 and ODM7). FuseCheck reads both registers to provide complete fuse coverage. As of firmware 21.0.0+, Nintendo has burned up to 22 fuses, with plenty of capacity remaining for future firmware versions.
Based on switchbrew.org/wiki/Fuses:
| Firmware Range | Fuses Required |
|---|---|
| 1.0.0 | 1 |
| 2.0.0-2.3.0 | 2 |
| 3.0.0 | 3 |
| 3.0.1-3.0.2 | 4 |
| 4.0.0-4.1.0 | 5 |
| 5.0.0-5.1.0 | 6 |
| 6.0.0-6.1.0 | 7 |
| 6.2.0 | 8 |
| 7.0.0-8.0.1 | 9 |
| 8.1.0 | 10 |
| 9.0.0-9.0.1 | 11 |
| 9.1.0-9.2.0 | 12 |
| 10.0.0-10.2.0 | 13 |
| 11.0.0-12.0.1 | 14 |
| 12.0.2-13.1.0 | 15 |
| 13.2.1-14.1.2 | 16 |
| 15.0.0-15.0.1 | 17 |
| 16.0.0-16.1.0 | 18 |
| 17.0.0-18.1.0 | 19 |
| 19.0.0-19.0.1 | 20 |
| 20.0.0-20.5.0 | 21 |
| 21.0.0-21.0.1 | 22 |
- Uses
derive_bis_keys_silently()from Lockpick_RCM - Works on both Erista (TSEC keygen) and Mariko (Mariko KEK)
- All keys stay in RAM, no SD card writes
- Graphics output muted during key derivation
- Mounts SYSTEM partition using derived BIS key 2
- Scans
/Contents/registered/directory for NCA files - Matches NCA filenames against external database
- Falls back to hardcoded fuse map if database not found
- Returns firmware version (major.minor.patch)
- devkitARM toolchain
- Git (for cloning repository)
- Windows with MSYS2 (for Windows builds) or Linux/macOS
# Clone the repository
git clone https://github.com/sthetix/FuseCheck.git
cd FuseCheck
# Build the payload
make
# Output: fusecheck.bin- Makefile - Uses standard devkitARM toolchain
- Source:
source/main.c(all-in-one implementation) - Libraries: Uses Hekate BDK for hardware access
- Output:
fusecheck.bin(payload binary)
- Cause: Unable to derive BIS keys from TSEC/Mariko firmware
- What happens: The payload automatically reboots the console
- Solution: If this persists, your console may have eMMC corruption or hardware issues
- Cause: NCA detection failed (database not found, or SYSTEM partition couldn't be read)
- Solution:
- Copy
fusecheck_db.txttosd:/config/fusecheck_db.txt - Ensure your eMMC/SYSTEM partition is healthy and accessible
- If using emuMMC, make sure it's properly configured
- Copy
- Cause: Missing
fusecheck_db.txton SD card - Solution: Copy the database file from the release zip to
sd:/config/fusecheck_db.txt - Note: Without the database, firmware version cannot be detected from NCA files and will default to 1.0.0, making fuse checking inaccurate
This project combines work from multiple excellent Switch projects:
- CTCaer - Hekate bootloader, BDK libraries, hardware initialization
- shchmue - Original Lockpick_RCM, key derivation engine
- THZoria - Lockpick_RCMaster base
- TegraExplorer - Horizontal UI design inspiration
- switchbrew.org - Fuse documentation and mapping
- ReSwitched community - Research, documentation, and support
Special thanks to CTCaer for excellent documentation and reusable code architecture.
FuseCheck is licensed under GPLv2 (same as parent projects).
This project is built on top of:
- Hekate (GPLv2) - Hardware libraries
- Lockpick_RCM (GPLv2) - Key derivation
- hactool (ISC) - Save processing module
This tool is for educational and diagnostic purposes only. Use at your own risk. The authors are not responsible for any damage, data loss, or banned consoles. Always keep backups of important data.
Note: This tool does NOT modify fuses or firmware. It only reads and analyzes existing fuse state.
If you find this project useful, please consider supporting me!
Repository: https://github.com/sthetix/FuseCheck Issues: https://github.com/sthetix/FuseCheck/issues Latest Release: https://github.com/sthetix/FuseCheck/releases
