Page 1 of 1

Problem after burning efuses

Posted: Thu Aug 20, 2020 1:49 pm
by squonk11
In my project I want to use the efuses in BLK3 for storing a custom MAC address and a serial number. In a first step I burned the custom MAC into BLK3. After this step everything was working as expected.
Next I burned a new serial number into BLK3 bits 192 to 255. After this step I am not able to download a new firmware. I get the following error message:

Code: Select all

esptool.py v2.9-dev
Serial port COM5
Connecting....
Chip is ESP32D0WDQ5 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 24:0a:c4:c0:57:d0
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Compressed 3072 bytes to 151...
Wrote 3072 bytes (151 compressed) at 0x00008000 in 0.0 seconds (effective 1445.6 kbit/s)...

A fatal error occurred: Timed out waiting for packet header
esptool.py failed with exit code 2
The efuse summary now is as follows:

Code: Select all

EFUSE_NAME             Description = [Meaningful Value] [Readable/Writeable] (Hex Value)
----------------------------------------------------------------------------------------
Security fuses:
FLASH_CRYPT_CNT        Flash encryption mode counter                     = 0 R/W (0x0)
UART_DOWNLOAD_DIS      Disable UART download mode (ESP32 rev3 only)      = 0 R/W (0x0)
FLASH_CRYPT_CONFIG     Flash encryption config (key tweak bits)          = 0 R/W (0x0)
CONSOLE_DEBUG_DISABLE  Disable ROM BASIC interpreter fallback            = 1 R/W (0x1)
ABS_DONE_0             secure boot enabled for bootloader                = 0 R/W (0x0)
ABS_DONE_1             secure boot abstract 1 locked                     = 0 R/W (0x0)
JTAG_DISABLE           Disable JTAG                                      = 0 R/W (0x0)
DISABLE_DL_ENCRYPT     Disable flash encryption in UART bootloader       = 0 R/W (0x0)
DISABLE_DL_DECRYPT     Disable flash decryption in UART bootloader       = 0 R/W (0x0)
DISABLE_DL_CACHE       Disable flash cache in UART bootloader            = 0 R/W (0x0)
BLK1                   Flash encryption key
  = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLK2                   Secure boot key
  = 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 R/W
BLK3                   Variable Block 3
  = 95 0c e8 2f 00 e8 4c 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 39 01 32 3e 71 R/W

Efuse fuses:
WR_DIS                 Efuse write disable mask                          = 0 R/W (0x0)
RD_DIS                 Efuse read disablemask                            = 0 R/W (0x0)
CODING_SCHEME          Efuse variable block length scheme                = 0 R/W (0x0)
KEY_STATUS             Usage of efuse block 3 (reserved)                 = 0 R/W (0x0)

Config fuses:
XPD_SDIO_FORCE         Ignore MTDI pin (GPIO12) for VDD_SDIO on reset    = 1 R/W (0x1)
XPD_SDIO_REG           If XPD_SDIO_FORCE, enable VDD_SDIO reg on reset   = 1 R/W (0x1)
XPD_SDIO_TIEH          If XPD_SDIO_FORCE & XPD_SDIO_REG, 1=3.3V 0=1.8V   = 1 R/W (0x1)
CLK8M_FREQ             8MHz clock freq override                          = 53 R/W (0x35)
SPI_PAD_CONFIG_CLK     Override SD_CLK pad (GPIO6/SPICLK)                = 0 R/W (0x0)
SPI_PAD_CONFIG_Q       Override SD_DATA_0 pad (GPIO7/SPIQ)               = 0 R/W (0x0)
SPI_PAD_CONFIG_D       Override SD_DATA_1 pad (GPIO8/SPID)               = 0 R/W (0x0)
SPI_PAD_CONFIG_HD      Override SD_DATA_2 pad (GPIO9/SPIHD)              = 0 R/W (0x0)
SPI_PAD_CONFIG_CS0     Override SD_CMD pad (GPIO11/SPICS0)               = 0 R/W (0x0)
DISABLE_SDIO_HOST      Disable SDIO host                                 = 0 R/W (0x0)

Identity fuses:
MAC                    Factory MAC Address
  = 24:0a:c4:c0:57:d0 (CRC 0xfd OK) R/W
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)

Calibration fuses:
BLK3_PART_RESERVE      BLOCK3 partially served for ADC calibration data  = 0 R/W (0x0)
ADC_VREF               Voltage reference calibration                     = 1128 R/W (0x4)

Flash voltage (VDD_SDIO) set to 3.3V by efuse.
SW download to another ESP32 board (without burnt serial number) still works. So, it can not be a general issue but an issue dedicated to the board with burnt serial number only - and the only difference between these boards it the burnt serial number only.
Do you have a hint for me how to solve the problem?

Edit:
I used the following command to burn the fuses:

Code: Select all

espefuse.py -p COM33 burn_block_data --offset 24 --force-write-always BLK3 serno.bin
In a first step I tried to burn the serial number without the option "--force-write-always". But here I received the error message:

Code: Select all

A fatal error occurred: Efuse block already has values written.
That is why I then used the option "--force-write-always" in the next step.

Re: Problem after burning efuses

Posted: Tue Aug 25, 2020 8:45 am
by squonk11
now I used another ESP32 board for burning the efuses. This time it seems to work. So probably I damaged the previous board somehow?

Re: Problem after burning efuses

Posted: Thu Mar 03, 2022 4:59 am
by pavithvishnu
Hi Squnok11,
how did you created the bin file for burning efuse?