Flash ESP32 firmware on Windows

This tutorial walks through installing the EMWaver Windows app and flashing the managed ESP32 firmware onto a supported dev board (ESP32, ESP32-S2, or ESP32-S3) — no ESP-IDF or manual build loop required.

What you’ll need
  • A Windows 11 PC
  • An ESP32-family dev board (ESP32, ESP32-S2, or ESP32-S3)
  • A USB-C cable that supports data
  • The EMWaver Windows app

1. Download and install

Download the latest EMWaver Windows installer or portable package from GitHub Releases:

Run the installer. It places the app under the Start menu and creates a desktop shortcut. The portable .zip package is also available on the install page if you prefer it.

2. Open the Device Connection window

Launch EMWaver, then click the Device button in the top-left corner. This opens the Device Connection window. Scroll down to the firmware section; this is where the Flash firmware button appears.

EMWaver Windows Device Connection window with firmware flashing controls
Click the Device button in the top-left, then scroll down to the firmware flashing controls.

3. Put the ESP32 into bootloader mode

Before flashing, the ESP32 must be in bootloader mode. On a typical ESP32-family dev board:

  1. Hold BOOT.
  2. Press and release RST / RESET.
  3. Release BOOT after a second.

When bootloader mode is detected, the Device Connection window shows a bootloader status near the top-left. If it does not appear, press Refresh in the flashing section after putting the board into bootloader mode.

EMWaver Windows firmware flashing window showing ESP32 bootloader detected
Bootloader detected. Click Refresh if needed, then click Flash firmware.

4. Flash firmware

Click Flash firmware. The app uses the bundled ESP32 flashing helper and the prebuilt EMWaver ESP32 firmware images that ship inside the app.

The flashing process can take around 2 minutes. Keep the board plugged in and do not close the app while the progress log is running.

EMWaver Windows firmware flashing progress log
Firmware flashing in progress. This usually takes about 2 minutes.
The Windows app bundles the ESP32 firmware partitions: bootloader.bin, partition-table.bin, ota-data.bin, and app.bin. You do not need to download or build anything else.

5. Reset and verify

When flashing completes, reset the ESP32 board. Do this by pressing RST / RESET, or by unplugging and plugging the board back in without holding BOOT.

The device should now leave bootloader mode and show up in EMWaver as a connected device. Verify that the top-left device indicator looks connected, like it did before flashing.

Run a test script

Switch to the Scripts view, open one of the built-in scripts, and press Run:

  • hello.js — confirms the script engine is working.
  • blink.js — toggles a GPIO pin.
  • cc1101.js — controls a CC1101 module over SPI.

Troubleshooting

Bootloader not detected

Hold BOOT, press and release RST, then release BOOT after a second. If it still does not appear, click Refresh in the flashing section or try another data-capable USB cable.

Wrong COM port selected

Use the port selector in the firmware flashing window. Pick the port that appears when the ESP32 is plugged in or enters bootloader mode.

Device does not reconnect after flashing

Reset or replug the board without holding BOOT. If it stays in bootloader mode, press RST again with BOOT released.

Next steps

With firmware flashed and a working connection: