Ultimate LRS RSSI

What’s the RSSI ?

The RSSI is the Received Signal Strength Indicator, and is an indication of the signal level. It’s useful to keep an eye on it, as it allows to know when we approach the maximum distance of the system.

It’s an important value to monitor during the flight.

It’s also important to understand that the RSSI isn’t a linear value : for example a RSSI of 50% doesn’t mean that we are at half the maximum distance.

RSSI or distance ?

The RSSI is expressed in dB (deciBel). This isn’t linear with the distance, for every 6 dB difference, the distance is doubled.

For example if we have -50 dBm at 1km, we will have

-56 dBm at 2 km
-62 dBm at 4 km
-68 dBm at 8 km
-74 dBm at 16 km
-80 dBm at 24 km
-86 dBm at 48 km
-92 dBm at 92 km
-98 dBm at 184 km,
and when we are at -103 dBm we’re at the maximum distance.

So if we know the RSSI at any distance, we can extrapolate to the value for any distance, and even find the maximum range for given antennas. At the limit we could do this measurement at 1m distance and extrapolate but in practice it’s more precise to take a measurement at a larger distance such as 1km.

You can use the ULRS range estimator to extrapolate your RSSI at any distance and find out the maximum range.

How to get the RSSI ?

The RSSI is available either as a PWM signal (can be considered as analog signal when filtered), or as a servo signal.

If using a recent flight controller such as Pixhawk, it’s strongly recommended to use the RSSI as servo signal.

RSSI as a servo value

ULRS can replace one of the 16 servos values by a servo value representing the RSSI. This can be read by some flight controllers such as Pixhawk, but not by others such as APM.

This can be configured in ULRS CC easily :

And requires to set up some parameters on the Pixhawk :


The RSSI_CHANNEL must be configured to the same servo channel as in ULRS CC.

Advantages :

  • No filter required
  • No additional wire required, it goes through the normal PPM wire
  • More precise
  • Supported by all recent flight controllers (Pixhawk etc)
  • No voltage issues (ULRS running at 3.3V and APM running at 5V for example)

Disadvantages :

  • Not supported on APM
  • One of the 16 channels will be exclusively used for the RSSI

RSSI as analog signal

In ULRS, the RSSI signal is available through a pin and requires a small filter to provide an analog voltage between 0 and 3.3V (or 0% to 100%).

It’s also visible in dBm on the ULRS CC status screen.

  • RSSI is available on this pin on both ground and plane 1W modules (ground and plane):RSSI
  • To connect RSSI to APM or an OSD, use a RC filter (NB : a value of 10k rather than 1k works better, I’ll update this diagram) :rssi-schema_03
  • For the 100mW RX, the RSSI is on the first channel (closest to PCB edge)

RSSI in dBm or in percentage ?

Normally we should talk about the RSSI in dBm. And this is the value shown in ULRS CC.

But to show it on an analog meter, or in Mission Planner, the value in dBm is converted to a percentage.

The important point is that this conversion from dBm to percentage is arbitrary, we choose a value in dBm that corresponds to a strong signal and assign it 100%, and another value that corresponds to the minimum signal for proper operation and assign it 0%.

For ULRS 2.X :

A simple formula was chosen to convert between dBm and percentage :

0% (0V) = -100 dBm or below (minimum signal)
10% = -90 dBm
20% = -80 dBm
30% = -70 dBm
40% = -60 dBm
50% = -50 dBm
60% = -40 dBm
70% = -30 dBm
80% = -20 dBm
90% = -10 dBm
100% (3.3V) = 0 dBm or above (strong signal)

When the plane goes away the signal drops quickly to let’s say 30% and then go down very slowly, which is perfectly normal because the relationship between RSSI in dBm and distance is not linear. Notice that this is pessimistic, as for example wifi will show 100% as soon as the signal is above -50 dBm, while here we would just show 50%. So one may wonder if it’s normal to have a low RSSI at a low range, but yes, that’s only the way the RSSI is represented.

For all the values 0-100% RSSI there should be no packet loss. Packets will start to be lost around -102 dBm. That’s why some other systems such as openlrsng do represent the RSSI in a different way : between 50% and 100% it’s really the RSSI, and between 0% and 50% it represents the rate of packets lost. So again the RSSI shown in ULRS is very pessimist.

Is it comparable to other LRS systems ?

In ULRS, the RSSI is shown in dBm, in its pure form. But this means also that it will go very fast to relatively low values, and then stay there for tens of kilometers. That’s why usually LRS manufacturers prefer to show a mathematically modified RSSI, for example OpenLRSng compresses the normal RSSI between 50% and 100% of the scale (rather than 0% to 100%), and below 50% it will show a value based on the number of lost packets. For other LRS systems the formula used in not known.

Remark for ULRS 1.X :

The 0% and 100% RSSI values are different in ULRS 1.06 :

  • 0V (0%) = -87.9 dBm
  • 3.3V (3.3V) = -19.5 dBm

It should be noted that RSSI = 0V = -87.9 dBm is not the limit of the system, which is around -103 dBm. It means that when the RSSI indicator shows 0V, we have still around 15 dB, which means that we are at 1/4 of the maximum distance.

Is a low RSSI the only cause of failsafe ?

There are two different aspects to consider :

1) The sensitivity. As you can see in its datasheet, the RFM23BP has a sensitivity of -120 dBm. There’s a lot of confusion about this value, because there is a relationship between the sensitivity and the bandwidth used. And the bandwidth used depends on the data speed we want.

So it’s true that at 2kbps we would have -120dBm, but we use a much larger bandwidth in order to have a high telemetry speed, so we have a sensitivity of about -102dBm. It’s the same for all modules, even lora modules advertized with a very good sensitivity actually achieve it only for very low data rates.

It’s easy to check it, connect your ULRS CC to the ULRS RX, and take the TX farther away with a dummy load until you’re at the limit of the failsafe. You’ll find a value around -102dBm (it can slightly vary from unit to unit).

2) The RSSI shows the signal strength. In case there’s no interference, we can go down to -102dBm. Compare this to the limit of the human ear to listen to someone whispering in the next room. Now if there’s an interference, we can have a failsafe regardless of the RSSI value : if someone shout next to you, it’s not longer possible to hear the whispering from the next room.

Failsafe means that the signal wasn’t decoded correctly, it can happen because the signal is too weak, and to detect this the RSSI is a good indicator. But it can also happen because of interference and in this case the RSSI won’t mean anything (it could even show the level of the interferer).

The point 1) is a technical limit from the system, but you can use better antennas to increase the signal level.

The point 2) can be solved by selecting channels where there are no interferences. You can detect the interferences with the spectrum analyzer. Interferences sources can be close (such as some cameras) or distant.

It’s a big advantage of ULRS to be able to select the channels, in case of dragonlink for example it’s not possible to select the channels so users have sometimes to replace their camera, ESC or flight controller.