esp32.diy

ESP32-S3-WATCH-rs: Build a Voice-Driven Smartwatch OS in Rust

Oct 13, 2026 · 5 min read

Advanced 25 stars 1 forks Rust MIT Updated 2026-09-13

Homescreen showing the large-text clock and swipeable panel layout

TL;DR ESP32-S3-WATCH-rs is a no-std Rust firmware that turns a Waveshare ESP32-S3 smartwatch into a fully voice-controlled wearable OS with smart home integration, media playback, and over 50 API endpoints. It was built by a blind developer with accessibility at its core, and every interaction can be driven entirely by voice.
What you need
  • Waveshare ESP32-S3 smartwatch
  • i2s microphone (RX)
  • i2s speaker (TX)
  • micro SD card
BoardWaveshare ESP32-S3
LanguageRust (no_std)
Frameworkesp-hal
LicenseMIT
Voice Commands272,684,913 recognised phrases
DifficultyAdvanced

What You Will Build

You will flash a complete, bare-metal wearable operating system onto a Waveshare ESP32-S3 smartwatch. The result is a wrist-worn voice assistant that can control smart home devices, stream and play media, run shell scripts on a backend server, show a 3-day weather forecast, and serve its own web-based media player — all without touching a screen if you prefer.

The project was created by a blind developer, so accessibility drives every design choice: the graphical interface uses large, high-contrast elements, and every function the watch offers can also be reached through voice alone. If you want a deeply capable, hackable wearable built on modern embedded Rust, this is a serious starting point.

Control center panel accessible from the homescreen\2
Control center panel accessible from the homescreen
Battery status screen with charge level display\2
Battery status screen with charge level display
Charging screen shown when the watch is on charge\2
Charging screen shown when the watch is on charge
TinyWeather app displaying a 3-day weather forecast\2
TinyWeather app displaying a 3-day weather forecast

What You Need

Hardware named in the README:

Software and tooling:

Note that yo is a separate project and must be set up on a backend host. The watch firmware alone is not enough to get voice commands working — the two components work together over your local network.

Typical use cases

Hands-Free Smart Home Control

Trigger scripts, toggle devices, and control your home entirely by voice from your wrist — without touching a screen or phone.

Accessible Wearable for Blind Users

Every function is reachable by voice, and the large high-contrast GUI makes the watch usable for blind and visually impaired makers.

On-Wrist Media Server

Stream audio from an SD card, browse server media, and cast to Android TV — all served by a 50+ endpoint HTTP API running on the watch itself.

Bare-Metal Rust Embedded Reference

A working, complex no_std Rust project using esp-hal with async WiFi, i2s full-duplex audio, SSH, WireGuard, and modular library crates — useful as a study reference for advanced embedded Rust development.

How It Works

The firmware is written in no_std Rust using esp-hal as the hardware abstraction layer. There is no ESP-IDF API involved, which keeps the binary lean and gives the developer precise control over every peripheral.

Voice processing follows a split architecture: the watch captures audio through the i2s microphone, streams it to the yo backend, and receives text-to-speech audio back through a TCP server that feeds the i2s speaker. Wake-word detection, speech-to-text and intent matching all run on the backend. Intent matching uses a deterministic approach with smart caching inside voice intents, which the README reports gives an average processing time of 2.72 ms per command.

The watch also runs its own HTTP server with 50+ API endpoints, supports SSH (client and server), handles multiple WiFi SSIDs, supports WireGuard, enables remote file upload and download over the SD card, and can broadcast text-to-speech to every ESP32 device on the network simultaneously. Deep sleep is available for power saving, and the CPU clock can be adjusted at runtime from the GUI or via voice.

Build and Flash Steps

The README recommends Docker as the easiest path because it bundles the Rust toolchain and ESP32 flashing tools into a container.

Step 1 — Clone the repository

git clone https://github.com/QuackHack-McBlindy/ESP32-S3-WATCH-rs
cd ESP32-S3-WATCH-rs

Step 2 — Configure your environment

Copy the example environment file and fill in your WiFi credentials and any other required settings:

mv .env.example .env
nano .env

Step 3 — Find your serial port

The docker-compose.yaml needs to know which serial device your watch is connected to. On Linux:

ls -l /dev/serial/by-id/

Edit docker-compose.yaml to match the port shown.

Step 4 — Build and flash with Docker

docker compose build
docker compose up

Building from source without Docker

If you prefer to manage the Rust toolchain yourself, configure the .env file as above and then run:

cargo run --release

Step 5 — Set up the yo backend

Once the watch is flashed and on your network, you need the yo service running on a server or desktop machine on the same network. Follow that project's own setup instructions to enable wake-word detection and speech processing. The watch will stream microphone audio to it automatically once configured.

Navigating the Interface

Once running, the watch presents a touch-based GUI with swipe navigation:

For voice control, say your wake word followed by a command. The README example: "yo bitch! play the duck song". You define your own wake word and commands inside the yo backend using its scripting system.

Extending It and Limitations

Ideas to extend it:

Current limitations to be aware of:

Verdict

ESP32-S3-WATCH-rs is one of the most feature-complete bare-metal Rust firmware projects for ESP32, built out of genuine necessity by its blind author rather than as a demo. The split voice architecture — watch streams audio, backend handles AI processing — keeps the firmware lean while delivering real-world performance. It is not a beginner project, but if you are comfortable with Rust and embedded toolchains, it is a serious foundation for a genuinely useful voice-controlled wearable.

Sources

github.comQuackHack-McBlindy/ESP32-S3-WATCH-rs — repository & README

Facts in this article come from the project's public README and GitHub metadata at the time of writing. Images belong to their respective owners and link back to the original source.