When developing proximity related Bluetooth® applications, sometimes the developers need to deal with different measurements for the signal strength—like should I use RX or RSSI in my application? First, let’s review the basic concept of radio-frequency (RF) communication and then we can have a better understanding of this question and a possible answer.
What are RX and RSSI?
In RT communication, we use RX and RSSI to measure the radio signal strength. Both RX and RSSI (Received Signal Strength Indication) are indications of the power level being received by an antenna. The difference between RX and RSSI is that RX is measured in milliWatts (mW) or decibel-milliwatts (dBm) whereas RSSI is a signal strength percentage—the higher the RSSI number, the stronger the signal. Unlike RX, RSSI is a relative measurement that is mostly defined by each chip manufacturer. There is no standardized relationship of any particular physical parameter to the RSSI reading. For example, Manufacturer A could have an RSSI max value of 100 while Manufacturer B will return RSSI values anywhere from 0 to 127. However, on one specific chip, we could have a mapping of an RSSI value to a particular physical RX value. For some platforms, only RSSI data is available from the high level API.
RSSI is Different for Different Radio Circuits
You may notice the variation of the RSSI value even on a fixed location or distance. One factor for the variation could be the hardware/radio platforms. For instance, on iOS devices where there aren’t many different chipsets, the RSSI value could accurately reflect the relationship to the distance. The RSSI value from iPhone A probably means the same strength value on an iPhone B. However, on Android devices where we have a large variation of devices and chipsets, the absolute value of RSSI won’t help you easily map to a location. The same RSSI value on two different Android phones with two different chipsets may mean two different signal strengths. However, the RSSI value could still be very helpful in the proximity applications if you use it to get the trend of the RSSI value change. That trend could give you meaningful data.
How Can I Use RSSI in a Proximity Application?
Avoid using the absolute value of the RSSI—use the trend instead
Based on the fluctuation of radio signals, we can get a fairly accurate result of the RSSI trending. We can easily know if the signal is getting stronger or weaker, therefore, we will know if we are moving towards or away from the source. Even better, if we understand the specific mapping between the RSSI and the location of the specific receiving device, we could have a fairly accurate estimate of the distance.
Here’s an example of the relationship between distance and RSSI.
RSSI Value Changes By Distance
Use the Mode of a Range When Getting the RSSI Value
Because of the nature of RF communications, both RX and RSSI will be largely influenced by factors in the environment. When you use the RSSI value, you may also notice that the value drifts in a range because of the environmental influence. To filter out the influence, you may want to design a sampling algorithm which gives you the Mode (the value that occurs most often) of the RSSI sample set in a certain period. That way, the data will closely reflect the actual signal strength and filter out the noise.
When you use RSSI for your proximity applications, you may need to consider the difference in definition from different chipset vendors. The absolute value of RSSI may vary from different radio circuits but trending of the RSSI from the same chip could still give you lots of information. To avoid the influence from the environment, you may want to define your own sampling algorithm to get rid of the noise.