RSSI vs Distance measurements in an indoor environment using KW0x

Showing results for 
Search instead for 
Did you mean: 

RSSI vs Distance measurements in an indoor environment using KW0x

NXP Employee
NXP Employee

Received Signal Strength Indicator (RSSI) is measurement of the power presented in a received radio signal.

An RSSI use case could be its conversion to distance.

KW0x radio has a RSSI register where RSSI can be read after a reception. To convert the value of the RSSI register to the real RSSI value just apply the next formula:

Rssi_Value = - Rssi_Register / 2.


A range test was implemented in an indoor environment for 8 meters, one measurement each 1 meter to know the behavior of RSSI vs distance.

RSSI varies a lot with different factors like the things in the environment, the weather, etc. The measurements published in this post could be different in each scenario. 

Some measurements has been taken for each meter (an excel file it´s attached in the post).


In figure 1 we can see the Raw data measurements.

     15473_15473.pngfigure 1.png

                                                                   Figure 1: RSSI vs Distance (Raw Data)

In figure 2, moving average it´s applied to Raw data.

    15474_15474.pngfigure 2.png

                                                         Figure 2: RSSI vs Distance (Moving average applied)

In figure 3 we can see RSSI measurements with median applied.

  15475_15475.pngfigure 3.png

                                                           Figure 3: RSSI vs Distance (Median applied)


Finally, in figure 4 Moving average it´s applied to the median RSSI.

    15477_15477.pngfigure 4.png 

                             Figure 4: RSSI vs Distance (Moving average of median RSSI applied)



The firmware to test the application it´s attached too. Connect the RX device to hyperterminal to watch the results.

To find where to read RSSI just search @LB in the project.


Modify next lines to:

- Change between TX and RX devices:                  #define      gDeviceType_c                                   gRxNode_c      or      gTxNode_c 

- Change time delay between packets                  #define      gDelayBetweenPacketsInMs_c            800                          


Message was edited by: Luis Antonio Burgos Lopez

Original Attachment has been moved to:

Labels (1)
3 Replies

Contributor III

Unless you are in a total vacuum or you have completely characterized and are calibrated to your operating environment, relating distance to RSSI is a risky proposition.  Given that RSSI is only reporting the average power of a given channel ( including interference ), distance assumptions can be skewed by several different factors.

For example, the additive and destructive signal qualities of multi-path fading can fluctuate RSSI readings dramatically as you move your radio from one point to the next. Even moving the radio centimeters or altering the antenna's polarization with respect to the sender can alter the multi path effect.

When taking RSSI measurements as a function of distance, offending external noise signals need to be characterized as well.  In general, noise sources are extremely dynamic.  For the purpose of this post, I will concentrate on noise generated from in band signal sources. 

Filters are not ideal in the real world.  This means that a close transmitting neighbor will generate adjacent channel power (ACP) which may overlap with the channel you are operating on.  This overlap will skew the RSSI reading.  Similar to multi-path effects, when moving your radio in the spatial and temporal domains, the effect of ACP can vary wildly.  Additionally, if using a channel hopping scheduler, ACP will displace RSSI from one channel to the next.

Distance measurements are difficult to accurately measure. If you want a higher confidence when characterizing your operating environment, you may want to look into correlating a signal quality metric, such as LQI with RSSI.  Still not perfect, but it gives you another data point to extrapolate from. Using SNR readings, if available, would also give another data correlation set to increase confidence levels when measuring distance.  These methods will give you moderate success, but they will not provide a robust scheme. Signal characteristics change from one RF ecosystem to the next which makes it difficult to generate a distance measurement technique that is not environmentally biased.

-Good luck out there!

0 Kudos

Contributor I

Great project. What scanning frequency are you using for the signal to be detected at the input (antenna) of the system? I want to purchase Kinetis KW0x on a development board (MRB-KW019032EU for Europe), and although the specs state that RF chip can receive from 290-1020 MHz, the software code appears not to allow this (it only seems to allow Rx on the 868MHz band only). How can I have a RSSI system which can scan across the full range of Kinetis KW0x chip?

0 Kudos

NXP Employee
NXP Employee

Hi Kostas,

I answered you on this topic at the following post:

MRB-KW0x: How can I make software do RSSI across the entire 290-1020 MHz?

Hope that helps,