ROUTER vs ROUTER_CLIENT vs REPEATER: When to Use Each
Meshtastic's current infrastructure node roles are ROUTER, ROUTER_LATE, and REPEATER (with CLIENT covering ordinary nodes, which also relay traffic via managed flooding). Each has distinct behaviors for packet forwarding, position broadcasting, and power management. Choosing the wrong role for your hardware leads to either wasted bandwidth or poor coverage. Note: ROUTER_CLIENT was retired in firmware 2.3.15 and is no longer a settable role - it now behaves as CLIENT. It is covered below only to explain what to use instead.
Role Behavior Summary
| Behavior | ROUTER | ROUTER_LATE | REPEATER |
|---|---|---|---|
| Forwards packets | Yes (high priority) | Yes (rebroadcasts only after others) | Yes (high priority) |
| Has user-facing interface (BLE/WiFi/Serial) | No (off by default) | No (off by default) | Yes (on by default) |
| Broadcasts own position | Reduced | Reduced | Never |
| Appears in node list | Yes | Yes | No (stealth) |
| Sends telemetry | Reduced | Reduced | None |
| Preferred for infrastructure | Yes (stationary, well-placed) | Yes (rebroadcast-late nodes) | Yes (privacy-conscious / anonymous relay) |
ROUTER
The ROUTER role is designed for dedicated, stationary, well-placed infrastructure nodes. It:
- Rebroadcasts with higher priority ("cuts in line") and always rebroadcasts, even if it hears another node already rebroadcasting - unlike CLIENT, which suppresses its own rebroadcast if a neighbor already did. REPEATER shares this same high-priority always-rebroadcast behavior.
- Automatically enables power-saving sleep (this cannot be turned off) and defaults BLE/WiFi/Serial to OFF, so you don't normally connect an app to it directly. (It can still originate and receive messages at the protocol level - the app connectivity is simply off by default.)
- Reduces position and telemetry broadcasts
- Remains visible in the node list so operators can see it on the map
Use ROUTER when: You have a dedicated always-on, stationary, well-placed infrastructure node (fixed repeater, backbone node) with no human user directly attached. For ordinary nodes, official guidance is to leave them on CLIENT rather than promoting them to ROUTER.
ROUTER_CLIENT (deprecated - use CLIENT or ROUTER instead)
ROUTER_CLIENT was deprecated and removed in firmware 2.3.15; it is no longer a settable role and now behaves exactly as CLIENT. It was originally meant for nodes that served double duty:
- A base station that both serves a human operator AND forwards traffic for others
- A vehicle-mounted node that forwards packets while its owner uses it for messaging
Why it was retired: ROUTER_CLIENT nodes created traffic loops and increased channel utilization (consuming hops and causing collisions) when several were deployed in close proximity - the developers have publicly described it as a mistake. Do not treat it as a role you can merely "be cautious with"; it is gone.
What to use instead: For a node that one person uses AND that should also relay for others, leave it on CLIENT - CLIENT nodes already rebroadcast via managed flooding while keeping the full client interface. For a dedicated repeater that no one uses interactively, use ROUTER.
REPEATER
The REPEATER role is the "silent repeater" option. (Note: REPEATER is a device.role; it is not "formerly ALL_SKIP_DECODING." ALL_SKIP_DECODING is a value of the separate device.rebroadcast_mode setting - the two are independent config axes.) REPEATER:
- Rebroadcasts with high priority but does NOT appear in node lists and does not send NodeInfo - it is anonymous on the mesh. It does not force power-saving sleep (unlike ROUTER).
- Can be combined with rebroadcast mode ALL_SKIP_DECODING to forward packets without decrypting them (low CPU overhead). Selecting the REPEATER role alone does not enable skip-decoding - you must set
device.rebroadcast_mode ALL_SKIP_DECODINGseparately. - Is not intended for direct messaging (it has no user interface and only responds to other nodes' packets rather than originating messages)
- Does NOT broadcast position or telemetry
Use REPEATER when: You want a completely silent, anonymous infrastructure node - no node-list footprint, no management overhead. Ideal for stealth installations or when you want to avoid cluttering the node list.
Caveat: The REPEATER's invisibility makes it harder to diagnose - you won't see it on the map or in node lists. Use ROUTER instead if you need visibility for network management. (REPEATER is also deprecated as of firmware ~2.7.x; for most new infrastructure, prefer ROUTER or ROUTER_LATE.)
Configuration Commands
# Set role to ROUTER (dedicated infrastructure)
meshtastic --set device.role ROUTER
# ROUTER_CLIENT was retired in firmware 2.3.15 - do not use it.
# For a node that is both used and relays, leave it on CLIENT:
meshtastic --set device.role CLIENT
# Set role to REPEATER (anonymous silent relay)
meshtastic --set device.role REPEATER
# (Optional) skip-decoding forwarding is a SEPARATE rebroadcast_mode setting,
# not a role - enable it explicitly if you want it:
meshtastic --set device.rebroadcast_mode ALL_SKIP_DECODING
# Verify current role
meshtastic --get device.role
No comments to display
No comments to display