Skip to main content

Reference: Reboot Reason IDs

This page documents identifiers for different reboot reasons.

For more information about reboot reason tracking, see one of the following pages:

The tables also list the enum names from the source file reboot_reason_types.h in the MCU SDK.

Expected reboot reasons

NameID (decimal)ID (hex)MCU SDK enumNotes
Unspecified00x0000kMfltRebootReason_Unknown
User Shutdown10x0001kMfltRebootReason_UserShutdown
User Reset20x0002kMfltRebootReason_UserReset
Firmware Update30x0003kMfltRebootReason_FirmwareUpdate
Low Power40x0004kMfltRebootReason_LowPowerSoftware shut down due to the battery level being too low.
Debugger Halted50x0005kMfltRebootReason_DebuggerHalted
Button Reset60x0006kMfltRebootReason_ButtonReset
Power On Reset70x0007kMfltRebootReason_PowerOnReset
Software Reset80x0008kMfltRebootReason_SoftwareReset
Deep Sleep90x0009kMfltRebootReason_DeepSleepThe CPU went through a full reboot due to exit from lowest power state.
Pin Reset100x000AkMfltRebootReason_PinResetThe CPU reset pin was toggled.
Self Test110x000BkMfltRebootReason_SelfTestThe Self Test component caused a reset.

Unexpected reboot reasons

NameID (decimal)ID (hex)MCU SDK enumNotes
Unexpected Reset327680x8000kMfltRebootReason_UnknownErrorFlags an unexpected reset path, like the CPU reset without any reboot logic being invoked.
Assert327690x8001kMfltRebootReason_Assert
Watchdog (Deprecated)327700x8002kMfltRebootReason_WatchdogDeprecatedDeprecated in favor of HardwareWatchdog and SoftwareWatchdog. This separation makes it easier to track the number of watchdogs not caught by software.
Brownout Reset327710x8003kMfltRebootReason_BrownOutReset
Nmi327720x8004kMfltRebootReason_NmiA reset triggered by a non-maskable interrupt.
Hardware Watchdog327730x8005kMfltRebootReason_HardwareWatchdogA reset triggered by a hardware watchdog timer. For more details about the nomenclature, see A Guide to Watchdog Timers for Embedded Systems.
Software Watchdog327740x8006kMfltRebootReason_SoftwareWatchdogA reset triggered by a software watchdog timer. For more details about the nomenclature, see A Guide to Watchdog Timers for Embedded Systems.
Clock Failure327750x8007kMfltRebootReason_ClockFailureA 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 Panic327760x8008kMfltRebootReason_KernelPanicA software reset triggered when the OS or RTOS that the end-user code runs on identifies a fatal error condition.
Firmware Update Error327770x8009kMfltRebootReason_FirmwareUpdateErrorA 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 Memory327780x800AkMfltRebootReason_OutOfMemoryA software reset triggered due to a dynamic memory (heap) allocation failure.
Stack Overflow327790x800BkMfltRebootReason_StackOverflowA software reset triggered due to a stack overflow error.
Task Watchdog327800x800CkMfltRebootReason_TaskWatchdogA 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

NameID (decimal)ID (hex)MCU SDK enum
Bus Fault371200x9100kMfltRebootReason_BusFault
Ibuserr371210x9101
Preciserr371220x9102
Impreciserr371230x9103
Unstkerr371240x9104
Stkerr371250x9105
Lsperr371260x9106
Bfarvalid371270x9107

Memory faults

NameID (decimal)ID (hex)MCU SDK enum
Mem Fault373760x9200kMfltRebootReason_MemFault
Iaccviol373770x9201
Daccviol373780x9202
Munstkerr373790x9203
Mstkerr373800x9204
Mlsperr373810x9205
Mmarvalid373820x9206

Usage faults

NameID (decimal)ID (hex)MCU SDK enum
Usage Fault376320x9300kMfltRebootReason_UsageFault
Undefinstr376330x9301
Invstate376340x9302
Invpc376350x9303
Nocp376360x9304
Unaligned376370x9305
Divbyzero376380x9306

Miscellaneous

NameID (decimal)ID (hex)MCU SDK enumNotes
Hard Fault378880x9400kMfltRebootReason_HardFault
Lockup378890x9401kMfltRebootReason_LockupA reset which is triggered when the processor faults while already executing from a fault handler.