3

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

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

我可以使用什么函数或 API 来获取这些信息?

4

2 回答 2

2

这在 libpcap 中非常可行,监控无线局域网中的原始数据包,包括包含 RSSI 的 802.11 标头以及源 MAC 地址。有关解码底层数据包结构的一些提示和技巧,请参阅此问题

最简单的做法是侦听来自相邻设备的数据包,以便您可以读取它们的 RSSI。来自 wlan 设备的原始流量往往非常嘈杂——您必须仅针对您感兴趣的设备对其进行过滤。

这些信息只能通过自己阅读才能获得,但是,没有什么可以为您收集数据;如果你的网络上有一个安静的设备,你必须想办法让它说话,这样你就可以从中读取 RSSI。

于 2013-11-03T23:22:21.570 回答
1

编辑:第一次没有注意到临时部分。对于临时部分,我真的不知道。

对于它的价值和基础设施连接:

如果你有 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);
于 2015-02-05T15:08:29.883 回答