How it works
A link budget is an accounting of every gain and loss in the RF path from transmitter to receiver. If the received signal power exceeds the receiver’s sensitivity by at least your fade margin, the link works. The full chain:
Received power = TX_power + TX_ant_gain − TX_cable_loss
− path_loss
+ RX_ant_gain − RX_cable_loss
The link survives if: Received_power − RX_sensitivity ≥ fade_margin
Receiver sensitivity
LoRa sensitivity is derived from the thermal noise floor plus the SNR threshold the correlator needs to lock onto the chirp:
Thermal noise = −174 dBm/Hz + 10·log10(BW_Hz) + NF_dB
Sensitivity = Thermal_noise + SNR_threshold(SF)
For SF12 at 125 kHz with a 6 dB noise figure:
= −174 + 51.0 + 6 − 20.0
= −137 dBm
This matches the SX1276 datasheet exactly. The SX1262 does ~2 dB better due to an improved LNA front-end.
Free-space path loss
The Friis transmission equation gives the path loss in free space:
FSPL (dB) = 20·log10(d_km) + 20·log10(f_MHz) + 92.45
At 868 MHz and 5 km:
FSPL = 20·log10(5) + 20·log10(868) + 92.45
= 14.0 + 58.8 + 92.45
= 165.2 dB
Free-space is the best case. Real deployments add 10–30 dB of excess path loss from terrain, buildings, and vegetation. Budget your fade margin accordingly: 10 dB minimum outdoors, 20+ dB if you have any indoor segments.
EIRP and regulatory limits
EIRP (Effective Isotropic Radiated Power) combines TX output power and antenna gain:
EIRP = TX_power_dBm + antenna_gain_dBi − cable_loss_dB
In the EU (ETSI EN 300 220), the maximum EIRP on 868 MHz is +14 dBm (25 mW) with a 1% duty cycle limit on most sub-bands. The SX1276 can output up to 20 dBm, but that exceeds the EU limit unless you’re on a specific high-power sub-band (868.7–869.2 MHz, 27 dBm, 10% duty cycle).
In the US (FCC Part 15.247), the limit is +30 dBm (1 W) EIRP on 902–928 MHz with frequency hopping. LoRaWAN in the US uses US915 band plan.
Spreading factor trade-offs
Higher SF means longer time-on-air and lower throughput, but better sensitivity:
| SF | Sensitivity (125 kHz) | vs SF7 | 10-byte payload ToA |
|---|---|---|---|
| SF7 | −124 dBm | baseline | ~56 ms |
| SF9 | −129 dBm | +5 dB | ~185 ms |
| SF12 | −137 dBm | +13 dB | ~1319 ms |
Each step up in SF roughly doubles the time-on-air and costs 2.5 dB of sensitivity. For duty-cycle-limited deployments (EU868), increasing SF means fewer packets per hour. Do the math: at SF12 on a 1% duty cycle sub-band you can send one packet roughly every 131 seconds.
Real-world deployment notes
The free-space model is optimistic. In practice:
- LOS rural: add 5–10 dB excess loss
- Suburban: add 10–20 dB
- Urban canyon / rooftop: add 15–30 dB
- Indoor to outdoor: add another 10–20 dB per wall
A LoRaWAN gateway at 868 MHz mounted 10 m above rooftop level in a suburban environment typically covers 3–5 km to ground-level nodes at SF7, and 8–15 km at SF12.
Antenna placement dominates. A λ/4 monopole (2.15 dBi) installed horizontally instead of vertically loses 3–6 dB immediately. Always mount the antenna with the radiating element vertical. Coax runs over 30 cm add measurable loss at 868 MHz — use RG316 or better, keep it short.
The SX1262 advantage is real but small. The ~2 dB better sensitivity over SX1276 is offset in real deployments by installation variables. What matters more: antenna quality, mounting height, and whether you’re hitting a duty-cycle wall.
Common mistakes
Confusing sensitivity with RSSI floor. The sensitivity figure in the datasheet is the minimum detectable signal at a specified packet error rate (typically 1%). Your gateway RSSI reading will be 5–10 dB higher than sensitivity on a working link — that headroom is your margin.
Ignoring the duty cycle limit. Cranking SF12 to maximize range is useless if you exceed the 1% EU duty cycle. Calculate your time-on-air first. Tools like the The Things Network LoRa airtime calculator are useful for this.
Using +20 dBm TX in the EU without checking the sub-band. Most SX1276 boards default to maximum power. Set setTxPower(14) explicitly in your firmware unless you’ve verified you’re operating on the 869.4–869.65 MHz high-power channel.
Assuming free-space range in a real deployment. The calculator gives you a theoretical ceiling. Halve the free-space range estimate for a realistic outdoor suburban deployment. For indoor or mixed environments, divide by four.
Not accounting for connector and cable loss. A cheap SMA connector adds 0.2–0.5 dB. Two connectors plus 50 cm of RG174 at 868 MHz: roughly 1.5 dB total. Doesn’t sound like much until you realize 1.5 dB is the difference between SF9 and SF10 sensitivity.