我在内核3.12.rc5上的Debian 7上使用AR9271芯片组usb WiFi设备。我使用ath9k_htc
和nl80211
个驱动程序。
我通过wpa_supplicant 2.0
创建了一个ad-hoc WLAN,我希望在C程序中获得相邻设备的接收信号强度。
我可以使用哪种功能或API来获取该信息?
答案 0 :(得分:2)
这非常适用于libpcap,监控无线局域网的原始数据包,包括802.11标头,其中包含RSSI以及原始MAC地址。有关解码基础数据包结构的一些提示和技巧,请参阅this question。
最简单的方法是侦听来自相邻设备的数据包,以便您可以读取其RSSI。来自wlan设备的原始流量往往疯狂噪声 - 您必须仅为您感兴趣的设备过滤它。
这些信息只能通过自己阅读来获得,但是,没有什么可以为您收集数据;如果您的网络上有一个安静的设备,您将不得不找到一些方法让它说话,这样您就可以从中读取RSSI。
答案 1 :(得分:1)
编辑:第一次没有注意到临时部分.. 对于ad-hoc,我真的不知道。
对于它的价值和基础设施连接:
如果你有wpa_supplicant,你也应该有wpa_cli。
命令:
wpa_cli signal_poll
应该为您提供屏幕可擦除的输出。
您可以(也)使用wpa_ctrl_open()和wpa_ctrl_request()通过C与wpa_supplicant连接:
以下内容:
#include "wpa_ctrl.h"
<needed declarations and definitions>
ctrl = wpa_ctrl_open(path);
wpa_ctrl_request(ctrl, "SIGNAL_POLL", 11, buf, &len, NULL);