如何从闪存中擦除 ESP32 wifi Smartconfig 凭据?

How do you erase ESP32 wifi Smartconfig credentials from flash?

我正在使用 esp32 smartconfig 设置 wifi 凭据并且它工作可靠。我希望能够从我的 arduino esp32 sketch 中删除存储在闪存中某处的凭据。

我能够擦除凭据(我不确定它们存储在哪里)的唯一方法是使用 esptool.py 从我的 Windows PC 上擦除整个闪存:

esptool.py --chip esp32 --port com8 erase_flash

我希望能够从草图中删除凭据,这样没有电脑的用户也可以使用此功能。

谢谢。

您没有提供有关实施的详细信息,但如果采用标准 ESP-IDF 实施,则 WiFi 凭据将存储在名为“nvs”(overview) 的默认 NVS 分区上的闪存中。您可以轻松地对整个分区执行擦除循环,这将擦除设备中存储的所有内容。

或者,您可以查找 ESP WiFi 组件使用的特定 NVS 密钥来存储凭据并仅删除这些凭据。这有点冒险,因为他们没有开源 WiFi 驱动程序,并且可能随时更改实现。考虑到这一点,当前的 ESP IDF 4.2 似乎将这些密钥存储在命名空间“nvs.net80211”下的默认 NVS 分区中。相关的键名将显示为“sta.authmode”、“sta.ssid”和“sta.pswd”。

如果您在 VSCode 上使用 PlatformIO,您可以选择“擦除 Flash" 在 Platform IO 左侧菜单中(当您在 'left' 菜单中单击 ET head 时)。

确保 ESP 已重置并处于闪光模式。 (同样在上面放置一个新代码)

Erasing flash

其他人遇到这个问题,esp_wifi_restore() 将清除 wifi 凭据而不清除 NVS。

来源[https://github.com/espressif/esp-idf/issues/4108]