FlinT

DeeTech Labs

FlinT OS

Open firmware for FlinT devices · pluggable faces · ESP32‑C3 / ESP‑IDF
by DeeTech Labs · base board FlinT Spark

What it is

FlinT OS for FlinT devices

Core services stay stable — time, Wi‑Fi, settings, shell, assets. Faces are plugins: ship a new look without rewriting networking or the clock.

Faces read FaceContext and paint. They do not call Wi‑Fi, HTTP, NVS, or settings APIs.

Face A Face B Face …
FlinT OS core time · net · settings · shell
Display

Architecture

Layers

From docs/ARCHITECTURE.md: board JSON and hardware up through services into FaceContext, then face paint and display present.

  1. hardware / board JSON
  2. services — time · net · settings/cfg · day_mode
  3. FaceContext ← uiBuildContext
  4. Face::onTick / onForceRedraw
  5. display — partial or full present

Paint path

Events → dirty → paint

flintEventEmit → dirty bitfield → onTick / onForceRedraw

  1. event
  2. uiDirtyBridge
  3. uiMarkDirty
  4. uiFaceTick
  • SECOND
  • MINUTE
  • WIFI
  • SETTINGS
  • DAY_MODE
  • FORCE

Boot path

From reset to face

App bring-up mounts services, then the shell loop drives dirty paint. Splash first; faces after the core is ready.

  1. 01 board JSON / display HAL
  2. 02 time · net · settings/cfg
  3. 03 assets on storage
  4. 04 splash · event bus
  5. 05 active face · shell

Tick scope

SECOND / MINUTE cadence

Schematic of the soft-clock event pulse that marks UI_DIRTY_SECOND and UI_DIRTY_MINUTE — not live device telemetry.

SECOND MINUTE

Hardware

FlinT Spark

Board id flint_spark · ESP32‑C3 · display ST7789 240×280 SPI (UI landscape 280×240). Pins and panel come from board JSON.

SPI display (board JSON)

SCK
GPIO 6
MOSI
GPIO 7
CS
GPIO 10
DC
GPIO 9
RST
GPIO 8
VCC / LED
3.3V
GND
GND
--:-- Waiting for time ST7789 · 240×280 ESP32‑C3 USB Serial/JTAG

Persistence

Three stores

UI prefs are not stored as FlinT keys in NVS. cfg survives asset reflash on storage.

  • storage LittleFS core.flintpack
  • cfg LittleFS ui.cfg · time.cfg
  • nvs ESP‑IDF system / Wi‑Fi

Built-in

What ships today

  • Digital face · day modes · glances
  • Soft-clock + SNTP + timezone DB
  • Wi‑Fi STA · settings on cfg LittleFS
  • Face picker · event bus · boot splash
  • ESP‑IDF · LovyanGFX (slim) · dual OTA
  • Input: USB serial (buttons later)
  • License: Apache 2.0

Quick start

Build for FlinT Spark

bash
cp components/flint/config/secrets.example.h \
   components/flint/config/secrets.h
idf.py set-target esp32c3
idf.py build
idf.py -p /dev/ttyACM0 flash monitor