MeshCore Chat – ein Desktop-Client für LoRa-Mesh-Netzwerke

Erstellt: 26.07.2026

Seit einigen Monaten schreibe ich an MeshCore Chat, einem Desktop-Client für MeshCore-Mesh-Funknetze. MeshCore ist eine Firmware für LoRa-Geräte, die Nachrichten über mehrere Hops durch ein selbstorganisierendes Funknetz weiterleitet – ohne Internet, ohne Provider, nur Funk.

Die offiziellen Apps für Handy und Browser sind gut, mir fehlte aber ein vollwertiges Programm für den Desktop, mit dem ich das Netz nicht nur benutzen, sondern auch beobachten und administrieren kann. Genau das ist MeshCore Chat geworden: eine Qt6-Anwendung in Python, die sich per serieller Verbindung oder Bluetooth LE mit dem LoRa-Gerät verbindet.

Was es kann

Chatten. Private Nachrichten und Kanäle, komplette Verlaufsspeicherung in SQLite, Kontaktverwaltung gruppiert nach Typ (Client, Repeater, Room Server, Sensor), Room-Server-Login mit gespeicherten Passwörtern.

Karte. Alle Kontakte an ihrer letzten bekannten Position auf einer OpenStreetMap. Routen lassen sich einzeichnen, per Drag & Drop verschieben und an den passenden Repeater einschnappen. Ein Overlay zeigt den Nachbarschaftsgraphen des Funknetzes – also welche Repeater sich gegenseitig direkt hören. Diese Daten sammelt die App im Hintergrund aus Adverts, Traces und Repeater-Abfragen und benutzt sie, um mehrdeutige Pfad-Hashes aufzulösen. MeshCore überträgt pro Hop nämlich oft nur ein einzelnes Byte, und bei 254 möglichen Werten kollidieren zwei Repeater schneller als man denkt.

RF-Monitor. Ein Live-Sniffer für alles, was über die Antenne kommt: ADVERT, TRACE, PATH, GRP_TXT, ACK und mehr werden dekodiert und lesbar aufbereitet – auch dann, wenn die Firmware den Inhalt nicht entschlüsseln kann. Kanäle, deren Schlüssel bekannt ist, werden lokal entschlüsselt.

Admin. Repeater und Room Server lassen sich per Rechtsklick fernwarten: Telemetrie, eine Shell mit History und Kommandoreferenz, die komplette Konfiguration in Gruppen mit eigenen Refresh/Save-Buttons und eine interaktive Region-Verwaltung. Es wird bewusst nichts automatisch geladen – jede Abfrage kostet Funkzeit.

Bots. Neun eingebaute Bots (Ping, Test, Path, Stats, Version, Multitest, WhoIs, Help, PrefixFree) mit einem Template-System und über 150 Variablen. Die Antworten sind frei anpassbar und werden im Bot-Manager mit Live-Vorschau bearbeitet, inklusive Byte-Zähler für das 146-Byte-Budget einer Funknachricht.

Dazu kommen ein Headless-Modus für den Raspberry Pi (alle Bots, Statistiken und Datenbanken ohne Display), optionales MQTT-Sharing für Netzwerk-Analyzer und ein CLI-Tool zum Senden aus Skripten.

Screenshots

Chat mit Nachrichtendetails

Chat + Details

Karte mit Nachbarschaftsverbindungen

Karte mit Nachbarschaftsverbindungen

RF-Monitor

RF Monitor

Admin-Fenster: Repeater-Konfiguration

Admin Repeater Config

Bot-Verwaltung mit Live-Vorschau

Bot Manager

Ausprobieren

Gebraucht werden Python 3.10+, Qt6 und ein MeshCore-fähiges LoRa-Gerät. Die Start-Skripte richten die virtuelle Umgebung beim ersten Aufruf selbst ein:

git clone https://codeberg.org/mEDI/meshcore_chat.git
cd meshcore_chat
./start.sh

Unter Windows entsprechend start.bat. Ein ./start.sh update zieht später neuen Code und aktualisiert die Abhängigkeiten in einem Schritt.

Die App ist bei Version 0.8.6 angekommen und läuft bei mir im Alltag stabil – ein Release-Kandidat ist sie damit trotzdem noch nicht. Über Rückmeldungen, Fehlerberichte und Mitentwickler freue ich mich.