Routing CLI Commands
Learn how to manage MeshCore routing using CLI commands to configure routing behaviour, inspect message paths, and understand how packets travel between nodes. These commands help you troubleshoot connectivity, optimise mesh performance, and maintain reliable communication across the network.
Updated 29 October 2026
1. Configure the Repeat Flag
View the current repeat setting:
get repeat
Enable or disable repeating:
set repeat <state>
Parameter:
state—onto enable repeating oroffto disable it.
Default: on
2. Configure Advertisement Path Hash Size
View the current setting:
get path.hash.mode
Change the path hash size:
set path.hash.mode <value>
Controls the size of the path identifiers used in advertisements transmitted by the repeater.
Parameters:
| Value | Hash Size | Unique IDs | Maximum Flood Hops |
|---|---|---|---|
0 | 1 byte | 256 | 64 |
1 | 2 bytes | 65,536 | 32 |
2 | 3 bytes | 16,777,216 | 21 |
3 | Reserved | — | Do not use |
Default: 0
Requirements: Firmware v1.14 or later.
Important notes:
- This setting controls the hash encoding size used in the repeater's own advertisements.
- It does not restrict the hash sizes of packets the repeater forwards. Firmware v1.14 and later supports forwarding all sizes.
- Older firmware versions, including v1.13.0 and earlier, only support one-byte hashes and may drop packets using larger hashes.
- Consider the firmware versions deployed across your mesh before enabling larger hash sizes.
⚠️ Warning: Do not use value
3. It is reserved.
3. Configure Loop Detection
View the current setting:
get loop.detect
Change loop detection:
set loop.detect <state>
Configures how strictly the repeater detects and rejects flood packets that appear to be circulating in a loop.
Parameters:
| State | Behaviour |
|---|---|
off | Disables loop detection. |
minimal | Drops packets when the repeater's own ID/hash appears 4 or more times for one-byte hashes, 2 or more times for two-byte hashes, or 1 or more times for three-byte hashes. |
moderate | Drops packets when the repeater's own ID/hash appears 2 or more times for one-byte hashes, or 1 or more times for two- or three-byte hashes. |
strict | Drops packets when the repeater's own ID/hash appears at least once, regardless of hash size. |
Default: off
Requirements: Firmware v1.14 or later.
How it works:
When enabled, the repeater examines the packet path for repeated occurrences of its own ID/hash. If the configured threshold is reached, the packet is rejected instead of being forwarded.
This helps prevent packet storms caused by faulty or incompatible repeaters that repeatedly forward the same packet.
Recommendation: Choose a setting appropriate for your mesh topology and test it before deploying it across your network.
4. Configure Flood Retransmission Delay
View the current setting:
get txdelay
Change the retransmission delay factor:
set txdelay <value>
Controls the random delay before retransmitting flood traffic.
Parameter:
value— Transmit delay factor between0and2.
Default: 0.5
How it works:
When multiple repeaters receive the same flood packet, each waits for a random period before retransmitting. This reduces the chance of simultaneous transmissions colliding.
- Higher values increase the random delay window and can reduce collisions.
- Lower values reduce forwarding latency but may increase collisions.
- A value of
0disables the delay window entirely.
5. Configure Direct Traffic Retransmission Delay
View the current setting:
get direct.txdelay
Change the direct traffic delay factor:
set direct.txdelay <value>
Controls the random retransmission delay for direct, routed traffic rather than flood traffic.
Parameter:
value— Direct transmit delay factor between0and2.
Default:
- Repeater:
0.3 - Room Server and Sensor:
0.2
Note: Direct traffic is addressed to a specific next hop, so fewer nodes compete to retransmit it. Consequently, its default delay factor is lower than that used for flood traffic.
6. Configure Receive Processing Delay
Status: Experimental.
View the current setting:
get rxdelay
Change the receive delay:
set rxdelay <value>
Controls the base delay applied when processing received traffic.
Parameter:
value— Receive delay base between0and20.
Default: 0.0
How it works:
When enabled, repeaters that receive a flood packet with a weak signal are held in a delay queue, while repeaters receiving a stronger signal process the packet immediately.
This gives stronger-signal paths priority. By the time weaker-signal repeaters process their copies, the packet may already have propagated through the mesh, allowing duplicate packets to be suppressed and reducing unnecessary retransmissions.
Note: This is an experimental feature. Test its impact on your network before using it in a production environment.
7. Configure the Duty Cycle Limit
View the current setting:
get dutycycle
Set the duty cycle:
set dutycycle <value>
Sets the maximum duty cycle as a percentage.
Parameter:
value— Duty cycle percentage between1and100.
Default: 50% (equivalent to an airtime factor of 1.0).
Examples:
| Command | Result |
|---|---|
set dutycycle 100 | No duty cycle limit imposed by this setting. |
set dutycycle 50 | 50% duty cycle. |
set dutycycle 10 | 10% duty cycle. |
set dutycycle 1 | 1% duty cycle. |
Requirements: Firmware v1.15.0 or later.
⚠️ Important: A configured duty cycle does not guarantee regulatory compliance by itself. Ensure your radio settings and actual transmissions comply with the rules applicable to your frequency band and location.
8. Configure Airtime Factor (Deprecated)
⚠️ Deprecated: Firmware v1.15.0 and later provides the
dutycyclesetting instead. Useget dutycycleandset dutycyclewhere supported.
View the current airtime factor:
get af
Change the airtime factor:
set af <value>
Controls the silent period imposed after each transmission, based on the time the transmission spent on air.
Parameter:
value— Airtime factor between0and9.
Default: 1.0
Approximate duty cycle by airtime factor:
| Airtime Factor | Approximate Duty Cycle |
|---|---|
0 | 100% |
1 | 50% |
2 | 33% |
3 | 25% |
9 | 10% |
The approximate duty cycle is calculated as:
1 / (1 + airtime factor)
Note: You are responsible for selecting a value appropriate to your jurisdiction and channel plan.
9. Configure the Interference Threshold
View the current setting:
get int.thresh
Change the interference threshold:
set int.thresh <value>
Configures the local interference threshold used by the node.
Parameter:
value— Interference threshold value.
Default: 0.0
10. Configure Channel Activity Detection (CAD)
View the current setting:
get cad
Enable or disable CAD:
set cad <on|off>
Enables or disables hardware Channel Activity Detection.
Parameters:
on— Enables CAD.off— Disables CAD.
Default: off
How it works:
When enabled, the radio performs a hardware channel activity scan before transmitting. If the channel is busy, the transmission is deferred.
Note: CAD operates independently of int.thresh. Either feature, both features, or neither feature can be enabled.
11. Configure the AGC Reset Interval
View the current setting:
get agc.reset.interval
Change the reset interval:
set agc.reset.interval <value>
Sets the interval between automatic gain control (AGC) resets.
Parameter:
value— Interval in seconds between0and1020.
Default: 0.0
Notes:
- Values are rounded down to the nearest multiple of four seconds. For example,
17becomes16. - A value of
0disables periodic AGC resets.
12. Configure Multi-Acknowledgement Support
View the current setting:
get multi.acks
Enable or disable multi-acknowledgement support:
set multi.acks <state>
Parameter:
state—0to disable or1to enable.
Default: 0 (disabled).
13. Configure Flood Advertisement Interval
View the current setting:
get flood.advert.interval
Change the interval:
set flood.advert.interval <hours>
Controls how frequently the node sends flood advertisements.
Parameter:
hours— Interval in hours between3and168.
Default:
- Repeater:
47hours. - Room Server:
47hours. - Sensor:
0(disabled).
14. Configure Zero-Hop Advertisement Interval
View the current setting:
get advert.interval
Change the interval:
set advert.interval <minutes>
Controls how frequently the node sends zero-hop advertisements.
Parameter:
minutes— Interval in minutes between60and240, rounded down to the nearest multiple of two.
For example, 61 becomes 60.
Default:
- Factory-fresh node:
2minutes. - Once configured:
0(disabled), unless explicitly set.
Important notes:
- A new installation initially uses a two-minute zero-hop advertisement interval.
- Saving any setting resets an interval below the 60-minute minimum to
0, on the assumption that the node has been deliberately configured. - To keep zero-hop advertisements running, explicitly set an interval between
60and240minutes.
15. Configure Maximum Flood Hops
View the current setting:
get flood.max
Change the maximum hop count:
set flood.max <value>
Limits how many hops a flood message can travel.
Parameter:
value— Maximum flood hop count between0and64.
Default: 64.
16. Configure Maximum Hops for Unscoped Flood Messages
View the current setting:
get flood.max.unscoped
Change the maximum hop count:
set flood.max.unscoped <value>
Limits the hop count for flood packets that have no scope or region set.
Parameter:
value— Maximum hop count between0and64.
Default: 64.
Special value: 0xFF indicates that the setting has not been explicitly configured and will follow flood.max.
Use case:
Setting a lower value, such as 3, can allow local unscoped messages to propagate while limiting how far they travel. This can help reduce unnecessary flooding from neighbouring nodes.
This provides an alternative to using region-deny rules such as region denyf *.
17. Configure Maximum Hops for Advertisement Floods
View the current setting:
get flood.max.advert
Change the maximum hop count:
set flood.max.advert <value>
Limits how far advertisement flood packets can propagate.
Parameter:
value— Maximum hop count between0and64.
Default: 8.
Important Considerations
Before changing routing settings:
- Firmware compatibility: Check the firmware versions deployed across your mesh, especially when changing path hash sizes.
- Network stability: Test loop detection, retransmission delays, and receive processing delays before applying changes widely.
- Radio regulations: Configure duty cycle and transmit behaviour to comply with local regulations.
- Advertisement intervals: Understand the difference between flood advertisements and zero-hop advertisements before changing their intervals.
- Document changes: Record your original settings so you can restore them if routing performance deteriorates.