Atheros-CSI-Tool介绍与使用

基本介绍

Atheros-CSI-Tool是基于802.11n协议基础上,测量信道状态信息(CSI)的开源工具包. 它是由Yaxiong Xie开发和维护, 被众多wifi感知领域的研究工作所使用. 其具体详细的介绍可见Atheros CSI Tool. 由于该工具以及很久没有人维护, 因此在使用过程中会遇到一些问题. 此处, 我主要介绍在搭建和使用该工具时的经验与问题.

硬件设备

最为简略的配置为两台路由器。但是由于路由器的性能有限,此次并不推荐此种方案。相比之间,一台可以由可以接Qualcomm Atheros系列网卡的PC和一款基于Qualcomm Atheros的路由器是更为推荐的选择。当然,也可以使用两台PC。

此处,我个人的配置如下:

  • 一台带有AR9580网卡的i5-7500的PC, 并且提前装好内核为4.1.10的ubuntu14.04系统. 由于4.1.10不太常见, 需要自行下载和编译, 此处不多介绍.
  • 一台基于Qualcomm Atheros的路由器, 我选择的是TP-link WDR7500 V3. 由于需要后期刷openwrt, 建议提前刷好breed控制台.

PC初步设置

基本的流程可以参考Install Ubuntu version of Atheros CSI tool.
此处主要会遇到的问题如下。由于ubuntu14.04默认的内核版本高于4.1.10, 因而,在降低内核版本后, 部分包会出现版本兼容问题, 从而导致无法安装, 如libnl-dev. 此处推荐使用aptitude安装工具. 首先通过如下命令行安装该工具:

$ sudo apt-get install aptitude

再用该工具安装出现版本兼容问题的包:

$ sudo aptitude install libnl-dev

此时首先给出第一个解决方案, 然而此方案往往是不改动, 需要选择n. 接着给出的方案会降低某些包的版本, 只需要选择y, 即可安装当前需要的包.

PC的初步设置到内核编译为4.1.10+即可.

路由器的设置

路由器需要刷特定的openwrt固件, 可以直接从OpenWRT_firmware下载. 但是这里的sendData(发送数据)只能是每隔$50 \mu s$发送一个包. 为了实现能够自己控制发包的间隔最好自己编译想要的openwrt固件. 然后再进行交叉编译sendData.

openwrt的编译方法可以流程可以参考Install OpenWRT version of Atheros CSI tool. 其中会出现和PC初步设置中类似的问题, 可以参照如上方法解决.

除此以外, 在执行如下命令时,可能出现无法访问的问题.

$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

针对该问题, 推荐走代理解决. Ubuntu下终端走代理的方法可以参照Linux 让终端走代理的几种方法. 推荐使用方法一:在终端中直接运行:

$ export http_proxy=http://proxyAddress:port

其中proxyAddressport由SSR具体的设置决定.

完成流程中的步骤后, 可以clone sendData的源文件.

$ git clone https://github.com/xieyaxiongfly/Atheros_CSI_tool_OpenWRT_UserSpaceApp_src

通过修改sendData.c第170行的usleep(50)中的数字可以控制发送包的频率. 接着, 就是编译sendData. 此时可能会报错, 这是因为交叉编译需要提前设置环境变量. 该问题可以通过修改Makefile为如下内容解决.

CC=/~/Atheros\_CSI\_tool\_OpenWRT\_src/staging\_dir/toolchain-mips\_24kc\_gcc-7.3.0\_musl/bin/mips-openwrt-linux-musl-gcc 
target=sendData
${target}: sendData.c
    ${CC} -o $@ sendData.c
clean:
    rm -f ${target}

其中CC的位置时需要根据自己文件位置进行修改.

最终将编译产生的文件send_Data利用scp命令传输到路由器即可.

连接配置

绘图1.png

如上图所示, 利用Hostapd将PC作为AP, 并且让路由器接入此网络, 具体流程可见Set up AP on Ubuntu. 同时, PC的有线与路由器相连, 用于控制路由器的发送数据.

使用方法

PC端clone如下文件:

git clone https://github.com/xieyaxiongfly/Atheros-CSI-Tool-UserSpace-APP.git

进入recvCSI文件夹编译产生recv_csi, 如下方式运行recv_csi, 进入接收模式.

$ sudo ./recv_csi filename

同时PC通过如下方式利用有线连接到路由器, 进行控制.

$ ssh [email protected]

在路由器上以如下命令的方式发送数据包.

$ ./sendData wlan0 B4:21:8A:F0:47:55 10

其中wlan0为传输端口, B4:21:8A:F0:47:55为目标(即PC)的MAC地址, 10为发送包的数目.

PC端会接收完成后, 会生成对应的文件. 此时可以用Atheros-CSI-Tool-UserSpace-APP/matlab中的read_log_file.m进行后期的处理

主要参考资料

[1]. https://github.com/xieyaxiong...
[2]. https://wands.sg/research/wif...
[3]. https://wands.sg/research/wif...
[4]. https://wands.sg/research/wif...

你可能感兴趣的:(无线路由器,wifi)