// the find
infinition/waveshare-watch-rs
100% Rust `no_std` smartwatch firmware for the Waveshare ESP32-S3-Touch-AMOLED-2.06
A complete Rust no_std rewrite of the C/C++ firmware for the Waveshare ESP32-S3-Touch-AMOLED-2.06 dev board — QSPI display, WiFi, NTP, IMU, audio codec, RTC, and five mini-games, all in 5,545 lines with zero C in the final binary. It's squarely for embedded Rust developers who want a working reference for esp-hal and Embassy on a real device, not a toy blink sketch. The conversion history section alone is worth reading if you've ever fought an I2S codec or a half-duplex QSPI display driver.
The power management design is serious engineering: select3() on GPIO interrupts instead of a polling loop cuts CPU wake-ups by roughly 6000x in screen-off state, and the adaptive tick table (8ms for Flappy Bird, 30s for screen-off) shows the author actually measured and tuned this. The custom QSPI driver — half-duplex quad-SPI with DMA into a double-buffered PSRAM framebuffer with vsync — is non-trivial to get right and the code is clean. The conversion history documents real bugs found during the rewrite (wrong SIO pin direction, ES8311 init register order, MIPI DCS SLPOUT/DISPON sequence) in a way that's actually useful if you hit the same hardware. Binary size went from ~1.2 MB with ESP-IDF+LVGL to 579 KB with the full Rust stack including WiFi — that's not a rounding error.
WiFi credentials are baked in at compile time via env!() macros, and the settings app's T9 keyboard for SSID/password never actually connects to anything — the runtime UI is a dead end. MP3 decoding is the most-advertised audio feature and it's entirely stubbed: nanomp3 is in Cargo.toml, the UI renders, but the SD→I2S pipeline isn't wired. BLE is disabled with a panic that's been punted — btdm_controller_init returning -4 with WiFi coex is a known esp-hal/esp-radio issue with no workaround in place, and BLE phone notification is the obvious next feature for a watch. The build setup requires a hardcoded MSVC path in the README with a specific VS version number that will silently break on any other VS installation; the espup toolchain setup adds another non-obvious prerequisite that's easy to get wrong on Windows.