On-device coverage
Every ESP32-S3 feature the project tracks, what the emulator models, and what is deliberately left out. “Validated” means a real arduino-cli sketch boots in the emulator and its serial output plus internal state are asserted by the battery.
CPU
| Feature | Status | Remark |
|---|---|---|
| LX7 base ISA | Validated | ALU, loads/stores, branches, CALL0/J loops, windowed registers, exceptions, interrupts. |
| ee.* DSP/TIE | Validated | 218/218 execute incl. ee_srs_accx; unmapped patterns trap loud (correct). |
| Single-precision FPU | Validated | Full libgcc __divsf3 / sqrtf sequences bit-exact vs host f32. |
| Dual core + cross-core IRQ | Validated | PRID strapping, serialized stepping, cross-core yields; FreeRTOS SMP boots. |
Connectivity
| Feature | Status | Remark |
|---|---|---|
| Wi-Fi scan | Validated | Host-completed scan at the firmware boundary; SSID/RSSI/chan/BSSID asserted. |
| Wi-Fi station connect | Validated | Association + GOT_IP + status/IP/SSID/RSSI prints + disconnect leg. |
| Wi-Fi SoftAP | Validated | softAP() init + STARTED bits, softAPIP 192.168.4.1, MAC, station count 0; no over-the-air peers (single node). |
| ESP-NOW | Validated | Init/peer/send + in-firmware TXCB/RXCB via virtual second node (no RF; direct C-call delivery). |
| WiFi + BLE coexistence | Validated | STA association + BLE GATT init/advertise concurrently in one image (`coex`): both reach DONE with no crash/WDT/RF conflict (both media virtual offline; no arbitration needed). |
| Live IP backhaul (L2 bridge) | Validated | Ethernet bridge tap: board→host TX capture (`esp_netif_transmit` hook → pcap + gateway) + host→board RX injection (`esp_netif_receive` hook). `test_worker_net` gallery entry drives both live. TCP ingest on the Go gateway (127.0.0.1:5051) feeds the SLIRP/NAT stack (DHCP/DNS/ARP/IPv6-RA/UDP-forward). |
| Live IP backhaul (L3–L7 suites) | Partial | Client legs proven live 18/18 + DONE (`test_worker_l3`: DNS/NTP/UDP-echo/CoAP 2.05/HTTP 200/MQTT 1883/IPv6 RA+echo+UDP via gateway-local Go services) + pcap artifact; board-as-server (lwIP listen/accept) stays Partial — no live-netif path exists offline. |
| Bluetooth / BLE | Out of scope | GATT server boots (`BLE DONE`), canned 9-step GATT proven offline, live runs panic-free with stable conn (first-ATT VHCI ACL sem timeout fixed with an ACL-scoped tap completion); live-central completion is harness-side Bumble link delivery, out of model scope. No radio; no over-the-air peers. |
Serial and bus I/O
| Feature | Status | Remark |
|---|---|---|
| UART0/1/2 + USB-Serial-JTAG | Validated | TX/RX FIFOs, interrupts, RS485 echo, HW flow control, RX timeout; console merged in UI. |
| SPI master (GPSPI2/3) | Validated | USR polling path, GDMA master DMA, slave + slave-DMA, quad hook, SDSPI mount. |
| I2C master/slave | Validated | Full FSM + NACK model; Wire driver verified silicon-true (empty bus reports “other”). |
| I2S audio | Validated | TX/RX FIFOs, BCK clock gen, TDM, PDM, GDMA path, loopback; esp-idf driver path green. |
| TWAI / CAN | Validated | PeliCAN registers, self-test loopback, RX inject; esp-idf driver path green. |
Timers, PWM, capture
| Feature | Status | Remark |
|---|---|---|
| TIMG + WDT + RTC WDT | Validated | 64-bit timers, alarm interrupts, MWDT stages incl. chip-reset reboot. |
| SYSTIMER | Validated | Unit counters + OP snapshot handshake; backs millis/micros/delay. |
| MCPWM (groups 0/1) | Validated | Timers/operators/generators, capture, fault/trip, dead-time, carrier, sync chains. |
| LEDC PWM + fade | Validated | Fractional divider, duty resolution, fade engine with DONE interrupt. |
| RMT TX/RX | Validated | Item RAM, carrier modulation, RX capture + demodulation, loopback. |
| PCNT pulse counter | Validated | Edge counting, gating, threshold interrupts via GPIO-matrix routing. |
| Sigma-Delta | Validated | PDM duty output on matrix signals 93–100. |
Analog, touch, sensors
| Feature | Status | Remark |
|---|---|---|
| SAR ADC (oneshot + digital) | Validated | Attenuation scaling, injected voltages exact; GDMA-IN path. |
| Temperature sensor | Validated | TSENS DAC codes with the driver-fitted curve; TEMP_C fixture. |
| Touch controller | Validated | Oneshot, approach counters, denoise, sleep latch; in-browser fixture. |
| BOD brown-out | Validated | Interrupt + chip-reset paths, BOD_INJECT fixture. |
Crypto and security
| Feature | Status | Remark |
|---|---|---|
| SHA-1/224/256/384/512 | Validated | GDMA-fed engine; known-answer digests via mbedTLS. |
| AES-ECB/CBC/XTS (+GCM via HW) | Validated | FIPS vectors + chaining via the real mbedTLS driver. |
| RSA / HMAC / DS / ECDSA | Validated | Mod-exp, key-block HMAC, signature verify, P-256 sign/verify. |
| eFuse + burn | Validated | Factory MAC, field blobs, block burn with write-disable. |
| Flash encryption (XTS) | Validated | Whole-image XTS pipeline; hello boots fully encrypted. |
| Secure boot v2 | Gallery-absent | Signed pipeline + fail-closed gate validated; needs a SECURE_BOOT_EN burn the browser cannot provide, so no gallery entry. |
Storage and USB
| Feature | Status | Remark |
|---|---|---|
| SDMMC + FAT + eMMC | Validated | Simulated card, IDMAC, RPMB, full FAT mount; IDF-driver mount green. |
| SDSPI (SD over SPI) | Validated | Full FAT mount over GPSPI2; in-browser card attach. |
| USB-Serial-JTAG | Validated | Every sketch console flows through it. |
| USB-OTG host + device | Validated | Host enumeration of the simulated device; EP0/EP1 loopback; TinyUSB HID boot + full 7-transfer enum. |
| USB device vs external host | Out of scope | Needs a USB-host counterparty; no offline harness possible. |
Memory, power, misc
| Feature | Status | Remark |
|---|---|---|
| PSRAM + cache MMU | Validated | QSPI/OPI init, up to 16 MB mapped, malloc pattern tests. |
| Deep / light sleep | Validated | Timer/EXT0/EXT1/ULP/touch/GPIO/UART wakeups, resume + reboot paths. |
| ULP-RISC-V | Validated | rv32imc core runs from RTC slow memory, halts on ebreak. |
| GPIO / RTC_IO / dedicated GPIO | Validated | Matrix routing, interrupts, hold across sleep, TIE latch bundles. |
| GDMA / LCD_CAM / UHCI | Validated | Descriptor walks, camera capture, UART-DMA bridge, SLIP framing. |
| MicroPython REPL | Validated | Stock v1.29.0 boots to >>>, runs Python (ints, floats, lists) via UART0; in-browser preset + node harness. |
| OTA updates | Validated | Boot-slot selection + end-to-end reflash into ota_1. |
| RNG | Validated | Seeded stream; RNG_SEED varies it across runs. |