Remote reset & boot mode controller for ESP32 via USB-Serial DTR/RTS signals.
- 🔄 Normal Boot — Run firmware after reset
- 📥 Download Mode — Enter flash write mode remotely
- 💤 Deep Sleep Wake — Wake from deep sleep with selectable boot mode
- 📦 Flash & Run — Flash firmware and auto-boot in one command
- 📡 Serial Monitor — Monitor serial output
- Python 3.7+
pyserialpackage
pip install pyserial# Normal Boot (run firmware)
python esp32_remote_control.py COM3 normal
# Download Mode (flash write)
python esp32_remote_control.py COM3 download
# Reset only
python esp32_remote_control.py COM3 reset
# Wake from deep sleep → Normal Boot
python esp32_remote_control.py COM3 wake --mode normal
# Wake from deep sleep → Download Mode
python esp32_remote_control.py COM3 wake --mode download
# Flash firmware and auto-run
python esp32_remote_control.py COM3 flash firmware.bin
# Serial monitor (30 seconds)
python esp32_remote_control.py COM3 monitor --duration 30ESP32 boot mode is controlled by two pins:
| GPIO0 | EN | Boot Mode |
|---|---|---|
| HIGH | LOW → HIGH | Normal Boot (run firmware) |
| LOW | LOW → HIGH | Download Mode (flash write) |
USB-Serial chips (CH340, CP2102, FT232) control these pins via DTR/RTS signals — no additional hardware required on most ESP32 dev boards.
| GPIO0 | GPIO2 | EN | Mode |
|---|---|---|---|
| HIGH | - | HIGH→LOW→HIGH | Normal Boot |
| LOW | LOW | HIGH→LOW→HIGH | Download Mode |
| - | - | LOW (Deep Sleep) | Wake-up on EN pull-up |
MIT