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:
- Logs E90 (blocking).
- Reads the backtrace length from the end of the NVS flash region.
- 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.
- Clears the panic flag.
- 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
- 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.
- Erase NVS and reflash — Perform a full flash erase (
espflash erase-flash) and reflash to clear all corrupted state. - 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.