Page 1 of 1

Reading from pre-generated, encrypted nvs partition fails on one specific chip revision

Posted: Tue Apr 27, 2021 4:52 pm
by bigbear
I was trying to use nvs encryption with pre-generated data on the ESP-WROOM-32 using the Partition Generator Utility.
My ESP-IDF version is release/v3.3.

It drove me nuts that it didnt't work although I did exactly what the documentation says. It will always give me an error

Code: Select all

0x1102 Id namespace doesn’t exist yet and mode is NVS_READONLY
when I try to open the partition using

Code: Select all

nvs_open_from_partition
Until tried the same binaries on a different ESP32, and it worked! That led to some investigation on my side and I noticed that they all had difference chip revisions.I did a clean build and flash 4 different ones with the same binaries, the result is the same.

First, the one which gives me the error (with espefuses.py summary)

Code: Select all

CHIP_VER_REV1          Silicon Revision 1                                = 1 R/W (0x1)
CHIP_VER_REV2          Silicon Revision 2                                = 0 R/W (0x0)
CHIP_VERSION           Reserved for future chip versions                 = 0 R/W (0x0)
CHIP_PACKAGE           Chip package identifier                           = 0 R/W (0x0)
Its the oldest I own, and it has this characteristic stain on the left side of the pcb antenna like this one:
81fclmitmoL._AC_SL1500_.jpg
81fclmitmoL._AC_SL1500_.jpg (129.89 KiB) Viewed 1347 times
Here are the chip revisions of the ones which worked:

Code: Select all

CHIP_VER_REV1          Silicon Revision 1                                = 1 R/W (0x1)
CHIP_VER_REV2          Silicon Revision 2                                = 0 R/W (0x0)
CHIP_VERSION           Reserved for future chip versions                 = 2 R/W (0x2)
CHIP_PACKAGE           Chip package identifier                           = 0 R/W (0x0)

Code: Select all

CHIP_VER_REV1          Silicon Revision 1                                = 1 R/W (0x1)
CHIP_VER_REV2          Silicon Revision 2                                = 0 R/W (0x0)
CHIP_VERSION           Reserved for future chip versions                 = 2 R/W (0x2)
CHIP_PACKAGE           Chip package identifier                           = 1 R/W (0x1)

Code: Select all

CHIP_VER_REV1          Silicon Revision 1                                = 0 R/W (0x0)
CHIP_VER_REV2          Silicon Revision 2                                = 0 R/W (0x0)
CHIP_VERSION           Reserved for future chip versions                 = 0 R/W (0x0)
CHIP_PACKAGE           Chip package identifier                           = 0 R/W (0x0)
Is this a known issue? I couldn't find any hint in the docs or anywhere else actually, except in an answer in this thread indicating the same thing.

If someone wants to reproduce with a 1/0/0/0 chip, I can provide some code. But basically I just initialized an encrypted nvs partition and tried to read a string from it.

Best, bear.