All Resources

R-39

Electronics

LoRa: Long Range Telemetry at Almost No Cost

Kilometres of range on a coin cell — the spreading-factor trade, duty-cycle arithmetic, payload discipline, and when LoRaWAN beats running your own network.

PAR2 Labs

August 21, 2026

13 min

LoRa: Long Range Telemetry at Almost No Cost

LoRa buys range and battery life by giving up bandwidth, and the whole engineering discipline is learning to want very little data. A node that sends eleven bytes every fifteen minutes can run for years on a cell and reach a gateway kilometres away through buildings. A node that tries to send a kilobyte a minute will not work at all, and understanding exactly why is the difference between a deployment and a science project.

01

The trade you are making

LoRa's spreading factor sets the trade directly: a higher spreading factor gives more range and more link budget, at the cost of a dramatically longer transmission for the same payload — which costs both energy and airtime allowance.

Airtime is the constraint people miss. Regional regulations cap how long a device may transmit per hour, and at high spreading factors a single message can consume a meaningful fraction of that budget.

Spreading factorRelative rangeAirtime for a small payloadPractical use
SF7ShortestTens of millisecondsNode close to the gateway, frequent updates possible
SF9ModerateLow hundreds of millisecondsThe usual urban working point
SF12LongestAround a second or moreFringe nodes only — expensive in both energy and airtime

Each step up in spreading factor roughly doubles airtime for the same payload. Let the network manage this adaptively rather than pinning every node to SF12.

02

The topology, and where the intelligence sits

LoRaWAN is a star-of-stars: nodes talk to any gateway in range, gateways forward everything to a network server, and the network server deduplicates, manages security, and hands application payloads on. Nodes are not associated with a particular gateway, which is what makes coverage cheap to extend.

LORAWAN — STAR OF STARSGateway Aforwards all it hearsClass A nodeTX then 2 RX windowsGateway Boverlapping coverageApplicationdecoded payloadsJoin serverOTAA keysNetwork serverdedupe · MAC · keysA NODE IS NOT BOUND TO A GATEWAY — ANY GATEWAY THAT HEARS IT WILL FORWARD, AND THE SERVER DEDUPLICATES

Fig 1 — adding coverage means adding a gateway, with no device reconfiguration. Class A nodes sleep until they transmit, which is why battery life is measured in years.

The whole discipline is learning to want very little data.

03

Building a deployment

Seven steps. The payload discipline in step 03 is where most of the battery life and most of the airtime headroom is won.

01

Confirm LoRa is the right radio

  • TOOL

    A decision, in writing

  • USE

    Payload size × frequency × node count

  • GET

    A justified radio choice

Estimate bytes per message and messages per hour per node. If you need more than a few hundred bytes per node per hour, or sub-second latency, or a downlink-heavy protocol, choose something else — cellular IoT or Wi-Fi.

Why: LoRa is exceptional at small, infrequent, uplink-dominated telemetry and poor at everything else. Most failed deployments chose it for range and then needed bandwidth.

02

Decide network server: public, private or managed

  • TOOL

    The Things Stack, or equivalent

  • USE

    Coverage, data residency, and who operates it

  • GET

    A named operator for the network layer

Use a community network where coverage exists and the data is not sensitive. Run or buy a private network server where you need guaranteed coverage, data residency or an SLA. Either way, decide before deploying hardware.

Why: The network server owns session keys and deduplication. Migrating it after deployment means rejoining every device in the field.

03

Design the payload to the byte

  • TOOL

    A binary codec

  • USE

    Bit-packed fields, scaled integers, no JSON

  • GET

    A payload of ten to twenty bytes

Pack fields at bit level with fixed scaling — a temperature as a signed 12-bit value in tenths of a degree, not a float, and certainly not a JSON string. Version the format in the first few bits and write the decoder alongside the encoder.

Why: Airtime and energy scale with payload length. JSON on a LoRa link is a self-inflicted wound: it can multiply airtime severalfold for identical information.

04

Let the network adapt the data rate

  • TOOL

    Adaptive Data Rate

  • USE

    ADR enabled for stationary nodes

  • GET

    Each node at its cheapest working spreading factor

Enable ADR for anything stationary and let the network server lower the spreading factor for nodes with margin. Disable it for mobile nodes, where the link changes faster than ADR converges.

Why: A node pinned to SF12 that could work at SF8 wastes energy and airtime on every single message, forever, for no benefit.

05

Join with OTAA and rotate keys properly

  • TOOL

    OTAA activation

  • USE

    AppKey provisioned at manufacture; session keys derived per join

  • GET

    A device that can rejoin cleanly

Use over-the-air activation rather than hardcoded session keys, provision the root key during manufacture, and make sure the device handles a rejoin after a network-server restart without a site visit.

Why: Hardcoded session keys cannot be rotated and turn a network migration into a fleet recall. OTAA is marginally more work once and much less work forever.

06

Budget duty cycle, not just battery

  • TOOL

    An airtime calculator

  • USE

    Airtime per message × messages per hour vs the regional limit

  • GET

    A schedule that stays legal

Compute airtime per message at your worst-case spreading factor and multiply by the message rate. Stay well inside the regional duty-cycle limit, and design retries with jitter so a network blip does not cause the whole fleet to transmit in lockstep.

Why: Duty-cycle limits are regulatory, and a compliant stack will simply refuse to transmit when the budget is spent — which looks exactly like a dead device.

07

Survey before you install

  • TOOL

    A mobile test node

  • USE

    Log RSSI and SNR at every planned node position

  • GET

    Gateway placement that works

Walk the site with a test node logging received signal strength and signal-to-noise at each intended position, including the worst one. Place gateways high and clear, and verify the fringe nodes specifically.

Why: Range figures are quoted for line of sight. Real buildings, metalwork and terrain determine the actual link budget, and a survey costs a day against a redeployment costing weeks.

04

Common mistakes

Almost every LoRa deployment problem traces back to treating the link like an IP network with worse latency. It is not; it is a constrained radio with a legal airtime allowance.

What goes wrong

01

Sending JSON. It can multiply airtime severalfold for the same information and drains batteries proportionally.

02

Pinning every node to the highest spreading factor 'for range', wasting energy and airtime on nodes that had margin.

03

Designing around downlink. Class A devices only listen briefly after transmitting; anything command-heavy fits LoRa badly.

04

Ignoring the duty-cycle limit until the stack starts silently refusing to transmit.

05

Hardcoding session keys, so a network-server change becomes a fleet recall.

06

Skipping the site survey and discovering the fringe nodes are unreachable after installation.

05

Reference

The Things Industries documentation is the most practical LoRaWAN reference available, and the specification itself is worth reading for the MAC and security model.

Primary documentation

The Things Stack documentation

Network server operation, ADR, payload formatters, OTAA join flow.

The Things Network

Community coverage, and the fastest way to test before committing to gateways.

LoRa Alliance

The LoRaWAN specification, regional parameters and duty-cycle rules.

Semtech LoRa

The radio layer itself — spreading factors, link budget and modulation.

MQTT

How application payloads usually leave the network server.

Key Takeaways

01

LoRa is for small, infrequent, uplink-dominated telemetry — choose something else for anything more.

02

Design the payload to the byte and version it; never send JSON over the air.

03

Enable adaptive data rate for stationary nodes so each runs at its cheapest working spreading factor.

04

Budget airtime against the regional duty-cycle limit, not just battery capacity.


PAR2 Labs · Electronics

Work With Us

Have a problem worth solving?