我在內核3.12.rc5上使用Debian 7上的AR9271芯片組usb WiFi設備。我使用ath9k_htc
和nl80211
驅動程序。獲取相鄰設備的接收信號強度
我通過wpa_supplicant 2.0
創建一個ad-hoc WLAN,我想在C程序中獲得鄰近設備的接收信號強度。
我可以使用什麼函數或API來獲取該信息?
我在內核3.12.rc5上使用Debian 7上的AR9271芯片組usb WiFi設備。我使用ath9k_htc
和nl80211
驅動程序。獲取相鄰設備的接收信號強度
我通過wpa_supplicant 2.0
創建一個ad-hoc WLAN,我想在C程序中獲得鄰近設備的接收信號強度。
我可以使用什麼函數或API來獲取該信息?
編輯:沒有注意到第一次特設部分.. 對於特設,我不知道。
對於它的價值和基礎設施的連接:
如果你已經使用wpa_supplicant,你也應該有wpa_cli。
命令:
wpa_cli signal_poll
應該給你的屏幕scrapeable輸出。
可以(也)有通過C的wpa_supplicant接口,使用wpa_ctrl_open()和wpa_ctrl_request():在線路
東西:
#include "wpa_ctrl.h"
<needed declarations and definitions>
ctrl = wpa_ctrl_open(path);
wpa_ctrl_request(ctrl, "SIGNAL_POLL", 11, buf, &len, NULL);
這對於libpcap非常有用,可以監控原始數據包的無線局域網,包括802.11頭,它包含RSSI以及原始MAC地址。有關解碼底層數據包結構的提示和技巧,請參閱this question。
最簡單的做法是偵聽來自鄰近設備的數據包,以便讀取其RSSI。來自wlan設備的原始流量往往是瘋狂嘈雜 - 你必須過濾它只有你感興趣的設備。
該信息只能通過自己閱讀,但沒有什麼爲你收集數據;如果網絡上有一臺安靜的設備,你必須找出一些方法讓它通話,這樣你才能從中讀取RSSI。
我一直在研究libpcap的,你能告訴我是否需要使用LINKTYPE_IEEE802_11或LINKTYPE_IEEE802_11_RADIOTAP獲取每個設備的RSSI信息? – Angs
使用RADIOTAP標頭。 – Petesh