From: Douglas S. J. De Couto <decouto@lc...> - 2001-12-13 21:27:56
I am trying to understand the different kinds of signal strength and
quality numbers reported by the aironet cards. This may repeat or ask
stuff that people already know, but I would like to get any answers or
opinions you all might have.
The 802.11 spec mentions two values:
1) Received signal strength indication (RSSI)
This is ``a measure of the RF energy received''
I assume that this number can be turned into dBm or mW through an
2) Signal quality (SQ)
This is ``The SQ of the DSSS PHY PN code correlations''.
I assume SQ is some sort of residual or other measurement about how well
the spread-spectrum correlation goes for a packet reception.
What sort of units would this SQ number have? Is it a signal-to-noise
The spec says both of these values can be up to 8 bits.
I am assuming that RSSI and SQ become the basis for what drivers/cards
report as signal strength and signal quality, respectively.
Okay, now let's look at cisco/aironet cards.
I have looked through the linux and *BSD drivers. I have seen at least
three numbers mentioned/used.
1. The linux and *BSD drivers pull a ``signal strength'' number out of
the control header on every packet received. This is an 8-bit value at
offset 0x9 in the control header, and is described as
``rx_signal_strength'' in the *BSD driver.
2. Additionally, the linux driver pulls an 8-bit ``quality'' value out
of offset 0x8 in the same control header. In the *BSD driver code, this
part of the control header is marked ``reserved''.
The raw values of these numbers are quite different. For instance, on
my laptop I see the ``signal'' number to be around 40, and the
``quality'' number to range from 12 to 20.
3. Finally, the ``status'' RID structure has a 16-bit field named
``an_cur_signal_strength'' in the *BSD driver source. I have also seen
this field named ``signal quality''. The raw values of this field,
obtained by having the card query the driver at each packet reception,
seem to be very close to the ``signal strength'' values reported in the
packet control headers (i.e. around 40). I assume that this *is* the
same signal strength reported in the received packet control headers,
but that I am just not getting values that are synchronized.
So how do we know that the linux driver is doing the right thing when it
gets the quality number? Does this correspond to the SQ number
mentioned in the 802.11 spec?
Okay, given that I think I believe the raw ``signal strength'' number
reported by the card is the RSSI, how do I get dBm?
I have seen two or three techniques shown on the list this month:
1) (posted by someone who was reading intersil docs)
dBm = 100 - RSSI
2) (derived by Javier? by observing the ACU program)
dBm = (RSSI' / 2) - 95
where RSS' = RSSI / 255 (i.e. convert to percentage)
3) posted by Javier
Lookup dBm <-> RSSI conversion in firmware table where available.
So id the 3rd choice the ``right'' way?
Okay, finally, can I turn the ``quality'' number into a S/N ratio, and
use it together with the signal strength to get a noise estimate?
Thanks for reading this far!
Douglas S. J. De Couto decouto@...