33.6K
LQ, RSSI, and SNR are all important metrics for ensuring a reliable radio link in FPV drones using ExpressLRS or Crossfire. While they all provide valuable information, they measure different aspects of the connection. Understanding the differences between LQ, RSSI, and SNR can help pilots monitor signal health during flight, estimate how much further you can fly, even help you to troubleshoot radio equipment when there’s a connection problem.
Some of the links on this page are affiliate links. I receive a commission (at no extra cost to you) if you make a purchase after clicking on one of these affiliate links. This helps support the free content for the community on this website. Please read our Affiliate Link Policy for more information.
Further Reading:
What is RSSI?
RSSI stands for Received Signal Strength Indicator. It measures the strength of the received signal and is useful for estimating how much range you have left during a flight.
RSSI is measured in dBm (decibel-milliwatts), which is a logarithmic scale, rather than mW (milliwatts), which is linear.
RSSI starts at 0 as the highest possible value. As you fly farther away and the signal gets weaker, the number becomes more negative. -130dBm is often quoted as the hard limit, but in reality the lowest usable RSSI is a lot higher, which depends on factors such as packet rate, frequency, and modulation mode.
Best signal (0dBm) → Worst signal (-130dBm)
Why use dBm instead of mW?
That’s because receivers can detect incredibly weak signals that are awkward to express in mW.
For example: 0.000000000001mW = -120dBm
It is simply much easier to use dBm when dealing with numbers that would otherwise have so many zeros.
Here is a simple conversion table between dBm and mW:
| Power (dBm) | Power (mW) |
| -130dBm | 0.0000000000001mW |
| -110dBm | 0.00000000001mW |
| -90dBm | 0.000000001mW |
| -70dBm | 0.0000001mW |
| -50dBm | 0.00001mW |
| -30dBm | 0.001mW |
| -10dBm | 0.1mW |
| 0dBm | 1mW |
| 10dBm | 10mW |
| 20dBm | 100mW |
| 100dBm | 10000000000mW |
In Betaflight OSD, you have two RSSI options:
- RSSI (percentage)
- RSSI dBm
I recommend using RSSI dBm, because it gives you the true signal strength. Modern RC systems such as ExpressLRS, Crossfire, and Tracer support RSSI dBm reporting, while older systems such as FrSky and Spektrum may only support RSSI in percentage.
Pro Tip:
With ExpressLRS diversity receivers (those with two antennas), you may see a second number after RSSI dBm, separated by a colon, for example: -50:2, The first number is RSSI dBm; The second number indicates which antenna is currently being used.
What is LQ?
LQ stands for Link Quality (sometimes known as LQI). It measures the percentage of uncorrupted data successfully received. In ideal conditions, LQ should be 100%.
LQ is usually displayed in the format:
RFMD:LQ. For example: 29:100.
- The first number is RFMD (RF mode)
- The second number is the actual link quality percentage
If you came from ExpressLRS 3.0 you might find the RFMD no longer makes sense. That’s because in ExpressLRS 4.0, the developer changed the RFMD numbers.
Here’s a look up table on how to interpret RFMD, frequency band, packet rate, and modulation mode in ELRS V4. For example, if you see 29:100, that means you are using 500Hz packet rate on 2.4GHz LoRa. If you are still using ELRS V3, please refer to the Wiki for the old table.
| RFMD | Band | Lua | Packet Rate | Sensitivity Limit |
|---|---|---|---|---|
| 0 | 900 MHz | 25Hz | 25Hz LoRa | -123dBm |
| 1 | 900 MHz | 50Hz | 50Hz LoRa | -120dBm |
| 2 | 900 MHz | 100Hz | 100Hz LoRa | -117dBm |
| 3 | 900 MHz | 100Hz Full | 100Hz 8ch/12ch/16ch LoRa | -112dBm |
| 5 | 900 MHz | 200Hz | 200Hz LoRa | -112dBm |
| 6 | 900 MHz | 200Hz Full | 200Hz 8ch/12ch/16ch LoRa | -111dBm |
| 7 | 900 MHz | 250Hz | 250Hz LoRa | -111dBm |
| 10 | 900 MHz | D50 | 50Hz DVDA LoRa | -112dBm |
| 11 | 900 MHz | K1000 Full | 1000Hz 8ch/12ch/16ch FSK | -101dBm |
| 21 | 2.4 GHz | 50Hz | 50Hz LoRa | -115dBm |
| 23 | 2.4 GHz | 100Hz Full | 100Hz 8ch/12ch/16ch LoRa | -112dBm |
| 24 | 2.4 GHz | 150Hz | 150Hz LoRa | -112dBm |
| 27 | 2.4 GHz | 250Hz | 250Hz LoRa | -108dBm |
| 28 | 2.4 GHz | 333Hz Full | 333Hz 8ch/12ch/16ch LoRa | -105dBm |
| 29 | 2.4 GHz | 500Hz | 500Hz LoRa | -105dBm |
| 30 | 2.4 GHz | D250 | 250Hz DVDA FLRC | -104dBm |
| 31 | 2.4 GHz | D500 | 500Hz DVDA FLRC | -104dBm |
| 32 | 2.4 GHz | F500 | 500Hz FLRC | -104dBm |
| 33 | 2.4 GHz | F1000 | 1000Hz FLRC | -104dBm |
| 34 | 2.4 GHz | DK250 | 250Hz DVDA FSK | -103dBm |
| 35 | 2.4 GHz | DK500 | 500Hz DVDA FSK | -103dBm |
| 36 | 2.4 GHz | K1000 | 1000Hz FSK | -103dBm |
| 100 | Gem-X | 100Hz Full | 100Hz 8ch/12ch/16ch LoRa Dual Band | -112dBm |
| 101 | Gem-X | 150Hz | 150Hz LoRa Dual Band | -112dBm |
For Crossfire, RFMD is much simpler:
- RFMD = 2 → 150Hz
- RFMD = 1 → 50Hz
- RFMD = 0 → 4Hz
Crossfire can also dynamically adjust packet rate to maintain a stable control link. However Betaflight advises against using Dynamic packet rate as it may interfere with RC smoothing as explained here.
What is SNR?
SNR stands for Signal-to-Noise Ratio (sometimes called RSNR, or relative signal-to-noise ratio). It compares the actual signal level to the background noise.
The higher the SNR, the better.
If SNR is low, it’s means:
- RF interference is heavy;
- or/and signal is too weak
But what SNR is considered good and bad? Well, the ideal SNR range depends on frequency and packet rate. According to ELRS wiki:
For 2.4GHz
| Packet Rate | Bad SNR | Good SNR |
|---|---|---|
| 500Hz | Below 5.0dB | Above 9.5dB |
| 333Hz Full | Below 5.0dB | Above 9.5dB |
| 250Hz | Below 3.0dB | Above 8.5dB |
| 150Hz | Below 0.0dB | Above 8.5dB |
| 100Hz Full | Below 0.0dB | Above 8.5dB |
| 50Hz | Below -1.0dB | Above 6.5dB |
For 900MHz
| Packet Rate | Bad SNR | Good SNR |
|---|---|---|
| 200Hz | Below 1.0dB | Above 3.0dB |
| 100Hz Full | Below 1.0dB | Above 3.0dB |
| 100Hz | Below 1.0dB | Above 2.5dB |
| 50Hz | Below 1.0dB | Above 1.5dB |
| D50 | Below 1.0dB | Above 3.0dB |
| 25Hz | Below -3.0dB | Above 0.5dB |
For Crossfire, the typical SNR value is usually much higher than for ELRS, often around 4 times higher.
Not all modulation modes support SNR in ExpressLRS. For example, in FLRC modes such as: F1000, F500, D500, D250, SNR will simply stay at 0.
LQ, RSSI and SNR — Which Is the Most Important?
LQ, RSSI, and SNR are all useful metrics for judging your radio link quality and range limit. Ideally, it is best to display all of them in your OSD.
When checking signal health, I would say LQ is the most important, because it is the most direct indicator of how reliable your link is at any given moment.
However, LQ does not drop linearly with range like RSSI does. It often stays high until you get close to the limit, then suddenly falls off very quickly.
That is why RSSI is also very important. It tends to decrease more gradually and predictably, which makes it better for estimating how much range you have left.
But RSSI alone is not enough, because it does not account for the noise floor. That is why SNR is useful. Heavy RF interference can ruin your RC link even if the signal itself is still reasonably strong. Noise level depends on many things, including:
- the environment, such as cell towers
- the electronics on your drone, such as your VTX or FPV air unit
A Useful Analogy
A good analogy for this is to think of the receiver as the person you are trying to talk to in a noisy restaurant, with you being the transmitter. When you are talking, the volume of your voice is RSSI, the other person can hear you and understand everything you are saying, in this case LQ would be 100%. What really matters here is not how loudly you speak, but how many words the other person can hear and understand. So even if your voice is loud enough to be heard (high RSSI), the other person may still not understand you if the restaurant is too noisy (low SNR). In that case, you can end up with high RSSI but poor LQ.
That is why all three indicators matter.
Interpreting Them Together
Here is a practical way to think about these signal indicators:
| LQ | RSSI | SNR | What Does It Mean? |
| High | High | High | Healthy radio link |
| High | Low | / | Approaching the edge of your range, or possibly a faulty antenna |
| High | High | Low | Link still holding up, but noise may become a problem soon |
| Low | High | Low | Strong signal, but heavy noise/interference is corrupting packets |
| Low | Low | Low | Range limit reached, turn back now or risk failsafe |
The Minimum LQ
Ideally, LQ should stay at 100% throughout most of your flight, but it is normal for it to fluctuate in the 90s. LQ measures the percentage of data packets that successfully reach the drone. For example, an LQ of 50% means only half of the data packets are getting through.
Even so, the quad is usually still flyable. At a 500Hz packet rate with 50% LQ, you are still receiving 250 commands per second, which is still far faster than older protocols such as SBUS, which only runs at 50Hz. However, if you are flying at 50Hz packet rate with 50% LQ, only 25 commands per second are getting through, and you will likely start noticing jittery or delayed responses to your stick inputs.
The exact LQ threshold at which you should react is subjective and depends on how much risk you are willing to take. You definitely should not wait until LQ drops so low that the drone becomes difficult to control. Also, unlike RSSI, which tends to decrease more gradually, LQ can drop very quickly once it starts falling.
A dropping LQ is a warning sign. It usually means one of the following:
- you are approaching the limit of your radio range
- you are experiencing heavy interference
- something else is wrong with the link
Personally, if I see LQ consistently below 90%, I immediately check RSSI dBm. If RSSI dBm is also low, for example within 10dB to 15dB of the sensitivity limit, it is probably a good idea to turn back. If RSSI remains high, I continue to watch LQ closely to see whether it recovers. If LQ keeps dropping, I turn back, because that usually points to worsening interference or deteriorating link quality.
You should definitely turn back if LQ falls below 50%, because at that point the increase in latency will make control more difficult, and you may be close to a failsafe.
The Minimum RSSI
The lowest RSSI depends on the packet rate and frequency of the signal. Lower packet rates and lower frequencies generally have better sensitivity.
For example, the lowest theoretical RSSI value for 2.4GHz at 500Hz is -105dBm, while for 915MHz at 25Hz it is -123dBm, which is one reason lower-frequency, lower-packet-rate modes are better for long-range flying.
It is important not to underestimate what even a few dBm means, because every 6dB roughly doubles the range.
For example, in ExpressLRS, dropping the packet rate from 500Hz (-105dBm) to 150Hz (-112dBm) effectively doubles the range (and a bit more). I have a separate tutorial explaining how to use dB to estimate range in FPV: https://oscarliang.com/calculate-fpv-range/
Here is a table of the lowest RSSI values (sensitivity limit) for each RF mode (from the ExpressLRS Wiki). If RSSI drops below these limits, you will get a failsafe.
| Modes | Sensitivity Limit |
| D250/D500/F500/F1000 | -104dBm |
| 500Hz/333Hz Full | -105dBm |
| 250Hz | -108dBm |
| 150Hz/200Hz/100Hz Full | -112dBm |
| 100Hz | -117dBm |
| 50Hz | -117dBm |
| 25Hz | -123dBm |
You can also find the sensitivity limit directly in the ExpressLRS Lua script when selecting a packet rate.
So what’s the lowest RSSI you should allow to avoid failsafe?
In practice, you should not let RSSI drop all the way to the sensitivity limit. Always leave some safety margin. I personally use 10dBm of headroom above the sensitivity limit.
For example, if your packet rate is 500Hz LoRa on 2.4GHz, the minimum RSSI limit would be -105dBm. In that case, you should probably turn back when you see around -95dBm in your OSD, using 10dBm as your safety margin.
Some experienced pilots may use a smaller margin and push the link harder (and because they understand the capability of their gear), but if you want to play it safe, 10dBm is a good starting point.
Also note that RSSI dBm does not take RF noise into account, which is why it is important to also check SNR and LQ. If RSSI is high but SNR and LQ are low, then noise or interference is likely the culprit.
TX Power
You can manually set a fixed TX power in the ExpressLRS Lua script, or you can use Dynamic Power and let the system decide for you.
With Dynamic Power, ExpressLRS adjusts the transmitter power based on SNR:
- if the signal gets weak or noisy, it increases power
- if the signal is strong and clean, it reduces power
Dynamic Power is a good way to save radio battery while still maximizing range when needed. If you use Dynamic Power, there is a TX Uplink Power OSD element you can display, which shows the actual transmit power being used.
That said, some long range pilots still prefer to use a fixed TX power. The reason is simple: when Dynamic Power kicks in, your RSSI and SNR can jump up and down. You may not want the system constantly changing link indicators while you are trying to judge interference and estimate range.
It is also important to understand that doubling TX power does not double your range. To double the range, you would need to increase TX power by about 4 times. At higher power levels, this quickly becomes impractical because of the downsides, such as:
- overheating the TX module
- reduced efficiency
- reduced reliability
- increased interference to nearby pilots or FPV gear
It is generally best to start with a low power setting and only increase it when necessary.
Someone in the community (I won’t name names) proved that it is possible to fly 2km on just 10mW at 500Hz packet rate. If they had used 150Hz instead, they could probably have reached 4km. It just goes to show that you do not need much power — ExpressLRS is seriously solid.
Display LQ, RSSI and SNR in OSD
In the Receiver tab in Betaflight, set both:
- RSSI Channel = Disabled
- RSSI_ADC = Disabled
Then in the OSD tab, enable:
Link QualityRSSI dBm Value(not RSSI Value)RSNR Value
I recommend having LQ, RSSI dBm, and RSNR all displayed in your OSD, because they each tell you something different about your radio link.
LQ, RSSI and SNR Alarms in OSD
You can also enable OSD alarms for RSSI dBm, LQ, and SNR in Betaflight.
First, enable the Warnings element in the OSD tab and place it near the center of the screen so you do not miss it when a warning is triggered.
Then, on the right side of the OSD tab under the Warnings section, enable:
- Link Quality
- RSNR
- RSSI dBm
You can change the thresholds for these warnings using the CLI:
set osd_rssi_dbm_alarm = -98set osd_link_quality_alarm = 70set osd_rsnr_alarm = 4 save
For RSSI dBm, I personally use a margin of 10dB above the sensitivity limit of the packet rate. For example, for 250Hz, sensitivity limit is -108, so I’d set the RSSI dBm alarm to -98. The default value is -60 which is way too high in my opinion and will give you a premature warning.
For LQ and RSNR I just use the default values.
Bench Test
To check whether your ELRS radio link is working correctly, you can perform this simple bench test.
- Set TX power to the lowest level in the Lua script (10mW or 25mW, depending on your TX module)
- Power on your radio and drone
- Place your radio about 1m (3ft) from the drone (receiver antenna)
- Make sure the radio antenna and receiver antennas are aligned in the same orientation
- Check in the OSD, or on the radio’s telemetry page, what the RSSI dBm is (or the 1RSS telemetry value)
For 2.4GHz, a value between about -25dBm and -40dBm is considered good. For 900MHz, a value around -20dBm suggests the hardware is working properly.
If your value is lower than this (a more negative number), it may indicate that something is wrong, such as:
- a faulty antenna
- a disconnected antenna
- damaged RF hardware
Setup Low LQ Warning in EdgeTX
In your radio, go to model setup, press the “PAGE” button to scroll to the Telemetry page. Set “Low alarm” to 50, and “Critical alarm” to 20. Make sure “Disable alarms” is unchecked.
That’s it.
You should get a voice warning when LQ drops below these values.
Edit History
- Apr 2018 – article created
- Jan 2020 – added instructions for displaying LQ in Betaflight 4.1
- Jan 2021 – updated for BF 4.2,
- Mar 2022 – updated URL, rewritten for ExpressLRS release
- Mar 2023 – updated guide for ExpressLRS 3.0
- May 2026 – updated guide for ExpressLRS 4.0
