This looks amazing to me: Rust stack for the smartwatch ESP32-S3-Touch-AMOLED-2.06.
I ordered the watch from Bangood here for about $40, which is a funny price for a watch of any kind. It came with a battery and an armband, even though I needed to install the battery and put the armband myself on a watch. The battery is very flat - looks like a fatter one would also fit into enclosure. I have not measured the battery life yet.
On my Ubuntu workstation, I succeeded in building the software stack, flashing Rust firmware, and getting the watch going without a single glitch. It even took my WiFi settings from the environment while building and used them to set itself the time via NTP.
Also, the code looks actually easy enough to read. This is something worth building a cult following around!
Sounds like a fun project! Thx for sharing 
Espressif has been investing in making Rust a first-class language for their MCUs, like the ESP32-C3 and ESP32-S3. Last year, their esp_hal hit version 1.0 (and was recently updated to 1.1). I wish other manufacturers (looking at you, ST!) would follow their lead. It’s probably only a matter of time before the rest catch up.
The original stack is very interesting and impressive (it supports many games, Wi-Fi, and an accelerometer), but the battery life is limited to just a few hours because it doesn’t use deep sleep—it only pauses execution. However, the device API supports deep sleep with very low power consumption. Even though all memory is lost in this mode, the watch can be woken up using the side button, and the real-time clock continues running.
I implemented the necessary changes, and it now feels like a fully usable smartwatch. GPT has extensive knowledge of the watch’s architecture and proved to be an efficient self-learning tool. I also added the Ferris crab icon to the clock face. The watch was charged yesterday evening, and now, as the next evening approaches, the battery is still holding up — even with me checking the time multiple times throughout the day.
My repository with deep sleep management is available here.
Had a big adventure with power rails. To save even more power, I decided to power the converter first, but it turned out that the pull up resistors of I2C bus are connected to the same power rail, so once I turn it off ... no easy way to turn it on, as I2C only pulls down by design.
To get the watch working again, in the current version of the code I switched pin from I2C to raw output and now recover the power rails sending command by bit banging. Surprisingly, works.