Skip to content

ESP32 NVS Blink Pattern Not Loading

DodaTech Updated 2026-06-26 1 min read

In this tutorial, you'll learn about ESP32 NVS Blink Pattern Not Loading. We cover key concepts, practical examples, and best practices.

The Problem

ESP32 fails to load the NVS blink pattern count across reboots for LED status indication.

Quick Fix

Wrong

int bootCount = 0;
bootCount++;  // Resets to 0 every boot
LED blinks 1 time every boot (never increases).
#include <nvs_flash.h>
nvs_handle_t handle;
nvs_open("boot", NVS_READWRITE, &handle);
int32_t bootCount = 0;
nvs_get_i32(handle, "count", &bootCount);
bootCount++;
nvs_set_i32(handle, "count", bootCount);
nvs_commit(handle);
nvs_close(handle);
// Blink LED bootCount times
for (int i = 0; i < bootCount; i++) {
  digitalWrite(2, HIGH); delay(200);
  digitalWrite(2, LOW); delay(200);
}
LED blinks 3 times after 3rd boot. Blinks 5 times after 5th boot.

Prevention

Use NVS to persist boot counters across reboots. Initialize nvs_flash_init() before nvs_open(). Handle first boot (key not found). Keep counters in dedicated namespace. Erase with factory reset command.

DodaTech engineers apply these same patterns across Doda Browser, DodaZIP, and Durga Antivirus Pro for production IoT reliability.

FAQ

### Can I use NVS for factory reset?

Yes. Implement a factory reset by calling nvs_flash_erase() and re-initializing. Use a GPIO button or serial command to trigger.

What should I store in NVS?

Wi-Fi credentials, calibration data, user preferences, device serial number, boot counters, and configuration parameters.

Is NVS data preserved during OTA?

Yes. NVS has its own partition that is not touched during OTA updates. All settings survive firmware upgrades.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro