c - Linux 接入点上关联设备的接收信号强度

标签 c wifi access-point

我正在编写一个 C 程序来管理无线网络的某些方面(接入点 + 客户端设备) 程序的一部分在设备上运行,另一部分在 AP 上运行。 AP 是一个简单的 Linux 站(Cubietruck,后来与 Intel Celeron 主板交换;使用 hostapd 和 dnsmasq 设置接入点) 一些功能已经实现。我已经对 cfg80211/nl80211 做了很多工作,对 Wext 做了一些工作,还有一些基于 BSD 套接字的通信例程。

但是现在问题来了。在接入点上运行的 C 程序中,我需要关联设备的接收信号强度。 在设备上一切正常。使用 nl80211,我几乎可以获得有关连接的所有信息。但是在接入点上我不知道如何获取 RSS。我尝试了一些具有某些属性的 nl80211 请求,但无法使其正常工作。 当然,在设备上这很容易,因为它们只有一个连接。但是在 AP 上,我曾期望有类似 nl80211 的答案,带有链接列表或嵌套属性,但没有。我检查了某些请求的答案包含的属性,消息中没有任何可用的内容。

有人知道怎么解决吗?获取 WLAN AP 上关联设备的接收信号强度应该不是什么大问题。 如果 nl80211 可行,那就太好了,但也欢迎使用另一种解决方案。 也许有一些 WiFi 包解析?我听说有类似 RSSI(接收信号强度指示器)的东西,但我不熟悉它。

提前致谢

最佳答案

这里有一个解决方法:从 AP 到站点/设备以及从该站点到同一 AP 的无线信道衰减同时相同。因此,如果 AP 和站点的传输功率都相同,则站点可以使用您当前的解决方案将其 RSS 报告给 AP,工作就完成了。当然,不同站点的 tx 功率可能不同,但它们是恒定的。因此,找出它们并做出相应的调整。这是一个简单的例子:

接入点发射功率 20 dBm; 站 1 tx 功率 15 dBm,RSS -37 dBm; 那么station 1到AP链路的RSS应该是-42 dBm

关于c - Linux 接入点上关联设备的接收信号强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25658444/

相关文章:

Objective-c:变量范围

在初始化期间正确关闭 Libuv 循环

iOS:当从设置中关闭位置服务时,我可以禁用带有设置按钮的默认警报弹出窗口吗

android - Android 设备是否可以通过接入点交换消息并向该 AP 请求已连接设备的列表?

android - 连接到具有相同 SSID 的最强接入点(信号最强的接入点)

java - 使用蓝牙接入点检测位置

c++ - 非 bool 值的短路

c - 链表 : strange muddle of member element during output

Android充当wifi服务器集线器?

java.net.ConnectException : failed to connect to/192. 168.253.3(端口 2468):连接失败:ECONNREFUSED(连接被拒绝)