How to convert Wifi signal strength from Quality (percent) to RSSI (dBm)?

Wifi Signal Strength Percentage to RSSI dBm

Microsoft defines Wifi signal quality in their WLAN_ASSOCIATION_ATTRIBUTES structure as follows:

wlanSignalQuality:

A percentage value that represents the signal quality of the network. WLAN_SIGNAL_QUALITY is of type ULONG. This member contains a value between 0 and 100. A value of 0 implies an actual RSSI signal strength of -100 dbm. A value of 100 implies an actual RSSI signal strength of -50 dbm. You can calculate the RSSI signal strength value for wlanSignalQuality values between 1 and 99 using linear interpolation.

RSSI (or "Radio (Received) Signal Strength Indicator") are in units of 'dB' (decibel) or the similar 'dBm' (dB per milliwatt) (See dB vs. dBm) in which the smaller magnitude negative numbers have the highest signal strength, or quality.


Therefore, the conversion between quality (percentage) and dBm is as follows:

    quality = 2 * (dBm + 100)  where dBm: [-100 to -50]

    dBm = (quality / 2) - 100  where quality: [0 to 100]

Pseudo Code (with example clamping):

    // dBm to Quality:
    if(dBm <= -100)
        quality = 0;
    else if(dBm >= -50)
        quality = 100;
    else
        quality = 2 * (dBm + 100);

    // Quality to dBm:
    if(quality <= 0)
        dBm = -100;
    else if(quality >= 100)
        dBm = -50;
    else
        dBm = (quality / 2) - 100;

Note:

Check the definition of Quality that you are using for your calculations carefully. Also check the range of dB (or dBm). The limits may vary.

Examples:

Medium quality:   50%      ->   -75dBm   = (50 / 2) - 100
Low quality:      -96dBm   ->   8%       = 2 * (-96 + 100)

In JS I prefer doing something like:

Math.min(Math.max(2 * (x + 100), 0), 100)

My personal opinion is that it's more elegant way to write it, instead of using if's.


From experience:

  1. Less than -50dB (-40, -30 and -20) = 100% of signal strength
  2. From -51 to -55dB= 90%
  3. From -56 to -62dB=80%
  4. From -63 to -65dB=75%

    The below is not good enough for Apple devices

  5. From -66 to 68dB=70%
  6. From -69 to 74dB= 60%
  7. From -75 to 79dB= 50%
  8. From -80 to -83dB=30%
    Windows laptops can work fine on -80dB however with slower speeds

Tags:

Wifi