<!--order=1-->


<h1>LoRa Basics: Range, Bandwidth, and Frequency Bands</h1>
<p>LoRa (Long Range) is a wireless modulation technique designed for low-power, long-distance communication of small amounts of data. It's not WiFi. It's not Bluetooth. It's a purpose-built radio technology for sensor networks and IoT devices that need to send small messages over kilometres using a coin cell battery. Understanding how it works explains both its strengths and its constraints.</p>

<h2>What LoRa Actually Is</h2>
<p>LoRa is a proprietary spread spectrum modulation method developed by Semtech. "Spread spectrum" means the signal is spread across a wider bandwidth than strictly necessary — this makes it resistant to interference and allows signals to be decoded even when they're below the noise floor. The chirp spread spectrum (CSS) technique LoRa uses makes it extremely resilient in noisy radio environments.</p>

<table>
  <thead><tr><th>Property</th><th>LoRa</th><th>WiFi (2.4GHz)</th><th>Zigbee</th><th>Bluetooth LE</th></tr></thead>
  <tbody>
    <tr><td>Range (line of sight)</td><td>2–15 km</td><td>50–100m</td><td>100m</td><td>10–100m</td></tr>
    <tr><td>Range (urban)</td><td>1–3 km</td><td>20–50m</td><td>30–50m</td><td>10–30m</td></tr>
    <tr><td>Data rate</td><td>0.3–50 kbps</td><td>1–600 Mbps</td><td>250 kbps</td><td>1–2 Mbps</td></tr>
    <tr><td>Power (TX)</td><td>Very low</td><td>High</td><td>Low</td><td>Very low</td></tr>
    <tr><td>Battery life</td><td>Years</td><td>Hours/days</td><td>Months</td><td>Days/months</td></tr>
    <tr><td>Topology</td><td>Star or mesh</td><td>Star (AP)</td><td>Mesh</td><td>Star or mesh</td></tr>
  </tbody>
</table>

<h2>Frequency Bands</h2>
<p>LoRa operates in unlicensed ISM bands. The correct band depends on your country — using the wrong frequency is illegal:</p>

<table>
  <thead><tr><th>Band</th><th>Regions</th><th>Notes</th></tr></thead>
  <tbody>
    <tr><td>433 MHz</td><td>Asia, parts of Europe</td><td>Better penetration through walls and vegetation; longer wavelength</td></tr>
    <tr><td>868 MHz</td><td>Europe</td><td>EU standard band; 1% duty cycle restriction applies</td></tr>
    <tr><td>915 MHz</td><td>North America, Australia, South America</td><td>Canada: 915 MHz (Industry Canada ISM band); no duty cycle restriction in most regions</td></tr>
    <tr><td>923 MHz</td><td>Japan, Southeast Asia</td><td>AS923 regional parameter set</td></tr>
  </tbody>
</table>

<p>In Canada, the 915 MHz band (902–928 MHz) is the right one. Waveshare LoRa modules come in 433MHz and 915MHz variants — get the right one.</p>

<h2>Spreading Factor</h2>
<p>Spreading Factor (SF) is the most important tunable parameter in LoRa. It controls the tradeoff between range and data rate:</p>

<table>
  <thead><tr><th>Spreading Factor</th><th>Data rate (approx.)</th><th>Range (relative)</th><th>Airtime per packet</th><th>Use case</th></tr></thead>
  <tbody>
    <tr><td>SF7</td><td>~5.5 kbps</td><td>Short</td><td>~50ms</td><td>Short range, high throughput</td></tr>
    <tr><td>SF8</td><td>~3.1 kbps</td><td>Medium-short</td><td>~100ms</td><td>Medium range</td></tr>
    <tr><td>SF9</td><td>~1.8 kbps</td><td>Medium</td><td>~200ms</td><td>Medium range</td></tr>
    <tr><td>SF10</td><td>~1.1 kbps</td><td>Medium-long</td><td>~370ms</td><td>Longer range</td></tr>
    <tr><td>SF11</td><td>~0.5 kbps</td><td>Long</td><td>~740ms</td><td>Long range, slow</td></tr>
    <tr><td>SF12</td><td>~0.3 kbps</td><td>Maximum</td><td>~1.5s</td><td>Maximum range, very slow</td></tr>
  </tbody>
</table>

<p>Each step up in SF roughly doubles the range but also doubles the time-on-air (and doubles the power used). For Meshtastic in fields with clear line of sight, SF9 or SF10 is a reasonable starting point. In dense vegetation or over rough terrain, SF11 or SF12.</p>

<h2>Bandwidth and Coding Rate</h2>
<pre>
Bandwidth options: 125 kHz, 250 kHz, 500 kHz
  - Wider bandwidth = faster data rate, shorter range
  - 125 kHz is the standard for most long-range use

Coding Rate: 4/5, 4/6, 4/7, 4/8
  - Higher coding rate = more redundancy = better error correction = slower
  - 4/5 is typical (20% overhead)
  - 4/8 is used in very noisy environments (100% overhead)

Approximate formula for data rate:
  DR = SF × (BW / 2^SF) × CR
  
For SF10, BW=125kHz, CR=4/5:
  Effective bit rate ≈ 1.1 kbps
  For a 50-byte Meshtastic packet: airtime ≈ 400ms
</pre>

<h2>Link Budget</h2>
<pre>
Link budget = TX power + TX antenna gain - cable losses
            - free space path loss
            + RX antenna gain - RX sensitivity threshold

Example (915 MHz, 1km, SF10):
  TX power:            20 dBm (100mW — typical Waveshare module max)
  TX antenna:          +2 dBi (small omnidirectional)
  Free space path loss: -91.5 dB at 1km, 915 MHz
  RX antenna:          +2 dBi
  RX sensitivity:      -137 dBm (SF10, 125kHz bandwidth)

  Link margin = 20 + 2 - 91.5 + 2 - (-137) = 69.5 dB link margin
  
A margin of 69.5 dB is enormous — 1km with SF10 is easy in clear conditions.
Real-world loss from vegetation, terrain, and buildings easily eats 20-40 dB.
</pre>

<h2>Antenna, Polarization, and Installation</h2>
<p>A good radio module cannot compensate for a poor antenna installation. The antenna must match the regional band, be connected before transmitting, and have a clear return path through the radio ground.</p>
<ul>
  <li>Use a 915 MHz antenna with a 915 MHz module in Canada; do not tune a 433 MHz antenna by guesswork.</li>
  <li>Keep the antenna vertical on both ends of a normal field link. A horizontal antenna can lose a large amount of signal against a vertical one.</li>
  <li>Keep metal, batteries, carbon-fibre parts, and long unshielded wires away from the radiating element.</li>
  <li>Every connector and cable adds loss. A shorter, better coax run is usually more useful than a higher advertised antenna gain.</li>
  <li>Respect the legal transmit-power and antenna-gain limits for the region. Link budget calculations are not permission to exceed them.</li>
</ul>

<h2>Airtime, Capacity, and Collisions</h2>
<p>Long range does not mean unlimited capacity. LoRa is a shared channel: while one node is transmitting, other nodes may have to wait or collide. Higher spreading factors keep packets on the air longer, which makes a busy mesh less efficient.</p>
<pre>
Approximate planning rule:
  More range       → higher SF → longer airtime
  More throughput  → lower SF  → shorter airtime
  More redundancy  → higher CR → longer airtime

For a field mesh:
  - keep messages short
  - avoid frequent position broadcasts
  - do not send telemetry more often than the project needs
  - use the lowest reliable preset found by testing
</pre>
<p>A node that can barely hear a packet is not automatically a good relay. It may consume airtime while producing retries and missed messages. Measure delivery over time, not just one successful packet.</p>

<h2>Repeatable Range Testing</h2>
<pre>
1. Use identical regional settings and channel configuration on both nodes.
2. Start with a known location and record antenna height.
3. Send a numbered test message or use the Meshtastic range-test module.
4. Record RSSI, SNR, packet loss, distance, weather, and terrain.
5. Repeat the route in the other direction if possible.
6. Change only one variable—height, antenna, preset, or power—between tests.
</pre>
<p>This produces information you can use later. “It worked once from the truck” is a useful observation, but it is not a coverage result.</p>

<h2>LoRa vs. LoRaWAN vs. Meshtastic</h2>

<table>
  <thead><tr><th></th><th>Raw LoRa</th><th>LoRaWAN</th><th>Meshtastic</th></tr></thead>
  <tbody>
    <tr><td>What it is</td><td>The radio modulation itself</td><td>Protocol layer on top of LoRa; requires gateways and network server</td><td>Mesh protocol on top of LoRa; no infrastructure needed</td></tr>
    <tr><td>Topology</td><td>Point-to-point or custom</td><td>Star (nodes → gateways → server)</td><td>Mesh (nodes relay for each other)</td></tr>
    <tr><td>Infrastructure</td><td>None</td><td>Gateways + network server (TTN, Chirpstack)</td><td>None — nodes form the network</td></tr>
    <tr><td>Range extension</td><td>Manual relay nodes</td><td>More gateways</td><td>Automatic — any node relays</td></tr>
    <tr><td>Best for</td><td>Custom protocols, research</td><td>Large-scale sensor networks with infrastructure</td><td>Off-grid mesh communication; field deployment without infrastructure</td></tr>
  </tbody>
</table>

<h2>References</h2>
<ul>
  <li><a href="https://www.semtech.com/lora/what-is-lora" target="_blank" rel="noopener">Semtech — What is LoRa? ↗</a></li>
  <li><a href="https://lora-alliance.org/resource-hub/lorawanr-specification-v11" target="_blank" rel="noopener">LoRa Alliance — LoRaWAN Specification ↗</a></li>
  <li><a href="https://meshtastic.org/docs/overview/mesh-algo/" target="_blank" rel="noopener">Meshtastic — Mesh Algorithm ↗</a></li>
</ul>
