If you get this message when trying to flash an ESP32:
A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header
You may need to reboot it while flashing so the computer will recognize it. You should be able to trigger a reboot into flashing mode by holding down the BOOT button and giving the EN button a press. Do this while the esptool is “Connecting…”, and it should connect and write with no issues. You may need to try this several times before the tool will see it and connect.
This is what a successful flash looks like:
# make -j flash Python requirements are satisfied. Flashing binaries to serial port /COM4 (app at offset 0x10000 )... esptool.py v2.5.0 Serial port C:/msys32/COM4 Connecting........_ Chip is ESP32D0WDQ6 (revision 1) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse MAC: xx:xx:xx:xx:xx:xx Uploading stub... Running stub... Stub running... Configuring flash size... Auto-detected Flash size: 4MB Flash params set to 0x0220 Compressed 21184 bytes to 12571... Wrote 21184 bytes (12571 compressed) at 0x00001000 in 1.1 seconds (effective 151.3 kbit/s)... Hash of data verified. Compressed 138336 bytes to 68372... Wrote 138336 bytes (68372 compressed) at 0x00010000 in 6.1 seconds (effective 181.4 kbit/s)... Hash of data verified. Compressed 3072 bytes to 103... Wrote 3072 bytes (103 compressed) at 0x00008000 in 0.0 seconds (effective 1068.5 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin...