Bumps third_party/qemu to the X3 grayscale persistence render. The in-browser reader now shows crisp black text on white (no inversion, no muddle). Marks the grayscale defect resolved in ISSUES.
3.0 KiB
Known Issues
Resolved: directory-backed SD reads corrupted WASM state
Opening /Test/example.txt through QEMU vvfat could corrupt coroutine/guest state. The browser now builds a standards-compliant 64 MiB FAT32 image from OPFS and mounts it as a raw block device, bypassing the failing host-file mapping path. The official CrossPoint 1.4.1 firmware can traverse Test/example.txt without a WASM trap or guest panic.
Resolved: SD card remained in receivingdata
ssi-sd consumed a write-data token while leaving response mode, then parsed payload bytes as commands. The adapter now enters token mode immediately after the final R1 byte. SPI CMD13 also uses the upstream-correct sd_r1 internal response so status polling no longer loops on Unexpected response to cmd 13.
Worked around: WASM reader panic in uzlib font decompression
Opening a book panicked only in WASM (Invalid read ... reason: rejected → Load access fault) inside uzlib_uncompress during the reader's font prewarmCache. Native QEMU from the same submodule decompresses the identical static flash font and renders text, so it is a wasm32 TCG backend miscompile, not firmware/SD.
Worked around by forcing store-containing TBs to TCI (wasm_tci_only_tb = true in tcg_out_qemu_st). Reader now opens and paints in the browser. This is a workaround with a perf ceiling (store-containing TBs run interpreted); the precise miscompiled op is not yet localized. Full investigation and next steps: docs/wasm-inflate-panic.md.
Resolved: reader grayscale rendered inverted and muddled
The reader drew a crisp BW page, then a 4-level grayscale antialiasing pass (inverted plane polarity, near-empty planes) that the old model rendered as a full frame, wiping the page to an inverted muddle. The xteink_x3_eink model now keeps a persistent surface, detects grayscale vs BW by DTM2's set-fraction, and treats grayscale level 0 as no-drive (keep pixel) so only antialiased edges repaint over the retained BW page. Reader text renders sharp on native and wasm.
Ceiling: the BW-vs-grayscale detector assumes the background is the white pixel majority, so a genuinely mostly-black BW frame would flip. Upgrade path: decode the loaded LUT directly.
Cold boot requires a manual power-button hold
If the power button is not held until the Booting icon appears, the firmware can enter an unwanted watchdog reboot path:
Guru Meditation Error: Core 0 panic'ed (Interrupt wdt timeout on CPU0)
The emulator should model a cold-boot power hold and release automatically rather than requiring precisely timed user input. The preceding NVS NOT_FOUND messages are expected first-boot initialization noise.
WASM heap balloons after watchdog reboot
The committed WASM heap starts near 176.3 MiB but can grow to approximately 631.8 MiB after the watchdog reboot described above.
This indicates translated-block or dynamic WebAssembly module state is retained across guest reboot. TB cleanup must release old dynamic instances during reset; reboot-time growth should remain bounded.