Show HN: Esp32sim – Run ESP32 firmware in the browser
- ID
- 36824
- Status
- summarized
- Published
- 17 Oct 2026, 9:51 PM
- Fetched
- 19 Oct 2026, 3:59 AM
- Provider
- Hacker News
- Category
- dev-community
- Original URL
- https://github.com/mikroverk/esp32sim
- Source URL
- https://hnrss.org/best
Summary
- Score
- 6.5
- Created
- 19 Oct 2026, 3:59 AM
- Tags
- Audience
- developersvibe_coders
What happened
esp32sim is an MIT-licensed ESP32 emulator written in Rust that boots the real mask ROM, the real second-stage bootloader and an unmodified application image — no patched firmware or stubs — locally or in the browser via WASM. It covers four SoCs across both Espressif architectures: classic ESP32 (dual Xtensa LX6, ECO3 ROM, GPIO/UART/timers, plus a --board ttgo-tdisplay option adding the ST7789 and buttons), ESP32-S3 (2× LX7 @ 240 MHz, with ST7735, ST7701S 480×480 + touch, WS2812, camera and audio), and RISC-V ESP32-C3 / C6 @ 160 MHz. The repo reports full-listing decoder checks of 977k instructions with 0 mismatches on S3, 161k on C3 and 126k on C6, models WiFi as a virtual AP with WPA2, DHCP/DNS/NTP and NAT to the real network, and sits at 324 stars and 1,469 commits with 189 points and 39 comments on Hacker News.
Why it matters
If you ship ESP32 firmware, this is a route to running unmodified app images in CI with no board farm, no cloud account and no subscription — the MIT licence removes the usual vendor lock-in. The catch is in the table: C3 and C6 are console-only with no display or peripheral models, so anything with a screen, camera or sensor still needs real hardware; S3 is the only one with the richer board set. For teams that currently order boards before they can test, browser-first emulation shortens the loop before any import or shipping cost is committed.
Discussion angle
Is '977k instructions decoded, 0 mismatches' plus booting the real ROM enough evidence to trust emulation results over hardware for your firmware — and where does console-only C3/C6 support force you back onto a physical board?