我在 Linux x64 上使用 wpa_supplicant 2.0 和 USB wifi 适配器 (rtl8192cu)。
当我从 wpa_cli 进行扫描时,即使对于相同的接入点而不移动任何东西,我也会得到截然不同的数字(在正数和负数之间交替)。我试图在 GUI 中向用户显示这些数据,所以我需要它采用一致的格式,最好是我最终可以转换为百分比的格式。
例如,SSID“一”有时具有大约 -40 的信号电平,有时只是数字 10。即使它始终输出常规 dBm(负)数字,我也不知道在这种情况下的范围是多少,因为每个操作系统/应用程序的处理方式似乎都略有不同。网络上的一些文档建议有效值为 -50 到 -100,有些文档的说法完全不同,有些文档则自己编造数字。这里它甚至似乎不遵循任何标准:
bssid / frequency / signal level / flags / ssid
XX:XX:XX:XX:XX:01 2437 -38 [WPA2-PSK-CCMP][WPS][ESS] one
XX:XX:XX:XX:XX:02 2427 -38 [ESS] \x00\x00\x00\x00\x00\x00\x00
bssid / frequency / signal level / flags / ssid
02:00:00:00:01:01 2437 10 [WPA2-PSK-CCMP][ESS] two
02:00:00:00:00:01 2437 10 [WPA2-PSK-CCMP][ESS] three
XX:XX:XX:XX:XX:01 2437 10 [WPA2-PSK-CCMP][WPS][ESS] one
XX:XX:XX:XX:XX:02 2427 -39 [ESS] \x00\x00\x00\x00\x00\x00\x00
bssid / frequency / signal level / flags / ssid
02:00:00:00:01:01 2437 10 [WPA2-PSK-CCMP][ESS] two
02:00:00:00:00:01 2437 -40 [WPA2-PSK-CCMP][ESS] three
XX:XX:XX:XX:XX:01 2437 10 [WPA2-PSK-CCMP][WPS][ESS] one
XX:XX:XX:XX:XX:02 2427 -39 [ESS] \x00\x00\x00\x00\x00\x00\x00
bssid / frequency / signal level / flags / ssid
02:00:00:00:01:01 2437 10 [WPA2-PSK-CCMP][ESS] two
02:00:00:00:00:01 2437 10 [WPA2-PSK-CCMP][ESS] three
XX:XX:XX:XX:XX:01 2437 -42 [WPA2-PSK-CCMP][WPS][ESS] one
XX:XX:XX:XX:XX:02 2427 -41 [ESS] \x00\x00\x00\x00\x00\x00\x00
bssid / frequency / signal level / flags / ssid
02:00:00:00:01:01 2437 10 [WPA2-PSK-CCMP][ESS] two
02:00:00:00:00:01 2437 10 [WPA2-PSK-CCMP][ESS] three
XX:XX:XX:XX:XX:01 2437 10 [WPA2-PSK-CCMP][WPS][ESS] one
XX:XX:XX:XX:XX:02 2427 -41 [ESS] \x00\x00\x00\x00\x00\x00\x00
有没有办法将这些信号电平转换为可以呈现给用户的一致比例?
另外,如果用户使用不同的 wifi 适配器/驱动程序,信号电平是否会采用我需要担心的不同格式?
答案1
我相信信号电平在分贝(dBm)。
摘抄
分贝(有时分贝毫瓦) 是相对于一毫瓦 (mW) 的测量功率的功率比的缩写,以分贝 (dB) 为单位。它在无线电、微波和光纤网络中用作绝对功率的便捷测量,因为它能够以简短的形式表达非常大和非常小的值。比较 dBW,以一瓦 (1000 mW) 为参考。
由于它以瓦特为参考,因此它是一个绝对单位,在测量绝对功率时使用。相比之下,分贝(D b) 是无量纲单位,用于量化两个值之间的比率,例如信噪比。
信号的绝对功率以瓦特为单位测量。分贝(D b)是相对的,它们只能告诉您现在和上次读数之间的差异。另请注意,它是对数刻度。这米在分贝告诉我们我们的标度是相对于 1 毫瓦的功率而言的。 0 dBm = 1 毫瓦。
摘抄
您看到负值的原因是您在对数刻度上表示小而正的数字。在对数中,指示的值代表指数...例如,在 log 10 标度下,值 -2 代表 10 的 -2 次方,等于 0.01。同样,负 dBm 意味着您在功率计算中应用负指数; 0 dBm 等于 1 mW 功率,因此 -10 dBm 等于 0.1 mW,-20 dBm 等于 0.01 mW,依此类推。在某些计算中,将弱信号描述为 -100 dBm 比 0.0000000001 mW 更容易,也更有用。
来源:http://www.tomshardware.com/forum/9782-43-read-signal-strength#8171161
就如何显示信号电平而言,它只是一条数值线,我倾向于显示该值标准化为 0-100 的某个范围。请记住,这些值是这样的,因为它是对数的:
-99 -98 -97 ... -2 -1 0 +1 +2 +3 ...
Just like anything else involving such a scale, -1 is greater (louder) than -99.
来源:http://www.tomshardware.com/forum/9782-43-read-signal-strength#8241725
编辑#1
OP 的后续问题。
1 - 我不知道负数的比例,但我很确定它不是 -100 到 0,而且我读到的每个网站都说比例不同(例如 -50 到 -100、-30 到 -80等)所以我需要知道这种情况下的正确比例,以及它是否在驱动程序之间发生变化。
负数是对数刻度。它们是无单位的。数字不限于-100-0,它们是负数到正数。他们使用对数刻度的原因是为了减少数字,这样它就不会从一个时刻到下一个时刻发生巨大的变化。它所代表的数字可能会波动很大,并且它们可能具有的值存在数量级差异,因此使用对数。
使用 dBm 意味着这些值基于 1 毫瓦。这就是刻度上的 0 值
2 - 我需要知道为什么数字有时是正数(到目前为止我只看到+10)...因为如果以dBm为单位测量,正数对我来说没有意义(这让我认为这实际上是一个错误)。
这绝对不是一个错误。由于对数,这些值可以是负值到正值。这就像将“1/10”数字表示为“1*10^-1”类型的情况一样。注意到第二种形式中的“-1”了吗?
请参阅以下资源,它将帮助您了解如何执行计算,这将引导您了解这些值的情况。
- 看看这个论坛,信号强度 - dBm 计算?。如果您仍然感到困惑,请告诉我,如果您感到困惑,我可以帮助您进行数学和计算。
- 此 PDF 显示了如何进行计算,标题为:将信号强度百分比转换为 dBm 值。