1
0
mirror of https://github.com/CTCaer/hekate.git synced 2024-11-04 17:27:31 +00:00
hekate - A GUI based Nintendo Switch Bootloader
Go to file
Kostas Missos 2e9a89aa20 [Versioning] Better and smarter for update and sept
- Still compatible with old hekate.
- Allows for hotfix control
- Sept is now copied from actual running payload, negating the need to check update.bin
- If a foreign payload is found in sept then it is renamed and hekate copies itself. After sept run, it renames it back and continues with boot.
2019-03-07 23:53:58 +02:00
bootloader [Versioning] Better and smarter for update and sept 2019-03-07 23:53:58 +02:00
common Add autolaunch updated bootloader (mostly for modchips) 2018-08-21 04:41:16 +03:00
modules Update libminerva to v1.1 2018-11-10 13:30:17 +02:00
res Add KIP1 patching support (with 2 FS patches included) 2018-07-29 22:03:12 +02:00
tools 6.2.0 support 2018-11-30 23:20:15 +02:00
.gitignore Refactor ALL the things + enable LTO 2018-08-13 11:58:24 +03:00
LICENSE License. 2018-03-27 12:04:16 +13:00
Makefile [Versioning] Better and smarter for update and sept 2019-03-07 23:53:58 +02:00
README_BOOTLOGO.md Support custom backcolor when logo is smaller 2018-07-09 15:55:09 +03:00
README.md [7.0.0-7.0.1] Add full support via Atmosphere's sept 2019-02-24 03:03:17 +02:00

hekate - CTCaer mod

Image of Hekate

Custom Nintendo Switch bootloader, firmware patcher, and more.

Bootloader folders and files

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.
|__ update.bin If newer, it is loaded at boot. For modchips. Can be skipped.
bootloader/ini/ For individual inis. 'More configs...' menu. Autoboot is supported.
bootloader/sys/ For system modules.
|__ libsys_lp0.bso LP0 (sleep mode) module. Important!
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

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.

There are four possible type of entries. "[ ]": Boot entry, "{ }": Caption, "#": Comment, "newline": .ini cosmetic newline.

Global Configuration keys/values when boot entry is config:

Config option Description
autoboot=0 0: Disable, #: Boot entry number to auto boot.
bootwait=3 0: Disable (It also disables bootlogo. Having VOL- pressed since injection goes to menu.), #: Time to wait for VOL- to enter menu.
verification=2 0: Disable Backup/Restore verification, 1: Sparse (block based, fast and not 100% reliable), 2: Full (sha256 based, slow and 100% reliable).
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.
autonogc=1 0: Disable, 1: Automatically applies nogc patch if unburnt fuses found and a >= 4.0.0 HOS is booted.
backlight=100 Screen backlight level. 0-255.

Possible boot entry key/value combinations:

Config option Description
logopath={SD path} If global customlogo is 1 and logopath empty, bootlogo.bmp will be used. If logopath exists, it will load the specified bitmap.
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.
kip1patch=patchname Enables a kip1 patch. Specify with multiple lines and/or as CSV. Current available patches nosigchk.
fullsvcperm=1 Disables SVC verification (full services permission)
debugmode=1 Enables Debug mode
atmosphere=1 Enables Atmosphère patching
payload={SD path} Payload launching. Tools, Linux, CFW bootloaders, etc.

Payload storage:

Hekate now has a new storage in the binary that helps it configure it outside of BPMP enviroment:

Offset / Name Description
'0x94' boot_cfg bit0: Force AutoBoot, bit1: Show launch log, bit2: sept run.
'0x98' autoboot If Force AutoBoot: 0: Force go to menu, else boot that entry.
'0x9C' autoboot_list If Force AutoBoot and autoboot then it boots from ini folder.
'0xA0' rsvd_cfg Reserved.
'0xA4' rsvd[32] Reserved.

You can find a template Here

If the main .ini is not found, it is created on the first hekate boot.

hekate     (C) 2018 naehrwert, st4rk
CTCaer mod (C) 2018 CTCaer.

Thanks to: derrek, nedwill, plutoo, shuffle2, smea, thexyz, yellows8.
Greetings to: fincs, hexkyz, SciresM, Shiny Quagsire, WinterMute.

Open source and free packages used:
 - FatFs R0.13a, Copyright (C) 2017, ChaN
 - bcl-1.2.0, Copyright (C) 2003-2006, Marcus Geelnard
 - Atmosphère (SE sha256, prc id kernel patches), Copyright (C) 2018, Atmosphère-NX
 - elfload, Copyright (C) 2014 Owen Shepherd, Copyright (C) 2018 M4xw

                         ___
                      .-'   `'.
                     /         \
                     |         ;
                     |         |           ___.--,
            _.._     |0) = (0) |    _.---'`__.-( (_.
     __.--'`_.. '.__.\    '--. \_.-' ,.--'`     `""`
    ( ,.--'`   ',__ /./;   ;, '.__.'`    __
    _`) )  .---.__.' / |   |\   \__..--""  """--.,_
   `---' .'.''-._.-'`_./  /\ '.  \ _.--''````'''--._`-.__.'
         | |  .' _.-' |  |  \  \  '.               `----`
          \ \/ .'     \  \   '. '-._)
           \/ /        \  \    `=.__`'-.
           / /\         `) )    / / `"".`\
     , _.-'.'\ \        / /    ( (     / /
      `--'`   ) )    .-'.'      '.'.  | (
             (/`    ( (`          ) )  '-;   [switchbrew]