frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

We built an ESP32-S3 simulator that runs real firmware in the browser

https://blog.cirkitdesigner.com/blog/2026-05-05-esp32-s3-simulator/
4•austin_small•1h ago

Comments

austin_small•1h ago
Hi HN, I’m Austin, one of the founders and engineers building Cirkit Designer.

We recently launched browser-based ESP32-S3 simulation. The ESP32-S3 emulator itself was built from scratch in Rust, compiled to WebAssembly, and runs compiled ESP32-S3 firmware locally in the browser against the circuit built in the editor. It is instruction-accurate and executes real Xtensa instructions.

Today it supports GPIO, UART, SPI, I2C, PWM, ADC, hardware timers, NeoPixel/WS2812 via RMT, and Wi-Fi workflows through 802.11-layer emulation, including HTTP, HTTPS, MQTT, WebSocket, and UDP.

I spent about 8 months building the ESP32-S3 emulator and integrating it into Cirkit’s browser-based circuit editor. A major goal was to preserve hardware behavior where it mattered for firmware compatibility, especially in the CPU core, boot path, and peripheral interactions. The hardest parts were getting real firmware through the ESP32-S3 boot path, handling Xtensa windowed registers and RETW behavior, making the emulator fast enough for real projects to run smoothly in the browser, supporting Wi-Fi workflows, and building a rigorous unit/integration test suite around the CPU core and firmware behavior.

We chose browser-native simulation instead of running an emulator per session on backend servers because we wanted low-latency interaction with the circuit editor and no per-session emulator infrastructure.

This is part of Cirkit Designer, our browser-based circuit design and simulation workspace. ESP32-S3 Arduino sketch projects are usable today, and we’re continuing to expand support for more ESP32 variants.

Happy to answer technical questions where I can.