Line 1: |
Line 1: |
| + | The Nintendo Switch's Horizon OS supports different boot modes to allow system recovery and general maintenance. |
| + | |
| + | = Recovery Mode = |
| The Recovery Mode (also known as Maintenance Mode in firmware version 1.0.0) can be accessed when turning on the Nintendo Switch while performing a button combo. | | The Recovery Mode (also known as Maintenance Mode in firmware version 1.0.0) can be accessed when turning on the Nintendo Switch while performing a button combo. |
| | | |
− | = Description = | + | == Description == |
− | After [[Package1#Package1ldr|package1ldr]] decrypts and validates [[Package1#Package1_.28PK11.29|package1]], execution carries over into the [[Package1#Section_1|NX bootloader]].
| + | The [[boot2]] sysmodule is responsible for checking whether the system should go into Recovery Mode or not. This is done by looking for a particular system setting ("force_maintenance") or by checking the GPIOs for a specific button combination. |
| | | |
− | Among various tasks, this bootloader checks for a button combination to determine if the system should enter Recovery Mode. If the combination is performed, the bootloader reads the [[Flash_Filesystem#Boot_Partitions|SafeMode Firmware BCT]] from the eMMC, swaps the normal [[BCT]] with it and performs a Watchdog reset after writing [[Panic_codes|panic code 0x20]] to '''PMC_SCRATCH200'''.
| + | == Button combination == |
− | | |
− | = Button combination = | |
| In order to enter Recovery Mode, the following combination must be performed: | | In order to enter Recovery Mode, the following combination must be performed: |
− |
| |
− | [1.0.0-3.0.2]
| |
| * With the system powered off, press and hold Volume Down + Volume Up; | | * With the system powered off, press and hold Volume Down + Volume Up; |
| * Press the Power button while still holding Volume Down + Volume Up; | | * Press the Power button while still holding Volume Down + Volume Up; |
Line 17: |
Line 16: |
| | | |
| The [1.0.0] variant (known as Maintenance Mode) does not have the system update option. However, downloaded update data is still deleted when this menu is accessed. | | The [1.0.0] variant (known as Maintenance Mode) does not have the system update option. However, downloaded update data is still deleted when this menu is accessed. |
| + | |
| + | = Safe Mode = |
| + | The Safe Mode can be accessed when turning on the Nintendo Switch while performing a button combo. |
| + | |
| + | == Description == |
| + | After [[Package1#Package1ldr|package1ldr]] decrypts and validates [[Package1#Package1_.28PK11.29|package1]], execution carries over into the [[Package1#Section_1|NX bootloader]]. |
| + | |
| + | Among various tasks, this bootloader checks for a button combination to determine if the system should enter Safe Mode. If the combination is performed, the bootloader reads the [[Flash_Filesystem#Boot_Partitions|SafeMode Firmware BCT]] from the eMMC, swaps the normal [[BCT]] with it and performs a Watchdog reset after writing [[Panic_codes|panic code 0x20]] to '''PMC_SCRATCH200'''. |
| + | |
| + | |
| + | [1.0.0-3.0.2] Entering Safe Mode forces the system to use [[Title_list#System_Data_Archives|Firmware Package B]], which is nearly identical to [[Title_list#System_Data_Archives|Firmware Package A]], with the exception of containing different code for the built-in sysmodules [[Filesystem_services|FS]] and [[boot]]. |
| + | |
| + | When coming from the Watchdog reset, the [[Package1#Section_1|NX bootloader]] checks if the system is running in Safe Mode by looking at the current bootloader's index. If the index is not 0, the screen is briefly painted with the [[Panic_codes|panic color 0xFFFFAA]] and execution continues into the [[Recovery Mode]]. |
| + | |
| + | |
| + | [4.0.0+] Entering Safe Mode forces the system to use [[Title_list#System_Data_Archives|Firmware Package B]] or [[Title_list#System_Data_Archives|Firmware Package D]], but these now differ significantly from their normal counterparts. In addition to containing different code for the [[Filesystem_services|FS]] and [[boot]] built-in sysmodules, [[NCM_services|NCM]] and [[Process_Manager_services|PM]] are now changed to allow content database reconstruction and booting the new [[Safemode|safemode]] sysmodule. Due to the additional dependencies of this process [[PCV_services|PCV]], [[PSC_services|psc]] and [[Bus_services|bus]] sysmodules are now bundled with the kernel (only in Safe Mode firmware). |
| + | |
| + | The screen painting routine when coming from the Watchdog reset was removed. |
| + | |
| + | == Button combination == |
| + | In order to enter Safe Mode, the following combination must be performed: |
| + | |
| + | [1.0.0-3.0.2] |
| + | |
| + | Same combination used for [[Recovery Mode]]. |
| | | |
| [4.0.0+] | | [4.0.0+] |
Line 24: |
Line 48: |
| * Let go of the Power button and keep holding Volume Up until the [[Safemode|safemode]] system module starts. | | * Let go of the Power button and keep holding Volume Up until the [[Safemode|safemode]] system module starts. |
| | | |
− | This results in the system booting into [[Safemode|safemode]] and automatically finding and installing new updates from the internet. | + | This results in the system booting the [[Safemode|safemode]] sysmodule and automatically finding and installing new updates from the internet. |