mikroverk / esp32sim
git clone https://github.com/mikroverk/esp32sim.git
v0.3.0 · 2d ago
Open-source ESP32 emulator. Run real firmware locally or in your browser — no hardware, no cloud, no subscription.
+13
stars, 24h · #1,081
+~91
stars, 7 days · #1,381
+~390
stars, 30 days · #1,319
606
★ total · +19% this week
36
forks · 18 open issues
Star history (as recorded here)
LanguageRust
LicenseMIT
Created2026-08-25 (1mo ago)
Last push1d ago
Watchers4
OwnerOrganization
Links
README excerpt
# esp32sim esp32sim is an ESP32 emulator written in Rust. It runs real ESP32 firmware on your computer or in a browser tab, without the hardware. It boots the chip's own mask ROM, the real second-stage bootloader and your unmodified application. It also models the board around the chip: displays, touch, LEDs, buttons, audio, camera and WiFi. Try it in your browser, nothing to install: https://mikroverk.github.io/esp32sim/ ## Supported chips | Chip | CPU | Status | Boards | | --- | --- | --- | --- | | ESP32-S3 | 2 x Xtensa LX7 | mature | Atech 14-port kit, Waveshare Touch-LCD-4B, Touch-AMOLED-1.8, ESP32-S3-CAM | | ESP32-C3 | RISC-V RV32IMC | draft | console only | | ESP32-C6 | RISC-V RV32IMAC | draft | Waveshare ESP32-C6-LCD-1.47, with the 802.15.4 radio | | ESP32 (classic) | 2 x Xtensa LX6 | early | LilyGO TTGO T-Display | ## Features - The full boot chain: mask ROM, bootloader, FreeRTOS, then your app. No patched firmware. - WiFi with the unmodified Espressif WiFi library. Firmware joins a virtual access point, gets DHCP, DNS and NTP, and can reach the real network, HTTPS included. - Board models, so firmware can draw on a display, read touch, light LEDs and play sound. - Speed: the S3 has a block cache and a JIT, and runs hello_world about 30 times faster than real time. - A WebAssembly build of the same emulator for the browser. - Comparisons with real chips: the S3 in JTAG lock-step, the C3 and C6 by console diff. See hardware testing. ## Demos These run on the demo site: - Linux 6.11 on the ESP32-S3 (svermigo/Linux-on-esp32-S3), with a login shell. - The Atech kit's Pocket Synth and its C64 SID jukebox (atech-firmware). - An LVGL touch panel at 480x480 with a SID player. - pocket-tank, where a small transformer model steers the fish. - An 802.15.4 energy scanner, and two Contiki-NG motes running RPL/IPv6, on the ESP32-C6. - MicroPython on a classic ESP32 T-Display. You can also load your own firmware for any of the chips. ## Quick start [code] This boots the Atech synth firmware, plays a short script, and saves the audio to `out.wav` and the display to `tft.png`. Use `esp32sim-c3`, `esp32sim-c6` or `--chip esp32` for the other chips. Getting started covers the rest: your own ESP-IDF builds, each chip, WiFi, scripts, the browser build and debugging. ## Documentation - Getting started: running firmware on each chip, WiFi, scripts, the browser build - CLI reference: every flag, environment variable and output file - Boards: what each board models, and how to add one - Architecture: how the emulator is put together - Peripherals: which hardware blocks are modelled, and how completely - Hardware testing: how the emulator is compared with real chips - All documents: chip notes, design decisions and plans ## Contributing Bug fixes, peripherals, boards and new chips are welcome. CONTRIBUTING.md lists what a pull request needs; these are the same checks CI runs. ## Credits and license esp32sim is released under the MIT License. Authors: Joakim E