Electronics Microcontrollers "/>

ESP32-S3 strapping pins

24 June 2025 at 9:26 pm

Article image for ESP32-S3 strapping pins

Just had a gotcha with a custom board based on ESP32 S3, so I'm posting for this for future me (and anyone else that may need it).

I've been mostly using ESP32-C3 lately and this only has a couple things to remember:

  • GPIO9 is the BOOT button, used to enter programming mode (DFU)
  • GPIO8 must not be low on startup, since this might prevent entering the serial bootloader
  • GPIO02 should be floating on startup

The ESP32-S3 is a little different:

  • GPIO0 goes to the BOOT button to enter programming mode (DFU)
  • GPIO45 and GPIO46 both have weak pulldowns and should not be pulled up

If GPIO45 is pulled up, you may see the following error:

    esp32-s3 A fatal error occurred: MD5 of file does not match data in flash!

If GPIO46 is pulled up, you may see the following error:

    Failed to connect to ESP32-S3: Wrong boot mode detected (0x17)!

If GPIO46 is pulled up, but GPIO45 is floating, you may see the alternate error (with 0x07 instead of 0x17):

    Failed to connect to ESP32-S3: Wrong boot mode detected (0x7)!

Neither of these errors point directly to the problem, but it's the pin strapping that is the problem. I encountered this on a custom board where I squeezed out the use of every pin, but you might also see these errors when connecting on a breadboard. If you get the above errors, just disconnect anything on these pins and use other pins?

Both GPIO45 and GPIO46 can be used → but not at startup. I temporarily solved the problem on my custom board as can be seen above - by using a scalpel to cut the traces. Beautiful bodge wires in yellow and orange to the side there as well 😉