Registered Boards
Port Reference (Board ID = XX)
Board Operations Log
Ready...
Connection History
No status changes recorded yet. Run a scan to start tracking.
Upload Firmware
Drag & drop files here or click to browse
.bin firmware file
Console
Ready to flash...
Build History
User Management
| Username | Created | Password Changed | Actions |
|---|
Register New User
Change Your Password
Network Settings
Add New Board
What is Cactus Flasher?
Cactus Flasher is a web-based OTA (Over-The-Air) firmware flasher for ESP32 boards. It allows you to manage, monitor, and update ESP32 devices remotely through a browser interface. The application runs on a VPS and connects to your ESP32 boards via DDNS and port forwarding.
How to Flash Firmware
Select Project Type
Choose between Binary (.bin), ESPHome (.yaml), Arduino (.ino), or PlatformIO (.zip) depending on your firmware format.
Upload Firmware Files
Drag and drop your firmware file(s) into the upload zone, or click to browse. For ESPHome and Arduino, you can include companion/library files.
Select Target Board
Choose which ESP32 board to flash from the dropdown. Only online boards can receive OTA updates. You can also click "Flash" directly on a board card.
Flash & Monitor
Click "Flash Firmware" and watch the console. For non-binary types, the system will compile first, then flash. The board will reboot automatically after a successful flash.
Project Types
Binary (.bin)
Pre-compiled firmware binary. Upload directly and flash immediately. No compilation needed. Fastest option when you already have a .bin file.
ESPHome (.yaml)
Upload a YAML configuration file. Supports companion files (HTML, CSS, JS for web_server component) or a .zip archive. The server compiles it using ESPHome, then flashes.
Arduino (.ino)
Upload an Arduino sketch (.ino) with optional library files (.h, .cpp, .c). Compiled using arduino-cli with ESP32 board support, then flashed via OTA.
PlatformIO (.zip)
Upload a zipped PlatformIO project containing platformio.ini and source code. The server builds it using PlatformIO CLI, then flashes the resulting binary.
Scan vs Discover
Scan All
- Checks all registered boards in your board list
- Tests 3 ports per board: OTA (82XX), Web (80XX), API (60XX)
- Reports detailed online/offline status for each board
- Auto-discovers MAC address and sensors from online boards
- Updates "last seen" timestamps
- Logs status transitions in Connection History
Use this to check the health of your known boards
Discover
- Probes OTA ports 8201-8299 on the DDNS host
- Finds boards not yet registered in your board list
- Maps port number back to board ID (port 8288 = board ID 88)
- Automatically registers new boards with auto-generated names
- Scans in batches of 20 ports to avoid network overload
Use this to find new boards on your network
Board Port Convention
Each board ID (01-99) maps to three dedicated ports:
| Service | Port Formula | Example (ID=88) | Purpose |
|---|---|---|---|
| WEB | 80XX | 8088 | Web server / browser access |
| OTA | 82XX | 8288 | OTA firmware updates |
| API | 60XX | 6088 | ESPHome Native API |
Hostname Convention
Hostnames are auto-generated from the board name and ID:
1. Strip prefix: cactus-, esp32-, or esp-
2. Format: {shortname}-{ID:02d}.{DDNS_HOST}
Example: cactus-sentinel ID 88
sentinel-88.esp32gb.ddns.net
Custom hostnames can be set to override auto-generation.
Network Topology
VPS (Cactus Flasher on port 8000)
↓
DDNS: esp32gb.ddns.net
↓
Home Router (port forwarding per board)
↓
ESP32 Boards (local network)
Each board requires port forwarding on your router for its WEB, OTA, and API ports.
Troubleshooting
Board shows Offline
- Check that the ESP32 is powered on and connected to WiFi
- Verify port forwarding rules on your router (OTA port 82XX, Web port 80XX)
- Ensure the DDNS hostname resolves correctly
- Try pinging the board directly to see which ports respond
Flash Failed
- Confirm the board is online (OTA port must respond)
- Check that the firmware binary is compatible with the board type
- Ensure sufficient space on the ESP32 for the new firmware
- Review the console output for specific error messages
Build Failed
- Check YAML/sketch syntax for compilation errors
- Ensure required build tools are installed (esphome, arduino-cli, platformio)
- Review build logs for detailed error messages
- For Arduino: verify the FQBN matches your board type
No Sensors Detected
- Ensure the board has the ESPHome web_server component enabled
- The web server must be accessible on port 80XX
- Sensors are discovered during "Scan All" - run a scan first
- Check that sensor entities are exposed in your ESPHome config