如何在命令行中扫描WLAN RSSI?

如何在命令行中扫描WLAN RSSI?

如何从命令行读取每个无线电通道的 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 电源列表脚本。我使用此脚本是为了为我的家庭路由器找到噪音较小的通道。

相关内容