A modern, standalone desktop GUI application for flashing firmware to ESP32 devices. Built with Python and CustomTkinter, it wraps the powerful esptool to provide a user-friendly experience similar to the deprecated esphome-flasher but with updated features and styling.
- Modern Dark UI: Clean and responsive interface using
customtkinter. - Auto-Reset: Automatically handles DTR/RTS signals to force the ESP32 into bootloader mode and reset it after flashing (mimics Arduino IDE behavior).
- Formatted Logging: Real-time console output with ANSI escape code stripping for clean, readable progress logs.
- Merged Binary Support: Optimized for
*.merged.binfiles (Bootloader + Partition Table + App), making flashing a single-step process.
- Python 3.8+
- Dependencies listed in
requirements.txt
-
Clone the repository:
git clone https://github.com/yourusername/esp32-flasher.git cd esp32-flasher -
Install dependencies:
pip install -r requirements.txt
Run the application module:
python -m src.main- Select Port: Choose your ESP32 device from the dropdown list.
- Select Firmware: Browse for your firmware file. It is recommended to use the generated
merged.binfile which includes everything needed at offset0x0. - Flash: Click the "Flash Firmware" button. The log will show progress and verify success.
To distribute this tool as a standalone .exe without requiring Python installed on the target machine, use PyInstaller:
pip install pyinstaller
pyinstaller --noconsole --onefile --name "ESP32Flasher" src/main.pyThe executable will be generated in the dist folder.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
