Repeater via CLI configureren
Deze pagina legt uit hoe je een MeshCore-repeater instelt via de CLI (command line interface, of seriële console). Na het doorlopen kun je de repeater via de CLI bedienen, de belangrijkste instellingen aanpassen en weet je welke parameters helpen voor een stabiele werking. Ook als je meerdere repeaters naast elkaar gebruikt. De instructie is voor gebruikers die de repeater via USB aansluiten of via een T-Deck of smartphone-client op afstand beheren.
Wat hebt je nodig?
- Repeater met MeshCore-firmware – Geflasht en bij voorkeur via USB aangesloten voor de eerste configuratie.
- Toegang tot de CLI – Via de seriële console (bijv. config.meshcore.dev of flasher.meshcore.dev → Console), via
pio device monitor(in een PlatformIO-project) of een ander terminalprogramma (bijv. PuTTY op Windows), of via een T-Deck/smartphone-client met remote administration. - Adminwachtwoord – Standaard is dat
password; wijzig dit na de eerste login.
Stap 1: Verbinding maken met de repeater

Dit kan op verschillende manieren.
- Browser: Sluit de repeater aan met USB. Ga met Chrome naar config.meshcore.io of flasher.meshcore.io, kies "Console" (of vergelijkbaar) en selecteer de juiste USB-poort.
- Terminal (pio): Sluit de repeater aan met USB. In de MeshCore-projectmap:
pio device monitorIndien gevraagd: gebruik 115200 baud, 8N1, geen flow control. - Op afstand, via radio: Log in met de Meshcore-app, ga naar Contacts en klik de repeater aan. Hiervoor moet je een zo direct mogelijke verbinding hebben; als er veel repeaters tussen zitten zul je veel timeouts krijgen. Na inloggen klik je op
Command Line.
Zodra de verbinding staat, verschijnt er een prompt. Typ een commando en druk op Enter; de repeater reageert met een regel tekst.
Stap 2: Inloggen
Voer het adminwachtwoord in. De standaardwaarde is password. Na een geslaagde login kun je alle configuratiecommando's gebruiken.
Je kunt het wachtwoord wijzigen met:
password <uw_nieuwe_wachtwoord>
Bewaar geen standaardwachtwoord in productie; kies een sterk wachtwoord en noteer het veilig.
Stap 3: Basisconfiguratie
Naam en positie
Geef de repeater een herkenbare naam en eventueel coördinaten (handig voor kaarten en discovery):
set name <naam>
set lat <breedtegraad>
set lon <lengtegraad>
De naam mag maximaal 24 tekens zijn als je een locatie gebruikt, anders 32. Emoji's worden meestal goed ondersteund, maar kosten meestal 4 bytes (tekens), soms zelfs meer dan dat. Check of de emoji's goed worden weergegeven.
Contactinformatie
Soms veroorzaken repeaters problemen, door verouderde firmware of verkeerde instellingen. Het is daarom belangrijk dat anderen weten hoe ze je kunnen bereiken, om het samen op te lossen. Zet daarom je emailadres in de owner info.
get owner.info
set owner.info me@example.com
Over privacy: ook zonder contactinformatie is jouw repeater op te sporen, met apps als https://mesh-hunter.eu/. Maar dat is wel meer werk en dus zonde van iedereens tijd.
Radio: frequentie, bandwidth, spreading factor
Stel de LoRa-parameters in volgens je regio en regelgeving. Landelijk (Nederland) wordt vaak 869,618 MHz gebruikt met 62,5 kHz bandwidth, SF7 en CR5. Controleer de regionale instellingen. N.B.: als het bereiken van een eerste repeater lastig blijkt, kan CR8 instellen soms helpen dit te verbeteren.
Huidige waarden bekijken:
get radio
Waarden instellen (freq in MHz, bw in kHz, sf 5–12, cr 5–8):
set radio <freq>,<bw>,<sf>,<cr>
Voorbeeld landelijk (869,618 MHz, 62,5 kHz, SF7, CR5 de huidige NL instellingen):
set radio 869.618,62.5,7,5
Let op: Na het wijzigen van radio-instellingen moet je de repeater herstarten met reboot.
Zendvermogen
Stel het zendvermogen in (in dBm). Te hoog kan in strijd zijn met de wet; raadpleeg de handleiding van je board:
get tx
set tx <dbm>
Stap 4: Routing en vertragingen
Het vertragen van berichten kan helpen om storingen te voorkomen.
- Heb je twee of meer repeaters in elkaars bereik (bijv. een omni- en een Yagi-antenne)? Dan kunnen ze tegelijk proberen te herhalen en elkaar storen. De firmware biedt vertragingsinstellingen. Zo zenden repeaters niet gelijktijdig.
- Vertragingen worden ook gebruikt om verkeer over lange afstanden te synchroniseren. Heel hoge repeaters kunnen in 1 hop enorme afstanden overbruggen. Als hetzelfde bericht via veel andere repeaters veel later aankomt, kan daar zo veel tijd tussen zitten, dat sommige repeaters het bericht weer als nieuw bericht zien, en opnieuw doorgeven. Om dat te vermijden krijgen hoge repeaters, die grote afstanden overbruggen, een extra vertraging.
Vertraging bij flood-verkeer (txdelay)
Hoe hoger de factor, hoe groter de wachttijd vóór het opnieuw uitzenden van flood-verkeer. Standaard 0.5.
get txdelay
set txdelay <waarde>
Waarde tussen 0 en 2.
Bij meerdere repeaters bij elkaar: geef de ene repeater een lagere waarde (bijvoorbeeld 0.3, zendt sneller), de andere een hogere (bijvoorbeeld 0.8, zendt later).
Bij een enkele repeater: afhankelijk van de hoogte.
| Als je repeater net boven dakhoogte staat | set txdelay 0.5 |
| Als je repeater boven op een hoog gebouw staat | set txdelay 1.0 |
| Als je repeater 100m of hoger staat | set txdelay 2.0 |
Vertraging bij direct verkeer (direct.txdelay)
Zelfde idee voor direct (point-to-point) verkeer. Standaard ongeveer 0.3 op de repeater.
get direct.txdelay
set direct.txdelay <waarde>
Verwerkingsvertraging bij ontvangst (rxdelay) – experimenteel
Optioneel. Met rxdelay stel je een extra vertraging in (waarde 0–20) vóór de repeater een ontvangen flood-pakket verwerkt. Standaard 0 (uit). Geef op één van de twee repeaters een waarde zoals 3 of 5. Die repeater reageert dan later; dat geeft minder botsing.
get rxdelay
set rxdelay <waarde>
Samenvatting bij twee repeaters (bijv. omni + Yagi): Stel op de ene repeater lagere vertragingen in (txdelay 0.3, direct.txdelay 0.2, rxdelay 0) en op de andere hogere (txdelay 0.8, direct.txdelay 0.5, rxdelay 3). Zo zendt de eerste sneller, de tweede vult aan waar nodig.
Herhalen aan/uit
Standaard staat herhalen aan. Je kunt het uitzetten met:
get repeat
set repeat off
Zet het weer aan met set repeat on als de repeater weer moet doorsturen.
Stap 5: Zendtijd en interferentie
Dutycycle
De dutycycle is de maximale zendtijd in percentage van de totale tijd. In het Nederlandse Meshcore is dat wettelijk 10%. Dus je device mag maximaal 10% van de tijd zenden. Standaard staat deze waarde op 50%, wat veel te veel is, dus pas dit aan!
get dutycycle
set dutycycle 10
Interferentiedrempel (int.thresh)
Optioneel. De repeater meet een ruisvloer. Ligt de huidige RSSI meer dan int.thresh dB boven die ruisvloer? Dan wordt het kanaal als "bezet" gezien. De repeater wacht dan met zenden (listen-before-talk). Standaard is de drempel 0 (uit).
get int.thresh
set int.thresh <waarde>
Waarde in dB (0 = uit; 8–15 is gangbaar). Voor de landelijke instellingen (869 MHz, SF8) is 10 een goed startpunt. Veel valse "kanaal bezet"-meldingen? Probeer lager (bijv. 8). Storende interferentie? Probeer hoger (12–15).
Stap 6: Regio's
In Nederland hebben we afgesproken om regio's te gebruiken. Dat houdt in dat als je een bericht verstuurt, je moet aangeven voor welke regio dat bestemd is. Dat kan nl zijn (Nederland), of bijvoorbeeld nl-ams in een kanaal zoals #amsterdam. Repeaters hebben een lijst van regio's waarvoor ze berichten mogen doorgeven. Voor meer informatie, zie Regio en scope.
Stap 7: Loop detection
In sommige gevallen kan een bericht dat rondgaat door repeaters opnieuw rondgestuurd worden. Dat is nadelig, omdat er dan onnodig radio-zendtijd wordt gebruikt, mogelijk ten koste van andere berichten. Om de kans hierop te verkleinen is er deze instelling:
get loop.detect
set loop.detect minimal
Stap 8: Path hash mode
Als een bericht wordt doorgegeven, voegt elke repeater zijn eigen short ID toe aan het bericht. Daarmee is te traceren hoe het bericht door de mesh gereisd is. Repeaters kunnen hieraan zien of ze een bericht al eerder hebben doorgegeven. Een short ID bestaat uit de eerste 1, 2 of 3 bytes van de public key van een repeater. Maar met 1 byte heb je slechts 256 mogelijke waardes. In Nederland zijn enkele duizenden repeaters. Elke byte komt dan al gauw een keer of 10 voor. Er kan dan verwarring ontstaan over welke repeater bedoeld wordt.
De verzender bepaalt of er 1, 2 of 3 byte paden worden gebruikt. Dus meestal is dat de companion.
Maar repeaters zijn soms ook verzenders, namelijk van flood adverts, dus berichten waarmee ze zichzelf adverteren aan de omliggende repeaters en companions. Voor die berichten is er de instelling path.hash.mode.
| Path hash mode | Short ID lengte | Maximale pad lengte |
|---|---|---|
| 0 | 1 byte | 64 hops |
| 1 | 2 bytes | 32 hops |
| 2 | 3 bytes | 21 hops |
In de Nederlandse Meshcore community hebben we afgesproken om minimaal hash mode 1 te gebruiken, dus short ID's van 2 bytes. Beter is nog om 3 bytes te gebruiken; dan zijn de paden in bijvoorbeeld MC-Radar het duidelijkst en zekerst.
get path.hash.mode
set path.hash.mode 2
Steeds meer repeaters blokkeren berichten met 1 byte hashes. De reden is dat vrijwel alle spam en andere overlast 1 byte hashes gebruikt.
Specifieke commando's voor DutchMeshCore firmware
Filter
Heb je de DutchMeshCore firmware op je repeater? Dat zie je met het commando version. Die firmware heeft een filter dat je kan gebruiken om spam en andere overlast tegen te houden.
Aanbevolen instellingen:
- Met
filter onwordt het filter ingeschakeld met standaardinstellingen. Er is dan een rate limiter actief, die een overvloed aan berichten kan indammen. - Met
filter hash 2worden berichten alleen doorgegeven als ze 2 of 3 byte hashes hebben. - Met
filter malformed onworden berichten in publieke kanalen, die onleesbare tekens bevatten, geblokkeerd.
filter on
filter hash 2
filter malformed on
Voor meer details, zie https://github.com/Dutch-MeshCore/MeshCore/blob/dmc-dev/docs/packet_filter_reference.md
Updaten via wifi
Apparaten zoals de Heltec V4 hebben ingebouwde wifi en DutchMeshCore-MQTT ondersteunt die. Als de wifi geconfigureerd is, kan de DutchMeshCore firmware zichzelf updaten.
Wifi configureren:
set wifi.ssid mijnaccesspoint
set wifi.pwd geheim123
reboot
Update starten:
ota check
ota update
Hardware-specifieke instellingen
Heltec V4

De heltec V4 heeft een ingebouwde antenneversterker. Als er een betere antenne wordt aangesloten, is het mogelijk dat het signaal wat te sterk en vervormd wordt en daardoor minder goed gedecodeerd kan worden.
Met een andere antenne kan het daarom goed werken om de ingebouwde antenneversterker uit te schakelen. Het signaal komt dan minder sterk binnen, maar ook minder vervormd.
set radio.fem.rxgain off
Als je repeater ook een observer is, kun je het effect zien op de observer pagina van MC-Radar.
Meer informatie over deze antenneversterker
Overige nuttige instellingen
Power saving (Repeater Only)
Staat standaard aan: het apparaat gaat tussen zendslagen in slaapstand. Je kunt het uitzetten voor debugging of als je geen batterijbesparing nodig hebt:
powersaving
powersaving off
Flood-advertentie-interval
Hoe vaak de repeater zichzelf via flood bekendmaakt (in uren). Standaard 12. Zet dit op 50 uur om spamming door flood adverts te voorkomen. Pak geen veelvoud van 24 uur, want dat levert pieken overdag op.
get flood.advert.interval
set flood.advert.interval 50
Waarde tussen 3 en 168.
Maximum aantal hops voor flood
Hoe ver een flood-bericht mag doorreizen (aantal hops). Standaard 64.
get flood.max
set flood.max <waarde>
Waarde tussen 0 en 64.
Statistieken en status
Handig om te controleren of de repeater goed werkt:
stats-radio
stats-packets
ver
board
stats-radio toont o.a. ruisvloer en laatste RSSI/SNR; stats-packets toont tellers voor ontvangen en verzonden pakketten.
Overige repeater-commando's
- advert – Stuurt handmatig een flood-advert uit zodat andere nodes de repeater kunnen ontdekken.
- neighbors – Toont een lijst van nabije nodes (max. 8 recente adverts). Alleen op de repeater.
- erase – Voert een factory reset uit (alle instellingen en opgeslagen gegevens worden gewist). Alleen via de seriële console; destructief, gebruik met zorg.
Instellingen opslaan
De meeste instellingen die je met set wijzigt, worden opgeslagen en blijven na een herstart behouden. Bij radio- en enkele andere wijzigingen moet je herstarten:
reboot
Zie ook
- CLI Commando's - Volledige commando referentie
- Regio en scope - Regio configuratie
- Firmware zelf compileren - Firmware zelf bouwen
- Testen met MC-Radar - Test je repeater