如何在命令行中掃描 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 秒左右一次)將掃描結果儲存到文件中。
正如我上面所寫,以下實用程序可以滿足要求: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。我正在使用這個腳本來為我的家庭路由器找到噪音較小的頻道。