Page 1 of 1

How to upload wifi credentials from nvs partition

Posted: Wed Jun 26, 2024 5:47 am
by daicon
I would like to generate a nvs partition containing wifi credentials from a csv and upload it to my ESP32 .

I have been able to generate a nvs partition using the following command
```
python3 nvs_partition_gen.py generate nvs_data.csv nvs_data.bin 0x5000
```
However, I am having trouble setting the wifi credentials from using this technique.

I have set wifi credentials using `esp-wifi` and downloaded the nvs partition as follows

Code: Select all

esptool.py --port /dev/ttyUSB0 read_flash 0x9000 0x5000 nvs.img
Reading the wifi sta related keys values in the partition gives me the following output

Code: Select all

python3 /home/daigo/src/espressif/esp-idf/components/nvs_flash/nvs_partition_tool/nvs_tool.py nvs.img  -d minimal -f text | grep sta
 nvs.net80211:sta.rrm_e = 0
 nvs.net80211:sta.btm_e = 0
 nvs.net80211:sta.mbo_e = 0
 nvs.net80211:sta.bss_retry = 0
 nvs.net80211:sta.trans_d = 0
 nvs.net80211:sta.sae_h2e = 2
 nvs.net80211:sta.scan_method = 0
 nvs.net80211:sta.minauth = 3
 nvs.net80211:sta.ssid[0] = b'\x05\x00\x00\x00REDACTED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
 nvs.net80211:sta.pswd[0] = b'REDACTED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
 nvs.net80211:sta.apsw[0] = b'\x05\x01'
 nvs.net80211:sta.chan = 6
 nvs.net80211:sta.apinfo[0] = b'\x01\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x000\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x05\x00\x00\x00REDACTED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00REDACTED\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\x98\xde\x18\x99\xc3\x8614\xa2\xc4Q\t\x8d\x00\x8c\xe5\x82\x9c\xfc\xb2u\x8b\x84\xf7\xf2\xfe\x8f\xb4y\xc6P%\x06\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff'
 nvs.net80211:sta.lis_intval = 3
 nvs.net80211:sta.sort_method = 0
 nvs.net80211:sta.minrssi = -127
 nvs.net80211:sta.pmf_e = 1
 nvs.net80211:sta.pmf_r = 0
I see that ssid is a blob type and is prefixed by \x05\x00\x00\x00. I want to be able to generate and set these values in a user friendly way (eg. ssid is passed as string not blob) from a CSV file. Is that possible?

Re: How to upload wifi credentials from nvs partition

Posted: Fri Jun 28, 2024 12:29 am
by chegewara
https://docs.espressif.com/projects/esp ... s_mfg.html

It is easy to prepare such csv.
Then you have to read data from nvs and apply to wifi setup.

Re: How to upload wifi credentials from nvs partition

Posted: Wed Jul 03, 2024 12:59 am
by daicon
I'm having trouble understanding how that page solves my issue? Could you elaborate?

Re: How to upload wifi credentials from nvs partition

Posted: Mon Jul 15, 2024 1:39 am
by ESP_adokitkat
Hello, have you seen `examples/storage/nvsgen` example? It is using more user-friendly way of doing this.

You can see there is `nvs_data.csv` file there (and there is a string inside as well) and in `main/CMakeLists.txt` there is a line `nvs_create_partition_image(nvs ../nvs_data.csv FLASH_IN_PROJECT)` which automatically creates the NVS binary and flashes is with the project automatically.

Re: How to upload wifi credentials from nvs partition

Posted: Mon Jul 15, 2024 7:28 am
by RKrensel
I am also interested in this issue. The ESP WiFi implementation does not save the SSID or password in a clear structure in NVS. ESP_adokitkat the example you mention does not deal with this issue.