smartwatch experiments in rust
  • Rust 90.7%
  • Slint 7.8%
  • Just 1.5%
Find a file
2026-07-05 15:39:40 -07:00
assets initial commit 2026-04-12 12:11:25 -07:00
bin simplify power state management, eliminate wake bugs 2026-07-05 15:39:40 -07:00
datasheets waveshare datasheets 2026-07-04 11:35:44 -07:00
img add waveshare photo 2026-06-21 11:28:17 -07:00
lib simplify power state management, eliminate wake bugs 2026-07-05 15:39:40 -07:00
ui big project restructure/cleanup 2026-07-01 18:56:44 -07:00
vendor proper sleep implementation 2026-07-04 20:31:30 -07:00
.gitignore simulator 2026-04-12 19:59:57 -07:00
.gitmodules untested code, maybe sam says hello 2026-06-09 23:55:21 -07:00
Cargo.lock proper sleep implementation 2026-07-04 20:31:30 -07:00
Cargo.toml big project restructure/cleanup 2026-07-01 18:56:44 -07:00
Justfile fix waveshare defmt logging 2026-07-04 11:20:17 -07:00
LICENSE Add LICENSE 2026-04-12 12:16:03 -07:00
README.md Add note about riscv64 C compiler to dependency section of README 2026-07-04 11:28:48 -07:00
rust-toolchain.toml initial commit 2026-04-12 12:11:25 -07:00

SmartWatch Experiments in Rust

twatch waveshare

Target Hardware

  • Lilygo T-Watch 2020 V3
  • Waveshare ESP32C6 AMOLED 2.06"

Install Dependencies

cargo install espup
espup install
source ~/export-esp.sh

Install riscv64-linux-gnu-gcc from your distro's package manager.

Run on Hardware

Just use the Justfile

Install just with cargo install just

Twatch

Build and run:

just twatch

Build without running:

just build-twatch

Waveshare

Build and run release:

just waveshare

Build and run debug via probe-rs:

just probe-waveshare

Run in Simulator

Run and build local simulator: just simulate

Project Structure

  • lib/bsp/smartwatch-bsp-traits defines shared traits for smartwatch behaviours
  • lib/bsp/lilygo-twatch-2020v3 implements the traits for the Lilygo T-Watch 2020 V3.
  • lib/bsp/waveshare-esp32c6-amoled-206 implements the traits for the Waveshare ESP32C6 AMOLED 2.06"
    • BSP stands for Board Support Package and is intended to abstract away the board-specific-code.
  • vendoris for forked libraries
  • assets is for images and fonts and stuff like that
  • datasheets is where we put docs about the specific boards and their components for reference