MeshCore Repeater Diagnostics via Serial Console
The MeshCore serial console provides direct access to repeater state and diagnostic information. Connecting via USB to a deployed repeater is the most reliable way to diagnose problems that cannot be addressed remotely.
Connecting to the Serial Console
On Windows: use PuTTY or the Arduino Serial Monitor. On Linux/Mac: use screen or minicom. as a serial terminal.
# Linux/Mac
screen /dev/ttyUSB0 115200
# Windows (PuTTY): Connection Type = Serial, Speed = 115200, COM port varies
Most MeshCore boards use 115200 baud.baud Somefor the serial console, including RAK boardsboards. use(If you have configured an attached GPS module, that module's own UART may run at a different baud rate such as 9600 - checkbut that is a separate interface from the MeshCore documentation for your specific hardware.console.)
Key Diagnostic Commands
These are commands from the on-device MeshCore serial CLI (see docs.meshcore.io/cli_commands). There is no single combined "status" command - health information is split across several get ... and stats-... commands.
| Command | Output | Use for |
|---|---|---|
| Confirm firmware |
stats-coreBattery voltage, uptime, contactsget radio / get freqneighborsUp to the 8 most recently heard nodes, with statsstats-packetsPacket rssistats-radiologlog start, stopped with log stop, cleared with log erase)reboot(restarts device)Recover from hung state
Note: contacts and list are companion/client-side concepts, not repeater serial commands - on a headless repeater, use neighbors instead. The log command is a packet/rx capture you start and stop, not an always-on event log.
Interpreting Stats Output
The command is statsstats-packetsthe mosta useful diagnostic tool. The firmware exposes Received and Sent counters. A healthy repeater shows:
HighSentforwardcountratetracking received traffic -Mostthereceived packets should be forwarded (repeater isdoingrelayingitspacketsjob)it is meant to forward. (The documented counters are Received and Sent; there is no separate "forwarded" or "dropped" counter, so judge activity from the Sent counter rising alongside Received rather than from a "forward rate" metric.)LowDropsdropinrateMeshCore -PacketsMeshCore drops a flood packet when it exceeds theflood.maxhop ceiling (default 64), and its loop detection (loop.detect) drops a packet whose path shows this repeater's own ID/hash repeated. This is not a Meshtastic-style per-packet hop counter decrementing to zero. In MeshCore's path-based routing, a repeater also intentionally does not retransmit packets whose embedded path does not include it - these appear as non-forwarded traffic but aredroppedcorrectwhenbehavior,hop count reaches 0, or when the packet has already been seen (deduplication). Some drops are normal;not averyloop.highDistinguishdropthisrateselectiveindicatesnon-forwardingmanyfromduplicateapacketsgenuine(possibleduplicate-floodroutinglooploop)beforeor very high hop packets being cut offacting.- Increasing received count over time - Confirms the repeater is hearing traffic from the network
Common Issues and Diagnostics
| Symptom | Check | Fix |
|---|---|---|
| Received count stays at zero | Check antenna connection, verify | Reconnect antenna; verify and get freq (frequency, bandwidth, SF, coding rate) and confirm they match the USA/Canada preset values shown in the app |
| Verify device is running repeater firmware variant and that forwarding is enabled | Reflash with repeater set repeat on | |
| Battery voltage declining | Check solar panel output, charge controller LVD setting | Clean panel, verify charge controller settings |
| Rebooting frequently | Check for low battery voltage causing brownout | Size battery correctly; check charge controller |
| Not appearing in client node list | | advert and confirm a flood advert interval is set, e.g. set flood.advert.interval 12 (hours). Zero-hop adverts (advert.zerohop / set advert.interval) are local only. There is no advert_hops |