Skip to content

things-nyc/lwom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LoRaWAN‑over‑Meshtastic (LWoM)

Purpose

The goal of this project is to tunnel LoRaWAN Class A traffic from devices over Meshtastic, allowing devices out of gateway range to reach a LoRaWAN Network Server (LNS) without changing the higher level of the device implementation. (For initial development, we assume use of using the Arduino LMIC.) To bridge traffic back to the LNS, a dedicated Meshtastic node forwards frames to a Linux process that emulates a gateway (Semtech UDP first; LoRa Basics Station later). We map LoRaWAN semantics (registration, OTAA/ABP, end‑to‑end security, and Class A ordering) onto Meshtastic transport without emulating the LoRa PHY at the LMIC radio() layer. The LMIC high‑level API remains unchanged. We introduce new runtime regions like CFG_Meshtastic_us915 and CFG_Meshtastic_eu868 whose constraints are defined by Meshtastic.

While Class A is our initial focus, Meshtastic’s always-on capability means Class C semantics can be supported with minimal complexity. The architecture is independent of the LoRaWAN MAC implementation; LMIC is our first target, but the design generalizes to other stacks.


High-Level Architecture

flowchart LR
    A["End Device (LoRaWAN MAC, e.g., LMIC)"] -- "LoRaWAN PHYPayload over Meshtastic" --> B["Meshtastic Node (dedicated, no relay)"]
    B -- "USB/Serial" --> C["Linux Bridge"]
    C -- "TTS (Semtech UDP / Basics Station)" --> D["LoRaWAN LNS (TTN/TTS)"]
    D -- "Downlink (soft RX timing)" --> C
    C -- "Meshtastic downlink" --> B
    B --> A
Loading
  • Preferred LNS: The Things Stack (TTN/TTS) for TTN compatibility; ChirpStack is fine for local testing.
  • Transport limits: Meshtastic Data.payload max 233 bytes; LoRaWAN FRMPayload ≤ 220 bytes (no FOpts) so total PHYPayload ≤ 233 bytes.
  • Timing: Use soft RX windows (e.g., RX1 delay 5–10 s) rather than strict LoRa PHY 1 s/2 s.
  • ADR: Disabled for Meshtastic regions.

Quick Links


Why We Pivoted

Strict PHY-level emulation at the LMIC radio() interface produced timing constraints that are brittle and offer little value relative to the LoRaWAN system model we want (secure join, end-to-end encryption, Class A semantics). Meshtastic’s transport limits (not the LoRa PHY) now define our runtime region behavior, including payload cap and soft RX timing.


References

  • Meshtastic payload/structure: Data.payload 233 B — see mesh.options and message architecture docs.
  • TTN/TTS US915 payload sizing and RX parameter controls.
  • TTS gateway connectivity: Semtech UDP (legacy) and Basics Station (recommended).

About

LoRaWAN over Meshtastic

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •