Files
roro9stack/docs/adr/0001-own-firmware-speaking-meshtastic.md
T

1.2 KiB

Own firmware that speaks Meshtastic, not a Meshtastic fork

We build our own firmware from existing libraries (PlatformIO + Arduino-ESP32, M5Cardputer/M5Unified, RadioLib, TinyGPSPlus, nanopb with Meshtastic's published protobufs). We implement the Meshtastic protocol ourselves as one pluggable Mesh Protocol, rather than forking the Meshtastic firmware, which already supports this exact hardware.

A fork would give full compatibility on day one, but its architecture is built around being a single-purpose Meshtastic node. That conflicts with our goals: a multi-app OS with a fully custom UX, and room for other mesh protocols (e.g. MeshCore) later.

Consequences

  • We accept partial Meshtastic compatibility at first: text on channels, Direct Messages, node list, position and relaying.
  • The phone-app (BLE) API and PKI-encrypted Direct Messages are deferred, and we must re-implement protocol details ourselves.
  • Multi-boot with stock Meshtastic via a launcher was rejected: it gives none of our own UX.

Note (2026-10-04, M2)

NMEA is parsed by our own small, host-tested parser instead of TinyGPSPlus: the GNSS App's Sky view needs the satellite list (GSV) across several constellations, which TinyGPSPlus doesn't track. See docs/milestones/M2.md, Q66.