Skip to content
meshtasticPublic

About

meshtastic device-ui library

Resources

Security policy

Stars

499 stars

Watchers

28 watching

Forks

Repository files navigation

meshtastic

Meshtastic device-ui library

A versatile UI library for the meshtastic® project

GitHub last commit GitHub issues Open Collective backers

👋 Introduction

Meshtastic device-ui library for TFT and OLED screens

This C++ library is intended to support the following scenarios with enhanced screen UI:

  • Integrated with meshtastic firmware for LoRa devices with TFT display (or potentially also OLED +PSRAM)
  • Stand-alone TFT+MCU devices such as WT32-SC01, CYD or T-HMI connected with meshtastic LoRa devices
  • Linux based devices with LoRa shield, e.g Raspberry Pi, Meshstick, Milk-V Duo/Mars with TFT display (hat or diy)
  • Native Linux X11 application with SimRadio e.g. for tests, GUI simulation & debugging (MQTT only application)

scenario 1scenario 2scenario 3scenario 4

Vectors and icons by SVG Repo
Graphics using LVGL library

📱 Supported Devices

Firmware-integrated TFT devices

  • LILYGO T-Deck / T-Deck Plus
  • LILYGO T-Lora Pager
  • LILYGO T-Watch S3
  • LILYGO T-Watch Ultra
  • LILYGO T-Display Pro S3
  • Seeed SenseCAP Indicator
  • Seeed Wio Tracker L2
  • Seeed Mesh Tracker X2
  • Heltec V4 / V4 R8 TFT
  • Elecrow ThinkNode M9
  • Elecrow ThinkNode MX
  • Elecrow CrowPanel Advance S3 (2.4"/2.8"/3.5")
  • Elecrow CrowPanel Advance P4 (5.0"/7.0"/9.0"/10.1")
  • RAK WisMesh TAB V2
  • unPhone
  • PICOmputer S3

Stand-alone (via standalone-ui project)

  • LilyGo T-HMI (320x240)
  • Replicator 4848S040 (esp32 + nrf52 radio)
  • Makerfabs (480x480)
  • WT32-SC01 (Plus) (480x320)
  • NM CYD C5 (320x240, 8MB PSRAM)
  • JC4827W543C
  • Sunton/EstarDyn CYD (original - no longer working due to insufficient memory)

DIY / generic LGFX boards

  • Generic ESP32 + ILI9341/ST7789/ILI9488 + XPT2046/FT6236 (see Mesh-Tab below)
  • NodeMCU-32S + ILI9341/XPT2046
  • Makerfabs 480x480
  • ESP32 4848S040

📝 TODOs

General Architecture

  • Overall design (MVC approach)
    • DisplayDriver inheritance hierarchy
    • DisplayDriver factory
    • TFT Driver
    • OLED Driver
    • E-Ink Driver
    • View hierarchy
    • View factory
    • Controller design and interface implementation
    • Controller <-> model interface
      • Packet based thread safe interface
      • serial communication interface
      • protobuf encoding/decoding
    • Logging interface
    • Add lvgl compatible input driver interface
    • Add interface for persistency
      • Screen calibration data
      • Device settings (General)
      • Message storage
      • Serial connection config
  • Dynamic behavior
    • Startup config
    • Restart behavior
    • Display sleep
    • Heartbeat timer based on device input actions
  • Localisation support
    • Bulgarian translation
    • Czech translation
    • Danish translation
    • Dutch translation
    • Finnish translation
    • French translation
    • German translation
    • Greek translation
    • Hungary translation
    • Italian translation
    • Netherlands translation
    • Norwegian translation
    • Polish translation
    • Portuguese translation
    • Russian translation
    • Slovenian translation
    • Spanish translation
    • Swedish translation
    • Turkish translation
    • Ukrainian translation
  • Support dynamic OLED / Color(TFT) selection
  • Add support for UI scaling and try eliminate fixed positioning (lvgl v9)
  • Allow co-existence of generated files/views by different eez-studio projects
  • Douple display buffer DMA (P4 only)
  • E-Ink support
  • RP2350 support

Meshtastic UI (general)

  • Boot screen
  • Customizable boot screen
  • Home Screen
    • Messages info
    • Nodes info
    • Time and Date
    • LoRa info
    • GPS info
    • WiFi info
    • MQTT info
    • SD card info
    • Free memory info
    • Node fingerprint info
  • Nodes panel
    • Scroll display and sorting
    • Node details
    • Position data
    • Telemetry data display
    • Repeater support (manual insertion)
    • LastHeard & time source handling improvements
    • Remote Node configuration
    • Filter (offline, unknown, channel, public key, position, hops away, by name)
    • Highlight (position, telemetry, IAQ, by name)
  • Group channel panel
  • Chat panel
    • Scroll container and messages display
    • Virtual keyboard
    • Message acknowledgement
    • Delete chat
  • Map
    • Tiles dynamic loading
      • SD card
      • WLAN
    • Pan & Zoom
    • Node locations
    • PMTiles support
    • Location precision
    • Geofence
  • Settings
    • Basic Settings
      • User name
      • Region
      • Modem Preset
      • Channel
      • Device Role
      • Screen Timeout
      • Screen Calibration
      • Screen Lock
      • Brightness
      • Input Control
      • Message Alert / Ringtones
      • Language
      • Timezone
      • Maps
      • Audio
      • NodeDB / Factory Reset / Chat History
      • Reboot / BT Programming / Shutdown
    • Advanced Settings
      • General Settings
      • Radio Settings
      • Module Settings
  • Status bar with battery symbol
  • UI Keyboard navigation & control
  • Latin supplemental fonts
  • Cyrillic font glyphs

OLED

  • Provide demo for OLED 128x64 screen
  • Space and RAM requirements analysis

🐧 Portduino (Raspberry / native linux)

  • Project integration into firmware
  • Display driver run-time configuration interface
  • Add missing settingsMap entries for DisplayDriverConfig
  • Integrate lvgl keyboard input driver
  • Add support for several SPI devices
  • Add pwm brightness control
  • IP address display (eth/wlan)
  • Target environment cleanup
  • SDL support

📱 Stand-alone Device

  • Dedicated standalone-ui project
  • Sunton/EstarDyn CYD support (320x240) Note: no longer working due to insufficient memory
  • NM CYD C5 (320x240) with 8MB PSRAM
  • LilyGo T-HMI support (320x240)
  • Replicator support (esp32 + nrf52 radio)
    • Display driver
    • 480x480 view -> scaled 320x240
  • WT32-SC01 (Plus) support (480x320)
    • Display driver
    • 480x320 view -> scaled 320x240
  • image size reduction
  • Fix/Workaround serial light sleep UART reading issue (-> firmware)
  • Heartbeat timer improvements
  • Serial data send/receive
    • UART connection support
    • TCP/IP connection support
    • WLAN connection support
    • Bluetooth connection support
  • Serial Interface configuration UI screen
  • Allow serial connection initialisation at runtime

Architecture Overview device-ui library (Class Diagram)

class diagram

Stats

Alt

About

meshtastic device-ui library

Resources

Security policy

Stars

499 stars

Watchers

28 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages