Reference: Reboot Reason IDs
This page documents identifiers for different reboot reasons.
For more information about reboot reason tracking, see the MCU reboot reason tracking guide.
The tables also list the enum names from the source file
reboot_reason_types.h in the MCU SDK.
Expected reboot reasons
| Name | ID (decimal) | ID (hex) | MCU SDK enum | Notes |
|---|---|---|---|---|
| Unspecified | 0 | 0x0000 | kMfltRebootReason_Unknown | |
| User Shutdown | 1 | 0x0001 | kMfltRebootReason_UserShutdown | |
| User Reset | 2 | 0x0002 | kMfltRebootReason_UserReset | |
| Firmware Update | 3 | 0x0003 | kMfltRebootReason_FirmwareUpdate | |
| Low Power | 4 | 0x0004 | kMfltRebootReason_LowPower | Software shut down due to the battery level being too low. |
| Debugger Halted | 5 | 0x0005 | kMfltRebootReason_DebuggerHalted | |
| Button Reset | 6 | 0x0006 | kMfltRebootReason_ButtonReset | |
| Power On Reset | 7 | 0x0007 | kMfltRebootReason_PowerOnReset | |
| Software Reset | 8 | 0x0008 | kMfltRebootReason_SoftwareReset | |
| Deep Sleep | 9 | 0x0009 | kMfltRebootReason_DeepSleep | The CPU went through a full reboot due to exit from lowest power state. |
| Pin Reset | 10 | 0x000A | kMfltRebootReason_PinReset | The CPU reset pin was toggled. |
| Self Test | 11 | 0x000B | kMfltRebootReason_SelfTest | The Self Test component caused a reset. |
Unexpected reboot reasons
| Name | ID (decimal) | ID (hex) | MCU SDK enum | Notes |
|---|---|---|---|---|
| Unexpected Reset | 32768 | 0x8000 | kMfltRebootReason_UnknownError | Flags an unexpected reset path, like the CPU reset without any reboot logic being invoked. |
| Assert | 32769 | 0x8001 | kMfltRebootReason_Assert | |
| Watchdog (Deprecated) | 32770 | 0x8002 | kMfltRebootReason_WatchdogDeprecated | Deprecated in favor of HardwareWatchdog and SoftwareWatchdog. This separation makes it easier to track the number of watchdogs not caught by software. |
| Brownout Reset | 32771 | 0x8003 | kMfltRebootReason_BrownOutReset | |
| Nmi | 32772 | 0x8004 | kMfltRebootReason_Nmi | A reset triggered by a non-maskable interrupt. |
| Hardware Watchdog | 32773 | 0x8005 | kMfltRebootReason_HardwareWatchdog | A reset triggered by a hardware watchdog timer. For more details about the nomenclature, see A Guide to Watchdog Timers for Embedded Systems. |
| Software Watchdog | 32774 | 0x8006 | kMfltRebootReason_SoftwareWatchdog | A reset triggered by a software watchdog timer. For more details about the nomenclature, see A Guide to Watchdog Timers for Embedded Systems. |
| Clock Failure | 32775 | 0x8007 | kMfltRebootReason_ClockFailure | A reset triggered due to the CPU losing a stable clock. This can happen, for example, if power to the clock is cut or the lock for the PLL is lost. |
| Kernel Panic | 32776 | 0x8008 | kMfltRebootReason_KernelPanic | A software reset triggered when the OS or RTOS that the end-user code runs on identifies a fatal error condition. |
| Firmware Update Error | 32777 | 0x8009 | kMfltRebootReason_FirmwareUpdateError | A reset triggered when an attempt to upgrade to a new OTA image has failed and a rollback to a previous version was initiated. |
| Out of Memory | 32778 | 0x800A | kMfltRebootReason_OutOfMemory | A software reset triggered due to a dynamic memory (heap) allocation failure. |
| Stack Overflow | 32779 | 0x800B | kMfltRebootReason_StackOverflow | A software reset triggered due to a stack overflow error. |
| Task Watchdog | 32780 | 0x800C | kMfltRebootReason_TaskWatchdog | A reset triggered by a watchdog timer configured to detect stuck tasks. For more details about the nomenclature, see A Guide to Watchdog Timers for Embedded Systems. |
ARM-specific error reboot reasons
Bus faults
| Name | ID (decimal) | ID (hex) | MCU SDK enum |
|---|---|---|---|
| Bus Fault | 37120 | 0x9100 | kMfltRebootReason_BusFault |
| Ibuserr | 37121 | 0x9101 | |
| Preciserr | 37122 | 0x9102 | |
| Impreciserr | 37123 | 0x9103 | |
| Unstkerr | 37124 | 0x9104 | |
| Stkerr | 37125 | 0x9105 | |
| Lsperr | 37126 | 0x9106 | |
| Bfarvalid | 37127 | 0x9107 |
Memory faults
| Name | ID (decimal) | ID (hex) | MCU SDK enum |
|---|---|---|---|
| Mem Fault | 37376 | 0x9200 | kMfltRebootReason_MemFault |
| Iaccviol | 37377 | 0x9201 | |
| Daccviol | 37378 | 0x9202 | |
| Munstkerr | 37379 | 0x9203 | |
| Mstkerr | 37380 | 0x9204 | |
| Mlsperr | 37381 | 0x9205 | |
| Mmarvalid | 37382 | 0x9206 |
Usage faults
| Name | ID (decimal) | ID (hex) | MCU SDK enum |
|---|---|---|---|
| Usage Fault | 37632 | 0x9300 | kMfltRebootReason_UsageFault |
| Undefinstr | 37633 | 0x9301 | |
| Invstate | 37634 | 0x9302 | |
| Invpc | 37635 | 0x9303 | |
| Nocp | 37636 | 0x9304 | |
| Unaligned | 37637 | 0x9305 | |
| Divbyzero | 37638 | 0x9306 |
Miscellaneous
| Name | ID (decimal) | ID (hex) | MCU SDK enum | Notes |
|---|---|---|---|---|
| Hard Fault | 37888 | 0x9400 | kMfltRebootReason_HardFault | |
| Lockup | 37889 | 0x9401 | kMfltRebootReason_Lockup | A reset which is triggered when the processor faults while already executing from a fault handler. |