MeshCore performance tuning
Optimize range, speed, reliability and battery life of your mesh network
Why performance tuning matters
The default configuration of MeshCore works well in most situations, but by tuning smartly you can get much more from your network. Think longer range, more stable connections, longer battery life and faster message delivery.
Performance tuning is about making trade-offs between different factors: range vs. speed, reliability vs. battery life, bandwidth vs. number of nodes. There is no "perfect" configuration - it depends on your use case.
This guide shows how to optimize MeshCore for different scenarios. From maximum range in rural areas to fast message delivery in urban networks.
Performance dimensions
Range
How far can messages reach between nodes
Speed
How fast are messages sent and received
Battery life
How long can node run on battery
Reliability
Percentage of messages that arrive without errors
Throughput
How much data can the network handle
Scalability
How many nodes can communicate simultaneously
Performance optimization tips
1. Adjust spreading factor for range
Higher spreading factor (SF10-SF12) gives longer range but lower speed. Lower SF (SF7-SF9) is faster but shorter range.
Impact: SF12 has 4x longer range than SF7, but is 16x slower. For emergency network: choose SF10+. For urban chat: SF7-8 is better.
2. Optimize transmit power
Too high power causes interference and battery drain. Too low reduces range. Sweet spot is usually 15-20 dBm.
Impact: 10 dBm โ 20 dBm doubles range but triples power usage. Start with 15 dBm and increase only if needed.
3. Balance bandwidth
Smaller bandwidth (125 kHz) = longer range and better penetration. Wider bandwidth (250-500 kHz) = higher data rate.
Impact: For most use cases 125 kHz is optimal. Use 250 kHz only if you send lots of data and range isn't critical.
4. Set hop limit
Max number of hops a message may make. Too high = network overload. Too low = messages don't arrive in large networks.
Impact: 3 hops is default and works for most networks. Increase to 5-7 only in very large networks with many repeaters.
5. Optimize broadcast interval
How often nodes send position/telemetry updates. More frequent = more current but more battery and airtime usage.
Impact: 15 min for battery nodes, 5 min for repeaters on solar/mains power. For trackers: 1-5 min during activity.
6. Avoid channel congestion
Monitor air utilization percentage. Above 10% you get packet collisions and message loss. Reduce broadcast rates or use multiple channels.
Impact: At >15% air util: increase broadcast intervals, disable non-essential telemetry, or split network across channels.
Configuration examples
Pre-tuned configs for common scenarios
Maximum range config (rural/emergency)
Optimized for longest possible range, speed is secondary:
bandwidth: 125 kHz
tx_power: 20 dBm
broadcast_interval: 30 min
hop_limit: 5
Balanced config (urban mesh)
Good balance between range, speed and battery life:
bandwidth: 125 kHz
tx_power: 15 dBm
broadcast_interval: 15 min
hop_limit: 3
Fast messaging config (events/festivals)
Optimized for fast message delivery, nodes close together:
bandwidth: 250 kHz
tx_power: 10 dBm
broadcast_interval: 5 min
hop_limit: 2
Best practices for optimization
-
โ
Measure before tuning: Check air util, SNR and packet loss BEFORE making changes
-
โ
One parameter at a time: Don't change everything at once - you won't know what has effect
-
โ
Test in real conditions: Lab performance โ field performance with obstacles and interference
-
โ
Monitor after changes: Check if your optimization actually improves what you wanted
-
โ
Document your settings: Keep track of which config you use and why
-
โ
Start conservative: Begin with balanced config and optimize only when needed
Frequently asked questions
What is more important: range or speed?
Depends on use case. For emergency/crisis range is more important - messages don't need to arrive instantly. For events/festivals speed is more important because everyone is close. For daily mesh chat balance is best.
How do I measure if my optimization works?
Track these metrics: SNR (higher is better), packet loss % (lower is better), air utilization (under 10%), battery life (measure actual runtime), message latency (time from send to receive).
Can I use different configs on different nodes?
Yes, but spreading factor and bandwidth must match for nodes to communicate. TX power, broadcast interval and hop limit may differ per node. Repeaters can often have higher power and more frequent broadcasts.
What are the limits of LoRa physics?
Absolute max range is ~50km line-of-sight at sea level. In practice: ~10km open field, ~1-3km urban. Max data rate is ~5.5 kbps at SF7/250kHz. You can't bypass these limits - LoRa is designed for long range low bandwidth.
How do I optimize for maximum battery life?
Lower TX power (10 dBm), increase broadcast interval (30-60 min), disable Bluetooth when not needed, use sleep mode aggressively. With these settings you get 2-4 weeks on 18650 battery vs. 3-5 days with default config.
Optimize your MeshCore network
With these performance tuning tips you get maximum range, speed and reliability from your mesh
Start with a balanced config and fine-tune based on your metrics