TL;DR
Get the latest gadgets delivered free with Prime
- Fast, free delivery on millions of items
- Prime Video, Amazon Music and more included
- Member-only deals all year
The developer of esp32sim has presented a Rust-based emulator that runs ESP32 firmware in a browser through WebAssembly, without an installation or account. Its repository describes support for four chips, real boot ROM and bootloader execution, and several modeled peripherals; testing figures and hardware comparisons are qualified as manual runs, not continuous cycle-by-cycle validation.
A developer has introduced esp32sim, a Rust emulator that runs firmware for four Espressif ESP32 chips in a web browser using WebAssembly. The project says users can load and run firmware without installing the emulator or creating an account, offering a way to test some embedded projects without first connecting a physical board.
The emulator supports the ESP32-S3, ESP32-C3 and ESP32-C6, as well as the classic ESP32, according to the project’s GitHub repository. It covers both CPU families used by those chips: Xtensa for the classic ESP32 and S3, and RISC-V for the C3 and C6. The repository says the emulator boots each chip’s actual mask ROM and second-stage bootloader, then runs an unmodified application image rather than relying on patched firmware or substitute stubs.
The browser version is available at the project’s GitHub Pages site. The repository also describes a command-line version and an MIT license. Its modeled components include chip-specific memory maps and interrupt handling, along with shared peripherals such as UART, GPIO, timers, SPI flash and cryptographic hardware. Available board models add features such as displays, buttons, audio and camera support on some S3 setups. The C3 browser build is described as console-only; the C6 model includes a limited stand-in for 802.15.4 energy detection.
Project documentation reports decoder checks covering 977,000 instructions for the S3, 161,000 for the C3 and 126,000 for the C6, with zero mismatches in each reported run. It also gives comparisons against hardware output: 205 of 208 console lines matched for the C3, and 203 of 204 for the C6. The documentation cautions that these figures came from earlier manual runs; external full-listing tests are not included in continuous integration, and the hardware comparison makes adjustments rather than checking uninterrupted cycle-by-cycle agreement.
Browser Access for Firmware Testing
Running firmware in a browser can lower the initial barrier to experimenting with ESP32 software. A user can try an example without sourcing a board, setting up a local toolchain or connecting hardware. That can be useful for demonstrations, early development and investigating how firmware behaves under the peripherals the emulator models.
The project’s breadth also matters: support for Xtensa and RISC-V variants means the browser tool is not limited to one ESP32 CPU family. But emulation is not equivalent to a physical device. Results depend on which peripherals and board details are modeled, and the repository’s own notes qualify its hardware comparisons. Developers should treat it as a testing and exploration option, not evidence that a firmware image will behave identically on every real board.
As an affiliate, we earn on qualifying purchases.
Espressif’s ESP32 family includes chips with different processor architectures and hardware configurations. The project handles this through separate CPU emulators and chip-specific SoC models, while reusing models for peripherals that the repository says are shared across the devices. That design lets one browser interface run different supported machines, though the available hardware features vary by chip and board configuration.
The repository describes the S3 implementation as mature and the C3 and C6 implementations as drafts, with separate documentation for the latter two. It also lists sample projects, including display demonstrations and Wi-Fi examples. These examples show intended use, but do not by themselves establish broad compatibility with arbitrary firmware or every ESP32 peripheral.
““No cloud, no accounts.””
— The esp32sim GitHub repository
As an affiliate, we earn on qualifying purchases.
Compatibility and Validation Limits
The repository does not establish how well the emulator supports all ESP32 firmware or peripherals beyond the listed models. The C3 and C6 are identified as drafts, and the project’s reported hardware checks cover selected comparisons rather than uninterrupted, cycle-by-cycle agreement. It is also unclear from the supplied material how the browser build performs across different devices, browsers and application sizes.
Continuous integration runs checked-in sampled decoder corpora and emulator golden outputs, but excludes the external full-listing tests described in the repository. The Xtensa decoder test also excludes comparisons of PIE operands. The reported zero-mismatch decoder results therefore apply to the stated test runs and scope, not a guarantee that every instruction or firmware workload has been validated.
As an affiliate, we earn on qualifying purchases.
Testing Beyond the Browser Demo
Readers can try the hosted browser demo or build the command-line emulator from the repository, then compare results with a physical board for projects that depend on hardware-specific behavior. The repository provides example firmware and testing documentation, including notes on its golden-output tests and hardware comparison process.
The supplied project information does not give a release timetable or identify a next development milestone. Further clarity would come from updates to the C3 and C6 draft documentation, broader automated tests, and additional comparisons against hardware. Until then, the emulator’s stated chip support and validation limits remain the best guide to what users can expect.
As an affiliate, we earn on qualifying purchases.
Key Questions
What is esp32sim?
esp32sim is an open-source emulator written in Rust that runs firmware for supported ESP32 chips. It can run in a browser through WebAssembly and is also described as having command-line tools.
Which ESP32 chips does it support?
The repository lists the classic ESP32, ESP32-S3, ESP32-C3 and ESP32-C6. The S3 implementation is marked mature; the C3 and C6 implementations are marked as drafts.
Does it require a physical board or an account?
The hosted browser version is presented as requiring no installation or account. It emulates selected hardware, however, and does not replace a physical board for tests that depend on real-world electrical behavior or unmodeled peripherals.
How thoroughly has the emulator been tested?
The repository reports decoder checks and selected comparisons with hardware output, but says the cited full-listing and hardware counts came from earlier manual runs. Continuous integration uses sampled decoder corpora and golden outputs, so the figures do not establish complete or cycle-by-cycle accuracy.
Source: hn
Fall Picks
fall essentials
As an affiliate, we earn on qualifying purchases.
