Repolode
mikroverk

mikroverk/esp32sim

An open-source ESP32 emulator in Rust that runs real firmware on your computer or in a browser, without hardware.

Stars
395
Forks
20
Open issues
19
Last commit
18 hours ago

What is it?

esp32sim emulates ESP32-family chips so that unmodified firmware can run without a physical board. It boots the chip's mask ROM, the second-stage bootloader and the application, and models board peripherals such as displays, touch input, LEDs, buttons, audio, camera and WiFi.

The project supports the ESP32-S3 (marked mature), ESP32-C3 and ESP32-C6 (draft), and the classic ESP32 (early). Firmware can join a virtual access point with DHCP, DNS and NTP, and reach the real network. A WebAssembly build runs the same emulator in a browser tab, and a demo site hosts several examples.

The project is unofficial and not affiliated with Espressif Systems.

Key features

  • 01Boots the full chain: mask ROM, bootloader, FreeRTOS and the application.
  • 02Runs WiFi with the unmodified Espressif WiFi library, including HTTPS to the real network.
  • 03Models boards with displays, touch, LEDs, buttons, audio and camera.
  • 04Includes a block cache and JIT on the ESP32-S3 for faster execution.
  • 05Provides a WebAssembly build for running in the browser.

Use cases

  • Testing ESP32 firmware in CI or on a laptop without a board attached.
  • Trying out ESP32 demos and board support in a browser before buying hardware.
  • Developing and debugging board-level UI or audio code against modelled peripherals.

Quick start

  1. 1

    Build the emulator

    cargo build --release
  2. 2

    Download the mask ROM files (not included in the repo)

    tools/fetch-demo-assets.sh --no-linux
  3. 3

    Boot the Atech synth demo firmware for 5 seconds

    FW=web/wasm/fw/public ./target/release/esp32sim --boot rom --rom web/wasm/fw/esp32s3_rev0_rom.elf --bootloader $FW/atech-bootloader.bin --ptable $FW/atech-ptable.bin --app $FW/atech-firmware.bin --script $FW/atech-script1.txt --wav out.wav --tft-png tft.png --max-seconds 5

Things to know

  • Only the ESP32-S3 is marked mature; the C3, C6 and classic ESP32 are draft or early.
  • Some demos and boards need extra downloads, such as mask ROMs that are not in the repo.

Topics

FAQ

What is esp32sim?
An open-source ESP32 emulator in Rust that runs real firmware on your computer or in a browser, without hardware. esp32sim emulates ESP32-family chips so that unmodified firmware can run without a physical board. It boots the chip's mask ROM, the second-stage bootloader and the application, and models board peripherals such as displays, touch input, LEDs, buttons, audio, camera and WiFi.
Is esp32sim free to use? What license does it have?
esp32sim is open source under the MIT license. Check the license terms before using it in commercial products.
Is esp32sim still maintained?
Actively maintained. The last commit to esp32sim was on Oct 19, 2026.
What can I use esp32sim for?
Testing ESP32 firmware in CI or on a laptop without a board attached. Trying out ESP32 demos and board support in a browser before buying hardware. Developing and debugging board-level UI or audio code against modelled peripherals.
How do I install esp32sim?
Build the emulator: cargo build --release Download the mask ROM files (not included in the repo): tools/fetch-demo-assets.sh --no-linux Boot the Atech synth demo firmware for 5 seconds: FW=web/wasm/fw/public ./target/release/esp32sim --boot rom --rom web/wasm/fw/esp32s3_rev0_rom.elf --bootloader $FW/atech-bootloader.bin --ptable $FW/atech-ptable.bin --app $FW/atech-firmware.bin --script $FW/atech-script1.txt --wav out.wav --tft-png tft.png --max-seconds 5
Where can I get esp32sim?
The source code and installation instructions are on GitHub: https://github.com/mikroverk/esp32sim

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects