Diagnosing MeshCore Repeater Problems
A systematic approach to diagnosing MeshCore repeater issues. Work from the physical layer up: radio first, then configuration, then network behavior.
Quick pre-diagnosis checklist
- Is the device powered? (check LED, screen, or measure supply voltage)
- Is an antenna connected? (transmitting without an antenna is poor practice and stresses the radio)
- Is the antenna connected to the LoRa SMA port, not the BLE u.FL? (Heltec V3/V4 have separate connectors)
- Is the device running repeater firmware, not Meshtastic or blank?
- Is it configured with the correct preset for your regional network?
Problem: Repeater is not appearing in MeshCore app contacts
Scenario A: Repeater has zero-hop advertisements
A repeater sending only zero-hop adverts (not flood adverts) is visible only to nodes within direct radio range. If you're testing from a distant location, it won't appear. Connect via USB serial and check the role and flood-advert configuration:
get role # Confirm the node's configured role
get flood.advert.interval # Flood advert cadence in hours (0 = zero-hop only)
To make the repeater visible network-wide, enable periodic flood adverts by setting a non-zero interval (default 12 hours), or send one immediately:
set flood.advert.interval 12 # Send a flood advert every 12 hours
advert # Send a flood advert immediately
Scenario B: Wrong preset
A repeater on a different preset than your phone is on cannot be heard. The phone and repeater must use identical preset settings (same SF, BW, CR, frequency). Verify both devices use the USA/Canada preset.
Scenario C: Not yet advertised
A freshly configured repeater won't be visible until it broadcasts its first advertisement. Default flood-advert interval is 12 hours. Force an immediate advertisement via the serial CLI:
advert # Serial CLI command to immediately broadcast a flood advertisement
Scenario D: Out of radio range
Test with a device you control. Bring it within 100 feet of the repeater (direct physical proximity, no obstacles). If it appears in contacts at that range, the repeater is working and the issue is range/placement. If it still doesn't appear at 100 feet, it's a configuration or hardware issue.
Problem: Repeater visible but messages not routing through it
Check: Repeater role set correctly
get role # Returns the node's configured role
A device running Companion (client) firmware will not relay messages for other nodes. To forward packets the device must run Repeater firmware (or Room Server firmware). The forwarding role is determined by which firmware variant you flash, not by a runtime command.
Check: Path discovery is completing
MeshCore must complete a route discovery (path discovery/acknowledgment exchange) before messages can be delivered. If messages are failing immediately after the repeater appears in contacts, path discovery may not have completed. Wait 60 seconds after first seeing the repeater, then try sending.
Check: Flood hop maximum
MeshCore uses path-based routing rather than a Meshtastic-style per-message hop-limit. The flood hop maximum (flood.max) defaults to 64, so there is no low default to "raise" — three to five hops is a practical reliability target, not a configured limit. If you have a specific reason to cap flood propagation, you can adjust it:
get flood.max # Read the current flood hop maximum (default 64)
set flood.max 64 # Range 0-64
Problem: Repeater was working but stopped
Check: Power system
The most common cause of intermittent repeater failure. For solar-powered nodes:
- Battery voltage low: for a single LiFePO4 cell, ~3.2 V is the normal mid-charge plateau — concern begins below ~3.0 V and the cell is empty near 2.5 V. For a 4-cell (12 V) LiFePO4 pack, nominal is ~12.8 V and it is nearly discharged around 12.0 V. Check the solar panel and charge controller.
- Charge controller LED indicators: verify charging when sun is on the panel
- Winter: reduced daylight hours may be insufficient for the panel size. Consider adding battery capacity for winter.
- Snow or debris covering the panel: physically inspect
Check: Firmware crash or lock
Firmware can occasionally hang, especially after a power interruption during a write operation. A full power cycle (disconnect and reconnect power) usually resolves this. If the device is cycling rapidly (power LED flashing repeatedly), it may be boot-looping - likely a firmware corruption requiring reflash.
Check: Physical damage
Water intrusion is a common cause of permanent field failure. Signs: corrosion on the PCB, moisture beads inside the enclosure, condensation on components. Once water has infiltrated, the board often needs replacement. Prevention is much easier than cure - inspect enclosure seals annually.
Problem: Range is less than expected
- Antenna connected? Transmitting into an open or disconnected SMA port causes VSWR problems and poor radiation.
- Correct antenna for 915 MHz? An 868 MHz (EU-band) antenna on a US repeater will have higher SWR and reduced efficiency. US operation must stay within the 902-928 MHz ISM band under 47 CFR 15.247. Test with a NanoVNA (see the Antennas & RF section).
- Antenna mount location: An antenna at 10 feet has dramatically less coverage than one at 30 feet. Every additional meter of height helps.
- Coax cable length and quality: RG-58 loses roughly 0.5 dB/m at 915 MHz, so a 15-foot run loses about 2-2.5 dB and a ~50-foot run approaches 3 dB. Use LMR-200/240 or better and keep runs short.
- Obstructions at antenna level: Metal roof edges, HVAC equipment, or tree branches within a few feet of the antenna scatter and attenuate signal significantly.
- TX power setting: Verify TX power hasn't been accidentally lowered:
get tx