Flash an ESP32
Put the MikRouter agent firmware onto a supported ESP32 board over USB — with the desktop flasher or the guided macOS Terminal script.
Before You Start
- You have read Which ESP32 works with MikRouter? — it lists the four supported chip families and the look-alike boards that can never work.
- You have a compatible ESP32 device in hand — one of the four families below, with at least 4 MB of flash — plus a USB data cable to connect it to your computer.
Supported ESP32 variants
MikRouter builds agent firmware for four Espressif chip families, and each one gets its own image — they are not interchangeable. You do not have to work out which: both the desktop flasher and the macOS Terminal script detect the chip and download the matching image for you. The code beside each name is that family’s firmware name, so you can confirm the flasher picked the right one.
Classic ESP32
esp32The original dual-core board — cheapest and most widely sold, and it carries the same connections as the rest.
Connections: 6 at a time
Sold as: DevKit V1 / DevKitC, NodeMCU-32S, MH-ET Live MiniKit, ESP32-CAM, Uno R32, WROOM-32
ESP32-S3
esp32s3The best all-round choice: dual-core, most memory, optional PSRAM.
Connections: 6 at a time
Sold as: S3-DevKitC-1, S3-DevKitM-1, S3 SuperMini, S3-Zero, WROOM-1
ESP32-C6
esp32c6The newest supported part (Wi-Fi 6, still on 2.4 GHz).
Connections: 6 at a time
Sold as: C6-DevKitC-1, C6-DevKitM-1, C6 SuperMini, C6-Zero, WROOM-1
ESP32-C3
esp32c3The smallest supported target — least memory, but the same connections as the rest.
Connections: 6 at a time
Sold as: C3-DevKitM-1, C3 SuperMini, C3-Zero, WROOM-02
Connections is how many pieces of a page the board can carry at once — a browser opens one per file. All four carry the same six, and memory is not what sets it: every connection shares the one small radio and the one encrypted link the board holds open to your agent server, so they divide whatever speed that link has between them. Six is deliberately the same on every family, because none of them is faster than the others. Extras are not lost — they wait their turn. So the count is not a reason to pick one ESP32 over another; if you expect several pages open at once, a Linux, Windows, or Mac agent carries far more.
How fast that link runs is not set by which ESP32 you buy — all four families send at the same rate. What changes it is how far away your agent server is: the board can only keep a small amount of data in flight at a time, so the longer the round trip, the slower every connection gets. On one board tested against an agent server on the other side of the world, a heavy device page was cut off part-way — which can happen on any of the four. The same board and the same page, through an agent server in its own region, loaded many times faster and in full. So picking the agent server closest to the site is what helps. If you move an agent that has already been running, restart the board afterwards before judging it — it may still be holding the old, slower connection until it reconnects. A Linux, Windows, or Mac agent does not have this limit at all.
Whichever you pick, the board needs 4 MB of flash or more (the firmware keeps two update slots so a bad update can roll itself back) and joins 2.4 GHz Wi-Fi only. An ESP8266 is too small to run the agent, and an ESP32-H2 has no Wi-Fi radio at all — neither will ever have firmware. A single-core ESP32-SOLO-1 is not supported either.
Download the desktop flasher
First launch is blocked — expected, once per computer
The flasher isn't code-signed yet, so:
- Windows — on the blue warning, click More info → Run anyway.
- macOS — click Done (not Move to Trash), then System Settings → Privacy & Security → scroll down → Open Anyway.
Connect the board over USB
COM port on Windows, /dev/cu.usbserial-* on macOS.No port listed? Install the USB-to-serial driver
Find the small chip next to the USB connector (or check the seller's listing) and install its driver:
- CP210x (most DevKit boards) — Silicon Labs VCP driver
- CH340 / CH341 / CH9102 (low-cost clones) — WCH driver
- FTDI (FT232R and similar) — FTDI VCP driver
Then re-plug the board (Windows may need a reboot) and re-open the flasher.
Many ESP32-S3 / C6 / C3 boards use native USB and need no driver — try another cable or port, and use the connector labelled USB, not UART.
Flash the firmware
↓ Download and flash and keep the board plugged in until the log reports success.Connect your board
Use a USB data cable, then choose the detected port and flash speed.
Serial port
Speed
115200 is recommended for the most reliable connection.
✓ ESP32-S3 detected: ESP32-S3
Choose a release
Published firmware is downloaded and verified immediately before flashing.
Published release
Review installation
Device-reported hardware and stream capacity.
• Reports its chip model to the dashboard
• Board-authoritative connection limit
1.16 MiB • Published 2026-07-27 • SHA-256 4b9c1de07a52…
Off by default. Enabling this permanently removes Wi-Fi, token, and portal settings.
Ready — 3 published releases found
ACTIVITY LOG
ESP32 installer files verified.
ESP32-S3 installer files verified.
ESP32-C6 installer files verified.
Found ESP32-S3 on /dev/cu.usbmodem1101: ESP32-S3
Looking up ESP32-S3 firmware versions.
Found 3 published ESP32-S3 firmware versions.
A flashing status LED means the ESP32 agent needs configuration
Open Terminal
Command (⌘) + Space, type Terminal, then press Return.Paste the installer command
Return.bash <(curl -fsSL https://mikrouter.com/flasher/flash-macos.sh)
Select the ESP32 USB serial port
Return. Your port names will differ from this example.dev@MacBook-Pro ~ % bash <(curl -fsSL https://mikrouter.com/flasher/flash-macos.sh) Mikrouter Firmware Flasher – macOS shell v1.1.0=================================================Supported: ESP32-S3, ESP32-C6, ESP32-C3, and classic ESP32-WROOM/WROVER, ESP32-DevKitC, NodeMCU-32S.Not supported: ESP8266, Raspberry Pi Pico W, or other ESP32-C/H/P variants (C2, H2, P4).The connected chip selects its own firmware catalog and boot images. STEP 1 OF 5 – Select the USB serial portConnect the board with a USB data cable and close any serial monitor. 1. /dev/cu.usbmodem1101 – USB serial device 2. /dev/cu.Bluetooth-Incoming-Port – Serial device 3. /dev/cu.debug-console – Serial device 4. /dev/cu.wlan-debug – Serial deviceSelect port [1], r to refresh, or q to quit: 1Downloading official Espressif esptool 5.3.1 for arm64…Detecting the Espressif chip on /dev/cu.usbmodem1101…Detected ESP32-S3 chip: ESP32-S3 (QFN56) (revision v0.2)Select the firmware
1, then press Return.STEP 2 OF 5 – Select firmwareLoading the published HTTPS firmware catalog… 1. v1.0.0 — Fresh 1.0.0 baseline for the esp32s3 board. (latest)Select firmware [1], or q to quit: 1Select the baud rate
1 to use the recommended 115200 baud rate, then press Return.STEP 3 OF 5 – Select baud rate 1. 115200 (recommended) 2. 460800 3. 921600Select baud [1], or q to quit: 1Choose whether to erase saved settings
y — this erases saved Wi-Fi, token, portal and OTA settings. Type nto keep what's already on the board.STEP 4 OF 5 – Device settingsThe normal flash preserves Wi-Fi, token, portal, and OTA settings.Factory reset all saved settings? [y/N]: yType RESET to permanently erase all saved settings: RESETReview and flash the firmware
YES, then press Return. Keep the ESP32 connected until Terminal reports success.STEP 5 OF 5 – Review Port: /dev/cu.usbmodem1101 Firmware: v1.0.0 Detected chip: ESP32-S3 (QFN56) (revision v0.2) Baud rate: 115200 Factory reset: YES – erase all settingsDownload, verify, and flash now? [y/N]: YES Re-checking the firmware catalog…Downloading firmware v1.0.0…Preparing embedded, verified ESP32-S3 support images… Connecting to the ESP32-S3. Do not unplug it while flashing.If connection stalls, hold BOOT, tap EN/RESET, then release BOOT.esptool v5.3.1Connected to ESP32-S3 on /dev/cu.usbmodem1101:Chip type: ESP32-S3 (QFN56) (revision v0.2)Features: Wi-Fi, BT 5 (LE), Dual Core + LP Core, 240MHzCrystal frequency: 40MHzUSB mode: USB-Serial/JTAG Stub flasher running. Configuring flash size…Flash memory erased successfully in 2.4 seconds. Writing bootloader.bin at 0x00000000…Hash of data verified. Writing partitions.bin at 0x00008000…Hash of data verified. Writing boot_app0.bin at 0x0000e000…Hash of data verified. Writing esp32-1.0.0.bin at 0x00010000…Hash of data verified. Hard resetting via RTS pin… Success – Mikrouter ESP32-S3 firmware v1.0.0 was installed.The board restarted. You may now disconnect the USB cable.