[DOC] CLI Reference
CLI Console – (from CommonCLI.cpp)
All commands below are directly parsed by the firmware, available over USB‑CDC, serial UART, or BLE console. Commands are case‑sensitive. For remote‑originated CLI packets (OTA from another node) the firmware prepends a two‑byte timestamp; behaviour is identical unless noted.
Maintenance Commands
| Command | Arguments | Node Type | Serial only |
|---|
ver
–
All
No
Print firmware version and build date.
board
reboot
–
All
No
Soft‑restarts MCU. Clock usually retained.
clkreboot
poweroff or shutdown
-
All
No
Powers down board. Note: you will need to physically reset the board to restore it again.
erase
–
All
Yes
Formats the on‑board file‑system.advert
–
All
No
Transmit a advert.zerohop
neighbors
–
Repeater
No
Dump current neighbour table with RSSI & airtime stats.
neighbor.remove
clear stats
–
All
No
Reset airtime/packet counters in all link records.start ota
–
All
No
Kick off OTA firmware update (Bluetooth for nRF52840-based nodes, Wi-Fi for ESP32-based). Nodes that do not have the Bluetooth radio enabled (Room Server, Repeater) will activate the radio and await a connection. nRF52840-based nodes will continue running MeshCore application until the DFU app connects and reboots the node into DFU mode.
clock
–
All
No
Show current UTC time from the real‑time clock.clock sync
–
All
No
Accepts sender’s timestamp and sets local RTC if newer.time <epoch>
Unix‑epoch seconds
All
Yes
Manually set RTC (value must be in the future).
public.key
All
role
-
All
No Returns the node's role (Logging
| Command | Node Type | Serial Only | Effect | When to use |
|---|---|---|---|---|
log start |
All | No | Enable runtime logging to on‑device file. | Investigating intermittent issues. |
log stop |
All | No | Disable logging (frees flash wear and airtime). | Normal low‑power operation. |
log erase |
All | No | Delete the stored log file. | Clear space or privacy/rotation. |
log |
All | Yes | Stream the log file to console. Requires physical console (ignored remotely). |
Download logs for post‑mortem. |
ReadingNode Configuration
Syntax: set/get <key> <value> →. returnsImmediately valuepersisted prefixedto withboard >.configuration file.
| Command |
impact
aftempradio <f> <bw> <sf> <cr> <timeout>
N/A
f = 150‑2500 MHz
bw = 7‑500 kHz
sf = 5‑12
cr = 5‑8
timeout=<n> mins
radiogps
N/A
N/A
freq,bw,sf,crN/A
Returns current tuple.GPS state. Data returned (in order):
Enabled=on/off
Active=active/deactivated
Fix=fix/no fix
Satellites=<n> sats
freqgps on/off
N/A
N/A
Enable/disable planGPS (e.g.,location 915.8).services. Requires GPS module fitted to node.
txgps sync
N/A
N/A
Sync limitclock /from linkGPS.
latgps setloc
N/A
N/A
N/A
Set incurrent apps,node manuallocation routingfrom hints.GPS coordinates.
longps advert
N/A
N/A
Retrieves current GPS position -advert Longitude.permissions ("None", "Prefs", "Share")
rxdelaygps advert <none/prefs/share>
txdelaydirect.txdelayint.threshagc.reset.intervalallow.read.onlyonoffonadvert.intervalN/A
flood.advert.intervalnone/prefs/share
Sets thecurrent GPS position advert permissions.
none=do not share position in adverts
prefs=share configured position from node IDpreferences
share=share periodiclive beaconing).GPS position
flood.maxnameguest.passwordrepeatonoffpublic.keyrolemulti.acksbridge.typebridge.enabledbridge.delaybridge.sourcebridge.baudbridge.secretbridge.channeladc.multiplierWriting Configuration
Syntax: set <key> <value> → immediately persisted to /com_prefs.
radio <f> <bw> <sf> <cr>
get
set
f = 300‑150‑2500 MHz,MHz
bw = 7‑500 kHz,kHz
sf = 7‑12,5‑12
cr = 5‑8
869.525, 250, 11, 5 Sets radio parameters. Reboot required. Change during a maintenance window and be mindful of critical paths to other nodes that will break. Breaks comms if any one of f/bw/sf/cr differs between nodes.freq <MHz>
get
set
tx <dBm>
get
set
af <n>
get
set
rxdelay <sn>
get
set
Controls RXa slotsper-hop hold time before a flood packet is processed/forwarded. Only applies to flood-mode receive/forward paths. Direct/path-routed traffic bypasses this delay.
This is informed by SNR, as opposed to TX delay which is a set factor that adds random jitter to each transmitted packet.
The configured value is a dimensionless base (not seconds). Actual delay is calculated:
delay = (pow(rx_delay_base, 0.85 - score) - 1) * air_time_ms
score is 0–1 from SNR vs SF & pkt length. Better SNR -> higher score -> smaller/zero delay.air_time_ms is the packet’s LoRa airtime estimate. Longer packets/higher SF multiply the delay.
If the result is < 50 ms, it forwards immediately; otherwise it queues with that delay.
Practical ranges depend on SF and BW. Examples:
txdelay <s>
get
set
direct.txdelay <s>
get
set
int.thresh <N>
get
set
Interference Threshold. This can help prevent collisions by checking if the frequency is busy before transmitting.
With thresh=0 (default) the busy check is skipped; the node will transmit whenever its own duty-cycle timer allows.
With thresh>0 the node does an RSSI-based "listen‑before‑talk".
The effective busy trigger is "noise floor + thresh" in dB, so the number you set is the margin above the current floor.
If the channel is busy send is deferred by ~200 ms, retrying until the channel clears or 4s elapse. After 4s it sends anyway but logs a CAD timeout.
For most sites on SF7, 6-8 is a good range to test with.
For higher spread factors, noisy RF sites, or more marginal links, lean higher (8-10) to avoid the channel appearing forever busy.
None, however TX performance can be impacted.
When set to 0, collision risk is increased.
When set too low, threshold can be too sensitive and may result in all packets belowbeing RSSIdelayed.
Helps
When urbanset RFtoo noise.
flood.advert.interval <H>
get
set
advert.interval <M>
get
set
flood.max <N>
get
set
Maximum number of hops for flood messages. Consider reducing on battery nodes or in high density areas. The maximum hop count is reduced if path byte count is increased. None on RX path; high value increases airtime.
repeat on/off
get
set
on / offRepeater firmware: on
Room server firmware: off
Enable or disable repeats (repeater and room server only). Ensure alternate paths exist before disabling. Turning off may isolate parts of mesh.allow.read.only on/off
get
set
on / off
offagc.reset.interval <S>
get
set
Node is unable to receive during the reset interval and can potentially miss packets. Be mindful to not set too frequently.
lat <deg> get
set
lon <deg>
get
set
name <text>
get
set
guest.password <password>
get
set
Repeater: <blank>
Room server: hello
password <password>
get
set
multi.acks
get
set
on/off
offbridge.enabled
get
set
on/off
bridge.delay
get
set
bridge.source
get
set
rx/tx
rxbridge.baud
get
set
bridge.secret
get
set
bridge.channel
get
set
(ESPNOW only) channel number for ESPNow bridge Bridge members must use the same channel number
adc.multiplier
get
set
bridge.type
get
Identify if repeater is acting as a RS232/ESPNOW bridge. None
bridge.enabled
get
set
Identify if repeater is acting as a bridge and what type. None
bridge.delay
get
set
Delay time (seconds) before bridge will re-transmit packets.
bridge.source
get
set
Choose whether bridge will re-transmit received or transmitted packets
bridge.baud
get
set
(RS232 bridge only) set baud rate of serial bridge port
bridge.secret
get
set
(ESPNOW only) set shared secret for bridge
bridge.channel
get
set
(ESPNOW only) channel number for ESPNow bridge
Nosaveneeded– everysetwrites straight to/com_prefs.