How it works
This uses the time-on-air formula from Semtech's LoRa modem documentation. Each step up in spreading factor roughly doubles the airtime, which buys range and sensitivity at the cost of more energy and fewer messages per hour.
Low data rate optimisation is switched on automatically when a symbol lasts longer than 16 ms (SF11 and SF12 at 125 kHz), as LoRaWAN requires. The duty-cycle figure assumes a 1% limit like many EU868 sub-bands; check the rules for your region and channel plan.
T_sym = 2^SF / BW
T_preamble = (n_preamble + 4.25) × T_sym
n_payload = 8 + max(ceil((8PL − 4SF + 28 + 16CRC − 20IH) / (4(SF − 2DE))) × (CR + 4), 0)
T_air = T_preamble + n_payload × T_symWorked example
A 20-byte payload at SF7, 125 kHz, coding rate 4/5 with an 8-symbol preamble, explicit header and CRC takes 56.6 ms on air. Under a 1% duty cycle that allows about 636 transmissions per hour. The same packet at SF12 takes about 1.3 seconds.