https://β¦ts.net/flash) in
Chrome or Edge, on the computer with the ESP plugged in over USB. A plain
http://β¦:8099 LAN/tailnet address won't allow serial access.
Operator sign-in
What you need
- Chrome or Edge, opened over HTTPS β your Funnel URL
https://β¦ts.net/flash(or localhost) β on the computer with the ESP plugged in. Web Serial needs a secure context; Safari/Firefox and a plainhttpLAN address won't work. - A data USB cable (many cheap cables are charge-only) and the USB-serial driver for your board's chip β CH340 or CP2102. If no port shows up later, the driver is usually missing.
- An ESP8266 board (NodeMCU, Wemos D1 mini, ESP-12). It's 2.4 GHz only.
Then just go top to bottom: Build β Flash β Verify.
Build firmware
Bakes your Wi-Fi credentials into the station firmware so the ESP can reach the C2. The ESP is 2.4 GHz only β give it a 2.4 GHz network.
For a remote ESP over the internet. Enter your
Funnel hostname (e.g. your-host.tailnet.ts.net) β HTTPS on port 443. The ESP validates
no cert (encrypted but unpinned).
If the configured Wi-Fi fails (or you leave it blank), the ESP joins open networks and best-effort clicks through βaccept termsβ portals to get online. Best paired with a public (Funnel) C2. Authorized use only.
Flash over USB
- Plug the ESP8266 into this computer over USB.
- Click β‘ Flash ESP8266 below. A browser dialog lists serial ports β pick the one for your board (often
usbserial-β¦/wchusbserial-β¦on macOS,COM3+on Windows). If you're unsure, unplug/replug and take the port that appears. - The tool connects β erases β writes β verifies β it takes ~30β60 s. Leave it plugged in and don't close the tab.
- If it says "Failed to connect": put the board in bootloader mode β hold the FLASH/GPIO0 button, tap RST (or replug USB) while still holding, then release and retry. Bare ESP-12 modules: tie GPIO0 to GND during power-on.
localhost.
Serial access was blocked β click again and allow the port.
Build the firmware first β
Confirm it joined the fleet
After flashing, the ESP reboots, joins Wi-Fi, enrolls, and starts reporting. It shows up as a station on the dashboard (named as you set it) within ~30 s, and its probes/APs flow into the fleet + watchlist.
Watch it boot over serial (optional): pio device monitor -b 115200, or the
Arduino IDE Serial Monitor at 115200 baud β you'll see it connect and POST each cycle.
Troubleshooting
No serial port appears in the dialog
Missing USB-serial driver (install CH340 or CP2102 for your board), a charge-only USB cable, or a flaky hub β try a data cable directly into the machine.
"Failed to connect / Timed out waiting for packet"
The board isn't in bootloader mode. Hold FLASH/GPIO0, tap RST (or replug) while holding, release, and click Flash again. Close anything else using the port (a serial monitor, Arduino IDE).
Flashes OK but never appears on the dashboard
Usually Wi-Fi: wrong SSID/password, or a 5 GHz-only network (the ESP is 2.4 GHz). For a LAN C2 the
C2 host must be its LAN IP (not localhost); for a remote node use the Funnel option.
Check the serial monitor for the connect/enroll lines. Board default is 4 MB (esp12e) β an ESP-01 (1 MB)
needs a manual PlatformIO build with board = esp01_1m.
It reboot-loops after flashing
Almost always the wrong flash size for your board, or a brown-out from a weak USB port/cable β use a powered port and a good cable. Re-flash after fixing.