Board Analysis¶
Although the board is ready to use after applying default configurations, a few parameters can be tuned for the node optimal TX/RX operation in different environmental conditions. The main settings under analysis are the radio RX boosted mode, the fem LNA low power mode, and the radio TX power.
The following sections model the board's transceiver from first principles (noise, sensitivity, saturation and regulatory limits) and set the models against the bench measurements in RF Experiments.
Board Specs¶
The HTIT-WB32LAF board that beebo targets is the high-power version in the Heltec WiFi LoRa 32 V4.3 compact IoT development board product line. The board is built around the ESP32-S3R2 SoC with an integrated SX1262 LoRa transceiver and a KCT8103L front-end module (FEM). The FEM provides a power amplifier (PA) for transmission and a switchable low-noise amplifier (LNA) for reception. The board includes WiFi 802.11 b/g/n, Bluetooth 5.0 LE, 2 MB PSRAM, 16 MB flash, a USB-C port with native CDC, and IPEX 1.0 antenna connectors for LoRa and 2.4 GHz. It operates at 3.3V with an optional LiPo battery input and solar charging support. In contrast, the V4.2 revision uses a GC1109 FEM instead of the KCT8103L — the firmware auto-detects which is present at boot.
Table 1: HTIT-WB32LAF Board Specifications
| Parameter | Value | Notes |
|---|---|---|
| SoC | ESP32-S3R2 | Dual-core Xtensa LX7, 240 MHz |
| LoRa transceiver | SX1262 | Sub-GHz, 863–928 MHz |
| Front-end module | KCT8103L | PA + switchable LNA (V4.3) |
| Max TX power | 28 ± 1 dBm | Board-level conducted power |
| RX sensitivity | -137 dBm / -122 dBm | SF12 / SF7, BW 125 kHz |
| WiFi | 802.11 b/g/n | Up to 150 Mbps |
| Bluetooth | BLE 5.0, Bluetooth mesh | |
| Memory | 384 KB ROM, 512 KB SRAM, 2 MB PSRAM | 16 MB external flash |
| Power supply | 3.3–4.2 V (battery), 4.7–6 V (USB) | Solar panel input supported |
| Deep sleep current | 20 µA | Battery powered |
| TX current | 750 mA | 27 dBm, USB powered, 868 MHz |
| RX current | 75 mA | Board-level, USB powered |
| Antenna connectors | 2 × IPEX 1.0 | LoRa + 2.4 GHz |
| Interface | USB Type-C (native CDC) | SH1.25 battery + solar connectors |
| Operating temperature | -40 to +85 °C | |
| Dimensions | 51.7 × 25.4 × 10.7 mm | Pin-compatible with WiFi LoRa 32 V3 |
Max TX power is the maximum conducted power the board delivers at the antenna connector, measured in dBm (decibels relative to 1 mW). At 28 ± 1 dBm the board outputs approximately 500–800 mW. This is a board-level figure that accounts for the entire TX chain — SX1262 transceiver, attenuator, and KCT8103L power amplifier — not the output of any single component. The ± 1 dB tolerance reflects manufacturing variation across boards.
RX sensitivity is the weakest signal the board can receive at the antenna connector while still demodulating it correctly, also in dBm. A more negative number means better sensitivity. At -137 dBm (SF12, 125 kHz) the receiver can detect signals below a femtowatt. Sensitivity depends on the spreading factor and bandwidth: SF12 trades data rate for ~15 dB more sensitivity than SF7. These are the datasheet values at BW 125 kHz; the component-level analysis in the sections that follow derives the expected sensitivity at BW 62.5 kHz used by the MeshCore US/Canada preset.
LoRa Settings¶
The analysis in this document uses the default LoRa radio settings as they appear in the MeshCore companion app after selecting the US/Canada preset [6] on a stock firmware:
Table 2: MeshCore US/Canada Default Radio Settings
| Parameter | Value |
|---|---|
| Frequency | 910.525 MHz |
| Spreading factor | 7 |
| Bandwidth | 62.5 kHz |
| Coding rate | 5 |
Frequency is the RF carrier center frequency. The US/Canada preset uses 910.525 MHz within the 902–928 MHz ISM band. Spreading factor (SF) controls the trade-off between range and data rate: higher SF encodes each symbol over more chirps, improving sensitivity at the cost of longer airtime. At SF7 each symbol carries 7 bits. Bandwidth (BW) is the frequency span of the chirp. Narrower bandwidth improves sensitivity (~3 dB per halving) but slows the data rate proportionally. At 62.5 kHz the receiver noise bandwidth is half that of the 125 kHz LoRaWAN default. Coding rate (CR) sets the forward error correction ratio — CR 5 means 4/5, adding 25% redundancy. Higher values (6, 7, 8) add more redundancy for better error recovery at the cost of airtime.
Once a LoRa preset is chosen, the radio can be further configured by the following parameters, where default values are specified in the FW for the V4.3 model.
Table 3: MeshCore Tunable Radio Settings
| Parameter | Values | Default | Interface | Notes |
|---|---|---|---|---|
| txpower | -9dbm to +22dBm | 10 | App/CLI | At SX1262 output |
| rxgain | on, off | on | CLI | SX1262 Boosted/Power save |
| fem.rxgain | on, off | off | CLI | KCT8103L LNA/Bypass |
The defaults above are stock MeshCore's. Beebo ships txpower 18; the other two are unchanged.
SX1262 LoRa Transceiver¶
The SX1262 is a sub-GHz LoRa/FSK transceiver from Semtech, covering 150–960 MHz [1]. It integrates a power amplifier, low-noise amplifier, and LoRa modem.
Table 4: SX1262 Key Parameters
| Parameter | Value | Notes |
|---|---|---|
| Frequency range | 150-960 MHz | |
| TX max output power | +22 dBm | Maximum output power |
| TX power range | -9 to +22 dBm | Programmable in 31 steps |
| TX power accuracy | +/-2 dB | |
| TX current | 118 mA | +22 dBm, 868 MHz |
| RX sensitivity | -137 dBm | SF12, BW 125 kHz, RX Boosted |
| -124 dBm | SF7, BW 125 kHz, RX Boosted | |
| RX current | 4.6 mA | LoRa 125 kHz, DC-DC |
| RX current (Boosted) | 5.3 mA | LoRa 125 kHz, DC-DC |
| RX max input power | 10 dBm | Maximum input power |
| RX input power | 0 dBm | Operating input power |
| IIP3 | -5 dBm |
TX output power is the power the SX1262's internal PA delivers at its RF output pin, measured in dBm (decibels relative to 1 mW). The SX1262 can be programmed from -9 to +22 dBm in 1 dB steps, with a typical accuracy of +/-2 dB. At the maximum +22 dBm setting the transmitter draws 118 mA.
RX sensitivity is the weakest signal the receiver can demodulate at a given error rate, also in dBm. A more negative number means the receiver can hear weaker signals. Sensitivity depends on the spreading factor (SF) and bandwidth (BW): higher SF uses longer symbol times, allowing the receiver to pull signals further out of the noise at the cost of lower data rate. The SX1262 datasheet [1] specifies sensitivity only at BW 125 kHz. MeshCore US/Canada uses BW 62.5 kHz, which halves the receiver noise bandwidth and improves sensitivity by approximately \(10 \log_{10}(125/62.5) \approx 3\) dB, giving estimated values of -127 dBm at SF7 and -140 dBm at SF12.
The SX1262 offers two receive gain settings, selected via the Rx Gain register (0x08AC): a power-saving mode (default, 0x94) drawing 4.6 mA, and a Boosted mode (0x96) at 5.3 mA. Boosted mode increases the internal LNA gain step, which lowers the receiver's effective noise figure and improves sensitivity by about 2 dB at the cost of 0.7 mA additional current. Both stock MeshCore and Beebo enable Boosted mode by default for the Heltec V4. The setting can be changed at runtime with settings radio.rxgain on|off.
IIP3 (third-order input intercept point) characterizes the receiver's linearity — its ability to handle strong nearby signals without generating spurious intermodulation products. A higher IIP3 means the receiver is more resistant to interference from strong off-channel transmitters. At -5 dBm the SX1262's IIP3 is modest, which is relevant when a front-end LNA is placed before it: the LNA amplifies both the desired signal and any interferers, potentially pushing the receiver into non-linear behavior.
KCT8103L Front-End Module¶
The KCT8103L is an 860–930 MHz front-end module from Kangxi Communication Technologies (kxcomtech) [2], integrating a power amplifier (PA), low-noise amplifier (LNA), and a TX/RX switch. The TX/RX mode is selected by the CTX control pin, driven by the ESP32-S3 via GPIO 5.
Table 5: KCT8103L Key Parameters
| Parameter | Value | Notes |
|---|---|---|
| Frequency range | 860-930 MHz | ISM sub-GHz |
| PA saturated output (Psat) | 28.0 dBm | |
| PA gain | 33.0 dB | |
| TX current | 75 mA | |
| LNA gain | 15 dB | |
| LNA noise figure | 1.9 dB | |
| Bypass insertion loss | 2.0 dB | LNA bypassed |
| Max TX input power | +8 dBm | Absolute max [3] |
| Max ANT input power | +5 dBm | Absolute max [3] |
The Heltec V4.3 operates the KCT8103L at 3.3V. The V4.2 board uses a GC1109 FEM instead, which has a fixed (always-on) LNA with no bypass mode — the firmware auto-detects which FEM is present at boot.
Note: the KCT8103L datasheet is not publicly available, so the limits here come from the related KCT8101L [3], which specifies a maximum TX input power of +8 dBm and a maximum antenna input power of +5 dBm. They may be lower for the KCT8103L, which has a higher gain.
PA saturated output (Psat) is the maximum power the PA can deliver before its gain compresses — pushing the input harder yields diminishing (and increasingly distorted) output. At 3.3V the KCT8103L saturates at 28.0 dBm (~630 mW). With 33.0 dB of gain, the PA reaches saturation at an input of about -5 dBm.
PA gain is the ratio of output power to input power through the amplifier, in dB. At 33.0 dB the KCT8103L amplifies the SX1262's signal by a factor of about 2000x in power.
LNA gain is the amplification the low-noise amplifier applies to the received signal before passing it to the SX1262. At ~15 dB the LNA boosts the signal by a factor of about 32x in power, improving the system's ability to detect weak transmissions. However, this gain also amplifies noise and interferers, which is why the LNA noise figure and the SX1262's IIP3 matter.
LNA noise figure is the amount of noise the LNA itself adds to the signal, in dB. A lower noise figure means the LNA preserves more of the signal-to-noise ratio. At 1.9 dB the KCT8103L adds relatively little noise, which is important because the first amplifier in the receive chain dominates the overall system noise figure.
Bypass insertion loss is the signal attenuation when the LNA is switched off and the receive path goes through a passive bypass instead. At 2.0 dB the bypass trades the LNA's 15 dB of gain for a cleaner signal path with no added noise or non-linearity — useful in strong-signal environments where the LNA would drive the SX1262 past its IIP3.
Max TX input power is the maximum RF power that can be applied to the PA input (TX pin) without risking permanent damage to the device. This is an absolute maximum rating, not an operating condition — the PA may already be deep in compression well below this level. The KCT8101L specifies +8 dBm; the SX1262 can output up to +22 dBm, so attenuation between the transceiver and the PA input is essential. The TX path section below details how this constraint is satisfied.
Max ANT input power is the maximum RF power that can be applied to the antenna port while the FEM is in receive mode. In RX mode the signal arriving at the antenna port passes through the internal switch and into the LNA (or bypass path), which has limited power handling. The KCT8101L specifies +5 dBm. In normal mesh operation received signals are far weaker than this, but co-located transmitters or reflected power from a mismatched antenna could approach the limit.
RF Signal Chains¶
The diagram below summarizes the TX and RX signal paths in the Heltec V4.3 board, derived from the V4.3 schematic. Note how the TX path includes a 17 dB π-attenuator between the SX1262 and the FEM PA input, whereas the RX path connects the FEM LNA/bypass output directly to the SX1262.
SX1262 KCT8103L ANTENNA
┌─────────┐ ┌──────────────┐ ┌─────────────┐ ┌─────────┐
│ │ TX │ 17 dB π │ │ Power │ ┌─────────┐ │ \|/ │
│ LoRa │----->│ attenuator │--->│ Amplifier │--->│ │ │ | │
│ Radio │ └──────────────┘ │ │ │ SMA │<-->│ | │
│ │<-------------------------│ LNA/Bypass │<---│ │ │ | │
└─────────┘ RX └─────────────┘ └─────────┘ └─────────┘
TX Signal Chain¶
During TX, a signal is transmitted by the SX1262 with transmission power \(P_{tx}\) set by parameter radio.txpower (compile-time default LORA_TX_POWER). The signal passes through the 17 dB pi-attenuator, which reduces it to a level safe for the KCT8103L PA input. The PA amplifies it with a gain \(G_{PA} = 33\) dB up to its saturation power \(P_{sat} = 28\) dBm, and delivers it to the antenna. The resulting power at the antenna is:
where \(A_{pad} = 17\) dB is the attenuator loss.
Maximum TX Power¶
Our objective is to achieve maximum conducted power \(P_{out}\) with minimum distortion. LoRa uses chirp spread spectrum (CSS), a constant-envelope modulation that encodes information in frequency, not amplitude. This is a property shared with FSK, MSK, GMSK, and other angle modulations: because the envelope carries no information, PA linearity is not required. A saturated PA compresses the amplitude but preserves the frequency content that carries the data — the demodulator recovers the chirp frequency trajectory regardless of amplitude distortion. This means the PA can operate at saturation — its most power-efficient point — without degrading the signal.
However, driving the PA well beyond the onset of saturation provides no additional output power (\(P_{out}\) is clamped at \(P_{sat}\)) while increasing harmonic distortion and wideband noise emissions. The optimal radio.txpower is therefore the lowest value that reliably reaches \(P_{sat}\) — maximizing output while minimizing spurious emissions.
To determine the maximum transmission power under these conditions, we can set \(P_{out} = P_{sat}\) and solve for \(P_{tx}\):
At radio.txpower=12 the PA input reaches the saturation drive level of \(P_{in,sat} = P_{sat} - G_{PA} = -5\) dBm. Any setting above 12 drives the PA further into saturation without increasing \(P_{out}\).
This is the analytical estimate based on nominal component specs. In practice, the PA compression characteristic is gradual and the actual \(G_{PA}\) and \(P_{sat}\) may differ from nominal values. The P1dB compression point of the TX chain identifies the actual onset of saturation on real hardware. It is measured using the txpower_curve sweep described in TX Radiated Power.
As a safety check: the speculated absolute maximum PA input power is \(+8\) dBm (from the KCT8101L datasheet, see above), corresponding to \(P_{tx} = 8 + 17 = 25\) dBm — above the SX1262 maximum of 22. No firmware setting can exceed the absolute maximum rating.
To account for losses in the TX chain due to PCB, connectors, SMA pig tail, etc. we add a system loss \(L_{tx}\), which the bench measurement in TX Radiated Power puts at about 4 dB. The output power becomes:
The maximum transmission power at SX1262 radio output becomes:
that is, to overcome the transmission chain losses the radio power at saturation inception is higher than the ideal case: with the measured \(L_{tx} \approx 4\) dB the output compresses around radio.txpower 16 and reaches 27.3 dBm at 17 and above.
Default TX Power Setting¶
The stock MeshCore default is radio.txpower=10. On V4.3 boards with the KCT8103L, radio.txpower=10 yields \(P_{in} = 10 - 17 = -7\) dBm at the PA input, below the saturation onset of \(-5\) dBm. Measured at the antenna connector it delivers 22.3 dBm, about 5 dB under the 27.3 dBm plateau, so V4.3 users running stock firmware without increasing radio.txpower are not reaching the PA's rated output. Beebo ships radio.txpower 18.
This default setting was likely tuned for the V4.2 board, which uses the GC1109 FEM with a lower \(P_{sat}\). Community measurements on V4.2 hardware confirm ~20 dBm conducted output at this setting [5].
EIRP and Regulatory Limits¶
The effective isotropic radiated power adds the antenna gain \(G_{ant}\) to the conducted power:
Under FCC Part 15.247 [4], the limits for digitally modulated spread-spectrum systems in the 902–928 MHz band are:
- Maximum conducted power: 30 dBm (1 W) at the antenna connector
- Antenna gain baseline: 6 dBi — no power reduction required for antennas at or below this gain
- Maximum EIRP: 36 dBm (4 W)
- Above 6 dBi: conducted power must be reduced dB-for-dB by the amount the antenna gain exceeds 6 dBi
With \(P_{out} = P_{sat} = 28\) dBm at saturation:
Table 6: EIRP and Regulatory Headroom
| \(G_{ant}\) | EIRP | Conducted headroom | EIRP headroom |
|---|---|---|---|
| 2.15 dBi | 30.15 dBm (1.04 W) | 2.0 dB | 5.85 dB |
| 5.6 dBi | 33.6 dBm (2.29 W) | 2.0 dB | 2.4 dB |
Both antennas are below the 6 dBi baseline, so only the 30 dBm conducted limit applies. At 28 dBm the PA operates 2 dB below the conducted limit and well within the 36 dBm EIRP ceiling with either antenna. The bench measurement reaches 27.3 dBm, slightly more headroom still.
RX Signal Chain¶
During RX, a signal arrives at the antenna and enters the KCT8103L FEM, which routes it through either the low-noise amplifier (LNA) or a passive bypass path, then directly into the SX1262 receiver. The signal chain has two independently controllable gain stages: the KCT8103L LNA (fem.rxgain) and the SX1262 internal RX gain (rxgain), both introduced in Table 3.
The KCT8103L LNA (fem.rxgain on/off) is the first active element in the receive chain. When enabled, it amplifies the incoming signal by \(G_{LNA} \approx 15\) dB with a noise figure \({NF}_{LNA} = 1.9\) dB. When bypassed, the signal passes through a passive path with \(L_{bypass} = 2.0\) dB insertion loss.
The SX1262 RX Boosted gain (rxgain on/off) is the second stage. As described in the SX1262 section above, this setting selects between a power-saving gain mode and a Boosted mode that increases the internal LNA bias, improving sensitivity by about 2 dB at the cost of 0.7 mA.
The combination of these two settings yields four RX configurations, ranging from minimum gain and current (both off) to maximum sensitivity (both on). The trade-off is not just sensitivity vs power — the LNA also amplifies interferers and noise, raising the noise floor and potentially driving the SX1262 past its IIP3 (-5 dBm) in the presence of strong nearby transmitters. The optimal configuration depends on the RF environment: the LNA helps in quiet, long-range scenarios but can hurt in dense or noisy deployments.
Thermal Noise¶
Every conductor at a non-zero temperature generates random voltage fluctuations due to the thermal motion of charge carriers. This is Johnson-Nyquist noise [8], and it sets the absolute lower bound on the noise present at any receiver input. The noise power spectral density depends only on temperature. It is computed as \(N_0 = kT\), where \(k = 1.381 \times 10^{-23}\) J/K is Boltzmann's constant and \(T\) is the absolute temperature. At the standard reference temperature of \(T = 290\) K (17°C):
This is a universal constant of RF engineering — the thermal noise power spectral density at room temperature. Thermal noise is white: its power is distributed uniformly across frequency, so \(N_0\) is the same at every hertz. The total thermal noise power captured by a receiver is therefore \(N_0\) integrated over its bandwidth \(BW\). Since \(N_0\) is constant, the integral reduces to a multiplication — or in dB, an addition:
For the US/Canada preset, \(BW = 62500\) Hz, \(10\log_{10}(62500) = 48\) dB·Hz:
Noise Floor¶
The thermal noise computed above represents an ideal (noiseless) receiver. A real receiver chain adds noise of its own, quantified by the system noise figure \({NF}_{sys}\). The noise floor in dBm is then the sum of the two [9]:
\({NF}_{sys}\) is determined by the RX chain configuration.
Required SNR¶
A signal is detectable when it rises above the noise floor by at least the minimum signal-to-noise ratio required by the modulation scheme, \({SNR}_{req}\). The LoRa chirp spread spectrum modulation can extract signals well below the noise floor — the required SNR is negative. Higher spreading factors use longer symbols that spread the signal energy over more chips, allowing the receiver to recover signals deeper in the noise — at the cost of lower data rate.
From the SX1262 datasheet sensitivity table [1] (Table 3-8), we can derive the typical LoRa \({SNR}_{req}\) at each spreading factor by rearranging the sensitivity formula. The resulting values follow a linear pattern:
which gives the per-spreading-factor values in Table 7.
Table 7: LoRa Required SNR by Spreading Factor
| Spreading factor | \({SNR}_{req}\) |
|---|---|
| SF7 | -7.5 dB |
| SF8 | -10 dB |
| SF9 | -12.5 dB |
| SF10 | -15 dB |
| SF11 | -17.5 dB |
| SF12 | -20 dB |
Note that \({SNR}_{req}\) is independent of bandwidth. Bandwidth affects sensitivity through \({N}_{thermal}\) instead: halving the bandwidth reduces the thermal noise power by \(10\log_{10}(2) = 3\) dB. The two effects are independent and additive — moving from SF7/125 kHz to SF12/62.5 kHz would gain \(12.5 + 3 = 15.5\) dB of sensitivity.
RX Sensitivity¶
Receiver sensitivity is the weakest signal the receiver can demodulate [9], composed by thermal noise, system noise, and required signal to noise ratio:
The HTIT-WB32LAF datasheet gives \(S = -122\) dBm at SF7/125 kHz (Boosted mode). Halving the bandwidth to 62.5 kHz reduces \({N}_{thermal}\) by 3 dB, improving sensitivity to approximately \(-125\) dBm. In what follows we compute board-level sensitivity in detail by first determining \({NF}_{sys}\) for each RX chain configuration.
System Noise Figure¶
The system noise figure \({NF}_{sys}\) quantifies how much noise the entire receive chain — FEM plus SX1262 plus board connectivity — adds to the signal. It is an intrinsic receiver property that is independent of bandwidth but depends on which gain stages are active.
The HTIT-WB32LAF datasheet does not report a system noise figure but it does publish a max RX sensitivity \(S = -122\) dBm with radio in boosted mode (rxgain on) and FEM in bypass mode (fem.rxgain off) at 125 kHz and SF7. Therefore we can extract \({NF}_{sys}\) by rearranging the sensitivity formula. From \(S = N_{thermal} + {NF}_{sys} + {SNR}_{req}\):
where \(N_{thermal} = -174 + 10\log_{10}(125000) = -174 + 51.0 = -123\) dBm.
Because the noise figure is bandwidth-independent, this value applies at any bandwidth, including our 62.5 kHz preset.
From the SX1262 LoRa radio datasheet, RX sensitivity for the same preset in boosted mode is -124 dBm, and therefore, following the same lines as before, its noise figure is \({NF}_{radio} = {NF}_{boosted} = 6.5\) dB. In power-save mode (rxgain off) the radio noise \({NF}_{radio}\) increases by 2dB to \({NF}_{psave} = 8.5\) dB, since the AGC has no bias anymore.
In contrast, the datasheet of the related KCT8101L FEM specifies a noise figure \({NF}_{fem} = {NF}_{LNA} = 1.9\) dB for when the low noise amplifier is used, and a bypass insertion loss \(L_{bypass} = 2\) dB for when the LNA is bypassed. When the KCT8103L LNA is bypassed, the passive loss before the receiver raises the effective system noise figure by the same amount, and therefore \({NF}_{fem} = {NF}_{bypass} = 2\) dB.
When the KCT8103L LNA is enabled (fem.rxgain on), it becomes the first gain stage and dominates the system noise figure. For a two-stage cascade, the Friis formula [7] gives:
where all quantities are linear (not dB). The denominator \(G_{fem}\) is the key: a high first-stage gain suppresses the second stage's noise contribution. Substituting the KCT8103L LNA (\({NF}_{fem} = 1.9\) dB \(= 1.55\), \(G_{fem} = 15\) dB \(= 31.6\)) and the SX1262 Boosted noise figure (\({NF}_{radio} = 6.5\) dB \(= 4.5\)):
The second-stage contribution is just 0.11 — the 15 dB LNA gain divides it by 31.6. This is the central result from Friis: a high-gain, low-noise first stage dominates the cascade, making the SX1262 Boosted/power-save distinction nearly irrelevant when the LNA is on.
With power-save (\({NF}_{radio} = 8.5\) dB \(= 7.08\)):
only 0.2 dB worse.
Putting it all together the, system noise figures for all permutations of RX gain modes are reported below, together with equivalent noise floors as per equation:
Table 8: Estimated System Noise Figure and Noise Floor
| fem.rxgain | rxgain | \({NF}_{radio}\) | \({NF}_{fem}\) | \({NF}_{sys}\) | \(N_{floor}\) |
|---|---|---|---|---|---|
| off | on | 6.5 dB | 2 dB | 8.5 dB | -117.5 dBm |
| off | off | 8.5 dB | 2 dB | 10.5 dB | -115.5 dBm |
| on | on | 6.5 dB | 1.9 dB | 2.2 dB | -123.8 dBm |
| on | off | 8.5 dB | 1.9 dB | 2.4 dB | -123.6 dBm |
Board-Level RX Sensitivity¶
We can now compute the board-level sensitivity for each RX configuration by substituting the \({NF}_{sys}\) values from Table 8 into the sensitivity formula from the RX Sensitivity section:
Table 9: Estimated System Sensitivity (SF7, BW 62.5 kHz)
| fem.rxgain | rxgain | \({NF}_{sys}\) | Sensitivity | \(\Delta\) vs SX1262 Alone |
|---|---|---|---|---|
| off | on | 8.5 dB | -125 dBm | +2.0 dB (worse) |
| off | off | 10.5 dB | -123 dBm | +4.0 dB (worse) |
| on | on | 2.2 dB | -131 dBm | -4.3 dB (better) |
| on | off | 2.4 dB | -131 dBm | -4.1 dB (better) |
The \(\Delta\) column shows the improvement (negative) or degradation (positive) relative to the SX1262 standalone Boosted sensitivity of \(-127\) dBm at 62.5 kHz. With LNA bypassed, the 2 dB insertion loss makes sensitivity worse than the bare transceiver. With LNA on, the Friis cascade reduces \({NF}_{sys}\) from 6.5 to 2.2 dB — a 4.3 dB improvement. Note that enabling Boosted mode (rxgain on) adds only 0.2 dB when the LNA is already active, confirming that the first-stage gain dominates the cascade.
Note how Table 9 agrees with the \(-122\) dBm sensitivity reported in the Heltec V4.3 datasheet (Table 3.5.2) [10] at SF7/125 kHz. The stock default configuration is LNA bypassed with Boosted gain (fem.rxgain=off, rxgain=on). Since halving the bandwidth improves sensitivity by 3 dB, we expect \(-122 - 3 = -125\) dBm at 62.5 kHz — exactly matching our estimate for the same configuration. This confirms both the \({NF}_{radio}\) derivation and the bypass insertion loss are consistent with published board-level measurements.
RX Saturation Limits¶
The previous sections determined the weakest signal the receiver can detect. Equally important is the strongest signal it can tolerate — beyond this level the receiver saturates and reception fails. This matters both for nearby LoRa transmitters (in-band) and for strong out-of-band sources such as cellular towers.
Let \(P_{ant}\) be the power at the antenna connector and \(G_{path}\) be the gain from the antenna connector through the FEM to the SX1262 input. The SX1262 maximum input level is \(P_{max,SX} = -15\) dBm [1]. There is no attenuator pad in the RX path, so the maximum tolerable power at the antenna connector is:
Table 10: RX Saturation Limits
| Configuration | \(G_{path}\) | \(P_{max}\) |
|---|---|---|
| LNA off | -2 dB | -13 dBm |
| LNA on | +15 dB | -30 dBm |
In-Band Saturation¶
How close can another LoRa transmitter be before it drives \(P_{ant}\) past \(P_{max}\)? Let \(G_{ant}\) be the antenna gain (2.15 dBi for the stock dipole, same on both ends), \({EIRP}\) be the transmitter's effective isotropic radiated power, and \({FSPL}(d)\) be the free-space path loss at distance \(d\). The power at the antenna connector is:
The free-space path loss at distance \(d\) (meters) and frequency \(f\) (MHz) is:
At 910.525 MHz this simplifies to:
The receiver saturates when \(P_{ant} > P_{max}\). Setting \(P_{ant} = P_{max}\) and solving for the minimum safe distance:
For a nearby Heltec V4 at full power — \(P_{sat} = 28\) dBm and \(G_{ant}\) either 2.15 dBi for normal dipole or 5.6 dBi for a two stage collinear antenna on the receiver:
Table 11: Minimum Safe Distance from a Heltec V4 at Full Power
| Configuration | \(P_{max}\) | \(d_{min}\) (2.15 dBi) | \(d_{min}\) (5.6 dBi) |
|---|---|---|---|
| LNA off | -13 dBm | ~5 m | ~7 m |
| LNA on | -30 dBm | ~34 m | ~50 m |
With a stock 2.15 dBi dipole, the LNA-on configuration requires at least 34 m clearance from another V4 at full power. A higher-gain 5.6 dBi antenna increases \(P_{ant}\) by 3.45 dB, pushing the safe distance to ~50 m. With the LNA bypassed, safe distances are much shorter in both cases.
When bench-testing at close range, an inline attenuator can bring \(P_{ant}\) below \(P_{max}\). The minimum attenuation required is \(A \geq P_{ant} - P_{max}\). At \(d = 2\) m the unattenuated \(P_{ant}\) is \(-5.4\) dBm (2.15 dBi) or \(-2.0\) dBm (5.6 dBi):
Table 12: Minimum Attenuation for Safe Bench Testing at 2 m
| Configuration | \(A_{min}\) (2.15 dBi) | \(A_{min}\) (5.6 dBi) |
|---|---|---|
| LNA off | ~8 dB | ~11 dB |
| LNA on | ~25 dB | ~28 dB |
The bench measurements in RF Experiments use a 50 dB attenuator.
Worst-case sizing for a direct cable+attenuator link between two boards. Table 12 assumes normal over-the-air propagation at a known distance and antenna gain. A direct SMA-to-SMA bench connection (TX board → attenuator → RX board, no antennas) removes that path loss entirely, so the attenuator must be sized against the worst case on both ends rather than the configured/expected values: TX board accidentally left at full saturation (\(P_{sat} = 28\) dBm) and RX board with LNA on (the more restrictive \(P_{max} = -30\) dBm limit):
Pad up to 60 dB for margin (covers the \(\pm 1\) dB TX tolerance and the attenuator's own part tolerance). Prefer cascading multiple smaller pads (e.g. 30+30 dB, or 30+20+10 dB) over sourcing a single 60 dB attenuator — this also splits the ~630 mW worst-case dissipation across stages instead of one pad absorbing it all.
Out-of-Band Interference and LNA Saturation¶
The previous section considers in-band saturation from nearby LoRa transmitters. A more insidious problem is out-of-band (OOB) interference from strong transmitters outside the 902–928 MHz ISM band — LTE/5G cellular towers, two-way radio systems, paging transmitters, or other high-power sub-GHz sources. These signals are outside the LoRa channel bandwidth but fall within the KCT8103L's 860–930 MHz passband, and the board has no SAW bandpass filter to reject them before the LNA.
The KCT8103L LNA amplifies everything within its passband indiscriminately — the desired LoRa signal and any OOB interferers alike. This creates two failure modes:
1. LNA Compression. The KCT8103L's maximum ANT input power is \(P_{max,FEM} = +5\) dBm [3]. If total OOB power at the antenna exceeds this level, the LNA saturates and its gain collapses — the desired LoRa signal is no longer amplified and reception fails. The safe limit at the antenna connector is:
With LNA bypassed, the FEM compression limit does not apply. The constraint reverts to the SX1262 maximum input referred through the bypass path:
The bypass path cannot compress, so the failure mode here is SX1262 input overdrive rather than LNA saturation.
2. Receiver Intermodulation. Even below the LNA's compression point, OOB signals can degrade reception through intermodulation. Two interferers at frequencies \(f_1\) and \(f_2\) generate third-order products at \(2f_1 - f_2\) and \(2f_2 - f_1\) that can fall directly on the LoRa channel. The SX1262's IIP3 is \(-5\) dBm. With the LNA providing \(G_{LNA} = 15\) dB of gain before the SX1262, the effective IIP3 referred to the antenna is:
With LNA bypassed, the bypass insertion loss works in our favor — the SX1262 sees 2 dB less than what arrives at the antenna:
Intermodulation becomes significant well below IIP3, so these are not hard limits but thresholds above which spurious products begin to degrade reception. Nevertheless, the 17 dB difference between \(-20\) dBm (LNA on) and \(-3\) dBm (LNA off) shows how much more vulnerable the LNA-on configuration is to OOB interference.
Estimating OOB Power Levels. A cellular base station typically transmits 20–40 W (43–46 dBm) per sector in LTE Band 5 (869–894 MHz) or Band 26 (859–894 MHz), which overlaps the KCT8103L's passband. At a distance \(d\) from the tower:
Table 13: Estimated OOB Power from a Cellular Tower (46 dBm EIRP, 880 MHz, 2.15 dBi receive antenna)
| Distance | Free-Space Path Loss | Power at Antenna |
|---|---|---|
| 50 m | 65 dB | -17 dBm |
| 100 m | 71 dB | -23 dBm |
| 200 m | 77 dB | -29 dBm |
| 500 m | 85 dB | -37 dBm |
At the LNA output (add 15 dB gain), a tower at 100 m delivers approximately \(-23 + 15 = -8\) dBm to the SX1262 — well past the IIP3 of \(-5\) dBm and approaching the absolute maximum input of \(-15\) dBm. Even at 500 m, the LNA output of \(-22\) dBm is within 17 dB of the IIP3, and multiple interferers add.
Note that these are free-space estimates — real-world environments include building attenuation, multipath, and antenna pattern effects that may reduce or increase the actual received power. The 2.15 dBi dipole antenna also has no OOB rejection.
Practical Implication. In urban or suburban environments with cellular towers within a few hundred meters, the LNA may do more harm than good: the roughly 6 dB sensitivity improvement over bypass in Table 9 is negated if the receiver is driven into intermodulation or the LNA compresses. The bypass path sacrifices about 6 dB of sensitivity but provides 17 dB more headroom against OOB interference (\(-3\) dBm vs \(-20\) dBm effective IIP3 at antenna).
The safe default is fem.rxgain=off (LNA bypassed) unless the deployment environment is known to be RF-quiet. The beebo measure noise combined and beebo measure noise in_band procedures described in RF Experiments allow characterizing the local OOB environment: if the noise floor rises significantly with an antenna vs a 50-ohm terminator, and a bandpass filter brings it back down, OOB energy is present and the LNA should remain off — or a SAW filter should be added before the FEM.
References¶
[1] SX1261/2 Data Sheet Rev 1.2, Semtech, June 2019.
[2] KCT Product Portfolio Q1 2025, Kangxi Communication Technologies.
[3] KCT8101L Product Datasheet Rev C, Kangxi Communication Technologies, October 2019.
[4] 47 CFR § 15.247 — Operation within the bands 902–928 MHz, 2400–2483.5 MHz, and 5725–5850 MHz. See also Understanding FCC Power Limits for Meshtastic Devices.
[5] Heltec V4: Measured TX Power Output Table, MeshCore Issue #1708 — conducted power measurements on V4.2 (GC1109) hardware across TX settings 1–24.
[6] MeshCore FAQ — Radio Presets, MeshCore upstream documentation — USA/Canada (Recommended) preset: 910.525 MHz, SF7, BW 62.5 kHz, CR 4/5.
[7] Friis formulas for noise, Wikipedia — cascade noise figure formula showing why the first amplifier stage dominates system noise performance.
[8] Johnson-Nyquist noise, Wikipedia — thermal noise generated by conductors at non-zero temperature; derives the \(kT\) noise power spectral density.
[9] Receiver sensitivity, Wikipedia — derivation of the standard sensitivity formula from thermal noise floor, noise figure, bandwidth, and required SNR.
[10] Heltec LoRa 32 (V4.3) Datasheet, Heltec Automation — Table 3.5.2 lists RX sensitivity at SF7/125 kHz as \(-122\) dBm.