<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap" -->

---
title: Show HN: Esp32sim – Run ESP32 firmware in the browser
description: esp32sim is an open-source, MIT-licensed ESP32 emulator written in Rust that runs real, unmodified firmware (ROM, bootloader, FreeRTOS app) without hardware,...
canonical: https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Show HN: Esp32sim – Run ESP32 firmware in the browser | daily.dev
og:description: esp32sim is an open-source, MIT-licensed ESP32 emulator written in Rust that runs real, unmodified firmware (ROM, bootloader, FreeRTOS app) without hardware,...
og:url: https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap
og:image: https://api.daily.dev/og/posts/KnUnQisAP.png
og:image:alt: Show HN: Esp32sim – Run ESP32 firmware in the browser
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Show HN: Esp32sim – Run ESP32 firmware in the browser

**[Hacker News](https://daily.dev/sources/hn)** · 16 min read · 0 upvotes · 0 comments

## Summary

esp32sim is an open-source, MIT-licensed ESP32 emulator written in Rust that runs real, unmodified firmware (ROM, bootloader, FreeRTOS app) without hardware, cloud, or subscriptions. It covers four SoCs across both Xtensa (ESP32, S3) and RISC-V (C3, C6) architectures, with board models (displays, WiFi, GPIO), a block interpreter plus AArch64 JIT on the S3, and browser support via WebAssembly. Accuracy is validated against real silicon: JTAG lock-step tracing on the S3 and console diffing on the C3 (205/208 lines identical) and C6 (203/204 lines identical), which surfaced several emulator bugs. A live browser demo runs Linux on the S3, a SID synth board, an LLM-driven aquarium demo, and C3/C6 hello-world examples.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://github.com/mikroverk/esp32sim>

## Questions this post answers

### Is there a way to emulate ESP32 firmware without real hardware?

Yes, esp32sim is an open-source Rust emulator that boots the real mask ROM, bootloader, and unmodified application firmware for ESP32, ESP32-S3, ESP32-C3, and ESP32-C6 chips, with no patched firmware or stubs required. It runs locally or in a browser via WebAssembly, supports GPIO, UART, WiFi with NAT to the real network, and display boards, and is MIT licensed with no cloud or subscription needed.

_Developers evaluating ESP32 emulation options can track tools like esp32sim via daily.dev._

### How accurate is the esp32sim ESP32-C3 emulator compared to real hardware?

Checked line-for-line against a physical ESP32-C3 module, 205 of 208 console lines were identical across three boot cycles, with the only difference being the ROM's Saved PC line. The comparison process also uncovered five emulator bugs, including a device-command race condition and a cycle counter that failed to restart at reset.

_Firmware engineers validating emulator fidelity before switching off real boards can follow updates like this on daily.dev._

### What CPU architectures does the ESP32 family use across different chip variants?

ESP32 and ESP32-S3 use dual-core Xtensa LX6/LX7 cores, while ESP32-C3 uses a single RISC-V RV32IMC core and ESP32-C6 uses a single RISC-V RV32IMAC core with the A extension. The S3 runs at 240 MHz with two cores, while the C3 and C6 run single cores at 160 MHz, each requiring separate CPU emulation logic despite sharing most peripheral models.

_Engineers choosing between Xtensa and RISC-V ESP32 variants can keep up with tooling differences on daily.dev._

## Community take

How the wider developer community reacted, aggregated from 1 discussion and 13 comments across hackernews (as of 2026-10-18).

**TL;DR:** Interest centers on how this compares to Wokwi, with praise for it being free and open-source, but a vocal segment criticizes the README as bloated AI-generated text and questions whether the project itself is 'vibecoded'.

**Sentiment:** 45% positive · 25% mixed · 30% skeptical

**The case for**

- Being open-source and free is seen as a major advantage over paid alternatives like Wokwi.
- Frustration with Wokwi's paywalled limitations makes an OSS alternative appealing.
- Some see real value in running actual firmware for mobile/backend/CI dev workflows instead of a simplified functional simulator.
- One commenter shared a related project doing something similar for drone flight controllers, showing enthusiasm for the concept.

**The pushback**

- The README/documentation is criticized as long, poorly formatted, and full of AI-generated ('claudisms') writing style.
- Some suspect the project itself was 'vibecoded' (AI-generated) raising quality concerns.
- Comparisons to existing tool Wokwi raise the question of what differentiates this project.

**By community**

- hackernews (mixed): Discussion splits between genuine excitement about a free OSS alternative to Wokwi and sharp criticism of the sloppy, AI-generated-feeling documentation.

**Hottest debate:** Whether the gigantic, AI-styled README/documentation undermines trust in the project's quality versus people focusing on its practical value as a free, open alternative to Wokwi.

**Open questions**

- What concretely differentiates this emulator from Wokwi beyond being free and open-source?

**Highlights**

> I actually want to have a play with this sometime. But honestly, these gigantic, poorly-formatted AI-slop paragraphs like the one below this heading… https://github.com/mikroverk/esp32sim#boards-esp32-s3 … are just too much with their dense mix of formatting, brackets, semantic punctuation, command line arguments and part numbers etc. (This one is particularly absurd but it's not the only one). I may be middle-aged now and a non-expert but I am pretty sure these things are generally exhausting to even expert young readers. I would urge you to reconsider how this page is presented.
> — [dofm on hackernews · 2 comments](https://news.ycombinator.com/item?id=50132445)

> I can tell that a README.md becomes a DONTREADME.md when its contents are:    1) As long as a novel.    2) Poorly formatted.    3) Has several claudisms in each sentence. It is one that I am not going to read and not even the author read it themselves either. It’s also a predictor of the level of slop in a project since it is getting worse with the people talking about “code quality” have now vanished and are no where to be found.
> — [rvz on hackernews](https://news.ycombinator.com/item?id=50132643)

> How is this different from Wokwi.com? They’ve been doing for years, and have a large number of microcontrollers emulated.
> — [turbine401 on hackernews · 5 comments](https://news.ycombinator.com/item?id=50132088)

> I have tried to use wokwi several times and I ran into roadblocks trying to do what I want with it. They want you to pay and that’s limiting. I get trying to extract value for your work. But I love the idea an OSS solution you can do whatever you want with.
> — [matthewfcarlson on hackernews](https://news.ycombinator.com/item?id=50137063)

> Very cool, that was something I was looking into very recently. I vibe coded a drone simulator that flys drones by simulating ESP32 in the browser where the actual flight controller C code that runs on real ESP32 is running as WebAssembly: https://mrtksn.github.io/liftlab/ So the drones are flying with the actual ESP32 flight controller and you can flash the real ESP32 board directly.
> — [mrtksn on hackernews](https://news.ycombinator.com/item?id=50135498)

**Source threads**

- [hackernews](https://news.ycombinator.com/item?id=50131189) · 124 points · 13 comments

## Similar posts on daily.dev

- [Bare-metal MSX2\+ Emulator for ESP32-S3 offers custom LCD\_CAM VGA implementation & Z80 optimizations](https://daily.dev/posts/bare-metal-msx2-emulator-for-esp32-s3-offers-custom-lcd-cam-vga-implementation-z80-optimizations-kmxn61vlw) · CNX Software · 0 upvotes · 0 comments
- [Running Linux 6.11 On The ESP32-S3 With A Few Tweaks](https://daily.dev/posts/running-linux-6-11-on-the-esp32-s3-with-a-few-tweaks-havlry0ud) · Hackaday · 0 upvotes · 0 comments
- [GitHub - GrieferPig/esp32-s31-linux: Porting MMU Linux to ESP32-S31](https://daily.dev/posts/github---grieferpig-esp32-s31-linux-porting-mmu-linux-to-esp32-s31-o9nrg0dao) · Hacker News · 0 upvotes · 0 comments
- [Windows 95 made to run on ESP32-S3 hardware with Tiny386 x86 PC emulator](https://daily.dev/posts/windows-95-made-to-run-on-esp32-s3-hardware-with-tiny386-x86-pc-emulator-mbd4hbu53) · Two Stop Bits · 2 upvotes · 0 comments
- [The newest ESP32 can actually run Linux, and it's getting uncomfortably close to a Raspberry Pi](https://daily.dev/posts/the-newest-esp32-can-actually-run-linux-and-it-s-getting-uncomfortably-close-to-a-raspberry-pi-ex3qklo9c) · XDA Developers · 0 upvotes · 0 comments

---

Tags: [#rust](https://daily.dev/tags/rust), [#iot](https://daily.dev/tags/iot), [#embedded](https://daily.dev/tags/embedded), [#webassembly](https://daily.dev/tags/webassembly)

[View this post on daily.dev](https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Show HN: Esp32sim – Run ESP32 firmware in the browser","url":"https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap"},"datePublished":"2026-10-17T18:32:41.528Z","dateModified":"2026-10-18T02:03:22.634Z","description":"esp32sim is an open-source, MIT-licensed ESP32 emulator written in Rust that runs real, unmodified firmware (ROM, bootloader, FreeRTOS app) without hardware,...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a4ed17b6e28e70fbf64f3fdc8d07a8e1?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/a4ed17b6e28e70fbf64f3fdc8d07a8e1?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Hacker News","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Hacker News","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/hn","url":"https://daily.dev/sources/hn"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"rust,iot,embedded,webassembly","timeRequired":"PT16M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Hacker News","item":"https://daily.dev/sources/hn"},{"@type":"ListItem","position":3,"name":"Show HN: Esp32sim – Run ESP32 firmware in the browser"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/show-hn-esp32sim-run-esp32-firmware-in-the-browser-knunqisap#faq","mainEntity":[{"@type":"Question","name":"Is there a way to emulate ESP32 firmware without real hardware?","acceptedAnswer":{"@type":"Answer","text":"Yes, esp32sim is an open-source Rust emulator that boots the real mask ROM, bootloader, and unmodified application firmware for ESP32, ESP32-S3, ESP32-C3, and ESP32-C6 chips, with no patched firmware or stubs required. It runs locally or in a browser via WebAssembly, supports GPIO, UART, WiFi with NAT to the real network, and display boards, and is MIT licensed with no cloud or subscription needed. Developers evaluating ESP32 emulation options can track tools like esp32sim via daily.dev."}},{"@type":"Question","name":"How accurate is the esp32sim ESP32-C3 emulator compared to real hardware?","acceptedAnswer":{"@type":"Answer","text":"Checked line-for-line against a physical ESP32-C3 module, 205 of 208 console lines were identical across three boot cycles, with the only difference being the ROM's Saved PC line. The comparison process also uncovered five emulator bugs, including a device-command race condition and a cycle counter that failed to restart at reset. Firmware engineers validating emulator fidelity before switching off real boards can follow updates like this on daily.dev."}},{"@type":"Question","name":"What CPU architectures does the ESP32 family use across different chip variants?","acceptedAnswer":{"@type":"Answer","text":"ESP32 and ESP32-S3 use dual-core Xtensa LX6/LX7 cores, while ESP32-C3 uses a single RISC-V RV32IMC core and ESP32-C6 uses a single RISC-V RV32IMAC core with the A extension. The S3 runs at 240 MHz with two cores, while the C3 and C6 run single cores at 160 MHz, each requiring separate CPU emulation logic despite sharing most peripheral models. Engineers choosing between Xtensa and RISC-V ESP32 variants can keep up with tooling differences on daily.dev."}}]}
```

