By Pelle R on Sunday, 16 August 2026
Category: Tech

Bygga en tvåvägsbrygga mellan Meshtastic och Reticulum (LXMF

1. Inledning & Syfte

Inom digital täckningslös och off-grid kommunikation finns det idag två mycket populära men helt olika ekosystem:

Syftet med detta projekt var att bygga en tvåvägs mjukvarubrygga körandes på en Linux-nod (Hermes). Bryggan lyssnar på meddelanden i båda nätverken och skickar dem vidare till det andra nätverket. 

2. Hårdvara och Mjukvaruarkitektur

  • Värd-system: Raspberry Pi (Hermes) med Linux Ubuntu/Debian.
  • LoRa-gränssnitt: Meshtastic-kompatibel HAT ansluten via GPIO.
  • Protokoll & Miljö:
  • 3. Utmaningar och Lärdomar: Från Serieport till TCPÅtervändsgränden: Seriell kommunikation över UART (SerialInterface)

    Inledningsvis var planen att bryggan skulle kommunicera direkt med Meshtastic HAT:en via Raspberry Pi:ns interna serieport (/dev/serial0).


    Hantering av TCP-avbrott och "Broken Pipe"

    När vi gick över till TCP dök ett nytt problem upp under nattlig drift. Om TCP-socketen tappades kastades ett BrokenPipeError inuti en av Meshtastic-bibliotekets bakgrundstrådar (sendHeartbeat).

    Eftersom felet inträffade i en separat tråd kraschade inte Huvudprocessen i Python, vilket gjorde att systemd inte märkte att tjänsten var död. Skriptet hamnade i ett "zombie-läge".

    Detta löstes genom att införa en custom_thread_excepthook: 

    ​Tillsammans med en omslutande connect_meshtastic()-loop och systemd-konfiguration har vi nu en tjänst som startar om sömlöst och återansluter automatiskt vid nätverksstörningar.

    4. Hur Bryggan Fungerar i Praktiken​

    ​Riktning 1: Reticulum (LXMF) $\rightarrow$ Meshtastic

    1. Bryggan skapar och sparar en permanent LXMF-identitet på disk (/var/tmp/lxmf_bridge/identity) så att dess 32-teckens LXMF-adress inte ändras vid omstart.
    2. Vid start skickar bryggan ut en RNS Announce så att klienter som MeshChat och Sideband hittar vägen till bryggan.
    3. När ett LXMF-meddelande tas emot av LXMRouter avkodas texten och sänds ut som en textbroadcast på Meshtastic-nätet via m_interface.sendText().

    Riktning 2: Meshtastic $\rightarrow$ Reticulum (LXMF)

    Mottagaren on_meshtastic_message analyserar inkommande textpaket från Meshtastic-nätet:

    1. Broadcast till Reticulum (#rns):Om ett meddelande innehåller hashtaggen #rns (t.ex. #rns Hallå nätet!), rensas taggen bort och meddelandet skickas som en opportunistisk LXMF-broadcast ut på Reticulum.

    Meshtastic: "#rns Test från fältet" ──> LXMF: "[!6ec3d6cc via Mesh]: Test från fältet"

    Direktmeddelande via 32-teckens LXMF-hash: Om någon på Meshtastic vill skicka ett riktat meddelande till en specifik LXMF-nod på Reticulum kan de ange adressen i vinkelparenteser:

    Meshtastic: "<ea302e71e9840c805e42871d8a82ba77> Hej direkt!"


    Bryggan identifierar regex-mönstret, plockar ut máladressen och skickar ett direkt adresserat LXMessage (DIRECT method) på Reticulum. 

    5. Slutsats & Framtida Utveckling​

    Genom att kombinera LXMF:s adresserbara och flexibla nätverksprotokoll med Meshtastics enkla LoRa-radioinfrastruktur har vi skapat en robust sömlös brygga mellan två helt olika mesh-världar.

    Möjliga framtida utökningar:

    Leave Comments