fe35cb68d6b62fcd2a30fd7b12a7f0323f5997e3
Ports the ESP32 Wi-Fi emulation (esp32c3_wifi, esp32_wifi_ap, esp32_wlan_*) from the lcgamboa/PICSimLab QEMU fork and integrates it behind the esp32c3_wifi NIC model, plus the supporting radio peripherals (ANA/PHYA/FE/PWR manager). - Exposes an open SSID 'qemu' bridged to the host via QEMU user-mode NAT (libslirp, now enabled in the native build). - Adds ESP-IDF 5.5 compatibility fixes: channel resolution from the beacon DS Parameter Set IE / AP lookup, persistent SYSCON register backing (phy_module_has_clock_bits), DMA inlink/outlink descriptor mirroring, RX descriptor ring reset on item.next==0, and descriptor ownership/length semantics. - xteink-emu now starts with -nic user,model=esp32c3_wifi and synthesizes an eFuse image with a fixed guest MAC. Verified against a stock Arduino-ESP32 sketch: scans, finds 'qemu', associates, gets DHCP 192.168.4.15, and completes an outbound TCP connection. Unmodified CrossPoint firmware still needs the power-button hold during boot (tracked separately).
xteink QEMU fork
Espressif's QEMU fork carrying the xteink X3/X4 (ESP32-C3) machine model and a wasm32 TCG backend (ported from ktock/qemu-wasm), used by xteink-web-emulator to run CrossPoint firmware in the browser.
Branch
main— the working branch. Base is Espressif'sesp-develop-9.2.2-20260417(40edccac).
Remotes
origin— https://ssh.gitea.va.reichard.io/evan/qemu-xteinkupstream— https://github.com/espressif/qemuqemu-wasm— https://github.com/ktock/qemu-wasm (source of the wasm32 backend)
Building
Native (parity check — authoritative)
nix develop
./configure --target-list=riscv32-softmmu --with-devices-riscv32=xteink --enable-gcrypt
ninja -C build qemu-system-riscv32
Or build the native xteink target directly:
nix build .#qemu-native-xteink
Agent emulator
nix run .#xteink-emu -- start --firmware firmware.bin --sdcard sdcard.img
nix run .#xteink-emu -- wait --timeout 30 --match 'ready'
nix run .#xteink-emu -- button bottom-2 --hold-ms 100
nix run .#xteink-emu -- screenshot --output screen.png
nix run .#xteink-emu -- stop
State defaults to /tmp/xteink-emu-$UID; pass --state-dir to any subcommand for parallel instances. wait advances a persistent log cursor after each match. The emulator exposes the open Wi-Fi network qemu; guest traffic uses QEMU's user-mode NAT.
WebAssembly
Driven by the parent repo, not here:
cd ../xteink-web-emulator
make web-dev # incremental build straight from this tree
The parent's scripts/build-qemu-wasm.sh compiles this checkout inside the
emsdk Docker image defined in xteink-web-emulator/qemu/wasm/Dockerfile.
Description
Languages
C
83.1%
C++
6.4%
Python
3.3%
Dylan
2.8%
Shell
1.5%
Other
2.6%