Documentation sections
LoRa Link Budget Calculator — Sensitivity, Time on Air & Range
POSThttps://rftools.io/ api/ py/ v1/ calculate
Slug lora-link-budget. LoRa link budget from the Semtech SX1276 formulas: receiver sensitivity by spreading factor and bandwidth, symbol time, time on air with automatic low-data-rate optimisation, duty-cycle off-time, free-space or Okumura–Hata path loss, link margin and maximum range.
Inputs
Send every one of these in inputs, in the units shown. Most are required: a call without one is refused (400) and costs nothing; one the calculator can do without takes the default shown. An input outside its range is still computed and flagged in the provenance.
| Name | Unit | Range | Default | Description |
|---|---|---|---|---|
| spreadingFactornumber | none | 6 … 12 | 9 | Chips per symbol are 2^SF; each step up adds about 2.5 dB of sensitivity and doubles the airtime |
| bandwidthnumber | kHz | at least 7.8 | 125 | LoRa signal bandwidth; 125 kHz in most LoRaWAN channels |
| codingRatenumber | none | 1 … 4 | 1 | Forward error correction: four data bits in five to eight coded bits |
| payloadLengthnumber | bytes | 1 … 255 | 20 | Bytes in the LoRa payload, 1 to 255 (a LoRaWAN frame adds 13 bytes of overhead to the application data) |
| preambleLengthnumber | symbols | at least 0 | 8 | Programmed preamble symbols; 8 in LoRaWAN |
| implicitHeadernumber | none | 0 … 1 | 0 | Header Mode |
| crcnumber | none | 0 … 1 | 1 | Payload CRC |
| noiseFigurenumber | dB | at least 0 | 6 | About 6 dB for an SX127x with highest LNA gain |
| txPowernumber | dBm | any | 14 | 14 dBm is the usual EU 868 MHz limit; 20 dBm with PA_BOOST |
| txGainnumber | dBi | any | 2.15 | Transmit Antenna Gain |
| rxGainnumber | dBi | any | 5 | Receive Antenna Gain |
| lossesnumber | dB | at least 0 | 2 | Cable & Other Losses |
| frequencynumber | MHz | at least 1 | 868 | Frequency |
| pathLossModelnumber | none | 0 … 5 | 1 | Free space, or Okumura–Hata for an urban, suburban or rural path |
| distancenumber | km | at least 0.001 | 2 | Distance |
| baseHeightnumber | m | at least 1 | 30 | Used by Okumura–Hata, which covers 30 to 200 m |
| mobileHeightnumber | m | at least 0.1 | 1.5 | Used by Okumura–Hata, which covers 1 to 10 m |
| dutyCyclenumber | % | 0.001 … 100 | 1 | Share of time a device may transmit; 1% in the EU 868.0–868.6 MHz sub-band (ETSI EN 300 220-2) |
| extraLossCountnumber | none | 0 … 6 | 0 | How many further losses the link adds, such as building entry, foliage, body or polarisation mismatch (0–6) |
| extraLoss1number | dB | 0 … 50 | 0 | A further loss on the link, such as building entry, foliage, body loss or polarisation mismatch |
| extraLoss2number | dB | 0 … 50 | 0 | A further loss on the link, such as building entry, foliage, body loss or polarisation mismatch |
| extraLoss3number | dB | 0 … 50 | 0 | A further loss on the link, such as building entry, foliage, body loss or polarisation mismatch |
| extraLoss4number | dB | 0 … 50 | 0 | A further loss on the link, such as building entry, foliage, body loss or polarisation mismatch |
| extraLoss5number | dB | 0 … 50 | 0 | A further loss on the link, such as building entry, foliage, body loss or polarisation mismatch |
| extraLoss6number | dB | 0 … 50 | 0 | A further loss on the link, such as building entry, foliage, body loss or polarisation mismatch |
Outputs
Returned in values, by key. A value that is unbounded or undefined is null.
| Field | Unit | Description |
|---|---|---|
| linkMarginheadline | dB | Link Margin |
| sensitivity | dBm | Receiver Sensitivity |
| receivedPower | dBm | Received Power |
| pathLoss | dB | Path Loss |
| maxRange | km | Maximum Range |
| timeOnAir | ms | Time on Air |
| symbolTime | ms | Symbol Time |
| payloadSymbols | none | Payload Symbols |
| lowDataRateOptimize | none | Low-Data-Rate Optimisation (1 = On) |
| bitRate | bit/s | Equivalent Bit Rate |
| offTime | s | Minimum Off-Time After Each Packet |
| packetsPerHour | none | Packets per Hour at the Duty Cycle |
| totalLoss | dB | The cable and other losses, the path loss and every extra loss, added |
Calling it
- Calculate: one call, the request and response in full, and its errors.
- Batch: this calculator with others, or a sweep, in one request.
- Solve for a target: the value of one input that brings an output to a target.