
Airtime is the real payload cost
What a message costs on a LoRa link is the time it occupies the channel, and that is set mostly by the radio settings, not the bytes. This lesson works one reproducible packet through the airtime formula.
The sum
A packet costs the time it occupies the channel: its symbols multiplied by the time of one symbol, which is 2 to the power of the spreading factor divided by the bandwidth. At SF9 and 125 kHz a symbol lasts 4.096 ms.
The preamble is the programmed 8 symbols plus 4.25 for the sync word and the start of the frame, 12.25 before any data. Then come 8 symbols for the header and the start of the payload, and as many more as the payload and its check need at the coding rate.
The reference packet on the bench is six bytes, SF9, 125 kHz, coding rate 4/5, explicit header, check on, 8-symbol preamble. Preamble 12.25 plus body 18 is 30.25 symbols, and 30.25 times 4.096 ms is 123.9 ms. With the header left out the same bytes take 103.4 ms, which is a different packet.
Bytes come in blocks
The coder works on groups, so time does not climb byte by byte. Six, seven and eight bytes at SF9 all take 123.9 ms; nine takes 144.4 ms. One byte over a step edge costs a whole block.
One setting outweighs the bytes
Each step of spreading factor doubles the symbol time. The same six bytes take 62 ms at SF8, 124 ms at SF9 and nearly a second at SF12. No saving in the payload comes close.
What else is in the packet
A LoRaWAN uplink with a port carries 13 bytes of its own before your six, so the report becomes 19 bytes and about 185 ms at SF9. Some regions also limit airtime. A 1% duty cycle is 36 seconds an hour, which holds about 290 reference packets. Australia's class licence sets none, so there the cost is the battery and the shared channel. The rules lesson sets out the Australian conditions.
Common mistakes
- Pricing a message by its bytes. The cost is airtime, which moves in blocks and with every setting. Compute it for the settings you will use.
- Forgetting the protocol's own bytes. LoRaWAN adds 13 before the payload, so a six-byte report is a 19-byte packet.
- Quoting one airtime for every setting. The figure belongs to one packet at one set of parameters. Change the spreading factor, bandwidth, coding rate, header or check and it changes.
Edit this page — content/fundamentals/lora/airtime-is-the-real-payload-cost.mdx
Discuss this article
Ask about this page. The answer stays here, on the page it belongs to, for whoever hits the same wall next.