Reducing Node Load β
MeshMonitor communicates with your Meshtastic node over a persistent TCP connection, sending protobuf-encoded admin packets to request configuration, telemetry, and status data. On memory-constrained devices (ESP32-based boards like Heltec V3/V4, RAK4631), excessive traffic can contribute to heap memory exhaustion over time.
TIP
This is primarily a firmware-side issue tracked at meshtastic/firmware#9632. The recommendations below help reduce MeshMonitor's contribution to node memory pressure while the firmware fix is developed.
How MeshMonitor Communicates with the Node β
On every connection (or reconnect), MeshMonitor:
- Sends
wantConfigIdto request the full node database and channel configuration - Requests LoRa config (1 admin packet)
- Requests all module configs (15 admin packets) β only on first connect, skipped on reconnect
- Starts periodic schedulers for traceroutes, LocalStats, time sync, announcements, etc.
During normal operation, MeshMonitor sends:
- LocalStats requests at a configurable interval (default: every 15 minutes)
- Auto-traceroute requests based on configured interval
- Auto-acknowledge tapbacks and replies when messages match the configured pattern
- Auto-welcome messages when new nodes appear
- Auto-announce messages on a schedule
- TCP keepalive probes every 5 minutes
Features That Increase Node Load β
Auto-Traceroute β
Sends traceroute requests to discovered nodes. On busy meshes with many nodes, this can generate significant traffic.
Recommendation: Increase the interval to 15-30 minutes, or disable (set to 0) on ESP32-based nodes.
Remote Admin Scanner β
Periodically probes nodes for remote admin capability. Each probe is an admin packet.
Recommendation: Increase the interval or disable if you don't need remote admin discovery.
Auto-Acknowledge (Auto-ACK) β
Responds to matching messages with tapback reactions and/or text replies. On high-traffic channels, this can generate many outgoing messages.
Recommendation: On busy channels, be selective about which channels have auto-ACK enabled. All auto-ACK sends (both tapbacks and replies) are rate-limited through the message queue (30-second minimum spacing).
Auto-Announce β
Broadcasts announcement messages on a schedule. Each announcement is one outgoing message per configured channel.
Recommendation: Use longer intervals (4-12 hours) on constrained nodes.
LocalStats Collection β
Requests device statistics (airtime, channel utilization, uptime) from the connected node.
Recommendation: The default interval is 15 minutes. Increase to 30-60 minutes on constrained nodes, or set to 0 to disable entirely. This setting is available under Settings > Node Management > LocalStats Collection Interval.
Configuration Recommendations for Constrained Nodes β
If your node is experiencing heap exhaustion or frequent reboots:
- Increase LocalStats interval to 30+ minutes (Settings > Node Management)
- Increase or disable auto-traceroute (Settings > Auto-Traceroute)
- Be selective with auto-ACK channels β avoid enabling on high-traffic channels
- Increase announcement intervals to 4+ hours
- Disable remote admin scanner if not needed (set interval to 0)
Technical Details β
- TCP keepalive: 5 minutes (reduced from 1 minute to lower TCP stack overhead)
- Module config caching: Module configs are only requested on the first connection after MeshMonitor starts. Reconnects skip these 15 admin packets.
- Message queue rate limiting: All automated outgoing messages (auto-ACK tapbacks, auto-ACK replies, auto-welcome, auto-responder) go through a shared message queue with 30-second minimum spacing between sends.
- LocalStats initial delay: The first LocalStats request is delayed 30 seconds after connection to let the node settle.