πŸ“¦
πŸ’Ύ
⚑
πŸ”
πŸ“‘
πŸ”Œ PROTOCOL SPECIFICATION

LoRa: The 2400-Baud Radio That Reaches 15 Kilometers

How chirp spread spectrum modulation turned $5 radio chips into the backbone of a new wireless revolution β€” and why its constraints feel familiar to anyone who ran a BBS

πŸ“… Documented:
πŸ“Š OSI Layer: Layer Physical (Layer 1)
protocol-lora.doc

LoRa: The 2400-Baud Radio That Reaches 15 Kilometers

How chirp spread spectrum modulation turned $5 radio chips into the backbone of a new wireless revolution β€” and why its constraints feel familiar to anyone who ran a BBS


My first radio was a CB β€” a Cobra 29 that my uncle let me use when I was a kid. I didn’t understand propagation or modulation. I understood that you could press a button and talk to someone miles away, and that was magic. The squelch knob was mysterious. The skip conditions were unreliable. And the conversations were half the fun because you never knew who’d be on the other end.

Years later, I was running a BBS at 2400 baud. A 50 KB text file took over three minutes to transfer. Every byte mattered. You learned to write tight, to compress everything, to make every character count. The constraints weren’t limitations β€” they were the creative pressure that made the whole culture interesting.

LoRa brings that same feeling back.

At its fastest, LoRa moves about 27 kilobits per second. At its slowest β€” the setting that reaches the farthest β€” it crawls at 300 bits per second. That’s slower than a 1964 acoustic coupler modem. And yet people are building mesh networks, off-grid communication systems, and disaster recovery infrastructure with it. A $5 chip on a $25 board, running on a coin cell battery for months, reaching 15 kilometers on a whisper of RF energy.

The BBS operators of the 1980s would recognize this world immediately. Resource-constrained creativity isn’t a bug. It’s where the interesting things happen.

LoRa Chirp Spread Spectrum LoRa chirp modulation β€” frequency sweeps encode data through cyclic shifts, with spreading factor controlling the tradeoff between range and speed

LoRa Packet Structure LoRa packet structure β€” preamble chirps synchronize the receiver, a sync word identifies the network, and FEC-encoded payload carries 1-255 bytes of data

What LoRa Actually Is

First, a distinction that matters more than it seems: LoRa is not LoRaWAN.

LoRa is a physical layer modulation technique. It defines how radio waves are shaped to carry data. That’s it. It’s Layer 1 β€” the same layer as RS-232’s voltage levels, Ethernet’s electrical signaling, or the light pulses in a fiber optic cable.

LoRaWAN is a network protocol built on top of LoRa, designed by the LoRa Alliance for centralized IoT deployments β€” gateways, network servers, application servers. It’s one way to use LoRa, and it’s the way most corporate IoT deployments work.

But the most interesting projects being built today β€” Meshtastic, MeshCore, Reticulum via RNode β€” use raw LoRa without LoRaWAN. They talk directly to the radio chip and build their own networking stacks. This is where the BBS parallel gets real: people building their own networks, their own protocols, their own way.

LoRa the modulation technique is what makes all of this possible. Everything starts at the physical layer.

The Chirp: How It Works

LoRa uses a modulation scheme called Chirp Spread Spectrum (CSS) β€” more precisely, Frequency Shift Chirp Modulation (FSCM). It was developed by a French startup called Cycleo in the late 2000s, which Semtech acquired in 2012 for roughly $5 million. That acquisition may turn out to be one of the best deals in semiconductor history.

A chirp is a signal whose frequency sweeps continuously across a bandwidth. An up-chirp starts at the lowest frequency and sweeps to the highest. A down-chirp does the reverse.

Here’s the key insight: data is encoded by cyclically shifting the starting frequency of the chirp.

Think of it like a clock face. The base (unmodulated) chirp starts at 12 o’clock and sweeps all the way around. To encode a data value, you start at a different position β€” maybe 3 o’clock β€” and sweep from there, wrapping around when you hit the top. The receiver knows where the chirp should start (12 o’clock) and measures where it actually starts. That offset is the data.

Spreading Factor: The Core Tradeoff

LoRa’s spreading factor (SF) controls how many frequency positions (called chips) make up one symbol. The formula is simple:

Chips per symbol = 2^SF

SF7  = 128 chips per symbol   β†’  7 bits per symbol  β†’  ~11 kbps
SF8  = 256 chips per symbol   β†’  8 bits per symbol  β†’  ~6.3 kbps
SF9  = 512 chips per symbol   β†’  9 bits per symbol  β†’  ~3.5 kbps
SF10 = 1024 chips per symbol  β†’  10 bits per symbol β†’  ~2.0 kbps
SF11 = 2048 chips per symbol  β†’  11 bits per symbol β†’  ~1.0 kbps
SF12 = 4096 chips per symbol  β†’  12 bits per symbol β†’  ~0.3 kbps

Higher spreading factors mean longer chirps that take more time to transmit β€” but spread the energy across more chips, giving the receiver more data to work with when pulling the signal out of noise.

Each step up in SF doubles the time on air for a given payload. An SF12 transmission takes 32 times longer than SF7 for the same data. But it can be received at signal levels that SF7 can’t touch.

Bandwidth: The Other Knob

LoRa also lets you choose the bandwidth over which the chirp sweeps:

  • 125 kHz β€” Standard. Best sensitivity, longest range.
  • 250 kHz β€” Double the data rate, slightly less range.
  • 500 kHz β€” Maximum speed, shortest range.

The combination of spreading factor and bandwidth gives you a tunable tradeoff: you can optimize for range, for speed, or for something in between. In practice, most deployments use 125 kHz bandwidth and choose the spreading factor based on distance and environment.

Why Below the Noise Floor Matters

This is the feature that makes LoRa feel like magic.

Most radio communication requires the signal to be stronger than the ambient noise. If the noise floor is -120 dBm, your signal needs to be above -120 dBm for the receiver to distinguish it. This is basic physics β€” it’s like trying to hear someone talk in a loud room. They need to be louder than the room.

LoRa doesn’t play by those rules.

At SF12 with 125 kHz bandwidth, LoRa achieves a receiver sensitivity of approximately -137 to -149 dBm. The thermal noise floor for 125 kHz bandwidth is about -123 dBm. That means LoRa is demodulating signals that are 14 to 20 dB below the noise floor.

The signal is buried in static, and the receiver can still extract it.

How Is That Possible?

Processing gain. By spreading each bit across thousands of chips, the receiver can correlate the incoming signal against the expected chirp pattern. Random noise doesn’t correlate. The chirp does. Over 4096 chips (SF12), even a faint signal accumulates enough correlation energy to stand out from the noise.

It’s the difference between shouting in a crowded room (conventional radio β€” you need to be louder than everyone) and whale song crossing an ocean (LoRa β€” the signal is too faint to hear directly, but its mathematical structure lets you extract it from the noise over time).

This processing gain is what lets a 25 milliwatt transmitter β€” less power than a dim LED β€” reach receivers 15 kilometers away across open terrain. Or, in one extraordinary demonstration, 832 kilometers when transmitted from a weather balloon to ground stations.

That record was set in 2017 by Thomas Telkamp’s ground-to-balloon experiment. Twenty-five milliwatts. Eight hundred and thirty-two kilometers. Let that sink in.

The Hardware: $5 Chips and $25 Boards

LoRa’s physical layer is implemented in silicon by Semtech, the company that owns the patents. The key chip families:

SX1276 / SX1278 β€” The originals. Sub-GHz (137-1020 MHz). Still widely used. These are the chips that launched the LoRa ecosystem.

SX1262 / SX1268 β€” The current generation. Better sensitivity, lower power consumption, simpler interface. SX1262 for global frequencies (150-960 MHz), SX1268 optimized for Chinese 470 MHz band.

SX1280 β€” The 2.4 GHz variant. Operates in the globally license-free 2.4 GHz ISM band. Shorter range than sub-GHz, but no regional frequency restrictions.

These chips cost roughly $3-5 in single quantity. They’re SPI-controlled, low-power, and small enough to fit on a postage stamp.

The real magic happened when board makers started pairing them with microcontrollers:

Heltec WiFi LoRa 32 β€” ESP32 + SX1262 + OLED display + WiFi + Bluetooth. About $15-20.

LilyGo T-Beam β€” ESP32 + SX1262 + GPS + 18650 battery holder. About $25-30. The go-to board for Meshtastic.

RAK WisBlock β€” Modular system. Nordic nRF52840 + SX1262, with swappable sensor boards. More expensive but extremely power-efficient.

Adafruit Feather LoRa β€” Well-documented, beginner-friendly, with the Adafruit ecosystem behind it.

For the cost of a large coffee, you can buy a device that communicates 15 kilometers without infrastructure, runs for months on a battery, and fits in your pocket. The BBS operators of the 1980s needed a phone line, a modem, and a computer that cost thousands. The barrier to entry has collapsed.

LoRa vs LoRaWAN: The Distinction That Matters

This is worth repeating because the confusion is everywhere.

LoRa is the radio modulation. It turns bits into chirps and chirps back into bits. It’s a physical layer technology. It doesn’t know about addresses, routing, encryption, or anything above β€œtransmit this data on this frequency at this spreading factor.”

LoRaWAN is a network architecture specification managed by the LoRa Alliance. It defines:

  • Star-of-stars topology: End devices talk to gateways, gateways talk to a network server
  • Three device classes: Class A (lowest power, uplink-initiated), Class B (scheduled receive windows), Class C (always listening)
  • AES-128 encryption: Network session keys and application session keys
  • Adaptive data rate: The network tells devices which SF to use
  • Centralized infrastructure: You need gateways, a network server, and usually a commercial service (The Things Network, Helium, ChirpStack)

LoRaWAN is designed for IoT sensors reporting to the cloud. It’s good at that job. But it’s fundamentally centralized β€” if the gateway goes down, the end devices can’t talk to each other. They can only talk through the gateway.

This is where the interesting split happens.

The Raw LoRa Ecosystem

The projects I find most compelling use raw LoRa β€” they talk directly to the Semtech radio chips and implement their own networking:

Meshtastic β€” Mesh networking firmware for off-grid communication. Managed flood routing with deduplication. Phone app via Bluetooth. No infrastructure required β€” every device is a potential relay. Encrypted by default. Free, open source.

MeshCore β€” Infrastructure-focused mesh networking. Distinguishes between clients, repeaters, and room servers. Designed for building persistent mesh infrastructure rather than ad-hoc communication.

RNode β€” An open hardware, open firmware LoRa transceiver designed by Mark Qvist. Implements a KISS interface (the same serial framing protocol used in amateur packet radio since the 1980s β€” there’s that BBS connection again). Designed as a building block for larger systems.

Reticulum β€” A cryptographic networking stack, also by Mark Qvist. Medium-agnostic β€” it can run over LoRa, TCP/IP, serial, I2C, anything. Identity-based addressing (no IP addresses). End-to-end encrypted by design. LXMF provides store-and-forward messaging on top of it.

Each of these takes a fundamentally decentralized approach. No gateways. No network servers. No corporate infrastructure. Just radios talking to radios, building networks from the bottom up.

This is the BBS ethos reborn in radio form.

The Resource-Constrained Renaissance

When your data rate is 300 bps, every byte is precious.

Between the BBS era and LoRa, there was another chapter of constrained wireless innovation that most people have forgotten. Around 2007, before LoRa existed, I was working with Jennic JN5139 radio modules at Quality Thermistor β€” IEEE 802.15.4 radios running 6LoWPAN for industrial sensor networks. Same spirit: squeeze IPv6 through a 127-byte frame, make every bit count, build something useful within severe constraints. Different technology, same creative pressure. The thread from 2400-baud modems runs through Jennic’s mesh networks straight to LoRa.

A Meshtastic text message is limited to about 228 bytes. That’s roughly 40 words. You can’t send a selfie. You can’t stream video. You can barely send a paragraph. And yet people are building genuinely useful communication systems within these constraints.

This forces a kind of creative discipline that the modern internet has forgotten. When bandwidth is effectively free, we waste it β€” megabytes of JavaScript to render a blog post, auto-playing videos nobody asked for, tracking scripts that exceed the page content they surveil. We stopped thinking about efficiency because we didn’t have to.

LoRa brings the thinking back.

At 300 bps, you design text-first protocols. You compress aggressively. You think about which information is essential and which is decoration. You build systems that do one thing well rather than everything badly.

The BBS community understood this instinctively. At 2400 baud, you learned to write concise messages. File descriptions mattered because downloading the wrong file cost you 20 minutes. Sysops optimized their menu screens because every byte was time. The constraints created a culture of intentional communication.

LoRa is recreating that culture with radio.

And the applications are serious. Disaster communication when cell towers are down. Sensor networks in areas with no connectivity. Community mesh networks that don’t depend on ISPs. Maritime communication between sailboats. Trail monitoring in national parks. Agricultural sensing across vast properties.

None of these need high bandwidth. All of them need reliability, range, and independence from infrastructure. LoRa delivers exactly that.

What’s Being Built on LoRa

The LoRa physical layer has spawned an ecosystem that’s growing fast. Each of these deserves its own deep dive (and will get one):

Meshtastic β€” The most accessible entry point. Flash the firmware, pair your phone, join a mesh. Managed flood routing means messages hop through every device in range until they reach the destination. Think of it as a decentralized walkie-talkie network with text messaging, GPS sharing, and sensor telemetry. Active community, rapid development, thousands of nodes worldwide.

MeshCore β€” Where Meshtastic is ad-hoc and democratic (every node is equal), MeshCore introduces infrastructure hierarchy. Dedicated repeater nodes with directional antennas create backbone links. Room servers provide group messaging. The design philosophy is closer to building a network than carrying one in your pocket.

RNode β€” Mark Qvist’s open hardware LoRa transceiver. It implements the KISS protocol (Keep It Simple, Stupid) β€” the same framing standard that amateur packet radio operators have used since 1985. An RNode presents itself as a serial TNC (Terminal Node Controller), making it compatible with decades of packet radio software. It’s a bridge between the amateur radio tradition and the LoRa future.

Reticulum β€” Perhaps the most ambitious project in the ecosystem. A networking stack that doesn’t use IP addresses at all. Every identity is a cryptographic keypair. Routing is handled through a system of announces and path discovery. It can run over any medium β€” LoRa via RNode, TCP/IP, serial, even I2C between chips on the same board. LXMF (Lightweight Extensible Message Format) provides store-and-forward messaging on top, with propagation nodes that relay messages across network partitions.

Each of these builds on the LoRa physical layer while taking a fundamentally different approach to networking. Together, they represent a diverse ecosystem of decentralized communication β€” different tools for different problems, all sharing the same radio foundation.

The Proprietary Elephant

LoRa is patented. The core modulation technology is owned by Semtech, protected by patents including US20160094269A1 and several related filings. You can buy LoRa chips from Semtech (or their licensed partners), but you can’t legally manufacture your own LoRa radio from scratch.

This sits uncomfortably with the otherwise open ethos of the ecosystem. Meshtastic is open source. Reticulum is open source. RNode’s firmware and hardware designs are open source. But the physical layer they all depend on is proprietary silicon from a single vendor.

The Reverse Engineering Effort

The LoRa modulation has been reverse-engineered. The gr-lora project implements LoRa demodulation in GNU Radio, and Matt Knight’s 2016 DEF CON talk β€œDecoding LoRa” publicly documented the modulation scheme. Subsequent academic papers have confirmed and refined the understanding.

In practical terms, this means:

  • You can receive and decode LoRa signals with an SDR and open-source software
  • You can transmit LoRa-compatible signals from an SDR (though legality varies)
  • The modulation is well-understood β€” it’s not security through obscurity
  • But production hardware still comes from Semtech β€” no open-source silicon exists

The key patents were filed around 2014, meaning they’ll begin expiring around 2034. When that happens, other chip manufacturers could legally produce LoRa-compatible radios. Until then, the ecosystem depends on Semtech’s continued willingness to sell affordable chips β€” which, to their credit, they’ve done aggressively.

Semtech has also been relatively ecosystem-friendly. They haven’t sued the reverse engineering projects. They’ve published application notes and reference designs. They’ve kept chip prices low enough that the ecosystem thrives. It’s a pragmatic approach: a proprietary modulation that powers an open ecosystem is worth more than a proprietary modulation that nobody uses.

But the tension remains. The entire LoRa ecosystem has a single point of supply chain failure. If Semtech were acquired by a hostile company, if they decided to raise prices dramatically, or if geopolitical factors disrupted manufacturing, every LoRa device in the world would be affected. This is the trade-off the community has accepted, and it’s worth being honest about.

Technical Reference

LoRa Modulation Parameters

ParameterValue
ModulationProprietary CSS (Chirp Spread Spectrum) / FSCM
CreatorCycleo (acquired by Semtech, 2012)
Frequencies433 MHz, 868 MHz (EU), 915 MHz (US/AU), 2.4 GHz
Bandwidth125 kHz, 250 kHz, 500 kHz
Spreading FactorSF5–SF12
Data Rate0.3 kbit/s to 27 kbit/s
Receiver SensitivityDown to -149 dBm
Range5 km urban, 15 km rural, 832 km record
Error CorrectionHamming code (CR 4/5 to 4/8)
Key ChipsSemtech SX1276, SX1278, SX1262, SX1268, SX1280
ISM BandsLicense-free worldwide (region-specific)
PatentUS20160094269A1 (Semtech)

Spreading Factor Detail

SFChips/SymbolBits/SymbolData Rate (125 kHz BW)Approx. SensitivityTime on Air (10 bytes)
SF5325~21 kbps-130 dBm~5 ms
SF6646~16 kbps-133 dBm~8 ms
SF71287~11 kbps-136 dBm~15 ms
SF82568~6.3 kbps-139 dBm~28 ms
SF95129~3.5 kbps-141 dBm~55 ms
SF10102410~2.0 kbps-143 dBm~100 ms
SF11204811~1.0 kbps-146 dBm~200 ms
SF12409612~0.3 kbps-149 dBm~400 ms

Regional Frequency Allocations

RegionFrequency BandMax TX PowerDuty Cycle Limit
Europe (EU868)863-870 MHz14 dBm (25 mW)0.1% - 10% per sub-band
North America (US915)902-928 MHz30 dBm (1 W)No duty cycle (FCC Part 15)
Australia (AU915)915-928 MHz30 dBm (1 W)No duty cycle
Asia (AS923)923 MHz16 dBm (40 mW)Varies by country
India (IN865)865-867 MHz30 dBm (1 W)No duty cycle
China (CN470)470-510 MHz19.15 dBm (82 mW)Varies

LoRa Packet Structure

The LoRa packet (shown in the diagram above) operates in two modes:

  • Explicit mode (default): The header is included, containing payload length, coding rate, and CRC presence. The receiver auto-configures from the header β€” flexible but costs airtime.
  • Implicit mode: No header. Both transmitter and receiver must pre-agree on all parameters. Saves airtime for fixed-format packets β€” common in beacon and sensor applications.

The preamble length is configurable from 6 to 65,535 symbols. Longer preambles improve detection reliability at the cost of airtime. Most deployments use 8 symbols. The sync word acts as a network identifier β€” devices with different sync words ignore each other’s transmissions even on the same frequency, enabling simple network partitioning.

For the RF engineers in the room, here’s how the math breaks down for a typical long-range link:

Transmit power:           +14 dBm (25 mW, EU868 limit)
Transmit antenna gain:    +2.15 dBi (quarter-wave monopole)
EIRP:                     +16.15 dBm

Path loss at 10 km (868 MHz, free space):  -131 dB
Additional margin for terrain/foliage:     -10 dB

Received signal:          -124.85 dBm

Receiver sensitivity (SF12, 125 kHz):  -149 dBm

Link margin:              +24.15 dB   ← Plenty of headroom

That 24 dB of link margin means the signal could be further attenuated by a factor of 250 and still be demodulated. This is why LoRa works through walls, over hills, and in conditions that would kill conventional narrowband radio links.

At SF7, the sensitivity drops to about -136 dBm, giving roughly 11 dB of margin on the same link β€” tighter, but still workable for line-of-sight. This is the tradeoff in action: SF12 gives you margin to burn but only moves data at 300 bps. SF7 moves data 32 times faster but needs a cleaner path.

The Closing Thought

I keep coming back to that CB radio. A kid pressing a button and hearing a voice come back from miles away. No internet. No infrastructure. Just radio waves and the speed of light.

LoRa brings that feeling back, updated for the 2020s. A $25 board. A chirp that barely whispers above the noise floor. Fifteen kilometers of reach from something you can hold in your palm.

And just like the BBS era, the constraints are the point. When you have 300 bits per second, you don’t waste them. When you’re building a mesh network with no central authority, you design differently. When your device needs to run for months on a battery, you think about every milliamp.

The people building on LoRa today β€” running Meshtastic nodes on mountaintops, deploying MeshCore repeaters along hiking trails, connecting RNodes into Reticulum networks that span cities β€” they’re the spiritual descendants of the sysops who ran bulletin boards on second phone lines. Different technology, same impulse: build your own network, your own way, because the existing infrastructure doesn’t do what you need.

The modulation is proprietary. The ecosystem is open. The constraints are severe. And the creative energy is remarkable.

Three hundred bits per second. Fifteen kilometers. No infrastructure.

That’s not a limitation. That’s an invitation.


This post is part of a series on LoRa and the decentralized radio ecosystem. Next up: Meshtastic (accessible mesh networking), MeshCore (infrastructure-focused mesh), RNode (open hardware transceiver), and Reticulum (cryptographic networking stack). For physical layer heritage, see RS-232 β€” the serial standard that started it all. Browse our complete protocol collection.

Page Views:
Loading...
πŸ”„ Loading

☎️ contact.info // get in touch

Click to establish communication link

Astro
ASTRO POWERED
HTML5 READY
CSS3 ENHANCED
JS ENABLED
FreeBSD HOST
Caddy
CADDY SERVED
PYTHON SCRIPTS
VIM
VIM EDITED
AI ENHANCED
TERMINAL READY
RAILWAY BBS // SYSTEM DIAGNOSTICS
πŸ” REAL-TIME NETWORK DIAGNOSTICS
πŸ“‘ Connection type: Detecting... β—‰ SCANNING
⚑ Effective bandwidth: Measuring... β—‰ ACTIVE
πŸš€ Round-trip time: Calculating... β—‰ OPTIMAL
πŸ“± Data saver mode: Unknown β—‰ CHECKING
🧠 BROWSER PERFORMANCE METRICS
πŸ’Ύ JS heap used: Analyzing... β—‰ MONITORING
βš™οΈ CPU cores: Detecting... β—‰ AVAILABLE
πŸ“Š Page load time: Measuring... β—‰ COMPLETE
πŸ”‹ Device memory: Querying... β—‰ SUFFICIENT
πŸ›‘οΈ SESSION & SECURITY STATUS
πŸ”’ Protocol: HTTPS/2 β—‰ ENCRYPTED
πŸš€ Session ID: PWA_SESSION_LOADING β—‰ ACTIVE
⏱️ Session duration: 0s β—‰ TRACKING
πŸ“Š Total requests: 1 β—‰ COUNTED
πŸ›‘οΈ Threat level: MONITORED β—‰ MONITORED
πŸ“± PWA & CACHE MANAGEMENT
πŸ”§ PWA install status: Checking... β—‰ SCANNING
πŸ—„οΈ Service Worker: Detecting... β—‰ CHECKING
πŸ’Ύ Cache storage size: Calculating... β—‰ MEASURING
πŸ”’ Notifications: Querying... β—‰ CHECKING
⏰ TEMPORAL SYNC
πŸ•’ Live timestamp: 2026-02-01T16:29:24.036Z
🎯 Update mode: REAL-TIME API β—‰ LIVE
β—‰
REAL-TIME DIAGNOSTICS INITIALIZING...
πŸ“‘ API SUPPORT STATUS
Network Info API: Checking...
Memory API: Checking...
Performance API: Checking...
Hardware API: Checking...
Loading discussion...