Performance optimization

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:

spreading_factor: SF12
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:

spreading_factor: SF10
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:

spreading_factor: SF7
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