Skip to content
RFrftools.io
IoT

LoRa Link Budget Calculator — Sensitivity, Time on Air & Range

LoRa link budget from the Semtech SX1276 formulas: receiver sensitivity by spreading factor and bandwidth, symbol time, time on air with automatic low-data-rate optimisation, duty-cycle off-time, free-space or Okumura–Hata path loss, link margin and maximum range.

Loading calculator...

Formula

S=10log⁡10(kT0)+10log⁡10(BW)+NF+SNRSF,Tsym=2SFBW,npayload=8+max⁡(⌈8PL−4SF+28+16CRC−20IH4(SF−2DE)⌉(CR+4), 0)S = 10\log_{10}(kT_0) + 10\log_{10}(BW) + NF + SNR_{SF},\quad T_{sym} = \frac{2^{SF}}{BW},\quad n_{payload} = 8 + \max\left(\left\lceil\frac{8PL - 4SF + 28 + 16CRC - 20IH}{4(SF - 2DE)}\right\rceil (CR + 4),\,0\right)

Reference: Semtech SX1276/77/78/79 datasheet Rev. 4 (2015), Table 13, §4.1.1.5–4.1.1.7; Semtech AN1200.13 Rev. 1 (2013), Eqn. 1; Hata (1980); ITU-R P.525-4

SF— Spreading factor, 6 to 12
BW— Signal bandwidth (Hz)
SNR_{SF}— Demodulator SNR limit: −5 dB at SF6 down to −20 dB at SF12 (dB)
kT_0— Thermal noise density at 290 K, −173.975 dBm/Hz (dBm/Hz)
PL, CR, CRC, IH, DE— Payload bytes, coding rate 1–4, CRC on, implicit header, low-data-rate optimisation
T_{sym}— Symbol time (s)

How It Works

A LoRa link budget answers two questions at once: whether the packet arrives above the receiver's sensitivity, and how long it occupies the channel. Both are set by the spreading factor (SF), the bandwidth and the coding rate.

Sensitivity

LoRa spreads each symbol over 2SF2^{SF} chips, which lets the demodulator work below the noise floor. Its sensitivity is the thermal noise in the bandwidth, plus the noise figure, plus the signal-to-noise ratio the spreading factor needs (Semtech AN1200.13, equation 1):

S=10log⁡10(kT0)+10log⁡10(BW)+NF+SNRSFS = 10\log_{10}(kT_0) + 10\log_{10}(BW) + NF + SNR_{SF}

where kT0kT_0 is −173.975 dBm/Hz at 290 K. The SX1276 datasheet gives SNRSFSNR_{SF} from −5 dB at SF6 to −20 dB at SF12, in steps of 2.5 dB. With a 125 kHz bandwidth and a 6 dB noise figure that is −124.5 dBm at SF7 and −137.0 dBm at SF12, which matches the −137 dBm in the datasheet's receiver table.

Time on air

The symbol time is Tsym=2SF/BWT_{sym} = 2^{SF}/BW: 1.024 ms at SF7 and 32.768 ms at SF12 with 125 kHz. A packet is a preamble of npreamble+4.25n_{preamble} + 4.25 symbols followed by the payload symbols:

npayload=8+max⁡(⌈8PL−4SF+28+16CRC−20IH4(SF−2DE)⌉(CR+4), 0)n_{payload} = 8 + \max\left(\left\lceil \frac{8PL - 4SF + 28 + 16CRC - 20IH}{4(SF - 2DE)} \right\rceil (CR + 4),\ 0\right)

where PLPL is the payload in bytes, CRCR runs from 1 (4/5) to 4 (4/8), CRCCRC is 1 when the payload CRC is on, IHIH is 1 for an implicit header, and DEDE is 1 when low-data-rate optimisation is on. The datasheet makes that optimisation mandatory once the symbol time exceeds 16 ms, so the calculator switches it on by itself, at SF11 and SF12 with 125 kHz. A 10-byte packet at SF7 takes 41.216 ms; a 51-byte packet at SF12 takes 2465.792 ms.

Duty cycle

In much of the European 868 MHz band a device may transmit for at most 1% of the time (ETSI EN 300 220-2). After each packet it must then stay silent for Toff=ToA (100/δ−1)T_{off} = ToA\,(100/\delta - 1), which is 99 times the time on air at 1%. The calculator also gives how many packets an hour fit within the duty cycle.

Path loss and range

In free space the loss is 20log⁡10(4πdf/c)20\log_{10}(4\pi d f/c) (ITU-R P.525). For a gateway on a mast above the surrounding roofs, the Okumura–Hata model gives the median loss in a town,

Lu=69.55+26.16log⁡10f−13.82log⁡10hb−a(hm)+(44.9−6.55log⁡10hb)log⁡10dL_u = 69.55 + 26.16\log_{10} f - 13.82\log_{10} h_b - a(h_m) + (44.9 - 6.55\log_{10} h_b)\log_{10} d

with ff in MHz, dd in kilometres and the antenna heights hbh_b and hmh_m in metres, plus corrections for a large city, suburban areas and open country. The link margin is the received power less the sensitivity, and the maximum range is the distance at which it falls to zero.

Validity

The SNR limits are those of the SX1276/77/78/79, which covers 137 to 1020 MHz and bandwidths of 7.8 to 500 kHz; another LoRa radio may differ by a dB or two. Okumura–Hata holds from 150 to 1500 MHz, 1 to 20 km, base heights of 30 to 200 m and mobile heights of 1 to 10 m. Outside those ranges, including a maximum range beyond 20 km, the values are shown with a warning. The path loss is a median with no fading: the link margin is what remains for fading and obstructions. Spreading factors outside 6 to 12 and payloads outside 1 to 255 bytes are refused.

Worked Example

Problem: A sensor node at 868 MHz sends a 20-byte payload at SF9, 125 kHz and coding rate 4/5, with an 8-symbol preamble, an explicit header and the payload CRC on. It transmits 14 dBm through a 2.15 dBi antenna to a gateway with a 5 dBi antenna on a 30 m mast, 2 km away in a medium-sized town, with 2 dB of cable loss. The gateway's noise figure is 6 dB and the sub-band allows a 1% duty cycle.

Step 1 - Sensitivity: S = −173.975 + 10 log₁₀(125000) + 6 − 12.5 = −129.51 dBm

Step 2 - Time on air: T_sym = 2⁹ / 125000 = 4.096 ms, below 16 ms, so no low-data-rate optimisation n_payload = 8 + ⌈(160 − 36 + 28 + 16) / 36⌉ × 5 = 8 + 5 × 5 = 33 symbols ToA = (8 + 4.25 + 33) × 4.096 = 185.344 ms

Step 3 - Duty cycle: T_off = 0.185344 × (100 / 1 − 1) = 18.35 s, so at most 194 packets an hour

Step 4 - Path loss (Okumura–Hata, medium-sized city): L = 136.60 dB at 2 km

Step 5 - Link: P_RX = 14 + 2.15 + 5 − 2 − 136.60 = −117.45 dBm M = −117.45 − (−129.51) = 12.06 dB Maximum range: 4.40 km

At SF12 the sensitivity improves to −137.01 dBm and the range to 7.18 km, but the same packet then takes 1318.912 ms and the node may send only 27 packets an hour.

Practical Tips

  • ✓Use the lowest spreading factor that closes the link with a fading margin: it shortens the airtime, saves battery and frees the channel for other nodes.
  • ✓Set the payload to the full radio frame. A LoRaWAN uplink adds 13 bytes of header and integrity code to the application data.
  • ✓Compare the Okumura–Hata area types: moving from a city to a suburban or rural estimate can roughly double the predicted range.
  • ✓Check the regional duty-cycle and dwell-time limits for the sub-band you use; in the United States the 915 MHz band limits dwell time instead of duty cycle.

Common Mistakes

  • ✗Taking a datasheet's best-case sensitivity for every spreading factor. Each step down from SF12 costs 2.5 dB, and a wider bandwidth costs another 3 dB per doubling.
  • ✗Forgetting low-data-rate optimisation. It is mandatory once the symbol time exceeds 16 ms, which is SF11 and SF12 at 125 kHz, and it lengthens the packet.
  • ✗Ignoring the duty cycle. At 1% a 1.3 s SF12 packet must be followed by more than two minutes of silence, which caps a node at about 27 packets an hour.
  • ✗Using free-space loss for a ground-level node in a town. The Okumura–Hata loss is about 40 dB higher at 2 km, and that difference decides the range.

Frequently Asked Questions

With a 125 kHz bandwidth and a 6 dB noise figure, LoRa reaches about −137 dBm at SF12, because the demodulator works down to an SNR of −20 dB. At SF7 the same receiver reaches about −124.5 dBm.
The symbol time is 2 to the power SF divided by the bandwidth. The packet is the preamble plus 4.25 symbols, plus the payload symbols, which depend on the payload length, the spreading factor, the coding rate, the header mode, the CRC and low-data-rate optimisation, following the Semtech SX1276 datasheet.
In the European 868.0 to 868.6 MHz sub-band a device may transmit for at most 1% of the time. After a packet it must wait 99 times the packet's time on air before transmitting again in that sub-band.
The SX1276 datasheet makes it mandatory when the symbol time exceeds 16 ms. At 125 kHz that is SF11 and SF12; at 250 kHz only SF12.
It depends on the path more than on the radio. With a gateway on a 30 m mast in a town, the worked example reaches 4.4 km at SF9 and 7.2 km at SF12; over open country or from a hilltop, tens of kilometres are possible.

Methodology & References

References

  • SX1276/77/78/79 — 137 MHz to 1020 MHz Low Power Long Range Transceiver, datasheet Rev. 4 — Semtech, March 2015 — Table 10 (LoRa receiver sensitivity), Table 12, Table 13 (SNR by spreading factor), §4.1.1.5–4.1.1.7 (symbol rate, LDRO, time on air)
  • AN1200.13, SX1272/3/6/7/8: LoRa Modem Designer's Guide, Rev. 1 — Semtech, July 2013 — §2.2, Eqn. 1 (receiver sensitivity), Tables 2 and 3 (time on air and sensitivity)
  • Empirical Formula for Propagation Loss in Land Mobile Radio Services — M. Hata, IEEE Transactions on Vehicular Technology, vol. VT-29, no. 3, pp. 317–325, August 1980; the formulas as given in 3GPP TR 43.030 V18.0.0 (2024-03), Annex B.1
  • Recommendation ITU-R P.525-4, Calculation of free-space attenuation — ITU-R, 08/2019 — §2.2, Eqs. (3) and (4) link

Reproduces the SX1276 datasheet sensitivity of −137 dBm at SF12 and 125 kHz, the time on air of 41.216 ms (SF7, 10 bytes) and 2465.792 ms (SF12, 51 bytes, LDRO), AN1200.13's 264.2 ms and −132 dBm at SF10, and the Okumura–Hata 126.40 dB at 900 MHz and 1 km.

Related Articles

Related Calculators