← RFC
2.4 GHz PER Test 1 — First Fielded LR2021 Link (2026-08-28)
Status: Field result — one run, not authoritative. Read the Limits section before citing any
number here. Reproduce: sim/results/chart_24ghz_per_hw.py on 24ghz-per-test-1.csv.
Setup: two LR2021 eval boards, lw cfg 2450000000 9 500 5 22 p — 2.450 GHz, SF9, BW 500 kHz,
CR 4/5, +22 dBm, private sync, stock whip antennas both ends. Receiver sat indoors on the bench,
unelevated and in a recessed spot — not on the tower, no gain antenna. Operator walked a suburban
neighbourhood route carrying the transmitter, which went out of line-of-sight early and stayed there.
Downlink (bench→walker) was not measured; every number below is the walker→bench direction.

What the link did (the system result)
Run A — stationary bursts. 50 frames at 200 ms spacing per stop. Each burst carries its own
label in the payload (s1…s6), so these points are immune to clock skew between the walker and
the logger.
| stop |
dist |
received |
PER |
RSSI |
SNR |
| s1 |
7 m |
50/50 |
0% |
−61.0 |
+11.6 |
| s2 |
32 m |
50/50 |
0% |
−78.7 |
+10.3 |
| s3 |
69 m |
50/50 |
0% |
−80.5 |
+10.7 |
| s4 |
118 m |
48/50 |
4% |
−94.4 |
+1.9 |
| s5 |
165 m |
50/50 |
0% |
−90.3 |
+6.7 |
| s6 |
218 m |
50/50 |
0% |
−97.1 |
0.0 |
Run B — continuous sweep. 600 frames at 1 Hz on the return leg, 435 received (27.5% overall
loss), binned into 50 m bands by timestamp.
| band |
sent |
recv |
PER |
RSSI |
SNR |
| 0–50 m |
291 |
281 |
3% |
−62.3 |
+10.5 |
| 50–100 m |
43 |
42 |
2% |
−89.6 |
+4.7 |
| 100–150 m |
34 |
32 |
6% |
−95.5 |
+1.3 |
| 150–200 m |
33 |
27 |
18% |
−99.0 |
−4.2 |
| 200–250 m |
39 |
27 |
31% |
−100.1 |
−3.4 |
| 250–300 m |
58 |
18 |
69% |
−103.0 |
−12.3 |
| 300–350 m |
43 |
2 |
95% |
−104.5 |
−15.5 |
| 350–400 m |
28 |
3 |
89% |
−104.0 |
−15.0 |
| 400–450 m |
31 |
3 |
90% |
−104.0 |
−13.0 |
Headline shape: clean to ~150 m, half the frames gone by ~270 m, effectively dead past 300 m —
but frames still arrived from 436 m, the far end of the route.
What the radio numbers say
- The path loss is the building, not the band. Free-space loss at 2450 MHz over 7 m is ~57 dB;
at +22 dBm TX and −61 dBm RX the link actually spent ~83 dB. That is ~26 dB of excess loss at
the very first stop, before distance is a factor. Even if s1's GPS is wrong and the true
separation was 20 m, the excess is still ~17 dB. At s6 (218 m) it is ~32 dB. A receiver sitting
indoors in a hole is the dominant term in every row of both tables.
- The radio outperformed the datasheet expectation. Frames decoded at SNR −15 dB. The
nominal SF9 demodulation figure is around −12 dB; at BW 500 kHz with a 1-byte payload this
hardware beat it by ~3 dB.
- RSSI saturates at −104 dBm — that is a reporting floor, not a sensitivity floor. Six bands
report −103 to −104.5 while PER climbs from 69% to 95%, which is the signature of a clamped
reading, not a real plateau. SNR keeps falling past it and is the better edge indicator here.
Do not read "−104" in this data as "the receiver's limit".
- s4 is an obstruction, not distance. It is the only stop that lost frames, and it is worse
than the stop 47 m beyond it (−94.4 dBm / +1.9 dB vs −90.3 / +6.7). Run B's 100–150 m band shows
the same dip independently. Two separate measurements agreeing makes this a real feature of the
route rather than a fluke of either run.
Limits — why this is one data point, not a coverage curve
- One run, one route, one receiver placement. No repeat, no reciprocal direction, no elevated
or roof-mounted comparison.
- The receiver was indoors, unelevated, in a recessed location, with no gain antenna. A
tower-top or rooftop receiver is a materially different experiment and should be expected to do
substantially better.
- Distances are approximate. 21 of 26 GPS fixes came from network positioning rather than the
GPS receiver, with a median 68 s gap (max 122 s) between fixes and two physically impossible
elevations in the track. Treat every distance as ±tens of metres; the shape of the curves is
more trustworthy than any single x-value.
- Run B's bins depend on clock alignment. Its 600 frames all carry the same payload label, so
unlike Run A they are binned purely by timestamp. Run A is the higher-confidence dataset.
- Only derived distances are published. The raw GPS track is retained privately and
deliberately not included here, so the per-point coordinates behind these distances are not
reproducible from this repository —
24ghz-per-test-1.csv carries the distance column that
every number above rests on, and nothing finer.
- Run A and Run B disagree at the edge. Stationary s6 was perfect (0% at 218 m) while the
walking 200–250 m band lost 31%. Motion, body shadowing and bin smearing all plausibly explain
it; this run cannot separate them.
Comparison to the sub-GHz drive test — read with care
drive-test-1-result.md reached 612 m at 900 MHz, but the two runs are
not a controlled comparison, and the difference is mostly in the receive systems, not the bands:
|
Drive Test 1 (900 MHz) |
This run (2.4 GHz) |
| receiver |
tower, 60 ft AGL, external antenna |
indoors, unelevated, stock whip |
| receive gain |
~+8 dB net (22 dBm chip → ~30 dBm EIRP) |
~0 dB |
| mobile end |
truck cab, stub antenna |
handheld, stock whip |
The sub-GHz run had roughly 8 dB of antenna gain plus 60 ft of height that this run did not.
Band physics predicts ~8.7 dB more free-space loss at 2450 MHz than at 900 MHz for the same
distance — real, but smaller than the ~26 dB of receive-side clutter measured here. The honest
conclusion is that this run measured a bad receive location, and the 2.4 GHz band's actual reach
is still unmeasured. An elevated 2.4 GHz receiver is the experiment that would answer it.
Next
Re-run with the receiver outdoors and elevated, ideally the same route, before drawing any
band-to-band conclusion. Tracked internally as #170.