ESP32-S3 randomly freeze in bootloader with an invalid header error message

Jacques_ESCARGO
Posts: 7
Joined: Tue May 28, 2024 12:13 pm

ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby Jacques_ESCARGO » Wed May 29, 2024 9:04 am

Hi !

We are struggling with an esp32s3 that randomly blocks in bootloader.

After a long power off, the blocking behavior occurs often at its first boot (≈1/5 boots)
And almost never when the CPU is powered off during a short time.

The previous hardware revision is working fine (tested on 50 boards).
On the 2 boards of the new revision, one of our esp has the booting problem.

Do you have any idea how to deal with this problem ? Thank you

UART logs blocked in bootloader:

Code: Select all

ESP-ROM:esp32s3-202103273
Build:Mar 27 2021
rst:0x7 (TG0WDT_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
Saved PC:0x40048836
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
[Etc...]
invalid header: 0x50444653
invalid headerSP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x7 (TG0WDT_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
Saved PC:0x40049b1e
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
[Etc...]
invalid header: 0x50444653
invalid headerSP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x10 (TG0WDT_SYS_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
invalid header: 0x50444653
invalid header: 0x50444653
invalid header: 0x50444653
[Etc...]

Steps we did to reproduce this bug :
  • Use an esp32-s3-wroom-1u m0n4
  • Reproduced with esp-idf v5.2.1 and v5.1.2
  • Use a default sdkconfig.
We added a led to check when entering app_main, i.e. to know when bug is reproduced.

Code: Select all

    gpio_config_t io_conf;
    esp_err_t error;
    io_conf.intr_type = GPIO_INTR_DISABLE;
    io_conf.mode = GPIO_MODE_OUTPUT;
    io_conf.pin_bit_mask = (1ULL << 4);
    io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE;
    io_conf.pull_up_en = GPIO_PULLUP_DISABLE;
    error = gpio_config(&io_conf);
    if (error != ESP_OK)
    {
        printf("Error configuring pin 4\n");
    }
    gpio_set_level(4, 1);
Here are our eFuses:

Code: Select all

=== Run "summary" command ===
EFUSE_NAME (Block) Description  = [Meaningful Value] [Readable/Writeable] (Hex Value)
----------------------------------------------------------------------------------------
Calibration fuses:
K_RTC_LDO (BLOCK1)                                 BLOCK1 K_RTC_LDO                                   = -44 R/W (0b1001011)
K_DIG_LDO (BLOCK1)                                 BLOCK1 K_DIG_LDO                                   = 20 R/W (0b0000101)
V_RTC_DBIAS20 (BLOCK1)                             BLOCK1 voltage of rtc dbias20                      = -72 R/W (0x92)
V_DIG_DBIAS20 (BLOCK1)                             BLOCK1 voltage of digital dbias20                  = 56 R/W (0x0e)
DIG_DBIAS_HVT (BLOCK1)                             BLOCK1 digital dbias when hvt                      = -28 R/W (0b10111)
ADC2_CAL_VOL_ATTEN3 (BLOCK1)                       ADC2 calibration voltage at atten3                 = 0 R/W (0b100000)
TEMP_CALIB (BLOCK2)                                Temperature calibration data                       = -4.7 R/W (0b100101111)
OCODE (BLOCK2)                                     ADC OCode                                          = 85 R/W (0x55)
ADC1_INIT_CODE_ATTEN0 (BLOCK2)                     ADC1 init code at atten0                           = -100 R/W (0x99)
ADC1_INIT_CODE_ATTEN1 (BLOCK2)                     ADC1 init code at atten1                           = 104 R/W (0b011010)
ADC1_INIT_CODE_ATTEN2 (BLOCK2)                     ADC1 init code at atten2                           = 104 R/W (0b011010)
ADC1_INIT_CODE_ATTEN3 (BLOCK2)                     ADC1 init code at atten3                           = 104 R/W (0b011010)
ADC2_INIT_CODE_ATTEN0 (BLOCK2)                     ADC2 init code at atten0                           = -132 R/W (0xa1)
ADC2_INIT_CODE_ATTEN1 (BLOCK2)                     ADC2 init code at atten1                           = -4 R/W (0b100001)
ADC2_INIT_CODE_ATTEN2 (BLOCK2)                     ADC2 init code at atten2                           = 52 R/W (0b001101)
ADC2_INIT_CODE_ATTEN3 (BLOCK2)                     ADC2 init code at atten3                           = 96 R/W (0b011000)
ADC1_CAL_VOL_ATTEN0 (BLOCK2)                       ADC1 calibration voltage at atten0                 = 424 R/W (0x6a)
ADC1_CAL_VOL_ATTEN1 (BLOCK2)                       ADC1 calibration voltage at atten1                 = 484 R/W (0x79)
ADC1_CAL_VOL_ATTEN2 (BLOCK2)                       ADC1 calibration voltage at atten2                 = 408 R/W (0x66)
ADC1_CAL_VOL_ATTEN3 (BLOCK2)                       ADC1 calibration voltage at atten3                 = 468 R/W (0x75)
ADC2_CAL_VOL_ATTEN0 (BLOCK2)                       ADC2 calibration voltage at atten0                 = 492 R/W (0x7b)
ADC2_CAL_VOL_ATTEN1 (BLOCK2)                       ADC2 calibration voltage at atten1                 = -12 R/W (0b1000011)
ADC2_CAL_VOL_ATTEN2 (BLOCK2)                       ADC2 calibration voltage at atten2                 = 248 R/W (0b0111110)

Config fuses:
WR_DIS (BLOCK0)                                    Disable programming of individual eFuses           = 0 R/W (0x00000000)
RD_DIS (BLOCK0)                                    Disable reading from BlOCK4-10                     = 0 R/W (0b0000000)
DIS_ICACHE (BLOCK0)                                Set this bit to disable Icache                     = False R/W (0b0)
DIS_DCACHE (BLOCK0)                                Set this bit to disable Dcache                     = False R/W (0b0)
DIS_TWAI (BLOCK0)                                  Set this bit to disable CAN function               = False R/W (0b0)
DIS_APP_CPU (BLOCK0)                               Disable app cpu                                    = False R/W (0b0)
DIS_DIRECT_BOOT (BLOCK0)                           Disable direct boot mode                           = False R/W (0b0)
UART_PRINT_CONTROL (BLOCK0)                        Set the default UART boot message output mode      = Enable R/W (0b00)
PIN_POWER_SELECTION (BLOCK0)                       Set default power supply for GPIO33-GPIO37; set wh = VDD3P3_CPU R/W (0b0)
                                                   en SPI flash is initialized
PSRAM_CAP (BLOCK1)                                 PSRAM capacity                                     = None R/W (0b00)
PSRAM_TEMP (BLOCK1)                                PSRAM temperature                                  = None R/W (0b00)
PSRAM_VENDOR (BLOCK1)                              PSRAM vendor                                       = None R/W (0b00)
BLOCK_USR_DATA (BLOCK3)                            User data
   = 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
BLOCK_SYS_DATA2 (BLOCK10)                          System data part 2 (reserved)
   = 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

Flash fuses:
FLASH_TPUW (BLOCK0)                                Configures flash waiting time after power-up; in u = 0 R/W (0x0)
                                                   nit of ms. If the value is less than 15; the waiti
                                                   ng time is the configurable value.  Otherwise; the
                                                    waiting time is twice the configurable value
FLASH_ECC_MODE (BLOCK0)                            Flash ECC mode in ROM                              = 16to18 byte R/W (0b0)
FLASH_TYPE (BLOCK0)                                SPI flash type                                     = 4 data lines R/W (0b0)
FLASH_PAGE_SIZE (BLOCK0)                           Set Flash page size                                = 0 R/W (0b00)
FLASH_ECC_EN (BLOCK0)                              Set 1 to enable ECC for flash boot                 = False R/W (0b0)
FORCE_SEND_RESUME (BLOCK0)                         Set this bit to force ROM code to send a resume co = False R/W (0b0)
                                                   mmand during SPI boot
FLASH_CAP (BLOCK1)                                 Flash capacity                                     = None R/W (0b000)
FLASH_TEMP (BLOCK1)                                Flash temperature                                  = None R/W (0b00)
FLASH_VENDOR (BLOCK1)                              Flash vendor                                       = None R/W (0b000)

Identity fuses:
DISABLE_WAFER_VERSION_MAJOR (BLOCK0)               Disables check of wafer version major              = False R/W (0b0)
DISABLE_BLK_VERSION_MAJOR (BLOCK0)                 Disables check of blk version major                = False R/W (0b0)
WAFER_VERSION_MINOR_LO (BLOCK1)                    WAFER_VERSION_MINOR least significant bits         = 1 R/W (0b001)
PKG_VERSION (BLOCK1)                               Package version                                    = 0 R/W (0b000)
BLK_VERSION_MINOR (BLOCK1)                         BLK_VERSION_MINOR                                  = 2 R/W (0b010)
WAFER_VERSION_MINOR_HI (BLOCK1)                    WAFER_VERSION_MINOR most significant bit           = False R/W (0b0)
WAFER_VERSION_MAJOR (BLOCK1)                       WAFER_VERSION_MAJOR                                = 0 R/W (0b00)
OPTIONAL_UNIQUE_ID (BLOCK2)                        Optional unique 128-bit ID
   = 7a 08 2e a5 5f 8f d6 97 c8 c0 26 3e b8 71 3a c9 R/W
BLK_VERSION_MAJOR (BLOCK2)                         BLK_VERSION_MAJOR of BLOCK2                        = ADC calib V1 R/W (0b01)
WAFER_VERSION_MINOR (BLOCK0)                       calc WAFER VERSION MINOR = WAFER_VERSION_MINOR_HI  = 1 R/W (0x1)
                                                   << 3 + WAFER_VERSION_MINOR_LO (read only)

Jtag fuses:
SOFT_DIS_JTAG (BLOCK0)                             Set these bits to disable JTAG in the soft way (od = 0 R/W (0b000)
                                                   d number 1 means disable ). JTAG can be enabled in
                                                    HMAC module
DIS_PAD_JTAG (BLOCK0)                              Set this bit to disable JTAG in the hard way. JTAG = False R/W (0b0)
                                                    is disabled permanently
STRAP_JTAG_SEL (BLOCK0)                            Set this bit to enable selection between usb_to_jt = False R/W (0b0)
                                                   ag and pad_to_jtag through strapping gpio10 when b
                                                   oth reg_dis_usb_jtag and reg_dis_pad_jtag are equa
                                                   l to 0

Mac fuses:
MAC (BLOCK1)                                       MAC address
   = 70:04:1d:a7:8e:1c (OK) R/W
CUSTOM_MAC (BLOCK3)                                Custom MAC
   = 00:00:00:00:00:00 (OK) R/W

Security fuses:
DIS_DOWNLOAD_ICACHE (BLOCK0)                       Set this bit to disable Icache in download mode (b = False R/W (0b0)
                                                   oot_mode[3:0] is 0; 1; 2; 3; 6; 7)
DIS_DOWNLOAD_DCACHE (BLOCK0)                       Set this bit to disable Dcache in download mode (  = False R/W (0b0)
                                                   boot_mode[3:0] is 0; 1; 2; 3; 6; 7)
DIS_FORCE_DOWNLOAD (BLOCK0)                        Set this bit to disable the function that forces c = False R/W (0b0)
                                                   hip into download mode
DIS_DOWNLOAD_MANUAL_ENCRYPT (BLOCK0)               Set this bit to disable flash encryption when in d = False R/W (0b0)
                                                   ownload boot modes
SPI_BOOT_CRYPT_CNT (BLOCK0)                        Enables flash encryption when 1 or 3 bits are set  = Disable R/W (0b000)
                                                   and disabled otherwise
SECURE_BOOT_KEY_REVOKE0 (BLOCK0)                   Revoke 1st secure boot key                         = False R/W (0b0)
SECURE_BOOT_KEY_REVOKE1 (BLOCK0)                   Revoke 2nd secure boot key                         = False R/W (0b0)
SECURE_BOOT_KEY_REVOKE2 (BLOCK0)                   Revoke 3rd secure boot key                         = False R/W (0b0)
KEY_PURPOSE_0 (BLOCK0)                             Purpose of Key0                                    = USER R/W (0x0)
KEY_PURPOSE_1 (BLOCK0)                             Purpose of Key1                                    = USER R/W (0x0)
KEY_PURPOSE_2 (BLOCK0)                             Purpose of Key2                                    = USER R/W (0x0)
KEY_PURPOSE_3 (BLOCK0)                             Purpose of Key3                                    = USER R/W (0x0)
KEY_PURPOSE_4 (BLOCK0)                             Purpose of Key4                                    = USER R/W (0x0)
KEY_PURPOSE_5 (BLOCK0)                             Purpose of Key5                                    = USER R/W (0x0)
SECURE_BOOT_EN (BLOCK0)                            Set this bit to enable secure boot                 = False R/W (0b0)
SECURE_BOOT_AGGRESSIVE_REVOKE (BLOCK0)             Set this bit to enable revoking aggressive secure  = False R/W (0b0)
                                                   boot
DIS_DOWNLOAD_MODE (BLOCK0)                         Set this bit to disable download mode (boot_mode[3 = False R/W (0b0)
                                                   :0] = 0; 1; 2; 3; 6; 7)
ENABLE_SECURITY_DOWNLOAD (BLOCK0)                  Set this bit to enable secure UART download mode   = False R/W (0b0)
SECURE_VERSION (BLOCK0)                            Secure version (used by ESP-IDF anti-rollback feat = 0 R/W (0x0000)
                                                   ure)
BLOCK_KEY0 (BLOCK4)
  Purpose: USER
               Key0 or user data
   = 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
BLOCK_KEY1 (BLOCK5)
  Purpose: USER
               Key1 or user data
   = 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
BLOCK_KEY2 (BLOCK6)
  Purpose: USER
               Key2 or user data
   = 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
BLOCK_KEY3 (BLOCK7)
  Purpose: USER
               Key3 or user data
   = 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
BLOCK_KEY4 (BLOCK8)
  Purpose: USER
               Key4 or user data
   = 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
BLOCK_KEY5 (BLOCK9)
  Purpose: USER
               Key5 or user data
   = 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

Spi Pad fuses:
SPI_PAD_CONFIG_CLK (BLOCK1)                        SPI_PAD_configure CLK                              = 0 R/W (0b000000)
SPI_PAD_CONFIG_Q (BLOCK1)                          SPI_PAD_configure Q(D1)                            = 0 R/W (0b000000)
SPI_PAD_CONFIG_D (BLOCK1)                          SPI_PAD_configure D(D0)                            = 0 R/W (0b000000)
SPI_PAD_CONFIG_CS (BLOCK1)                         SPI_PAD_configure CS                               = 0 R/W (0b000000)
SPI_PAD_CONFIG_HD (BLOCK1)                         SPI_PAD_configure HD(D3)                           = 0 R/W (0b000000)
SPI_PAD_CONFIG_WP (BLOCK1)                         SPI_PAD_configure WP(D2)                           = 0 R/W (0b000000)
SPI_PAD_CONFIG_DQS (BLOCK1)                        SPI_PAD_configure DQS                              = 0 R/W (0b000000)
SPI_PAD_CONFIG_D4 (BLOCK1)                         SPI_PAD_configure D4                               = 0 R/W (0b000000)
SPI_PAD_CONFIG_D5 (BLOCK1)                         SPI_PAD_configure D5                               = 0 R/W (0b000000)
SPI_PAD_CONFIG_D6 (BLOCK1)                         SPI_PAD_configure D6                               = 0 R/W (0b000000)
SPI_PAD_CONFIG_D7 (BLOCK1)                         SPI_PAD_configure D7                               = 0 R/W (0b000000)

Usb fuses:
DIS_USB_OTG (BLOCK0)                               Set this bit to disable USB function               = False R/W (0b0)
USB_EXCHG_PINS (BLOCK0)                            Set this bit to exchange USB D+ and D- pins        = False R/W (0b0)
USB_EXT_PHY_ENABLE (BLOCK0)                        Set this bit to enable external PHY                = False R/W (0b0)
DIS_USB_JTAG (BLOCK0)                              Set this bit to disable function of usb switch to  = False R/W (0b0)
                                                   jtag in module of usb device
DIS_USB_SERIAL_JTAG (BLOCK0)                       Set this bit to disable usb device                 = False R/W (0b0)
USB_PHY_SEL (BLOCK0)                               This bit is used to switch internal PHY and extern
   = internal PHY is assigned to USB Device while external PHY is assigned to USB OTG R/W (0b0)
                                                   al PHY for USB OTG and USB Device
DIS_USB_SERIAL_JTAG_ROM_PRINT (BLOCK0)             USB printing                                       = Enable R/W (0b0)
DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE (BLOCK0)         Set this bit to disable UART download mode through = False R/W (0b0)
                                                    USB
DIS_USB_OTG_DOWNLOAD_MODE (BLOCK0)                 Set this bit to disable download through USB-OTG   = False R/W (0b0)

Vdd fuses:
VDD_SPI_XPD (BLOCK0)                               SPI regulator power up signal                      = False R/W (0b0)
VDD_SPI_TIEH (BLOCK0)                              If VDD_SPI_FORCE is 1; determines VDD_SPI voltage
   = VDD_SPI connects to 1.8 V LDO R/W (0b0)
VDD_SPI_FORCE (BLOCK0)                             Set this bit and force to use the configuration of = False R/W (0b0)
                                                    eFuse to configure VDD_SPI

Wdt fuses:
WDT_DELAY_SEL (BLOCK0)                             RTC watchdog timeout threshold; in unit of slow cl = 40000 R/W (0b00)
                                                   ock cycle

Flash voltage (VDD_SPI) determined by GPIO45 on reset (GPIO45=High: VDD_SPI pin is powered from internal 1.8V LDO
GPIO45=Low or NC: VDD_SPI pin is powered directly from VDD3P3_RTC_IO via resistor Rspi. Typically this voltage is 3.3 V).
You can find our schematic in the attached image.
Red GPIOs are floating (used for a daugther board, we did not connect it).
All other GPIOs are rooted, mainly to IC.

Thanks
Attachments
screenshoot_rooting_esp.png
Pins rooted
screenshoot_rooting_esp.png (53.25 KiB) Viewed 2564 times

ESP_Sprite
Posts: 9568
Joined: Thu Nov 26, 2015 4:08 am

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby ESP_Sprite » Thu May 30, 2024 2:43 am

Can you post more of your schematic, specifically your power supply, what the EN pin is routed to, and what GPIO45 is connected to?

Jacques_ESCARGO
Posts: 7
Joined: Tue May 28, 2024 12:13 pm

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby Jacques_ESCARGO » Thu May 30, 2024 9:28 am

Hi Sprite,

Here is our EN pin routing :
Schematic_EN.png
Schematic_EN.png (20.5 KiB) Viewed 2420 times
GPIO 45 is directly connected to an XPT2046:
GPIO45_sch_highlighted.png
GPIO45_sch_highlighted.png (36.2 KiB) Viewed 2420 times
We use a 24V stabilized supply to power an ETA2845, output 3.3V:
DCDC_sch.png
DCDC_sch.png (52.27 KiB) Viewed 2420 times

ESP_Sprite
Posts: 9568
Joined: Thu Nov 26, 2015 4:08 am

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby ESP_Sprite » Fri May 31, 2024 1:48 am

Hm, that EN RC network is somewhat underdimensioned: could be that the chip comes out of reset before everything is properly stabilized. You could try lengthening the reset pulse a bit: e.g. change R6 to an 10K or change C13 to 1uF.

(On an unrelated note: your PSU is somewhat underdimensioned. That chip can only deliver 0.4A while the S3 datasheet specs a PSU capable of delivering at least 0.5A. If later on you get brownout reboots, especially on WiFi init, that is likely the cause.)

Jacques_ESCARGO
Posts: 7
Joined: Tue May 28, 2024 12:13 pm

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby Jacques_ESCARGO » Fri May 31, 2024 1:47 pm

Thank you for your feedback :D

We still reproduce the bug with increased R6 (up to 100K).

ESP_Sprite
Posts: 9568
Joined: Thu Nov 26, 2015 4:08 am

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby ESP_Sprite » Sat Jun 01, 2024 1:42 am

One more thing: can you make sure GPIO45 is grounded when booting up? That pin should have a built-in pulldown, but perhaps the attached chip has some kind of glitch making it high on power-up.

Also, if the chip is refusing to boot, does resetting it (i.e. making EN low for a moment) get it out of that state?

Jacques_ESCARGO
Posts: 7
Joined: Tue May 28, 2024 12:13 pm

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby Jacques_ESCARGO » Mon Jun 03, 2024 1:37 pm

Concerning GPIO 45,
We burnt "Fixed 3.3V VDD_SPI" (with "espefuse.py set_flash_voltage 3.3V").
They are the only eFuses we burnt.
The bug is still reproducible, nothing has changed.
If we understand documentation correctly, GPIO 45 is now ignored as a strapping pin.

We tried few things with EN pin :
1. Wait until the board was powered off for a long time (few minutes)
Power on, esp freeze (about 1/5 startup)
Then wire GND to EN pin (R6 is still 100K).
esp powers off
Wait 0.1 to 5 second
Then release EN to high
esp powers on normally

The bug never occurs.

2. We power with EN forced to low.
esp doesn't start, as expected
Wait few seconds
Then release EN to high.

The bug can occur.

ESP_Sprite
Posts: 9568
Joined: Thu Nov 26, 2015 4:08 am

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby ESP_Sprite » Tue Jun 04, 2024 3:54 am

Hm, I can't see any smoking gun there, looks like you're doing everything correctly. One thing you could still try is to discount the power supply: does the board still have this behaviour when you feed it 3.3V from something else than that buck converter? E.g. use a lab power supply, or use a standard AMS1117-3.3 LDO for the duration of the test? I can imagine the switching noise somehow affecting flash operation, but to be honest, it's more of a guess than anything else.

Jacques_ESCARGO
Posts: 7
Joined: Tue May 28, 2024 12:13 pm

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby Jacques_ESCARGO » Thu Jun 06, 2024 5:11 pm

Hi Sprite,

We repeated the bug with stabilized 3.3V power supply :/

That was way harder to repeat it with 3.3V than 24V.
We don't know if we were unlucky, but we did not repeat the bug with an ESP-PROG plugged beforehand.
ESP-Prog plugged with programming interface, without 3.3V or 5V jumper.

Thanks for the time you took for our issue.

We are always open to ideas :D

and.abramchuk
Posts: 2
Joined: Thu Aug 22, 2024 2:18 pm

Re: ESP32-S3 randomly freeze in bootloader with an invalid header error message

Postby and.abramchuk » Fri Aug 23, 2024 8:46 am

Hi Jacques!

I catch the similar issue. While bootloader start I get log text:

ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0x1 (POWERON),boot:0x0 (DOWNLOAD(USB/UART0))
waiting for download

My issue have been solved when I attach external pullup resistor (5k1) on GPIO0.
Bootloader went to bootload my program from FLASH.

Who is online

Users browsing this forum: No registered users and 61 guests