Fix “Failed to start stub flasher. There was no response.”
esptool loaded its helper into ESP32 RAM but it never said hello. Usually a reset during the hand-over, an unstable supply, or a counterfeit/odd module.
Community draft — report a mistake
What you see
esptool v5.1.0
Connected to ESP32 on COM6:
Chip type: ESP32-D0WD (revision v1.0)
Features: Wi-Fi, BT, Dual Core, 240MHz, Coding Scheme None
Crystal frequency: 40MHz
MAC: 24:6f:28:xx:xx:xx
Uploading stub flasher...
Running stub flasher...
A fatal error occurred: Failed to start stub flasher. There was no response.
For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html
Failed uploading: uploading error: exit status 2esptool v5.1.0 Connected to ESP32 on COM6: Chip type: ESP32-D0WD (revision v1.0) Features: Wi-Fi, BT, Dual Core, 240MHz, Coding Scheme None Crystal frequency: 40MHz MAC: 24:6f:28:xx:xx:xx Uploading stub flasher... Running stub flasher... A fatal error occurred: Failed to start stub flasher. There was no response. For troubleshooting steps visit: https://docs.espressif.com/projects/esptool/en/latest/troubleshooting.html Failed uploading: uploading error: exit status 2
esptool talks to the chip’s ROM only long enough to load a faster helper, the stub flasher, into RAM and start it. This error means the stub was sent and started, but its greeting never came back.
The chip most likely reset at that moment, from a power dip or the reset lines being toggled. Fix power first, then upload with BOOT held by hand.
Quick fix — try in order
- 1
Fix the supply first
The stub starts the CPU at full speed; a weak supply resets the chip right there. Use a good cable, a rear USB port and nothing else powered from the board.
- 2
Enter download mode by hand
Hold BOOT, tap EN/RESET, release BOOT, then upload. This rules out a bad auto-reset circuit toggling EN during the hand-over.
- 3
Lower Upload Speed to 115200
A slow, clean link gives the stub the best chance.
- 4
Check the crystal setting on bare modules
Some third-party modules use a 26 MHz crystal. Their boot log looks garbled at 115200; esptool usually auto-detects it, but custom board definitions can force 40 MHz.
Why it happens
What is the stub flasher?
A small program esptool copies into the chip's RAM to speed up flashing. After starting it, esptool waits for the word “OHAI”. If nothing comes back, the stub crashed or the chip reset.
Older wording
esptool v4 prints “Failed to start stub. Unexpected response: …” for a garbled reply. The causes are the same.
Very old revision v0/v1 chips
First-revision ESP32 chips on old boards are more sensitive to supply noise. Adding a 10 µF capacitor across 3V3 and GND near the module helps.
Board-specific notes
ESP32-CAM: Upload with a solid 5 V supply. The camera module's inrush can reset the ESP32 exactly as the stub starts.
Did this fix it?
Thanks — that helps us keep this page right.