Skip to main content

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

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.