Page 1 of 1

nvs_open_from_partition() gives ESP_ERR_NVS_NOT_FOUND

Posted: Sat Jan 15, 2022 12:21 pm
by Jacek@dtm.pl
I have custom partition table with additional nvs type partition "nvs_times" and with nvs_keys type partition names "nvs_key".
In startup code i have:

Code: Select all

////////////////////////////
    //finding "nvs_key" partition
    printf("\n");
    printf("Finding nvs_key partition... ");
    esp_partition_t* partition_nvs_key;
    partition_nvs_key = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS_KEYS,"nvs_key");
    if (partition_nvs_key == NULL) 
    {
        printf("Error: nvs_key not found\n");
    }
    else
    {
        printf("nvs_key partition found\n");
    }
    //Finding  nvs_times partition
    printf("\n");
    printf("Finding nvs_times partition... ");
    esp_partition_t* partition_nvs_times;
    partition_nvs_times = esp_partition_find_first(ESP_PARTITION_TYPE_DATA, ESP_PARTITION_SUBTYPE_DATA_NVS,"nvs_times");
    if (partition_nvs_times == NULL) 
    {
        printf("Error: nvs_times partition not found\n");
    }
    else
    {
        printf("nvs_times partition found\n");
    }
    //reading configuration fom partition "nvs_key"
    nvs_sec_cfg_t sec_config;
    ret = nvs_flash_read_security_cfg(partition_nvs_key, &sec_config);
    ESP_ERROR_CHECK( ret );
    // nvs_times partition initialisation
    ret = nvs_flash_secure_init_partition("nvs_times", &sec_config);
    ESP_ERROR_CHECK( ret );
    
    // Open
    printf("\n");
    printf("Opening Non-Volatile Storage (NVS) handle... ");
    nvs_handle_t my_handle;
    char string[16] = {0}; 
    size_t string_length=0;
    ret = nvs_open_from_partition("nvs_times","times_namespace", NVS_READONLY, &my_handle);
    if (ret != ESP_OK) 
    {
        printf("Error (%s) opening NVS handle!\n", esp_err_to_name(ret));
    }
    else
    {
        printf("Done\n");

 
    }
and i have:

Code: Select all

I (885) nvs: NVS partition "nvs" is encrypted.

Finding nvs_key partition... nvs_keys partition found

Finding nvs_times partition... nvs_times partition found

Opening Non-Volatile Storage (NVS) handle... Error (ESP_ERR_NVS_NOT_FOUND) opening NVS handle!
Error (ESP_ERR_NVS_INVALID_HANDLE) reading!
I have enabled encryption and flashing pre-encrypted files.
I manually encrypt generated keys-01-13_14-23.bin before flashing and nvs_times_encr.bin partition also.
nvs_times.bin was firstly created with encrypting with generated keys-01-13_14-23.bin and than encrypted with encryption key.

Flashing like that:

Code: Select all

python esptool.py -p COM5 -b 460800 --before default_reset --after no_reset --chip esp32  write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0xb000 ../../../../ble_spp_server/build/partition_table/partition-table-encrypted.bin 0x10000 ../../../../ble_spp_server/build/ota_data_initial-encrypted.bin 0x13000 F:/GitHub/ble_spp_server/secure/partition-bin/nvs_times_encr_encrypted.bin 0x20000 ../../../../ble_spp_server/build/maxbt-encrypted.bin 0x320000 F:/GitHub/ble_spp_server/secure/nvs_key/keys/keys-01-13_14-23-encrypted.bin
What is wrong?

Re: nvs_open_from_partition() gives ESP_ERR_NVS_NOT_FOUND

Posted: Sat Jan 15, 2022 2:29 pm
by WiFive
You should not double encrypt the nvs data partition.

Re: nvs_open_from_partition() gives ESP_ERR_NVS_NOT_FOUND

Posted: Mon Jan 17, 2022 5:47 am
by Jacek@dtm.pl
WiFive wrote:
Sat Jan 15, 2022 2:29 pm
You should not double encrypt the nvs data partition.
That's right. Thank You WiFive. Now everything works.
Thank you WiFive for being on this forum.