Das Problem heute
Direkt adressierte Nachrichten (Direct) folgen einem gespeicherten Pfad aus Repeater-Kennungen. Fällt ein Repeater auf dem Pfad aus, geht die Nachricht ins Leere, bis der Absender den Pfad verwirft und per Flood neu sucht. Außerdem schneidet jeder Repeater seine eigene Kennung aus dem Pfad ab. Am Ziel ist der Weg also nicht mehr nachvollziehbar.
Was sich ändert
1. Ein Zeiger statt Abschneiden. Der Pfad bleibt unverändert im Paket, ein Zähler (Cursor) wandert pro Hop weiter. Jeder Repeater prüft nur, ob an der aktuellen Stelle seine Kennung steht. Das nutzt das bestehende Paketformat „Transport Direct". Die Zusatzfelder tragen jetzt Modus, Cursor, Sequenznummer, Sitzungs-ID und Verschlüsselungstyp.
2. Vier Modi
- Normal: wie bisher, nur mit Cursor.
- Wide: Steht an der Cursor-Stelle ein anderer Repeater, aber der ist ein direkter Nachbar mit ausreichendem Signal, leitet dieser Knoten das Paket stellvertretend weiter. Dabei trägt er seine Kennung in den Pfad ein und markiert ihn als „modifiziert". So lernt der Empfänger, welchen Weg das Paket wirklich genommen hat. Die Wartezeit entspricht der von Flood-Paketen, damit sich Nachbarn nicht gegenseitig überfahren.
- Wide (modifiziert): der markierte Zustand nach so einem Sprung.
- Link-ID: ein fester Verbindungs-Bezeichner. Im Code noch nicht umgesetzt.
3. Neue Option für Repeater-Betreiber. Mit wide.snr.thresh legt man fest, ab welchem SNR ein Nachbar als Ersatz infrage kommt. Der Wert taucht auch in den Statistiken auf.
4. Neue Verschlüsselung. Statt des bisherigen Verfahrens wird ein Streaming-Modus mit 8-Byte-Authentifizierungstag verwendet. Als IV dienen Sitzungs-ID und Sequenznummer, damit sind Pakete eindeutig. Zwei weitere Verschlüsselungstypen sind schon reserviert.
5. Sanfter Umstieg. Jeder Kontakt startet im alten Modus. Kommt von ihm ein Paket im neuen Verfahren, merkt sich der Companion: „kann das" und antwortet fortan ebenso. Alte und neue Firmware sollten also weiter zusammen funktionieren. Quittungen (ACKs) laufen auf demselben Weg zurück.
Was daraus werden kann
Die Sequenznummer bildet die Basis für Verlust-Statistiken pro Verbindung. Im Code ist das als Aufgabe vermerkt, aber noch leer. Die Companion-Schnittstelle erhält dafür neue Kontakt-Felder, die Apps müssen sie also lernen.
Was noch offen ist
- Link-ID-Modus fehlt.
- Ein Kommentar im Code hinterfragt das Zusammenspiel mit Zero-Hop-Paketen.
- Es werden Randfälle abgefangen, etwa wenn der nächste Pfad-Eintrag der eigene Knoten ist.
Für uns heißt das: Repeater-Standorte mit mehreren erreichbaren Nachbarn profitieren am meisten. Das Netz wird weniger auf Floods zurückfallen müssen.
Außerdem im dev-Zweig
- BLE + WiFi für T-Beam Supreme, Heltec V4 (TFT) und ThinkNode M5
- Zeitzonen in Viertelstunden (z. B. Nepal +5:45)
- Auto-Erkennung für SH1106/SSD1306-Displays, überarbeitetes E-Ink-Verhalten
- Verfeinerter LR2021-Support, Fix für negative Sendeleistung
- Scope-0-Korrekturen, Härtung gegen ungültige Eingaben, Build-Fixes
Quelle: Branches dev und new-direct-mode im MeshCore-Repository, Stand 29. Oktober 2026.