Measuring RSSI with Wifi Cards

Why RSSI isn't very useful for signal measurements

The IEEE 802.11 standard defines a mechanism by which RF energy is to be measured by the circuitry on a wireless NIC. This numeric value is an integer with an allowable range of 0-255 (a 1-byte value) called the Receive Signal Strength Indicator (RSSI). Notice that nothing has been said here about measurement of RF energy in dBm or mW. RSSI is an arbitrary integer value, defined in the 802.11 standard and intended for use, internally, by the microcode on the adapter and by the device driver.

However, no vendors have actually chosen to actually measure 256 different signal levels, and so each vendor’s 802.11 NIC will have their own specific maximum RSSI value (“RSSI_Max”). For example, Cisco chooses to measure 101 separate values for RF energy, and their RSSI_Max is 100. Symbol uses an RSSI_Max value of only 31. The Atheros chipset uses an RSSI_Max value of 60. Therefore, it can be seen that the RF energy level reported by a particular vendor’s NIC will range between 0 and RSSI_Max.

Whatever range of actual energy is being measured, it must be divided into the number of integer steps provided by the RSSI range. Therefore, if RSSI changes by 1, it means that the power level changed by some proportion in the measured power range. There are, therefore, two important considerations in understanding RSSI. First, it is necessary to consider what range of energy (the mW or dBm range) that’s actually being measured. Secondly, it must be recognized that all possible energy levels (mW or dBm values) cannot be represented by the integer set of RSSI values.

Herein lies the reason that making measurements with simple tools like inSSIDer are so difficult. Every wireless card manufacturer, and there are many, can choose his own RSSI-Max level, so all of us are making comparisons between varying situations with tools that are also varying in effectiveness (I hesitate to use the term "accuracy" here - there is no implied accuracy whatsoever in the RSSI system!).

Right away we can also see that the lower the RSSI_max value used by a wireless card's manufacturer, the larger the "jitter", or jump by several dB in the signal indicated level as the signal increases slightly and crosses the threshold into the next "step". In the case of Cisco, the jitter would be small, with Symbol, it would be perhaps three times larger. Just this one artifact alone is enough to nullify the majority of the "tests" conducted by forum members. A very slight amount of interference on a channel can push a measurement up or down by 3-4 dBm, as can a slight change in the path loss.

Wireless NIC manufacturers do not measure signal strength so accurately at the upper levels. The main use for the signal level measurement is to determine when signals are so weak as to warrant looking for another AP (roaming) - typically at a 20% reading. The logarithmic nature of the dBm measurement, coupled with the fact that the RSSI range used for measurement contains dBm “gaps” (due to the integer nature of the RSSI value), has led many vendors to map RSSI to dBm using a lookup table. These mapping tables allow for adjustments to accommodate the logarithmic nature of the curve. There may be some quite large steps using this method, especially when the signal is strong, making jitter between steps much worse on some points of the curve.

For example, when the signal level is 50%, this is reported with different values of RSSI, depending on the vendor; a Symbol card would convert to an RSSI of 16, because its RSSI_Max =31, Atheros, with RSSI_Max = 60, would convert it to an RSSI of 30, and for Cisco, which is the easiest one because its RSSI_Max = 100, RSSI is 50. InSSIDer would then take these figures and convert to a dBm scale - and by now, I'm getting lost. Because InSSIDer does not know or care what wireless you are using !

You see the problem with trying to make meaningful conclusions with what amounts to a total pile of crap as a basis?

Unfortunately, we still do not know how all vendors map RSSI to signal strength percentage. This lack of consistency between vendors does not allow for direct comparison of performance evaluation results, performed with equipment of different vendors.

Also, you can see some wireless NIC cards are therefore more suitable than others for RF "measurements" using simple software like inSSIDer, those with a larger "RSSI_Max" level would be best. It would be interesting to know the RSSI_Max of the WRT54GL.

Using, say, inSSIDer with wireless cards by different manufacturers, we see big differences in indicated dBm levels, as explained above. It is highly doubtful that any commonly used utility like inSSIDer would make any attempt to identify wireless cards and adjust the data to provide anything close to an accurate dBm figure. To do this, it would need to know the RSSI value used by the card, however, this information is not usually made available by the manufacturers (even the data for the ones mentioned above has actually changed in newer designs so it is safe to assume we do not know the RSSI value - ever).

The larger the card's RSSI_Max, the more compressed the dBm scale will be on the graph. The expected change of RSSI from changing a WRT from say 1mW to 150mW would be around 20dB - if the change was accurate and not just a relative figure. You can see that in practice, 10-12dB is all that is ever shown. A measurement accuracy of around 50% is pretty useless.

Utilities are sometimes provided with the purchase of a wireless card, which is actually written by the card manufacturer. They would presumably be in a position to provide some better accuracy, as all pertinent information is known to them (Intel proset software, for example). Whether it actually is more accurate- if they were even interested in making it so - I have no idea. Remember - this information is completely meaningless to the majority of users!

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License