OmniNX Installer Payload
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
Pushing a version tag (e.g. v1.0.0) triggers a build and creates a release with the .bin file attached.
GitHub: Uses the built-in GITHUB_TOKEN automatically.
Gitea: Add a GITHUB_TOKEN secret (Settings → Secrets and Variables → Actions) with a token that has permission to create releases.
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 (
1.0.0s): Full CFW pack - Light (
1.0.0l): Lightweight CFW pack - OC (
1.0.0oc): Overclock-enabled CFW pack (includes SaltySD)
The payload automatically detects which variant is present on the SD card and installs accordingly.
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