esp32sim

What does it do?

esp32sim is an ESP32 emulator written in Rust that runs real ESP32 firmware on a computer or in a browser tab without the hardware. [1] It starts the chip’s built-in boot code (mask ROM), the real second-stage bootloader, and an unmodified application, and it models board parts such as displays, touch, LEDs, buttons, audio, camera, and WiFi. [2] A supported use case is booting the Atech synth firmware, playing a short script, and saving the audio to a WAV file and the display to a PNG image. [3]

Activity, over time

Daily GitHub activity and social mentions.

Mentions

Daily posts linking to this repository

Loading mentions chart

Attention

Daily stars & forks

Loading attention chart

Star accumulation

Cumulative stars

Loading star accumulation chart

Pull requests

Daily opens & merges

Loading pull requests chart

Conversations

Daily issues & comments

Loading conversations chart

Community

Daily accounts & reviews

Loading community chart

Mentions

39posts · 30d
Nov 50 posts
  1. Bluesky · · @winsontang.com

    Exciting news for developers! 🎉 Introducing Esp32sim, a tool that lets you run ESP32 firmware directly in your browser. This innovation simplifies testing and development, making it easier to bring your IoT projects to life. Check it out and elevate your codi… mikroverk/esp32sim

  2. X · · @tolixx

    esp32sim by @MattiaFiumara and co: mikroverk/esp32sim the PR adds the TC001 as a board and fixes the cap: esp32sim#311

    1 like · 16 views
  3. YouTube · · YouTube description · Alex Hitt

    esp32sim GitHub Overview: ESP32 Firmware Emulation, ROM Setup, and Web UI esp32sim by mikroverk: mikroverk/esp32sim esp32sim is an open-source Rust emulator for ESP32 firmware. This overview follows its execution model from release files and mask ROM configuration to modeled audio and display outputs, then shows the local web interface and the command-line choices used for custom firmware. It also covers platform considerations for macOS, Linux, and Windows, the Pocket Synth demonstration assets, headless output flags, and the distinction between split firmware binaries and a monolithic flash image. TimeStamps: 0:00 What esp32sim emulates 0:29 Platform support and repeatable execution 0:55 Release files and version verification 1:11 macOS execution considerations 1:40 Mask ROM dependency and directory configuration 2:30 Headless Pocket Synth output 3:42 Local web UI on port 8766 4:23 Custom firmware mapping 5:04 Flash-image option for monolithic builds 🧩 Instruction-level ESP32 firmware emulation 🗃️ Mask ROM files and boot configuration 🎛️ Headless audio and display artifacts 🌐 Local web UI and firmware mapping The practical takeaway is a clear view of esp32sim's configuration boundaries: the emulated chip, ROM files, and firmware layout must align. Headless flags support scripted output collection, while the local web UI provides interactive inspection of virtual hardware and UART activity. #ESP32 #Rust #EmbeddedSystems [de-DE] YNAS ynp_b62b20fa1fa64673 Cinematic Privater automatisierter Staging-Upload. Paketidentität: ynp_b62b20fa1fa64673; Ausgabe: cinematic. [es-US] YNAS ynp_b62b20fa1fa64673 cinemática Carga de entorno de prueba de automatización privada. Identidad del paquete: ynp_b62b20fa1fa64673; salida: cinemática. [fr-FR] YNAS ynp_b62b20fa1fa64673 cinématique Téléchargement de l'environnement de test d'automatisation privé. Identifiant du package : ynp_b62b20fa1fa64673 ; sortie : cinématique. [hi] YNAS ynp_b62b20fa1fa64673 सिनेमैटिक निजी स्वचालन स्टेजिंग अपलोड। पैकेज पहचान: ynp_b62b20fa1fa64673; आउटपुट: सिनेमाई। [id] YNAS ynp_b62b20fa1fa64673 sinematik Unggahan staging otomatisasi pribadi. Identitas paket: ynp_b62b20fa1fa64673; output: sinematik. [it] YNAS ynp_b62b20fa1fa64673 cinematic Caricamento di automazione privata. Identità del pacchetto: ynp_b62b20fa1fa64673; output: cinematico. [pt-BR] YNAS ynp_b62b20fa1fa64673 cinematográfico Upload de teste de automação privada. Identificação do pacote: ynp_b62b20fa1fa64673; saída: cinemática.

    332 views
  4. 项目完全采用 MIT 开源协议,不管是个人玩具项目还是团队工程集成都可以直接用。 GitHub 传送门:mikroverk/esp32sim

    4 likes · 210 views
  5. Reddit · · r/EmuDev · u/Fresh-Daikon-9408

    esp32sim: an ESP32-S3 emulator in Rust/Wasm that runs the real mask ROM and bootloader, then stock firmware, in a browser tab Not my project. Saw it on GitHub this week and recorded a run. In the video a Waveshare Touch-LCD-4B board restarts: the boot goes through the real mask ROM and the bootloader, the boot log scrolls in the console, then the app's 480x480 LVGL panel redraws and reacts to swipes and taps. The firmware is the stock binary, nothing patched, and everything runs client-side in WebAssembly. Repo: mikroverk/esp32sim For those of you who have emulated this kind of SoC: how would you handle the LCD and touch peripherals' timing at this level?

  6. Reddit · · r/esp32 · u/EmanueleStrazzullo

    I made a tool that lets coding agents boot and test ESP-IDF firmware in an emulator, no board needed Disclosure: this is my project (MIT, free, no account). The emulation itself is esp32sim's work (mikroverk/esp32sim), the Rust emulator that boots unmodified ESP32 / S3 / C3 / C6 images through the real mask ROM and bootloader. I built the layer around it. Why: I use coding agents (Claude Code, Codex, Cursor) for ESP-IDF work, and the loop always stopped at "it compiles". Nobody knew whether the firmware actually worked until I flashed a board. esp32sim-mcp lets the agent (or a CI job) boot what it just built and check the result: - read UART0 and USB-Serial/JTAG output, with panics (Guru Meditation, stack overflow, failed asserts) reported along with the log leading up to them - assert on the console: pass/fail, plus the exact line that's missing - press buttons, turn the encoder, drive GPIO/UART at emulated timestamps - join a virtual WiFi AP with DHCP/DNS/NAT (the station gets 10.0.2.15) - grab a PNG of the display on boards that have one What was tricky on the ESP32 side: - Two consoles at once. On S3/C3/C6, ESP-IDF often mirrors logs to both UART0 and USB-Serial/JTAG, and the emulator writes bytes as they arrive, so you get "Hello wHello world!". esp32sim can tag every chunk with its source, so I split the stream on the tags, rebuild each console's lines and drop the mirrored duplicates. Without the tags it couldn't be done reliably. - No guessing about the image layout. It reads build/flasher_args.json, so the bootloader, partition table and app land at the same offsets idf.py flash would use, for any target. - Deterministic input. Button presses and UART input are scheduled in emulated time, not wall-clock time, so a test behaves the same on a fast laptop and a slow CI runner. - Mask ROMs. The boot chain needs Espressif's ROM ELFs for each chip; setup downloads the pinned esp-rom-elfs release and checks SHA-256 hashes. Setup: npx -y esp32sim-mcp setup (prebuilt emulator + ROMs) npx -y esp32sim-mcp init (in your ESP-IDF project, registers it with your agent) The same check runs in CI with no agent, exit code 0/1: npx -y esp32sim-mcp expect --max-seconds 10 --pattern "app_main" "Counter: 5" Limits: it's an emulator, so no Bluetooth or RF timing, and only the peripherals esp32sim models. Confirm on hardware before shipping. Tested on macOS and Linux. Source, demo GIF and docs: stramanu/esp32sim-mcp Contributions are welcome. Useful places to start: - try it on your own ESP-IDF project and open an issue when something doesn't boot or the output looks wrong - Windows: it's untested, and reports or fixes are very welcome - example projects and CI recipes for other chips (C3, C6, classic ESP32) Board and peripheral models live in esp32sim itself, so that's the place to contribute those. The details are in CONTRIBUTING.md in the repo.

    8 points · 6 comments
  7. X · · @JOAKlM

    esp32sim 0.3.0: the classic ESP32 joins the S3, C3 and C6. Now with Wi-Fi and BLE on all four chips. Stock MicroPython boots and draws live prices on an emulated T-Display — same files on the board and in your browser. github.com/mikroverk/esp32sim/releases/tag/v0.3.0 #esp32 #IoT t.co

    5 likes · 1 repost · 108 views
  8. Reddit · · r/esp32 · u/Fresh-Daikon-9408

    esp32sim: an ESP32 emulator in Rust/Wasm that boots unmodified Espressif firmware in the browser Not my project, found it on GitHub this week and had to try it. In the video a Touch-LCD-4B panel goes through the real mask ROM and bootloader, then its LVGL UI responds to swipes and toggles. Unmodified firmware, running in WebAssembly, nothing on a server. Repo: mikroverk/esp32sim Curious whether anyone here has tried it with their own firmware, and how far the peripheral support goes.

    93 points · 6 comments
  9. Show HN: Esp32sim – Run ESP32 firmware in the browser mikroverk/esp32sim (news.ycombinator.com)

    1 like
  10. Bluesky · · @hncompanion.com

    Show HN: Esp32sim – Run ESP32 firmware in the browser View Article | Discussion + AI Summary Summary of HN discussion 🧵👇

    2 likes

Latest stargazers

The last 10 distinct accounts we observed this year.

Most active participants

PR, issue, comment & review events in the past year.

Packages

13
PackageVersionDownloads · 30dTrend · 30d
emu-corev0.1.1
v0.1.1——
esp32v0.42.0
v0.42.0——
esp32c3v0.34.0
v0.34.0——
esp32c6v0.25.0
v0.25.0——
esp32p4v0.4.0
v0.4.0——
esp32s3v0.37.0
v0.37.0——
———
———
———
———
———
———
———

Live mentions badge

Show how many posts mention your project in the last 30 days.

Live mentions · last 30 days
mikroverk/esp32sim mentions in the last 30 days