Wlan

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

  • March 30, 2018

如何從命令行讀出每個無線電通道的 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 掃描。這是一個範例測量: FFT 結果

我將嘗試調整此實用程序,以便定期(例如每 10 秒左右一次)將掃描結果儲存到文件中。

正如我上面所寫,以下實用程序可以滿足要求:https ://github.com/simonwunderlich/FFT_eval

這個使用筆記型電腦現有的 WLAN 卡(假設卡具有特定的晶片組)在 WLAN 頻段上進行正確的 FFT 掃描。

該實用程序可以設置為在將腳本添加到 crontab 時按一分鐘間隔進行測量,或者如果解析度不需要如此準確,則可以通過在腳本中使用“睡眠”命令來進行測量。

為了測量天線接收到的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-power-list script。我正在使用這個腳本來為我的家庭路由器找到噪音較小的頻道。

引用自:https://unix.stackexchange.com/questions/211231