Numio RS is a standalone embedded Rust firmware for the Arduino Nesso N1.
It ports the Numio wearable/controller experience to Rust while keeping board
bring-up, display, radio, storage, input, motion, power, and audio access behind
the public nesso SDK.
- Landscape desk mode with clock, weather, battery, and minute progress UI
- Play mode with IMU-driven ball movement
- Step and system information screen
- Wi-Fi connection from build-time credentials
- App-owned
embassy-netstack after Nesso Wi-Fi handoff - NTP time sync and Open-Meteo weather fetch
- Battery and charging status
- Motion and step calculation
- Touch/button navigation
- Non-blocking queued buzzer feedback
- Persistent preferences through
nesso::storage - CI and release workflows for quality checks and firmware artifacts
- Board: Arduino Nesso N1
- MCU: ESP32-C6
- Display: built-in LCD
- Input: built-in touch and buttons
- Sensors: IMU and power-management hardware
- Wireless: Wi-Fi and BLE
- Audio: passive buzzer
Numio reads Wi-Fi credentials from environment variables at build time:
export WIFI_SSID="your-ssid"
export WIFI_PASSWORD="your-password"These are embedded into the firmware image by build.rs.
cargo fmt --all --check
cargo test --lib
cargo clippy --workspace --all-targets --all-features --target riscv32imac-unknown-none-elf -- -D warnings
cargo check --workspace --all-features --target riscv32imac-unknown-none-elf
cargo build --workspace --release --target riscv32imac-unknown-none-elfThe project runner is configured for ESP32-C6 flashing through espflash.
Update .cargo/config.toml if your serial port differs.
cargo run --release --target riscv32imac-unknown-none-elfPushing a v* tag runs .github/workflows/release.yml, builds the firmware,
and attaches:
numio-esp32c6.elfnumio-esp32c6.binSHA256SUMS
The application is split into focused modules:
app: boot flow and event loopscreens: desk, play, system, and reusable widgetsservices: network, desk data, battery, motion, input, storage, BLE mirrorui: Numio-specific drawing helperslogic: host-testable pure logicconfig: constants and storage keys
Numio owns application behavior such as NTP, weather, UI state, retries, and
screen flows. The nesso SDK owns Nesso N1 hardware setup and access.
MIT