A professional, cross-platform firmware flashing tool for ESP32 microcontrollers with both interactive CLI and web-based interfaces.
- Dual Interface: Interactive CLI wizard and modern web GUI
- Auto-Detection: Automatically identifies connected ESP32 devices
- Multi-Platform: Works on Windows, macOS, and Linux
- Real-time Progress: Live flash progress and device feedback
- Firmware Verification: Optional MD5 verification after upload
- Multi-File Support: Flash bootloader, partition table, and application simultaneously
- Remote Flashing: Direct firmware download from GitHub releases
- Serial Console: Built-in serial monitor for debugging
- Auto-Installation: Automatic esptool dependency management
Access the professional web flasher at: https://wrait8.github.io/WFlasher/
# Clone the repository
git clone https://github.com/wrait8/WFlasher.git
cd WFlasher
# Install dependencies
pip install pyserial colorama esptoolpython WFlasher.pypython WFlasher.py -p COM4 -f firmware.bin| Option | Description | Default |
|---|---|---|
-p, --port |
Serial port (e.g., COM4, /dev/ttyUSB0) | Auto-detect |
-f, --firmware |
Path to firmware .bin file | Required |
-a, --address |
Flash address | 0x1000 |
-b, --baud |
Baud rate | 460800 |
--no-erase |
Skip flash erase | False |
--verify |
Verify after upload | False |
# Basic upload
python WFlasher.py -p COM4 -f firmware.bin
# Custom configuration
python WFlasher.py -p /dev/ttyUSB0 -f firmware.bin -a 0x2000 -b 921600
# Skip erase and verify
python WFlasher.py -p COM4 -f firmware.bin --no-erase --verify
# Multi-file flash
python WFlasher.py -p COM4 -f bootloader.bin -a 0x1000 -f partitions.bin -a 0x8000 -f app.bin -a 0x10000| Device Family | Support Level |
|---|---|
| ESP32 | Full |
| ESP32-S2 | Full |
| ESP32-S3 | Full |
| ESP32-C3 | Full |
| ESP32-C6 | Full |
| ESP8266 | Compatible |
WFlasher/
├── index.html # Web flasher interface
├── WFlasher.py # CLI tool
├── README.md # Documentation
└── requirements.txt # Python dependencies
- Framework: Vanilla HTML5 + CSS3 + ES Modules
- Protocol: Web Serial API with esptool-js
- Features: Real-time logging, progress tracking, multi-file support
- Deployment: GitHub Pages
- Language: Python 3.6+
- Core Library: esptool
- Dependencies: pyserial, colorama
- Mode: Interactive wizard & batch scripting
"Web Serial API not supported"
- Use Chrome 89+, Edge 89+, or Opera 75+
- Ensure HTTPS or localhost connection
"Failed to connect to ESP32"
- Hold BOOT button on ESP32
- Click Connect
- Release BOOT button after connection
"Sync failed: Invalid response"
- Check USB cable quality
- Try different baud rate
- Ensure ESP32 is in bootloader mode
esptool not found
pip install esptoolPermission denied (Linux)
sudo usermod -a -G dialout $USER
# Log out and back inESP32 not detected
- Hold BOOT button while connecting
- Check USB connections
- Try different USB port
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Submit a pull request
Made with ❤️ for the ESP32 community