The Physics of LoRa

Why it reaches so far on so little — chirp spread spectrum, processing gain, RSSI versus SNR, the math behind dBm and dBi, and the impedance matching that quietly determines whether your link works.

LoRa is one of those technologies that sounds simple in marketing copy and turns out to be deceptively deep underneath. "Long range, low power, sub-GHz" — true, but those three words hide a chirp-modulation scheme borrowed from 1940s radar research, a clever forward error correction layer, and a careful regulatory framework that varies by country. Most blogs skim the surface. This post does not.

By the end of this article, you should understand how a LoRa packet is constructed at the symbol level, why processing gain lets a receiver decode signals well below the thermal noise floor, what RSSI and SNR actually mean, why 50 Ω impedance matters, and how to calculate whether a link will work before you build it.

1. LoRa Is a Modulation, Not a Protocol

LoRa stands for Long Range. It is a physical-layer modulation technique, originally developed by a French startup called Cycleo and acquired by Semtech in 2012. Semtech owns the patents and manufactures the transceiver ICs that sit at the heart of every LoRa module ever sold.

People often confuse LoRa with LoRaWAN. They are not the same:

Two LoRa modules talking directly to each other do not need LoRaWAN. A fleet of sensors talking through a shared gateway to a cloud server usually does. The choice is architectural, not technical.

2. Chirp Spread Spectrum — The Core Idea

Conventional radio modulations like FSK and OOK transmit data on a fixed carrier frequency — the bits modulate the amplitude or frequency of a single tone. Narrow-band interference at that exact frequency wipes out the signal. Multipath fading at that frequency wipes out the signal. Doppler shift moves the signal off frequency.

LoRa does something different. It transmits a chirp — a sinusoid whose frequency increases linearly from f₀ to f₀ + BW over the duration of one symbol, then wraps back. Data is encoded in the starting frequency of each chirp. A receiver that knows the chirp pattern can correlate against it and recover the symbol even when the signal is buried in noise.

The technique is called Chirp Spread Spectrum (CSS). It was first used in radar in the 1940s — military radar systems chirp their pulses for the same reason: to extract weak echoes from noisy environments.

Symbol time and bit rate — the actual math

A LoRa symbol carries SF bits, where SF (Spreading Factor) is configurable from 7 to 12 in the standard mode. The duration of one symbol is:

T_sym = 2^SF / BW

Where BW is the channel bandwidth (typically 125 kHz, 250 kHz, or 500 kHz). This formula is the most important relationship in LoRa. Plug in numbers:

SFBWSymbol time TsymSymbols/secRaw bit rate (SF × BW × CR / 2^SF)
7125 kHz1.024 ms977~5.5 kbps
9125 kHz4.096 ms244~1.76 kbps
10125 kHz8.192 ms122~980 bps
12125 kHz32.768 ms30.5~250 bps

Each step up in SF doubles the symbol time, halves the bit rate, and adds approximately 2.5 dB of processing gain. This is the trade-off that defines LoRa: you buy range with airtime.

Processing gain — why LoRa decodes signals below the noise floor

Processing gain (Gp) is the ratio of chip rate to symbol rate, expressed in dB:

G_p = 10 × log₁₀(2^SF) ≈ 3.01 × SF dB

At SF12, that is roughly 36 dB of processing gain. Combined with the FEC coding gain and a coherent demodulator, this is what lets a LoRa receiver decode a signal whose power is roughly 20 dB below the thermal noise floor. No conventional FSK or OOK system can do this.

Coding rate and forward error correction

LoRa adds Hamming-style forward error correction (FEC) to every payload. The coding rate (CR) controls how much redundancy is added:

CRNotationOverheadRobustness
4/51+25%Detects 1 bit error per nibble
4/62+50%Detects 2, corrects 1
4/73+75%Detects up to 3, corrects 1
4/84+100%Detects up to 4, corrects 2

CR 4/5 is the default — fast, with minimal forward error correction. CR 4/8 doubles airtime but survives much higher bit error rates. Noisy industrial RF environments are the typical case for CR 4/8; clean rural deployments stay at CR 4/5.

Time-on-air — the formula every LoRa engineer must know

The total airtime of a LoRa packet (preamble + header + payload + CRC) determines duty-cycle compliance, collision probability, and battery life. The Semtech reference formula for payload symbols is:

n_payload = 8 + max( ⌈(8·PL − 4·SF + 28 + 16·CRC − 20·H) / (4·(SF − 2·DE))⌉ × (CR + 4), 0 )

T_packet = (n_preamble + 4.25 + n_payload) × T_sym

Where PL is payload length in bytes, CRC is 1 if CRC enabled, H is 0 if explicit header, DE is 1 if low-data-rate optimisation enabled (mandatory for SF11 and SF12 at BW 125 kHz). Most engineers do not memorise this — they use Semtech's LoRa Calculator spreadsheet. But you should understand that airtime grows fast with SF, which is why LoRaWAN's Adaptive Data Rate exists at all.

3. The LoRa Packet Structure

A LoRa frame is built in this order:

[ Preamble | Sync Word | Header (optional) | Payload | CRC ]

4. RSSI and SNR — Two Numbers, One Picture

Every LoRa receiver reports two metrics for every packet: RSSI and SNR. They mean different things and are easy to confuse.

RSSI — Received Signal Strength Indicator

RSSI is the absolute received power, in dBm, at the antenna input of the receiver. A typical LoRa RSSI ranges from about −30 dBm (very strong, transmitter is right next to you) to −137 dBm (at the absolute sensitivity floor). Each radio chip family has its own RSSI calibration — the SX1272 and SX1276 use a slightly different formula than the SX1262.

SNR — Signal-to-Noise Ratio

SNR is the ratio of signal power to noise power, in dB, after the chirp despreader. Because LoRa decodes signals below the noise floor, SNR can be negative — and routinely is. Values from +10 dB (clean signal) down to −20 dB (deep below noise, decoded only because of LoRa's processing gain) are normal.

Which one matters more?

SNR is the better predictor of link quality. RSSI tells you how loud the signal is — but if the noise floor is also loud (urban environments, nearby switching power supplies, cheap LED drivers), high RSSI does not guarantee a working link. SNR tells you how cleanly the signal stands above whatever noise actually exists at your receiver. Two practical rules:

The demodulator SNR thresholds (Semtech datasheet figures) are roughly:

SFRequired SNRSensitivity (BW 125 kHz)
7−7.5 dB−123 dBm
8−10 dB−126 dBm
9−12.5 dB−129 dBm
10−15 dB−132 dBm
11−17.5 dB−134.5 dBm
12−20 dB−137 dBm

Field debugging tip: a packet that consistently arrives with SNR within 3 dB of these thresholds is on the edge of working. Add antenna gain, reduce coax length, or step up the spreading factor before declaring the link "fine."

5. dBm — The Logarithmic Power Unit

RF power is quoted in dBm, not watts. The reason is range: a transmitter at 1 W and a receiver detecting picowatts span 12 orders of magnitude. Logarithms compress that into a manageable scale.

P(dBm) = 10 × log₁₀( P(mW) / 1 mW )
0 dBm1 mW
+10 dBm10 mW
+20 dBm100 mW
+30 dBm1 W
−100 dBm0.1 pW
−137 dBm200 attowatts (LoRa SF12 sensitivity)

Rules of thumb:

6. dBi and Antenna Gain — The Antenna Reshapes, Not Amplifies

dBi means "decibels relative to isotropic." An isotropic radiator is a theoretical point source that radiates RF energy equally in all directions — a perfect sphere. It does not exist physically, but it is a clean reference.

A 5 dBi antenna radiates 10(5/10) = 3.16× more power in its peak direction than an isotropic radiator fed with the same input. But — this is the part most beginners miss — antennas do not create energy. A passive antenna with gain in one direction must have less gain elsewhere. The antenna reshapes the radiation pattern.

In practice this means a 5 dBi omnidirectional antenna has a narrow vertical beamwidth (~30°) and a wide horizontal pattern. It is great for long-distance flat-terrain links. It is poor for talking to a node directly above or below it.

Approximate gain vs. beamwidth at sub-GHz

GainTypeVertical beamwidthTypical use
2.15 dBiHalf-wave dipole~80°Portable nodes, indoor
3 dBiExtended whip~50°Indoor gateways
5 dBiFiberglass omni~30°Outdoor flat terrain
8 dBiTall collinear~15°Rooftop gateway
12+ dBiYagi / panel~20° beamPoint-to-point

Near-field vs far-field — a calibration trap

Antenna gain figures are valid only in the far field, defined as distances greater than:

d_far ≈ 2 × D² / λ

Where D is the largest dimension of the antenna and λ is the wavelength. At 868 MHz, λ ≈ 34.5 cm; for a typical 5 dBi fiberglass antenna ~50 cm long, the far field begins around 1.4 m from the antenna. Closer than that, the field pattern is unpredictable and gain figures do not apply. Range tests done at 1 m are meaningless.

7. The 50 Ω Impedance Standard

Every LoRa transceiver, every antenna pin, every coaxial cable in the RF industry is designed for a 50 Ω characteristic impedance. The whole industry settled on 50 Ω in the 1940s as a compromise between the impedance that minimises loss in coax (~77 Ω) and the impedance that maximises power handling (~30 Ω). 50 Ω is the practical middle ground.

Connect a 75 Ω antenna (cable-TV standard) to a 50 Ω LoRa module and you create an impedance mismatch:

Never power up a high-power LoRa module without an antenna. When the antenna port is left open or shorted, the power amplifier drives an extreme impedance mismatch and most of the transmit energy reflects back into the chip. Sustained operation in this state can permanently damage the PA — particularly on +30 dBm modules where the amplifier is already running near its thermal limit. Connect the antenna first, power up second.

EIRP, ERP, and the difference

EIRP (Effective Isotropic Radiated Power) = TX power + antenna gain (dBi) − cable losses (dB). This is what regulators in most of the world use.

ERP (Effective Radiated Power) = TX power + antenna gain referenced to a half-wave dipole. ERP and EIRP differ by 2.15 dB (a half-wave dipole has 2.15 dBi gain). EIRP is always 2.15 dB higher than ERP for the same setup. India's regulations are written in ERP; FCC and most of Asia-Pacific use EIRP.

8. Frequency Bands by Region

LoRa operates in sub-GHz ISM (Industrial, Scientific, Medical) bands. These bands are licence-exempt — but each country defines its own band edges, max power, and duty cycle rules. A module sold for one region is not legal in another without reconfiguration.

RegionBandMax ERP/EIRPDuty cycle / dwell
India (IN865)865–868 MHz+30 dBm ERP1% per hour
Europe (EU868)863–870 MHz+14 dBm ERP on most sub-bands1% (0.1% on some)
USA / Canada (US915)902–928 MHz+30 dBm400 ms dwell, FHSS required
China (CN470)470–510 MHz+17 dBmPer MIIT rules
Japan / Korea (AS923)920–925 MHz+13 dBmListen-Before-Talk
Australia / NZ (AU915)915–928 MHz+30 dBmFCC-style

India — the IN865 specifics

India's current rule is the "Use of Low Power Equipment in the Frequency Band 865–868 MHz for Short Range Devices (Exemption from Licence) Rules, 2021", notified by the Department of Telecommunications through the Wireless Planning and Coordination wing on 10 December 2021. This supersedes the older 2005 rules that covered only 865–867 MHz and only RFID.

Key parameters for a designer in India:

For peer-to-peer (non-LoRaWAN) deployments, any centre frequency inside 865–868 MHz is legal as long as the occupied bandwidth stays within the band edges. For LoRaWAN deployments, the three IN865 channels are mandatory.

433 MHz LoRa modules are widely sold but not licence-exempt for general use in India. The 433 MHz band is reserved largely for defence and certain government services. Use 865–868 MHz for any deployment, product, or commercial work.
India's +30 dBm ERP ceiling is one of the most generous in the world — matching the US and well above Europe's +14 dBm. A 1 W LoRa module is legal in India when operated inside 865–868 MHz, with appropriate device approval.

9. The Complete Link Budget

A link budget is the calculation that tells you whether a radio link will work, before you build it. It sums every source of signal gain and loss:

Link Margin = TX_Power
            + TX_Antenna_Gain
            + RX_Antenna_Gain
            − Path_Loss
            − Cable_Loss_TX
            − Cable_Loss_RX
            − Connector_Losses
            − Polarisation_Mismatch
            − Fade_Margin
            − RX_Sensitivity

If link margin is positive, the link is theoretically workable; if negative, it cannot work even in free space.

Free-space path loss

FSPL(dB) = 32.45 + 20·log₁₀(f_MHz) + 20·log₁₀(d_km)

At 866 MHz over 5 km: 32.45 + 58.75 + 13.98 ≈ 105.2 dB.

Worked example

+27 dBm TX, two 5 dBi antennas, 0.5 dB cable loss each end, 866 MHz, 5 km clear LOS, SF10 receiver sensitivity −132 dBm, 6 dB fade margin:

Margin = 27 + 5 + 5 − 105.2 − 0.5 − 0.5 − 6 − (−132)
       = 27 + 5 + 5 − 105.2 − 1 − 6 + 132
       = +56.3 dB

A massive theoretical margin. In practice, real-world losses (foliage, buildings, atmospheric absorption, polarisation mismatch, ground reflection) cut deeply into this budget. Free-space math sets the upper bound; physical reality always falls below it.

10. The Quiet Killers Most Blogs Skip

Crystal frequency tolerance

LoRa transceivers use a TCXO (temperature-compensated crystal oscillator) or a plain crystal as their frequency reference. Cheap modules use plain XTAL with ±20 ppm tolerance. At 868 MHz, ±20 ppm is ±17.4 kHz of carrier offset. The receiver's automatic frequency correction window at SF12 / BW 125 kHz is only about ±25% of bandwidth, so a poorly-matched pair of cheap modules can fail to demodulate purely because their crystals drift apart in temperature. TCXOs (±2 ppm) eliminate this, which is why every serious LoRaWAN gateway uses one.

Polarisation alignment

A vertically mounted dipole is vertically polarised. A horizontally mounted dipole is horizontally polarised. Cross-polarised antennas have ~20 dB of attenuation between them. Mounting one node's antenna sideways for "convenience" is the single most common range-test failure.

Fresnel zone clearance

The first Fresnel zone is the elliptical volume of space between transmitter and receiver where most RF energy actually travels. Obstructions inside this zone — even non-blocking ones like trees — cause significant signal loss. The radius at midpoint:

F₁ = 8.66 × √(d_km / f_GHz)

At 866 MHz over 5 km, F₁ ≈ 20.8 m. A clear LOS with antennas at 1.5 m above ground means the Fresnel zone is heavily obstructed by the ground itself. This is why every meaningful long-range LoRa deployment puts antennas on poles or rooftops.

Duty cycle is not a suggestion

A 1% duty cycle limit means if you transmit a 1.3-second SF12 packet, you must stay silent for ~130 seconds afterwards. This is not just regulatory — it prevents your own deployment from saturating its own channel. LoRaWAN's Adaptive Data Rate exists specifically to push healthy links to lower SFs and shorter airtimes.

Closing

LoRa is straightforward at the surface and genuinely deep underneath. The numbers — symbol time, SNR thresholds, link budget, processing gain — are all knowable, and they predict real-world behaviour with surprising accuracy. The places real deployments fail are almost never the modulation itself. They are the antennas, the impedance matching, the ground planes, the polarisation, and the regulatory ceilings. Get those right and the physics will reward you.

Reference notes

Semtech LoRa modulation reference: AN1200.22, "LoRa Modulation Basics". LoRaWAN regional parameters: LoRa Alliance RP002. Indian regulation: DoT/WPC notification dated 10 December 2021 on 865–868 MHz Short Range Devices.