{"id":13522734,"url":"https://github.com/CTCaer/hekate","last_synced_at":"2025-03-31T23:32:15.348Z","repository":{"id":37237839,"uuid":"131710328","full_name":"CTCaer/hekate","owner":"CTCaer","description":"hekate - A GUI based Nintendo Switch Bootloader","archived":false,"fork":false,"pushed_at":"2024-10-12T15:18:45.000Z","size":4773,"stargazers_count":6716,"open_issues_count":19,"forks_count":574,"subscribers_count":274,"default_branch":"master","last_synced_at":"2024-11-02T07:33:08.589Z","etag":null,"topics":["bootloader","hekate","nintendo-switch-bootloader","nyx","tools","uefi"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CTCaer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-05-01T12:25:02.000Z","updated_at":"2024-11-02T07:20:00.000Z","dependencies_parsed_at":"2022-08-08T19:30:47.198Z","dependency_job_id":"55af6f16-8184-4003-84c3-c8e4fe63211a","html_url":"https://github.com/CTCaer/hekate","commit_stats":null,"previous_names":[],"tags_count":75,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTCaer%2Fhekate","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTCaer%2Fhekate/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTCaer%2Fhekate/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CTCaer%2Fhekate/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CTCaer","download_url":"https://codeload.github.com/CTCaer/hekate/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246558108,"owners_count":20796696,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bootloader","hekate","nintendo-switch-bootloader","nyx","tools","uefi"],"created_at":"2024-08-01T06:00:51.730Z","updated_at":"2025-03-31T23:32:10.338Z","avatar_url":"https://github.com/CTCaer.png","language":"C","funding_links":[],"categories":["C","System Software","others","Nintendo Switch"],"sub_categories":["Payloads"],"readme":"# hekate - Nyx\n\n![Image of Hekate](https://user-images.githubusercontent.com/3665130/60391760-bc1e8c00-9afe-11e9-8b7a-b065873081b2.png)\n\n\nCustom Graphical Nintendo Switch bootloader, firmware patcher, tools, and many more.\n\n\n\n- [Features](#features)\n- [Bootloader folders and files](#bootloader-folders-and-files)\n- [Bootloader configuration](#bootloader-configuration)\n  * [hekate global Configuration keys/values](#hekate-global-configuration-keysvalues-when-entry-is-config)\n  * [Boot entry key/value combinations](#boot-entry-keyvalue-combinations)\n  * [Boot entry key/value combinations for Exosphère](#boot-entry-keyvalue-combinations-for-exosphère)\n  * [Payload storage](#payload-storage)\n  * [Nyx Configuration keys/values](#nyx-configuration-keysvalues-nyxini)\n\n\n\n## Features\n\n- **Fully Configurable and Graphical** with Touchscreen and Joycon input support\n- **Launcher Style, Background and Color Themes**\n- **HOS (Switch OS) Bootloader** -- For CFW Sys/Emu, OFW Sys and Stock Sys\n- **Android \u0026 Linux Bootloader**\n- **Payload Launcher**\n- **eMMC/emuMMC Backup/Restore Tools**\n- **SD Card Partition Manager** -- Prepares and formats SD Card for any combo of HOS (Sys/emuMMC), Android and Linux\n- **emuMMC Creation \u0026 Manager** -- Can also migrate and fix existing emuMMC\n- **Switch Android \u0026 Linux flasher**\n- **USB Mass Storage (UMS) for SD/eMMC/emuMMC** -- Converts Switch into a SD Card Reader\n- **USB Gamepad** -- Converts Switch with Joycon into a USB HID Gamepad\n- **Hardware and Peripherals info** (SoC, Fuses, RAM, Display, Touch, eMMC, SD, Battery, PSU, Charger)\n- **Many other tools** like Archive Bit Fixer, Touch Calibration, SD/eMMC Benchmark, AutoRCM enabler and more\n\n\n## Bootloader folders and files\n\n| Folder/File              | Description                                                           |\n| ------------------------ | --------------------------------------------------------------------- |\n| bootloader               | Main folder.                                                          |\n|  \\|__ bootlogo.bmp       | It is used if no `logopath` key is found. User provided. Can be skipped. |\n|  \\|__ hekate_ipl.ini     | Main bootloader configuration and boot entries in `Launch` menu.      |\n|  \\|__ nyx.ini            | Nyx GUI configuration                                                 |\n|  \\|__ patches.ini        | Add external patches. Can be skipped. A template can be found [here](./res/patches_template.ini) |\n|  \\|__ update.bin         | If newer, it is loaded at boot. Normally for modchips. Auto updated and created at first boot. |\n| bootloader/ini/          | For individual inis. `More configs` menu. Autoboot is supported.   |\n| bootloader/res/          | Nyx user resources. Icons and more.                                   |\n|  \\|__ background.bmp     | Nyx - Custom background. User provided.                               |\n|  \\|__ icon_switch.bmp    | Nyx - Default icon for CFWs.                                          |\n|  \\|__ icon_payload.bmp   | Nyx - Default icon for Payloads.                                      |\n| bootloader/sys/          | hekate and Nyx system modules folder.                                 |\n|  \\|__ emummc.kipm        | emuMMC KIP1 module. !Important!                                       |\n|  \\|__ libsys_lp0.bso     | LP0 (sleep mode) module. Important!                                   |\n|  \\|__ libsys_minerva.bso | Minerva Training Cell. Used for DRAM Frequency training. !Important!  |\n|  \\|__ nyx.bin            | Nyx - hekate's GUI. !Important!                                       |\n|  \\|__ res.pak            | Nyx resources package. !Important!                                    |\n|  \\|__ thk.bin            | Atmosphère Tsec Hovi Keygen. !Important!                              |\n| bootloader/screenshots/  | Folder where Nyx screenshots are saved                                |\n| bootloader/payloads/     | For the `Payloads` menu. All CFW bootloaders, tools, Linux payloads are supported. Autoboot only supported by including them into an ini. |\n| bootloader/libtools/     | Reserved                                                              |\n\n\n\n## Bootloader configuration\n\nThe 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.\n\n\nThere are four possible type of entries. \"**[ ]**\": Boot entry, \"**{ }**\": Caption, \"**#**\": Comment, \"*newline*\": .ini cosmetic newline.\n\n\n**You can find a template [Here](./res/hekate_ipl_template.ini)**\n\n\n### hekate Global Configuration keys/values (when entry is *[config]*):\n\n| Config option      | Description                                                |\n| ------------------ | ---------------------------------------------------------- |\n| autoboot=0         | 0: Disable, #: Boot entry number to auto boot.             |\n| autoboot_list=0    | 0: Read `autoboot` boot entry from hekate_ipl.ini, 1: Read from ini folder (ini files are ASCII ordered). |\n| bootwait=3         | 0: Disable (It also disables bootlogo. Having **VOL-** pressed since injection goes to menu.), #: Time to wait for **VOL-** to enter menu. Max: 20s. |\n| noticker=0         | 0: Animated line is drawn during custom bootlogo, signifying time left to skip to menu. 1: Disable. |\n| 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.|\n| autonogc=1         | 0: Disable, 1: Automatically applies nogc patch if unburnt fuses found and a \u003e= 4.0.0 HOS is booted. |\n| bootprotect=0      | 0: Disable, 1: Protect bootloader folder from being corrupted by disallowing reading or editing in HOS. |\n| updater2p=0        | 0: Disable, 1: Force updates (if needed) the reboot2payload binary to be hekate. |\n| backlight=100      | Screen backlight level. 0-255.                             |\n\n\n### Boot entry key/value combinations:\n\n| Config option          | Description                                                |\n| ---------------------- | ---------------------------------------------------------- |\n| warmboot={FILE path}   | Replaces the warmboot binary                               |\n| secmon={FILE path}     | Replaces the security monitor binary                       |\n| kernel={FILE path}     | Replaces the kernel binary                                 |\n| kip1={FILE path}       | Replaces/Adds kernel initial process. Multiple can be set. |\n| kip1={FOLDER path}/*   | Loads every .kip/.kip1 inside a folder. Compatible with single kip1 keys. |\n| fss0={FILE path}       | Takes an Atmosphere `package3` binary (formerly fusee-secondary.bin) and `extracts` all needed parts from it. kips, exosphere, warmboot and mesophere if enabled. |\n| fss0experimental=1     | Enables loading of experimental content from a FSS0 storage |\n| exofatal={FILE path}   | Replaces the exosphere fatal binary for Mariko             |\n| ---------------------- | ---------------------------------------------------------- |\n| kip1patch=patchname    | Enables a kip1 patch. Specify with multiple lines and/or in one line with `,` as separator. If actual patch is not found, a warning will show up |\n| emupath={FOLDER path}  | 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. |\n| emummcforce=1          | Forces the use of emuMMC. If emummc.ini is disabled or not found, then it causes an error. |\n| emummc_force_disable=1 | Disables emuMMC, if it's enabled.                           |\n| stock=1                | OFW via hekate bootloader. Disables unneeded kernel patching and CFW kips when running stock. `If emuMMC is enabled, emummc_force_disable=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`. |\n| fullsvcperm=1          | Disables SVC verification (full services permission). Doesn't work with Mesosphere as kernel. |\n| debugmode=1            | Enables Debug mode. Obsolete when used with exosphere as secmon. |\n| atmosphere=1           | Enables Atmosphère patching. Not needed when `fss0` is used. |\n| ---------------------- | ---------------------------------------------------------- |\n| payload={FILE path}    | Payload launching. Tools, Android/Linux, CFW bootloaders, etc. Any key above when used with that, doesn't get into account. |\n| ---------------------- | ---------------------------------------------------------- |\n| l4t=1                  | L4T Linux/Android native launching.                        |\n| boot_prefixes={FOLDER path} | L4T bootstack directory.                              |\n| ram_oc=0               | L4T RAM Overclocking. Check README_CONFIG.txt for more info. |\n| ram_oc_vdd2=1100       | L4T RAM VDD2 Voltage. Set VDD2 (T210B01) or VDD2/VDDQ (T210) voltage. 1050-1175. |\n| ram_oc_vddq=600        | L4T RAM VDDQ Voltage. Set VDDQ (T210B01). 550-650.         |\n| uart_port=0            | Enables logging on serial port for L4T uboot/kernel.       |\n| Additional keys        | Each distro supports more keys. Check README_CONFIG.txt  for more info. |\n| ---------------------- | ---------------------------------------------------------- |\n| bootwait=3             | Overrides global bootwait from `[config]`.                 |\n| id=IDNAME              | Identifies boot entry for forced boot via id. Max 7 chars. |\n| logopath={FILE path}   | If it exists, it will load the specified bitmap. Otherwise `bootloader/bootlogo.bmp` will be used if exists |\n| icon={FILE 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] -\u003e `bootloader/res/Test 2.bmp`). Otherwise defaults will be used. |\n\n\n**Note1**: When using the wildcard (`/*`) with `kip1` you can still use the normal `kip1` after that to load extra single kips.\n\n**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`.\nYou can define `kip1` to load an extra kip or many via the wildcard (`/*`) usage.\n\n**Warning**: Careful when you define *fss0 core* kips when using `fss0` or the folder (when using `/*`) includes them.\nThis 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). In such cases, the `kip1` line must be under `fss0` line.\n\n\n### Boot entry key/value combinations for Exosphère:\n\n| Config option          | Description                                                |\n| ---------------------- | ---------------------------------------------------------- |\n| nouserexceptions=1     | Disables usermode exception handlers when paired with Exosphère. |\n| userpmu=1              | Enables user access to PMU when paired with Exosphère.     |\n| cal0blank=1            | Overrides Exosphère config `blank_prodinfo_{sys/emu}mmc`. If that key doesn't exist, `exosphere.ini` will be used. |\n| cal0writesys=1         | Overrides Exosphère config `allow_writing_to_cal_sysmmc`. If that key doesn't exist, `exosphere.ini` will be used. |\n| usb3force=1            | Overrides system settings mitm config `usb30_force_enabled`. If that key doesn't exist, `system_settings.ini` will be used. |\n\n\n**Note**: `cal0blank`, `cal0writesys`, `usb3force`, as stated override the `exosphere.ini` or `system_settings.ini`. 0: Disable, 1: Enable, Key Missing: Use original value.\n\n\n**Note2**: `blank_prodinfo_{sys/emu}mmc`, `allow_writing_to_cal_sysmmc` and `usb30_force_enabled` in `exosphere.ini` and `system_settings.ini` respectively, are the only atmosphere config keys that can affect hekate booting configuration externally, **if** the equivalent keys in hekate config are missing.\n\n\n### Payload storage:\n\nhekate has a boot storage in the binary that helps it configure it outside of BPMP enviroment:\n\n| Offset / Name           | Description                                                       |\n| ----------------------- | ----------------------------------------------------------------- |\n| '0x94' boot_cfg         | bit0: `Force AutoBoot`, bit1: `Show launch log`, bit2: `Boot from ID`, bit3: `Boot to emuMMC`. |\n| '0x95' autoboot         | If `Force AutoBoot`, 0: Force go to menu, else boot that entry.   |\n| '0x96' autoboot_list    | If `Force AutoBoot` and `autoboot` then it boots from ini folder. |\n| '0x97' extra_cfg        | When menu is forced: bit5: `Run UMS`.                             |\n| '0x98' xt_str[128]      | Depends on the set cfg bits.                                      |\n| '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,  |\n| '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. |\n| '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. |\n\n\n### Nyx Configuration keys/values (nyx.ini):\n\n| Config option      | Description                                                |\n| ------------------ | ---------------------------------------------------------- |\n| themebg=2d2d2d     | Sets Nyx background color in HEX. EXPERIMENTAL.            |\n| themecolor=167     | Sets Nyx color of text highlights.                         |\n| entries5col=0      | 1: Sets Launch entry columns from 4 to 5 per line. For a total of 10 entries. |\n| timeoff=100        | Sets time offset in HEX. Must be in HOS epoch format       |\n| homescreen=0       | Sets home screen. 0: Home menu, 1: All configs (merges Launch and More configs), 2: Launch, 3: More Configs. |\n| verification=1     | 0: Disable Backup/Restore verification, 1: Sparse (block based, fast and mostly reliable), 2: Full (sha256 based, slow and 100% reliable). |\n| ------------------ | ------- The following options can only be edited in nyx.ini ------- |\n| umsemmcrw=0        | 1: eMMC/emuMMC UMS will be mounted as writable by default. |\n| jcdisable=0        | 1: Disables Joycon driver completely.                      |\n| jcforceright=0     | 1: Forces right joycon to be used as main mouse control.   |\n| bpmpclock=1        | 0: Auto, 1: Fastest, 2: Faster, 3: Fast. Use 2 or 3 if Nyx hangs or some functions like UMS/Backup Verification fail. |\n\n\n```\nhekate  (c) 2018,      naehrwert, st4rk.\n        (c) 2018-2024, CTCaer.\n\nNyx GUI (c) 2019-2024, CTCaer.\n\nThanks to: derrek, nedwill, plutoo, shuffle2, smea, thexyz, yellows8.\nGreetings to: fincs, hexkyz, SciresM, Shiny Quagsire, WinterMute.\n\nOpen source and free packages used:\n - Littlev Graphics Library,\n   Copyright (c) 2016-2018 Gabor Kiss-Vamosi\n - FatFs R0.13c,\n   Copyright (c) 2006-2018, ChaN\n   Copyright (c) 2018-2022, CTCaer\n - bcl-1.2.0,\n   Copyright (c) 2003-2006, Marcus Geelnard\n - blz,\n   Copyright (c) 2018, SciresM\n - elfload,\n   Copyright (c) 2014 Owen Shepherd,\n   Copyright (c) 2018 M4xw\n\n                         ___\n                      .-'   `'.\n                     /         \\\n                     |         ;\n                     |         |           ___.--,\n            _.._     |0) = (0) |    _.---'`__.-( (_.\n     __.--'`_.. '.__.\\    '--. \\_.-' ,.--'`     `\"\"`\n    ( ,.--'`   ',__ /./;   ;, '.__.'`    __\n    _`) )  .---.__.' / |   |\\   \\__..--\"\"  \"\"\"--.,_\n   `---' .'.''-._.-'`_./  /\\ '.  \\ _.--''````'''--._`-.__.'\n         | |  .' _.-' |  |  \\  \\  '.               `----`\n          \\ \\/ .'     \\  \\   '. '-._)\n           \\/ /        \\  \\    `=.__`'-.\n           / /\\         `) )    / / `\"\".`\\\n     , _.-'.'\\ \\        / /    ( (     / /\n      `--'`   ) )    .-'.'      '.'.  | (\n             (/`    ( (`          ) )  '-;   [switchbrew]\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCTCaer%2Fhekate","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FCTCaer%2Fhekate","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FCTCaer%2Fhekate/lists"}