Skip to main content

E90 — DOUBLE_PANIC_RECOVERY

Build type

This error only occurs on release builds.

The device panicked twice in succession and triggered self-recovery.

What happens

When the device panics, custom_pre_backtrace sets an RTC RAM flag (NVS_PANIC_MAGIC_1). If the device panics again before a clean boot clears this flag, the flag becomes NVS_PANIC_MAGIC_2. On the next boot, verify_panic_flag detects the double-panic and:

  1. Logs E90 (blocking).
  2. Reads the backtrace length from the end of the NVS flash region.
  3. Erases the NVS partition to allow recovery — this deletes all saved settings (Wi-Fi credentials, BLE bonds, saved state, error log, etc.). If a valid backtrace is stored, only the portion before it is erased to preserve crash info; otherwise the full NVS region is erased.
  4. Clears the panic flag.
  5. Boot continues normally — there is no halt.

Possible causes

  • A reproducible firmware bug that crashes the device on every boot.
  • Corrupted NVS data causing a crash on boot when the state is read.
  • A hardware fault triggering a consistent crash (power brownout, etc.).

How to fix

  1. Check if the device recovered — After two panics the device erases the NVS partition and attempts a normal boot. It may recover on its own, but all saved settings are gone — you will need to reconfigure Wi-Fi credentials and re-pair any BLE devices.
  2. Erase NVS and reflash — Perform a full flash erase (espflash erase-flash) and reflash to clear all corrupted state.
  3. Report the issue — E90 always indicates a crash loop that needs investigation. Open an issue on GitHub with the firmware version and as much context as possible about what the device was doing before it started crashing.