ESP32-S3 strapping pins
24 June 2025 at 9:26 pm
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 😉