【问题标题】:How do you erase ESP32 wifi Smartconfig credentials from flash?如何从闪存中擦除 ESP32 wifi Smartconfig 凭据?
【发布时间】:2021-10-08 00:08:25
【问题描述】:

我正在使用 esp32 smartconfig 来设置 wifi 凭据,它工作可靠。我希望能够从我的 arduino esp32 草图中擦除存储在闪存中某处的凭据。

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

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

我希望能够从我的草图中删除凭据,以便没有 PC 的用户拥有此功能。

谢谢。

【问题讨论】:

    标签: esp32


    【解决方案1】:

    您尚未提供有关您的实施的太多细节,但如果假设是标准 ESP-IDF 实施,那么 WiFi 凭据将存储在名为“nvs”(overview) 的默认 NVS 分区上的 Flash 中。您可以轻松地对整个分区执行擦除循环,这将擦除设备中存储的所有内容。

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

    【讨论】:

    • 谢谢。这正是我所需要的。我正在使用标准的 ESP-IDF 实现,但在 Arduino 环境中。我能够将它们打印出来但不能擦除它们:esp_wifi_get_config(WIFI_IF_STA, &conf); // 将 wifi 设置加载到 struct comf rssiSSID = reinterpret_cast(conf.sta.ssid);密码 = reinterpret_cast(conf.sta.password);
    • 我将此处的代码改编为子例程,这是我发现的唯一允许可靠使用 smartconfig 的实现:gist.github.com/kakopappa/8e610c0b64361373994a21f9f3b62181
    【解决方案2】:

    其他人碰到这个,有 esp_wifi_restore() 它将清除 wifi 凭据而不清除 NVS。

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

    【讨论】:

      【解决方案3】:

      如果您在 VSCode 上使用 PlatformIO,您可以在 Platform IO 左侧菜单中选择“Erase Flash”(当您点击ET 头部位于“左侧”菜单)。

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

      Erasing flash

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-28
        • 2023-02-09
        • 2011-05-17
        • 2021-07-21
        • 1970-01-01
        • 2021-02-12
        • 1970-01-01
        相关资源
        最近更新 更多