Atheros-CSI-Tool介绍与使用

基本介绍

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

硬件设备

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

此处,我我的的配置以下:git

  • 一台带有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安装工具. 首先经过以下命令行安装该工具:github

$ sudo apt-get install aptitude

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

$ sudo aptitude install libnl-dev

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

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

路由器的设置

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

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 root@192.168.1.1

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

$ ./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...

相关文章
相关标签/搜索