- cancel_combo_pressed uses only hardware volume buttons - After installation summary and payload-missing screen: A or Power only Made-with: Cursor
OmniNX Installer Payload
To properly use this payload, download the latest OmniNX Release: https://git.niklascfw.de/OmniNX/OmniNX/releases
A minimal payload for installing OmniNX CFW Pack files on Nintendo Switch outside of Horizon OS.
Based on TegraExplorer and hekate by CTCaer, naehrwert, and shchmue.
Based on HATS-Installer-Payload by sthetix.
Features
- Automatic Variant Detection: Detects which OmniNX pack variant is present (Standard/Light/OC)
- Smart Installation Modes:
- Update Mode: Selective deletion when OmniNX is already installed
- Clean Install: Full wipe with backup/restore of user data (DBI, Tinfoil, prod.keys)
- Version Detection: Detects installed OmniNX version via marker files (
1.0.0s,1.0.0l,1.0.0oc) - Progress Display: Visual status messages during installation
- Error Handling: Detailed error reporting on screen
- Payload Chaining: Automatically launch hekate after installation
Documentation
For detailed information about the installation process, see:
- INSTALLATION_PROCESS.md - Complete step-by-step breakdown of everything checked and done during installation/update
Installation Modes
Update Mode (OmniNX Detected)
- Detected when version marker files (
1.0.0s,1.0.0l, or1.0.0oc) are found - Performs selective deletion of specific directories/files
- Preserves user data, savegames, and installed games
- Updates only necessary CFW components
Clean Install (No OmniNX Detected)
- Detected when no version marker files are found
- Performs full wipe of
/atmosphere,/bootloader,/config, and/switch - Backs up and restores:
sd:/switch/DBI→ preservedsd:/switch/tinfoil→ preservedsd:/switch/prod.keys→ preserved
- Fresh installation of all CFW components
Building
Prerequisites
- devkitARM - ARM toolchain for Nintendo Switch development
- BDK - Blue Development Kit (included in this repo)
Build Commands
make clean
make
The built payload will be output to output/OmniNX-Installer.bin.
CI / GitHub Actions
Every push triggers a build. The .bin file is produced and attached as a workflow artifact (Actions tab → select run → Artifacts).
Usage
1. Extract OmniNX Pack to SD Card
Extract the OmniNX pack zip file directly to your SD card. The pack should contain one of:
sd:/OmniNX Standard/
├── atmosphere/
├── bootloader/
├── config/
├── switch/
├── TegraExplorer/
├── warmboot_mariko/
├── boot.dat
├── boot.ini
├── exosphere.ini
├── hbmenu.nro
├── loader.bin
├── payload.bin
└── 1.0.0s
Or sd:/OmniNX Light/ or sd:/OmniNX OC/ for other variants.
Important: Extract both the OmniNX pack zip AND this payload to your SD card.
2. Launch Payload
Use hekate or another bootloader to launch the payload:
- Place
omninx-installer.bininsd:/bootloader/payloads/ - Launch the payload from hekate's payload menu
- The payload will automatically:
- Detect which pack variant is present
- Detect if OmniNX is already installed
- Perform appropriate installation (update or clean)
- Launch hekate after completion
3. What Happens
- Payload mounts the SD card
- Detects current OmniNX installation (if any)
- Detects which pack variant is on SD card
- Determines installation mode (update vs clean)
- Performs cleanup based on mode:
- Update: Selective deletion of specific paths
- Clean: Full wipe with backup/restore
- Copies files from pack directory to SD root
- Creates version marker file
- Cleans up old version markers
- Launches hekate (
sd:/bootloader/update.bin)
Variant Support
The payload supports three OmniNX variants:
- Standard –
sd:/OmniNX Standard/ - Light –
sd:/OmniNX Light/ - OC –
sd:/OmniNX OC/
The payload detects the pack variant from the staging directory presence and detects the current installation (variant + version) from sd:/config/omninx/manifest.ini (current_pack and version keys).
Project Structure
OmniNX-Installer-Payload/
├── source/ # Main source code
│ ├── main.c # Entry point and main flow
│ ├── version.c # Version/variant detection
│ ├── version.h
│ ├── install.c # Installation logic
│ ├── install.h
│ ├── backup.c # Backup/restore operations
│ ├── backup.h
│ ├── deletion_lists.h # Arrays of paths to delete
│ ├── fs.c # File system operations
│ ├── fs.h
│ ├── gfx.c # Graphics utilities
│ ├── gfx.h
│ ├── nx_sd.c # SD card operations
│ ├── nx_sd.h
│ ├── link.ld # Linker script
│ └── start.S # Startup assembly
├── bdk/ # Blue Development Kit
├── Makefile # Build configuration
├── VERSION # Version file
└── README.md # This file
License
This project is based on TegraExplorer and hekate. Please refer to those projects for their respective licenses.
Credits
- CTCaer - hekate
- naehrwert - Tegra exploration work
- shchmue - TegraExplorer
- sthetix - HATS-Installer-Payload (inspiration and base structure)
- Woody2408 - OmniNX CFW Pack creator