The installer now displays current vs incoming OmniNX version and states that Nintendo server connections are suppressed by default.
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
dbi.config, 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
- DEBUG_INI.md - Optional
sd:/config/omninx/debug.iniparameters to skip install steps (for testing) - PRESERVE_INI.md - Optional
sd:/config/omninx/preserve.inito skip deleting chosen paths in update mode
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
- Optional
sd:/config/omninx/preserve.ini: user-listedsd:/…paths (with=1) are excluded from that cleanup (see PRESERVE_INI.md) - 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/dbi.config→ preserved (not the wholeDBIfolder)sd:/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