Inside LoRa: Exploring the Future of Wireless IoT with the SX1262
The Internet of Things has connected everything from weather stations to door sensors. However, not all devices have Wi-Fi, power, or cell coverage. Somewhere between Bluetooth’s short reach and 5G’s high cost lies a quieter technology that can whisper data across entire cities. That technology is LoRa, short for Long Range. It trades speed for distance, power for endurance, and complexity for reliability, making it the backbone of many modern sensor networks. This article explores what makes LoRa remarkable: its radio design, how it operates across different frequencies, and the practical limits discovered through real-world testing.
Why Lora?
The Internet of Things (IoT) emerged from a simple idea: everyday objects could collect and exchange information. In the early 2000s, engineers imagined networks of sensors tracking temperature, motion, air quality, and countless other metrics. As microcontrollers became smaller and cheaper, this vision grew, but the communications problem remained. How could thousands of tiny devices transmit data reliably without the power draw of Wi-Fi or the cost of cellular service?
Early IoT systems often relied on short-range wireless technologies like Zigbee, Bluetooth Low Energy, or early mesh networks. These worked well for homes and offices but struggled beyond a few dozen meters or through dense materials. At the other extreme, cellular IoT standards such as LTE-M provided wide coverage but required carrier subscriptions and more power. There was a gap between short-range convenience and long-range reach, a space that demanded low-power radios capable of covering kilometers at almost no cost.
The AirSense 10 CPAP machine provides telemetry through an 4G/LTE connections. It benefits from relatively unlimited power budget being plugged into a wall socket.
That gap led to LoRa, short for Long Range. Developed by a French startup called Cycleo in 2009 and later acquired by Semtech, LoRa introduced a new kind of radio modulation based on chirp spread spectrum. It enabled sensors to communicate across vast areas using minimal energy. LoRa is a physical-layer (PHY) protocol: it defines how data is represented as radio waves, not how devices find or authenticate each other. Higher-level systems, such as LoRaWAN or Meshtastic, are built on top of it, much like Ethernet carries bits while IP decides where they go.
LoRa’s purpose is to send a few bytes, temperature, position, or sensor readings, once every few minutes. Its strength lies in how far those bytes can travel, how little energy they consume, and how well the signal survives interference. In practical terms, LoRa can connect sensors scattered across farms, factories, or city blocks where Wi-Fi cannot reach and where cellular is uneconomical.
Guide to LoRaWAN Sensors: Types and Use Cases | TEKTELICRead a detailed guide to LoRaWAN sensors, their capabilities, benefits, and applications. Get the most out of your LoRaWAN network and IoT.TEKTELICTEKTELIC
An impressive article on different LoRaWAN sensors.
Compared with other IoT communication methods, LoRa occupies a distinctive middle ground. It uses unlicensed spectrum, so there are no ongoing fees. It achieves kilometer-scale range at battery-scale power, something neither Bluetooth nor Wi-Fi can match. And unlike mesh systems that rely on dense node placement, LoRa thrives in sparse deployments where each device must stand on its own. It sacrifices bandwidth for reach, transmitting at rates measured in kilobits rather than megabits. For most IoT sensors, that trade-off is ideal.
Inside the LoRa Protocol
LoRa’s design revolves around simplicity. A radio transmitter, operating in the sub-gigahertz ISM band, emits short bursts of energy encoded in a distinctive pattern known as chirp spread spectrum. The receiving radio listens for those chirps, matches them against the expected pattern, and reconstructs the data, even when the signal is buried deep within background noise.
Spectrum and Channels: The 915 MHz Band
In North America, LoRa operates primarily in the 902–928 MHz ISM band, often referred to simply as 915 MHz ( the midpoint). Within this range, the first 13 MHz of spectrum is divided into 64 narrow channels, each 125 kHz wide, typically used by devices to send data back to a gateway. The upper 13 MHz hosts eight wider channels, each 500 kHz wide, reserved for the gateway to transmit responses to devices. This structure increases the likelihood that low-power devices can reach their gateway while giving the gateway additional bandwidth for returning information.
The lower and upper part of the LoRa Spectrum is typically separated in upload and download channels.
Each channel acts as a separate lane in the radio spectrum. A transmitter selects one lane at random for each message, while a receiver or gateway listens on several lanes simultaneously. By spreading communication across multiple frequencies, LoRa reduces the likelihood of interference and allows thousands of devices to coexist in the same geographic area. This multi-channel approach is one of the reasons LoRa scales so efficiently compared to earlier narrowband systems.
Chirp Spread Spectrum Modulation
The heart of LoRa’s performance lies in its use of chirp spread spectrum (CSS) modulation. Instead of toggling between discrete tones, as traditional radios do, LoRa continuously sweeps its signal up or down in frequency—much like the rising pitch of a bird call. Each data symbol is encoded as a particular pattern of these frequency sweeps.
Five different chirp values, as illustrated by Wikipedia.
Because chirps occupy a wide slice of the spectrum and follow a predictable pattern, the receiver can recognize them even when they are far weaker than the surrounding noise. This gives LoRa an extraordinary resilience, enabling communication across tens of kilometers with only a few tens of milliwatts of power. The trade-off is bandwidth: the system carries relatively little information per second. For IoT sensors that only need to report a temperature or GPS coordinate, the efficiency is ideal.
Bandwidth, Spreading Factor, and Coding Rate
LoRa’s behavior can be tuned through three key parameters: bandwidth, spreading factor, and coding rate.
The bandwidth determines how wide each chirp is, typically 125, 250, or 500 kHz. A narrow bandwidth increases range and sensitivity but slows data transmission. The channel width will usually use the convention explained above.
The spreading factor (SF) controls how long each chirp lasts. Higher values (such as SF12) stretch the signal over time, improving the ability to recover weak transmissions at the cost of speed. Lower values (SF7 or SF8) shorten the chirps, increasing data rate but reducing distance.
Higher values of Spread Factors can typically reach farther.
The third parameter, the coding rate (CR), introduces forward error correction by adding redundant bits to every packet. A higher coding rate means more robustness against interference but longer airtime. Together, these three parameters let engineers strike a balance between power, range, and throughput for each application.
Power, Sensitivity, and Range
Typical LoRa transmitters operate between +2 dBm and +20 dBm, equivalent to just a few tens of milliwatts. Yet receivers can detect signals as faint as −137 dBm, a sensitivity level normally found in scientific instruments rather than consumer radios. The resulting link budget, often exceeding 150 dB, translates into real-world distances of 2 to 5 km in urban areas and 10 to 15 km or more in open terrain.
Reliability and Channel Sharing
Because LoRa operates in unlicensed spectrum, it cannot reserve bandwidth or coordinate transmissions. Devices use a simple ALOHA-style access method: they transmit when ready, pause briefly, and try again later if a message collides. The protocol’s resilience stems from the fact that multiple spreading factors can coexist on the same frequency. A gateway can decode several overlapping signals simultaneously as long as they use different spreading factors. This property allows LoRa networks to scale to thousands of devices without heavy coordination.
Experimenting with LoRa
Understanding LoRa in theory is one thing; seeing it in action is another. To explore how far LoRa can really reach under real-world conditions, we set up an experiment using two Semtech’s SX1262 transceiver, the same chip found in many LoRa modules. The transceivers are mounted on WaveShare SX1262 915 boards, allowing for easy USB or GPIO connectivity. The goal was to measure distance and signal quality using modest antennas and consumer-grade boards, without resorting to directional gear or custom tuning.
The base station ran on a Raspberry Pi 5, with the SX1262 module connected to the GPIO. A Python script continuously listened and logged incoming for packets. The Pi remained indoors, connected to the home network for easy data collection.
A Raspberry Pi 5 acting as our base station, with a SX1262 module and a 3 dBi antenna.
For the mobile side, we used a Particle Tachyon paired with the same SX1262 module. The Tachyon’s integrated battery made it ideal for fieldwork, sending test packets every minute while walking around the city. Each packet included a timestamp and sequence number, allowing the Raspberry Pi base to match received data and count lost packets.
Our mobile station, a Particle Tachyon with a SX1262 module and a small whip antenna.
Working with LoRa in practice revealed one of its less obvious limitations: it is not an interoperability standard. While LoRa defines the physical layer of radio communication, it does not specify how devices encode or format data. Each manufacturer interprets and implements these details differently. As Waveshare’s documentation explains:
“Can it communicate with other LoRa modules?” No. The RF parameters of the LoRa module are not the same, also, there are differences among internal design, communication protocol, data encoder, and so on. For example, two or more SX1262 433M LoRa HATs are needed to realize the communication, used in pairs, can not communicate with other series of LoRa modules.
In practice, this means that LoRa is best viewed as a radio technique and not a universal language. To ensure consistency, both ends of the link must use the same module series. The SX1262 exposes a few configurable parameters, most notably Network ID and Air Speed, which affect how the radio behaves. The documentation is vague, but these likely correspond to channel selection and a combination of bandwidth and spreading factor.
Plugin the Lora hat into the Raspberry Pi was fairly straight forward. The wiki provides sample code to connect the Hat using the RPi.GPIO library. However, the most pratical way to communicate with the is directly through the UART serial, at 9600 baud, 8N1. While is doesn't provide access to some of the boards more advanced feature, its more than sufficient to send and receive message. For the purpose of this experiment, a simple Lora Listener Server was built in python, and is available on GitHub.
import sys
import serial
PORT = "/dev/ttyAMA0"
BAUD = 9600
ser = serial.Serial(
port=PORT,
baudrate=BAUD,
bytesize=serial.EIGHTBITS, # 8
parity=serial.PARITY_NONE, # N
stopbits=serial.STOPBITS_ONE, # 1
xonxoff=False, # software flow control off
rtscts=False, # hardware flow control off
dsrdtr=False, # DSR/DTR flow control off
timeout=1, # non-blocking-ish read
inter_byte_timeout=0.2,
)
# Some devices need these lines asserted; Minicom often does this by default.
ser.setDTR(True)
ser.setRTS(True)
# Clear any stale bytes so you start clean
ser.reset_input_buffer()
print(f"Listening on {PORT} @ {BAUD} (8N1)…")
Python code to open the serial port connection to the SX1262 hat.
Integrating the SX1262 with the Particle Tachyon could have been a challenge, as the Tachyon does not support the standard RPi.GPIO library, even though it uses the same 40-pin GPIO layout. That said, the same practical solution using the UART serial worked perfectly.
#!/usr/bin/env bash
# Serial port is specific to Particle Tachyon
PORT="/dev/ttyHS2"
BAUD=9600
# Configure serial: 9600 8N1, no HW/SW flow control, no echo
stty -F "$PORT" "$BAUD" cs8 -cstopb -parenb -ixon -ixoff -crtscts -echo -opost
TS="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
# Send payload with CR only (no LF)
printf '%s\r' "$TS" > "$PORT"
Example of shell script to send out pings through the SX1262 on the Particle Tachyon.
To measure performance, we conducted several range test in light to moderately dense neighbourhood with mixed buildings and vegetation. Using the particularly bad stock antenna, in a lightly dense area, mostly open parks with trees and small hills, the link remained stable up to 240 meters. However, walking into a moderately dense neighbourhood, where reflections and attenuation were strongest, communication held up to about 150 meters. Upgrading our setup with proper antenna yield much better result, allowing us to reach 500 meters in the moderately dense neighborhood. In any scenario, it was clear that increasing the number of building between the two antennas quickly decreased out range.
Photo by Anton Lukin / Unsplash - In a dense urban area, without clear line of sight, LoRaWan's range falls dramatically. In this case, the antenna should be install one of the taller structures.
As we distanced ourselves from our base station, we began to see packet loss with occasional gaps in the sequence numbers from the mobile unit. Because LoRa operates at the physical layer, it provides no mechanism for detecting or recovering from lost messages. The chirp spread spectrum modulation helps ensure that weak signals are still recognizable, but it does not correct errors or request re-transmission. In more complex systems, such as LoRaWAN or Meshtastic, those reliability features are implemented at a higher layer of the protocol stack. We also noticed that the system was sensitive to movement, providing much more reliable result when both units were static.
The limiting factor in all was antenna placement. It is important to stress that these tests were done in some of the worse condition possible. The base station used a simple antenna mounted in a second-floor window. Placing antennas on rooftops, towers or hills provides clear line of sight, extending LoRa’s range easily to kilometers. The experiment served as a practical reminder of radio fundamentals: elevation and line of sight matter more than transmit power. That said, the distance achieved was still order of magnitude better than bluetooth (about 50m) or wifi (about 100m).
Even within these constraints, the results confirmed that LoRa’s advantages: with minimal power and inexpensive components, it is possible to establish a reliable, low-bandwidth link across complex terrain.
Have you experimented with LoRa or other long-range IoT radios? Share your range results, setup quirks, and lessons learned in the comments below. If you enjoyed this exploration of low-power communication, you might also be interested in our retrospective on the Nabaztag, one of the first connected IoT toys, long before smart speakers and cloud dashboards became mainstream.
Learn more
Discussion in the ATmosphere