Hier ist die kompakte Übersicht für die Repeater-Einrichtung. Ideal als Vorlage für neue Nodes, etwa oben auf der Koralpe oder generell im Netz.
Wenn du nur die Befehle brauchst:
password <deinPasswort>
set name AT-WO-Koralpe
set radio 869.618,62.5,8,5
set dutycycle 10
set path.hash.mode 1
set owner.info 📌 Hausdach 5m|📻 RAK 4631|📡 5dBi|🔋 5,2 Ah, 5W 🌞|🌐 Regions (Aktiv)|✉ t.me/dein_handle
set lat 46.7660
set lon 14.9640
set advert.interval 0
set flood.advert.interval 47
set repeat on
region allowf at
region allowf at-ktn
region save
Danach mit get <name> kontrollieren. Details zu jedem Punkt weiter unten.
Saubere Zuordnung nach dem Schema LAND-BEZIRK-NAME (Bezirk = KFZ-Kennzeichen)
Beispiel: AT-WO-Koralpe
Weitere Beispiele aus dem laufenden Netz: AT-WO-St.Ulrich, AT-MD-FFHz-R, AT-W-1110-MG25-REP, AT-MD-2482-Wienerst
Bezirkskennzeichen für Kärnten: K Klagenfurt Stadt · KL Klagenfurt Land · VI Villach Stadt · VL Villach Land · FE Feldkirchen · HE Hermagor · SV St. Veit · SP Spittal · VK Völkermarkt · WO Wolfsberg
Das Schema gilt für alle Nodes an festen Standorten – Repeater, Room Server und Observer gleichermaßen. Die Rolle steht nicht im Namen, sie ergibt sich aus der Firmware.
Was nicht hilft: Heltec V3, ThinkNode M6, Repeater1. Davon stehen mehrere auf der Karte und keiner weiß, wer dahintersteckt.
Für stabilen Betrieb in den AT-Regionen:
CR5 wird über CR8 bevorzugt da dies ca 40% Airtime spart.
In der CLI in einer Zeile:
set radio 869.618,62.5,8,5
Reihenfolge: Frequenz, Bandbreite, Spreading Factor, Coding Rate.
Frequenz, Bandbreite und SF müssen exakt stimmen. Wer hier abweicht, ist für alle anderen unsichtbar. Die Coding Rate ist die Ausnahme: Sie steht im LoRa-Header jedes Pakets, der Empfänger liest sie dort aus. Geräte mit CR5 und CR8 verstehen einander problemlos.
Mehr → Funkeinstellungen
set dutycycle 10
Das muss man setzen, ab Werk steht es auf 50 %.
MeshCore führt pro Gerät ein Sendezeit-Konto über ein Ein-Stunden-Fenster: Es füllt sich laufend nach, nach jeder Sendung wird die Airtime abgezogen, und reicht das Guthaben nicht, wird nicht gesendet, sondern gewartet. Eine echte Bremse also – nur steht sie ab Werk beim Fünffachen dessen, was in Europa erlaubt ist.
Der Grund: Die Firmware ist nicht auf EU eingestellt, sondern auf einen weltweit unverfänglichen Wert. In Regionen ohne Duty-Cycle-Vorgabe ist das sinnvoll, bei uns nicht → Rechtliches
Prüfen:
get dutycycle
Verfügbar ab Firmware v1.15.0. Davor hieß der Befehl set af 9 – funktioniert weiter, gilt aber als veraltet.
Im Alltag greift die Bremse nie; selbst der meistbeschäftigte Repeater im Netz liegt bei 3 bis 5 %. Sie greift, wenn etwas schiefgeht – eine Schleife, ein defekter Node, ein Bot außer Kontrolle. Dann ist es der Unterschied zwischen „riegelt bei 10 % ab" und „sendet viermal so lange über der gesetzlichen Grenze weiter".
Firmware: Unbedingt 1.14.1+ nutzen. Verarbeitet neben 1-Byte nun auch 2/3-Byte-Pakete ohne extra Konfig (bis zu ~21-64 Hops möglich). 1.14.0 hatte einen Fehler im Advert-Verhalten.
Advertising: Halt die AirTime sauber.
0 (Aus)>= 47 StundenMultibyte: Auch am Repeater sollte man mindestens 2-Byte verwenden, um die Identifikation einfacher zu machen und Kollisionen zu verhindern. Gemacht wird das mit dem Befehl set path.hash.mode 1 über die CLI
set advert.interval 0
set flood.advert.interval 47
set path.hash.mode 1
advert.interval in Minuten (60–240 oder 0), flood.advert.interval in Stunden (3–168). 47 Stunden sind zugleich die Werkseinstellung – häufiger bringt nichts, denn jeder Flood-Advert beschäftigt jeden Repeater im Netz.
Frisch geflashte Repeater senden alle 2 Minuten einen lokalen Advert, damit man sie beim Aufbau findet. Sobald du das Intervall einmal manuell setzt, schaltet die Firmware diesen Startmodus ab. Nicht aus Versehen laufen lassen.
Zum Path Hash Mode: 0 = 1 Byte, 1 = 2 Byte, 2 = 3 Byte. Größere Hashes kosten Hops:
| Hash-Länge | maximale Hops |
|---|---|
| 1 Byte | ca. 64 |
| 2 Byte | ca. 32 |
| 3 Byte | ca. 21 |
32 Hops sind in einem Netz unserer Größe reichlich – der Kollisionsschutz wiegt schwerer. Auf Repeatern und Companions gleich setzen, sonst bringt es nichts.
Kurz und knackig im Profil hinterlegen, damit die Community weiß, was Sache ist (Beispiel):
📌 Hausdach 5m
📻 RAK 4631
📡 5dBi
🔋 5,2 Ah, 5W 🌞
🌐 Regions (Aktiv)
✉ t.me/dein_handle
In der CLI wird | zum Zeilenumbruch, du setzt also alles in einem Befehl:
set owner.info 📌 Hausdach 5m|📻 RAK 4631|📡 5dBi|🔋 5,2 Ah, 5W 🌞|🌐 Regions (Aktiv)|✉ t.me/dein_handle
Der Repeater vergleicht den Scope eines ankommenden Pakets mit seinen Regionen und entscheidet danach, ob er es weiterreicht. Ohne Regionen läuft jedes Flood-Paket bis zum Hop-Limit durchs ganze erreichbare Netz.
Verfügbar ab Firmware 1.10.
Für uns in Kärnten sind folgende Regionen wichtig:
*
at
at-ktn
at-ktn-(Bezirk nach KFZ-Kennzeichen)
at-sued
Alle auf Flood Allowed. * steht für Pakete ohne Region-Scope.
Am einfachsten geht das in der App unter Manage Regions – jeder Eintrag lässt sich dort einzeln schalten.
Bestand ansehen:
region
region get at-ktn
Den ganzen Baum auf einmal anlegen – <bezirk> durch dein Kfz-Kürzel ersetzen:
region def at at-ktn at-ktn-<bezirk>|at at-sued
region allowf *
region allowf at
region allowf at-ktn
region allowf at-ktn-<bezirk>
region allowf at-sued
region save
Was region def macht: Ein Cursor startet bei der Wildcard *. Jeder Name wird als Kind des Cursors angelegt, danach rückt der Cursor dorthin. Die Form name|sprung legt name an und setzt den Cursor anschließend auf sprung – so kommt man wieder nach oben, um einen zweiten Ast zu beginnen.
Ergibt diesen Baum:
*
└── at
├── at-ktn
│ └── at-ktn-<bezirk>
└── at-sued
at-sued hängt also parallel zu at-ktn unter at, nicht darunter.
Einzeln geht es auch:
region put at-ktn at
region allowf at-ktn
region save
region put <name> [parent] legt an, der zweite Parameter ist die übergeordnete Region. Ohne Angabe hängt sie unter der Wildcard *. Blockieren geht mit region denyf <name>.
Heimatregion und Standard-Scope für selbst erzeugte Pakete:
region home at-ktn-wo
region default at-ktn
region savenicht vergessen. Änderungen gelten sonst nur bis zum nächsten Neustart.
Kurz abgehandelt, aber nicht weglassen:
Admin-Passwort – als Allererstes. Solange das Standardpasswort drin ist, kann sich jeder in Funkreichweite anmelden und deinen Repeater umkonfigurieren.
password <deinPasswort>
Position in Dezimalgrad, sonst erscheint der Repeater nicht sinnvoll auf der Karte:
set lat 46.7660
set lon 14.9640
Weiterleitung muss an sein, sonst ist es kein Repeater:
set repeat on
Sendeleistung in dBm. 22 dBm sind rund 158 mW:
set tx 22
Der rechtliche Grenzwert von 500 mW ist e.r.p., also inklusive Antennengewinn. Mit einer Richtantenne ist die Reserve schnell aufgebraucht → Rechtliches
Multi-Acks – gehört eigentlich auf den Companion, nicht hierher. Die Bestätigung einer Direktnachricht sendet immer das Zielgerät, und das ist bei normalen Nachrichten ein Handgerät. Am Repeater wirkt die Einstellung nur für Nachrichten, die an ihn selbst gehen.
Einstellen also dort → Companions. Schadet am Repeater nicht, bringt aber wenig.
Gast-Zugang – lass das Gast-Passwort leer, damit sich jeder anmelden und nachschauen kann:
set guest.password
Das ist gefahrlos. Ein Gast sieht Status, Telemetrie, Nachbarn und die Owner Info. CLI-Befehle sind Admin-Sache und für Gäste gesperrt, ebenso die Zugriffsliste. Wer den Repeater umkonfigurieren will, braucht das Admin-Passwort aus Punkt 6.
Offene Repeater sind gute Praxis: Wer wissen will, wie es einem Node geht, muss dann nicht erst jemanden anschreiben.
Optional: set loop.detect moderate erkennt im Kreis laufende Pakete, clock sync stellt die Uhr.
Am montierten Repeater geht das ohne Abbau und ohne USB-Kabel – aber nicht aus der Ferne. Du musst in Funkreichweite von WLAN bzw. Bluetooth sein, also hin.
start ota
Was danach passiert, hängt vom Chip ab:
| Plattform | Beispiele | Was start ota tut |
|---|---|---|
| ESP32 | Heltec V3 | Öffnet einen offenen WLAN-Accesspoint MeshCore-OTA. Die Antwort nennt die Adresse, dort lädst du im Browser die neue Firmware hoch |
| nRF52 | RAK, ThinkNode M6, SenseCAP | Startet BLE-DFU. Update läuft über Bluetooth, z. B. mit der nRF-Connect-App |
start otanur absetzen, wenn du davorstehst. Der Befehl lässt sich als Admin auch über Funk schicken – dann steht der Repeater im OTA-Modus und wartet auf jemanden, der nicht kommt. Beim ESP32 kommt dazu, dass ein offener, unverschlüsselter Accesspoint aufmacht.
Nicht jeder Build hat OTA einkompiliert. Antwortet das Gerät mit Error, kann die Firmware es nicht – dann bleibt nur USB.
Nach dem Setzen einmal alles zurücklesen:
get name
get radio
get dutycycle
get path.hash.mode
get advert.interval
get flood.advert.interval
get owner.info
region
Tippfehler in der Frequenz fallen sonst erst auf, wenn wochenlang niemand den Repeater hört.
Start · Schnellstart · Funkeinstellungen · Kanäle · Geräte · Rollen · Repeaterliste · Repeater Setup Guide · Observer · meshinfra · Karte · FAQ · Glossar · Mitmachen · Alle Themen