[Solved] Trouble uploading to ESP32-WROOM-32D

This is my first time creating a PCB for the ESP32 Chip and I am using a UART to Serial Uploader to upload to my controller. See PCB image here.

When uploading, I have to short the BOOT header to begin uploading, However during uploading i get this error.

RAM: [ ] 4.0% (used 13224 bytes from 327680 bytes)
Flash: [== ] 15.3% (used 200810 bytes from 1310720 bytes)
Configuring upload protocol…
AVAILABLE: esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
Looking for upload port…
Use manually specified: /dev/cu.usbserial-14430
Uploading .pio/build/esp32dev/firmware.bin
esptool.py v3.0
Serial port /dev/cu.usbserial-14430
Connecting…
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: e8:68:e7:12:e9:58
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 460800
Changed.
Configuring flash size…

A fatal error occurred: Timed out waiting for packet header
*** [upload] Error 2

Not sure how to resolve this. Can someone guide me to the right path.

The linked issue ESP32DEVKIT V1 - A fatal error occurred: Timed out waiting for packet content · Issue #2415 · espressif/arduino-esp32 · GitHub says it can be a hardware issue with a too high upload speed or wrong voltage on the important bootstrapping pins.

Also, the standard is that there’s an auto-reset circuit where the USB-serial adapter’s RTS/DTR is connected via two transistors to EN and IO0, but you don’t have that hardware. But it also shouldn’t prevent you from uploading.

You can try and reduce the upload speed by writing upload_speed = 115200 in the platformio.ini and retry. You can also try different flash configurations.

2 Likes

Thanks Issue is resolved.

I had to do two things.

  1. IO12 was getting pull high. So I had to cut that track.
  2. Short the the BOOT PIN and then short the EN pin breifly to GND.

This worked. But I have now realised my mistakes. and will change in next design. THanks for your help @maxgerhardt