
The chirp is the symbol
A LoRa symbol is a tone that sweeps across the whole band, starting at one of a fixed set of points. This lesson plots one symbol, frequency against time, and shows what shifting the start does and where it wraps.
A tone that sweeps
LoRa's basic signal is a chirp: a tone whose frequency rises steadily across the whole bandwidth, from the bottom edge to the top, in a time called one symbol. Plotted as frequency against time, a chirp is a sloping straight line.
That plot is a view of the waveform. It is not a picture of the signal crossing the farm, and nothing in it has a distance.
The start is the symbol
A symbol is a chirp that starts at a different point in the sweep. When the start is partway up the band, the chirp runs to the top edge and carries on from the bottom, so the line is cut and wrapped. That cut is a cyclic shift, and where it falls is what the receiver reads.
At a spreading factor of 7 there are 2^7, or 128, possible starting points, so one symbol carries 7 bits. Each step up doubles the starting points and adds one bit. The packet's preamble is a run of plain chirps with no shift at all, which is how a receiver finds the start of a packet and lines up on it.
What the receiver does with it
One way a receiver can read a symbol is to multiply the incoming signal by a chirp that sweeps the other way. A plain chirp then becomes a steady tone, and a shifted one becomes a tone at a different frequency. The tone's place gives the starting point.
What goes wrong
The chirp is fixed by the settings, so the settings have to agree. A receiver set to a different spreading factor sees a sweep that does not fit its idea of a symbol, and it reports nothing: there is no error to read, only silence. The same applies to bandwidth. The LoRa chapter of the ESP32 book shows these settings on a real module.
Common mistakes
- Reading the plot as a map. It is frequency against time for one symbol. It says nothing about distance or about the farm.
- Calling the start frequency the data. The start point is the symbol, but between your bytes and the symbol the radio adds its own coding, so the start point is not a copy of your bytes.
- Expecting a mismatch to show up as an error. A receiver on the wrong spreading factor does not decode a damaged packet. It does not see a packet at all.
Edit this page — content/fundamentals/lora/the-chirp-is-the-symbol.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.