如何从命令行读取每个无线电通道的 WLAN RSSI 值?目标系统是 Ubuntu 15.04 或 Raspberry Raspbian。
我所说的 RSSI 是指在任何 WLAN 特定 L1 操作之前的原始接收功率。这与 3GPP WCDMA 中的方式几乎相同,RSSI 值表示天线接收到的原始能量。不仅仅是接收码功率,也不是信噪比。仅包含有效负载信号和任何可能的噪声的总体接收信号功率。
到目前为止我找到的唯一解决方案是wavemon:当使用参数-d启动时,它将打印出信号和噪声值,我可以轻松地grep出它们。但是是否还有其他可能性,或者是否有一些现成的实用程序可以扫描所有 WLAN 通道上的噪声?
提出这个问题的原因是我家的两个 2.4G 频段 WLAN 网络都存在一些随机但频繁的问题,导致两个网络同时使用。问题与 WLAN 基站硬件、通道号或我自己的任何硬件无关 - 所有这些都已被消除。在我的 5G 频段 WLAN 网络上看不到问题 - 这些网络在 2.4G 频段出现问题时也运行良好。
我现在怀疑我的 2.4G 频段 WLAN 网络受到了某些外部噪音的影响。我需要收集更多证据,我的计划是设置一台 Ubuntu 或 Rasberry 设备来连续扫描 2.4G WLAN 通道,并将所得的长时间信息与我的 2.4G WLAN 网络上的 ping 状态相结合。
附加信息:我发现了一个实用程序:https://github.com/simonwunderlich/FFT_eval
该卡使用笔记本电脑现有的 WLAN 卡(假设该卡具有特定芯片组)在 WLAN 频段上进行正确的 FFT 扫描。下面是一个测量示例:
我将尝试调整此实用程序,以便定期(例如每 10 秒一次左右)扫描结果存储到文件中。
答案1
正如我上面所写,以下实用程序执行所需操作:https://github.com/simonwunderlich/FFT_eval
该卡使用笔记本电脑现有的 WLAN 卡(假设该卡具有特定芯片组)在 WLAN 频段上进行正确的 FFT 扫描。
该实用程序可以设置为在将脚本添加到 crontab 时以一分钟的间隔进行测量,或者如果分辨率不需要如此准确,则可以通过在脚本中使用“睡眠”命令来进行测量。
答案2
为了测量天线接收到的wifi信号的功率,我使用命令iwlist
,它是包的一部分wireless-tools
。我在我的笔记本电脑上使用 Slackware,并且我相信该软件包在初始安装中已经可用。但我检查了我的CentOS服务器,它在CentOS上也可用。
# yum search wireless-tools
...
wireless-tools.i686 : Wireless ethernet configuration tools
然后你可以调用它(以 root 身份运行它,因为在普通用户下它不会显示所有传入信号)
# iwlist wlan0 scanning
wlan0
我的机器上无线接口的名称在哪里。为了找出您的机器的名称,请使用命令
# iwconfig
来自同一个包。为了仅查看您需要的信息,请将其运行为
# /sbin/iwlist wlan0 scanning | grep "Frequency\|level\|ESSID:\|Address:"
Cell 01 - Address: C0:4A:00:F5:9A:80
Frequency:2.422 GHz (Channel 3)
Quality=70/70 Signal level=-28 dBm
ESSID:"XXX"
Cell 02 - Address: D0:17:C1:36:B9:90
Frequency:2.437 GHz (Channel 6)
Quality=52/70 Signal level=-58 dBm
ESSID:"YYY"
现在您可以在 中看到有关输入功率的信息dBm
。在有许多路由器的地方,您将拥有同一频道的多个来源。因此,您必须在同一通道上添加路由器的电源。为此,您必须将幂从对数标度 ( dBm
) 转换为线性标度,将它们相加,然后转换回dBm
。我没有看到任何工具可以做到这一点,所以我写了wifi 电源列表脚本。我使用此脚本是为了为我的家庭路由器找到噪音较小的通道。