2020-06-13 23:02:47 +01:00
# hekate - Nyx
2018-06-18 07:00:53 +01:00
2019-06-30 04:38:48 +01:00
![Image of Hekate ](https://user-images.githubusercontent.com/3665130/60391760-bc1e8c00-9afe-11e9-8b7a-b065873081b2.png )
2018-06-18 07:00:53 +01:00
2020-06-13 23:02:47 +01:00
Custom Graphical Nintendo Switch bootloader, firmware patcher, tools, and many more.
2018-05-01 06:15:48 +01:00
2018-06-01 17:22:11 +01:00
2018-08-23 02:27:49 +01:00
## Bootloader folders and files
2018-05-01 06:15:48 +01:00
2019-06-30 01:57:45 +01:00
| Folder/File | Description |
| ------------------------ | --------------------------------------------------------------------- |
| bootloader | Main folder. |
| \|__ bootlogo.bmp | It is used when custom is on and no logopath found. Can be skipped. |
| \|__ hekate_ipl.ini | Main bootloader configuration and boot entries. |
2019-10-31 14:26:46 +00:00
| \|__ patches.ini | Add external patches. Can be skipped. A template can be found [here ](./res/patches_template.ini ) |
2019-12-11 22:23:04 +00:00
| \|__ update.bin | If newer, it is loaded at boot. For modchips. Auto updated. Can be skipped. |
2019-06-30 01:57:45 +01:00
| bootloader/ini/ | For individual inis. 'More configs...' menu. Autoboot is supported. |
| bootloader/res/ | Nyx user resources. Icons and more. |
| \|__ background.bmp | Nyx - custom background. |
| \|__ icon_switch.bmp | Nyx - Default icon for CFWs. |
| \|__ icon_payload.bmp | Nyx - Default icon for Payloads. |
| \|__ icon_lakka.bmp | Nyx - Default icon for Lakka. |
| bootloader/sys/ | For system modules. |
| \|__ emummc.kipm | emuMMC KIP1 module. Important! |
| \|__ libsys_lp0.bso | LP0 (sleep mode) module. Important! |
| \|__ libsys_minerva.bso | Minerva Training Cell. Used for DRAM Frequency training. Important! |
| \|__ nyx.bin | Nyx - Our GUI. Important! |
| \|__ res.pak | Nyx resources package. Important! |
| bootloader/screenshots/ | Folder where Nyx screenshots are saved |
| bootloader/payloads/ | For payloads. 'Payloads...' menu. Autoboot only supported by including them into an ini. All CFW bootloaders, tools, Linux payloads are supported. |
| bootloader/libtools/ | Future reserved |
2020-06-13 23:02:47 +01:00
| sept | Sept folder. This must always get updated via the Atmosphère release zip. Needed for tools and booting HOS on 7.0.0 and up. Unused for booting HOS if `fss0=` key is defined. |
2018-08-23 02:27:49 +01:00
2019-03-08 20:19:25 +00:00
**Note**: Sept files for booting 7.0.0 and up are expected at /sept folder at root of sd card.
2018-08-23 02:27:49 +01:00
## Bootloader configuration
The bootloader can be configured via 'bootloader/hekate_ipl.ini' (if it is present on the SD card). Each ini section represents a boot entry, except for the special section 'config' that controls the global configuration.
2018-05-01 06:15:48 +01:00
2018-07-01 18:21:25 +01:00
There are four possible type of entries. "**[ ]**": Boot entry, "**{ }**": Caption, "**#**": Comment, "*newline*": .ini cosmetic newline.
2019-10-31 14:31:16 +00:00
You can find a template [Here ](./res/hekate_ipl_template.ini )
2019-02-24 00:43:13 +00:00
### Global Configuration keys/values when boot entry is **config**:
2018-07-01 18:21:25 +01:00
| Config option | Description |
| ------------------ | ---------------------------------------------------------- |
| autoboot=0 | 0: Disable, #: Boot entry number to auto boot. |
2019-03-30 17:10:49 +00:00
| autoboot_list=0 | 0: Read `autoboot` boot entry from hekate_ipl.ini, 1: Read from ini folder (ini files are ASCII ordered). |
2018-09-18 22:01:42 +01:00
| bootwait=3 | 0: Disable (It also disables bootlogo. Having **VOL-** pressed since injection goes to menu.), #: Time to wait for **VOL-** to enter menu. |
2018-09-30 00:09:18 +01:00
| autohosoff=1 | 0: Disable, 1: If woke up from HOS via an RTC alarm, shows logo, then powers off completely, 2: No logo, immediately powers off.|
2019-02-24 00:43:13 +00:00
| autonogc=1 | 0: Disable, 1: Automatically applies nogc patch if unburnt fuses found and a >= 4.0.0 HOS is booted. |
2020-10-20 08:16:12 +01:00
| bootprotect=0 | 0: Disable, 1: Protect bootloader folder from being corrupted by disallowing reading or editing in HOS. |
2019-12-11 22:13:32 +00:00
| updater2p=0 | 0: Disable, 1: Force updates (if needed) the reboot2payload binary to be hekate. |
2018-09-18 22:01:42 +01:00
| backlight=100 | Screen backlight level. 0-255. |
2018-07-01 18:21:25 +01:00
2020-04-30 14:33:14 +01:00
### Nyx Global Configuration keys/values for (nyx.ini):
| Config option | Description |
| ------------------ | ---------------------------------------------------------- |
| themecolor=167 | Sets Nyx color of text highlights. |
| timeoff=100 | Sets time offset in HEX. Must be in HOS epoch format |
| homescreen=0 | Sets home screen. 0: Home menu, 1: All configs (merges Launch and More configs), 2: Launch, 3: More Configs. |
| verification=1 | 0: Disable Backup/Restore verification, 1: Sparse (block based, fast and mostly reliable), 2: Full (sha256 based, slow and 100% reliable). |
2020-10-20 08:21:48 +01:00
| umsemmcrw=0 | 1: eMMC/emuMMC UMS will be mounted as writable by default. |
| jcdisable=0 | 1: Disables Joycon driver completely. |
2020-12-02 20:34:54 +00:00
| newpowersave=1 | 0: Timer based, 1: DRAM frequency based (Better). Use 0 if Nyx hangs. |
2020-04-30 14:33:14 +01:00
### Boot entry key/value combinations:
2018-06-01 17:22:11 +01:00
2019-06-30 03:23:20 +01:00
| Config option | Description |
| ---------------------- | ---------------------------------------------------------- |
| warmboot={SD path} | Replaces the warmboot binary |
| secmon={SD path} | Replaces the security monitor binary |
| kernel={SD path} | Replaces the kernel binary |
| kip1={SD path} | Replaces/Adds kernel initial process. Multiple can be set. |
| kip1={SD folder}/* | Loads every .kip/.kip1 inside a folder. Compatible with single kip1 keys. |
2019-12-15 22:53:22 +00:00
| fss0={SD path} | Takes a fusee-secondary binary and `extracts` all needed parts from it. kips, exosphere, warmboot and sept. |
2020-03-09 06:58:12 +00:00
| fss0experimental=1 | Enables loading of experimental content from a FSS0 storage |
2020-12-01 23:41:23 +00:00
| exofatal={SD path} | Replaces the exosphere fatal binary for Mariko |
2019-10-31 14:31:16 +00:00
| kip1patch=patchname | Enables a kip1 patch. Specify with multiple lines and/or as CSV. If not found, an error will show up |
2019-06-30 03:23:20 +01:00
| fullsvcperm=1 | Disables SVC verification (full services permission) |
| debugmode=1 | Enables Debug mode. Obsolete when used with exosphere as secmon. |
2021-03-17 07:23:13 +00:00
| atmosphere=1 | Enables Atmosphère patching. Not needed when `fss0` is used. |
2020-04-27 07:30:53 +01:00
| emupath={SD folder} | Forces emuMMC to use the selected one. (=emuMMC/RAW1, =emuMMC/SD00, etc). emuMMC must be created by hekate because it uses the raw_based/file_based files. |
2020-04-30 14:33:14 +01:00
| emummcforce=1 | Forces the use of emuMMC. If emummc.ini is disabled or not found, then it causes an error. |
2020-06-13 23:02:47 +01:00
| emummc_force_disable=1 | Disables emuMMC, if it's enabled. |
2021-01-14 17:24:56 +00:00
| stock=1 | Disables unneeded kernel patching and CFW kips when running stock or semi-stock. `If emuMMC is enabled, emummc_force_disabled=1` is required. emuMMC is not supported on stock. If additional KIPs are needed other than OFW's, you can define them with `kip1` key. No kip should be used that relies on Atmosphère patching, because it will hang. If `NOGC` is needed, use `kip1patch=nogc` . |
2019-10-31 14:31:16 +00:00
| id=idname | Identifies boot entry for forced boot via id. Max 7 chars. |
2019-06-30 03:23:20 +01:00
| payload={SD path} | Payload launching. Tools, Linux, CFW bootloaders, etc. |
2019-10-31 14:31:16 +00:00
| logopath={SD path} | If no logopath, `bootloader/bootlogo.bmp` will be used if exists. If logopath exists, it will load the specified bitmap. |
2019-06-30 03:23:20 +01:00
| icon={SD path} | Force Nyx to use the icon defined here. If this is not found, it will check for a bmp named as the boot entry ([Test 2] -> `bootloader/res/Test 2.bmp` ). Otherwise default will be used. |
2018-06-01 17:22:11 +01:00
2020-04-30 14:33:14 +01:00
### Boot entry key/value Exosphère combinations:
| Config option | Description |
| ---------------------- | ---------------------------------------------------------- |
| nouserexceptions=1 | Disables usermode exception handlers when paired with Exosphère. |
| userpmu=1 | Enables user access to PMU when paired with Exosphère. |
| cal0blank=1 | Overrides Exosphère config `blank_prodinfo_{sys/emu}mmc` . If that key doesn't exist, `exosphere.ini` will be used. |
| cal0writesys=1 | Overrides Exosphère config `allow_writing_to_cal_sysmmc` . If that key doesn't exist, `exosphere.ini` will be used. |
2019-03-30 17:10:49 +00:00
**Note1**: When using the wildcard (`/*`) with `kip1` you can still use the normal `kip1` after that to load extra single kips.
2019-03-08 20:19:25 +00:00
**Note2**: When using FSS0 it parses exosphere, warmboot and all core kips. You can override the first 2 by using `secmon` /`warmboot` after defining `fss0` .
You can define `kip1` to load an extra kip or many via the wildcard (`/*`) usage.
2019-10-31 14:31:16 +00:00
**Warning**: Never define *fss0 core* kips when using `fss0` and make sure that the folder (when using `/*` ), does not include them.
This is in case the kips are incompatible between them. If compatible, you can override `fss0` kips with no issues (useful for testing with intermediate kip changes).
2019-03-08 20:19:25 +00:00
2018-06-01 17:22:11 +01:00
2019-02-24 00:43:13 +00:00
### Payload storage:
2019-10-31 14:31:16 +00:00
hekate has a boot storage in the binary that helps it configure it outside of BPMP enviroment:
2019-02-24 00:43:13 +00:00
2020-04-27 07:30:53 +01:00
| Offset / Name | Description |
| ----------------------- | ----------------------------------------------------------------- |
2020-09-06 22:10:23 +01:00
| '0x94' boot_cfg | bit0: `Force AutoBoot` , bit1: `Show launch log` , bit2: `Boot from ID` , bit3: `Boot to emuMMC` , bit7: `sept run` . |
2020-04-27 07:30:53 +01:00
| '0x95' autoboot | If `Force AutoBoot` : 0: Force go to menu, else boot that entry. |
| '0x96' autoboot_list | If `Force AutoBoot` and `autoboot` then it boots from ini folder. |
2020-09-06 22:10:23 +01:00
| '0x97' extra_cfg | When menu is forced: bit5: `Run UMS` , bit7: `Run Dump pkg1/2` . |
2020-04-27 07:30:53 +01:00
| '0x98' xt_str[128] | Depends on the set cfg bits. |
2020-09-06 22:10:23 +01:00
| '0x98' ums[1] | When `Run UMS` is set, it will launch the selected UMS. 0: SD, 1: eMMC BOOT0, 2: eMMC BOOT1, 3: eMMC GPP, 4: emuMMC BOOT0, 5: emuMMC BOOT1, 6: emuMMC GPP, |
2020-04-27 07:30:53 +01:00
| '0x98' id[8] | When `Boot from ID` is set, it will search all inis automatically and find the boot entry with that id and boot it. Must be NULL terminated. |
| '0xA0' emummc_path[120] | When `Boot to emuMMC` is set, it will override the current emuMMC (boot entry or emummc.ini). Must be NULL terminated. |
2019-02-24 00:43:13 +00:00
2018-09-18 22:01:42 +01:00
If the main .ini is not found, it is created on the first hekate boot.
2018-06-01 17:22:11 +01:00
```
2020-04-30 12:10:08 +01:00
hekate (c) 2018, naehrwert, st4rk.
(c) 2018-2020, CTCaer.
Nyx GUI (c) 2019-2020, CTCaer.
2018-06-01 17:22:11 +01:00
Thanks to: derrek, nedwill, plutoo, shuffle2, smea, thexyz, yellows8.
Greetings to: fincs, hexkyz, SciresM, Shiny Quagsire, WinterMute.
Open source and free packages used:
2020-04-30 12:10:08 +01:00
- FatFs R0.13a, Copyright (c) 2017, ChaN
- bcl-1.2.0, Copyright (c) 2003-2006, Marcus Geelnard
2019-12-04 15:18:16 +00:00
- Atmosphère (Exosphere types/panic, prc id kernel patches),
2020-04-30 12:10:08 +01:00
Copyright (c) 2018-2019, Atmosphère-NX
- elfload, Copyright (c) 2014 Owen Shepherd, Copyright (c) 2018 M4xw
- Littlev Graphics Library, Copyright (c) 2016 Gabor Kiss-Vamosi
2018-05-01 06:15:48 +01:00
2018-06-01 17:22:11 +01:00
___
.-' `'.
/ \
| ;
| | ___.--,
_.._ |0) = (0) | _.---'`__.-( (_.
__ .--'`_.. '.__.\ '--. \_.-' ,.--'` `""`
( ,.--'` ',__ /./; ;, '.__.'` __
_`) ) .---.__.' / | |\ \__..--"" """--.,_
`---' .'.''-._.-'` _./ /\ '. \ _.--''````'''--._`-.__.'
| | .' _.-' | | \ \ '. `----`
\ \/ .' \ \ '. '-._)
\/ / \ \ `=.__` '-.
/ /\ `) ) / / ` "".`\
, _.-'.'\ \ / / ( ( / /
`--'` ) ) .-'.' '.'. | (
(/` ( (` ) ) '-; [switchbrew]
2018-06-27 22:40:43 +01:00
```