Please note: This project is no longer active. The website is kept online for historic purposes only.
If you´re looking for a Linux driver for your Atheros WLAN device, you should continue here .
Version 17 (modified by mrenzmann, 13 years ago)
Adjustments in response to new domain.

RSSI in Madwifi

What is RSSI?

RSSI is an acronym for Received Signal Strength Indication. RSSI is a measurement of the received radio signal strength (energy integral, not the quality).

In a IEEE 802.11 system RSSI is the received signal strength in a wireless environment, in arbitrary units. RSSI can be used internally in a wireless networking card to determine when the amount of radio energy in the channel is below a certain threshold at which point the network card is clear to send (CTS). Once the card is clear to send, a packet of information can be sent. The end-user will likely observe an RSSI value when measuring the signal strength of a wireless network through the use of a wireless network monitoring tool like Network Stumbler.

How is RSSI used in the Madwifi driver?

In MadWiFi, the reported RSSI for each packet is actually equivalent to the Signal-to-Noise Ratio (SNR) and hence we can use the terms interchangeably. This does not necessarily hold for other drivers though. This is because the RSSI reported by the MadWiFi HAL is a value in dBm that specifies the difference between the signal level and noise level for each packet. Hence the driver calculates a packet's absolute signal level by adding the RSSI to the absolute noise level.

As of MadWiFi version 0.9.3, the noise floor is no longer assumed to be a constant -95 dBm. The noise floor is now updated on each receive interrupt by calling out to the HAL, which returns the absolute noise level in dBm. However, because each interrupt can service several packets we cannot get a noise reading for each and every packet. MadWiFi simply takes the measured noise level at each interrupt and assumes all packets serviced during the interrupt were received with this noise level. The measured noise is not used during scanning at present, so all scan results return with a noise level of -95 dBm.

The "Quality" parameter reported by some of the Wireless Tools such as iwconfig is used by MadWiFi to report the SNR (RSSI). It should not be regarded as a percentage (ignore the /94 part). It simply specifies the average RSSI of the last few received frames. You can see the relationship in the following equation: SNR = Signal - Noise.

In general, an RSSI of 10 or less represents a weak signal although the chips can often decode low bit-rate signals down to -94dBm. An RSSI of 20 or so is decent. An rssi of 40 or more is very strong and will easily support both 54MBit/s and 108MBit/s operation. Don't be surprised if you get very different figures across invocations of iwconfig (or whichever iw tool), the RSSI will change with time due to interference, channel fading etc.

More info on RSSI

The 802.11 standard is designed such that the MAC and PHY layers are independent, allowing various different modulation schemes to use the same MAC layer. Communication between the management sublayers (called MLME and PLME) of the MAC and PHY layers is done using lists called service parameter lists whose members include (for the receiver side of things) received frame length, RSSI, and datarate. The lack of any absolute values for signal strength or noise floor mean that there is little choice in what to display - hence the value RSSI is used. There's a good article on this at (local copy), and another, more detailed paper by the same person on (local copy).

For more information on 802.11 Service Parameter Lists, and SAPs, try searching the web.

How do I associate with an AP with an RSSI less than 24?

Use one of the following commands

iwpriv athX rssi11b T  (for 802.11b/g mode)
iwpriv athX rssi11g T  (for 802.11g mode)
iwpriv athX rssi11a T  (for 802.11a mode)

where T is your desired RSSI threshold. Note that this will only let MadWiFi *attempt* to associate. It does not guarantee that the association will complete.

OBSOLETE: Why is the noise floor assumed to be a constant?

This section only applies to MadWiFi versions 0.9.2 and below.

At a constant temperature, the thermal noise at any frequency looking into a 50W* load is -174dBm/Hz (since [the noise power] N = kTB [where k is Boltzmann's constant, T is the temperature in Kelvin, B is the system bandwidth], and thermal noise has a constant spectrum). For a 20Mhz OFDM channel we have -174 + 10log10(20x106), or -101.7dBm thermal noise at the antenna. After including an additional 5dBm noise from the amplifier chain, we have -96dBm for the noise floor inside the radio.