获得相邻设备的接收信号强度

时间:2013-11-02 13:00:24

标签: c linux wireless

我在内核3.12.rc5上的Debian 7上使用AR9271芯片组usb WiFi设备。我使用ath9k_htcnl80211个驱动程序。

我通过wpa_supplicant 2.0创建了一个ad-hoc WLAN,我希望在C程序中获得相邻设备的接收信号强度。

我可以使用哪种功能或API来获取该信息?

2 个答案:

答案 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);