Atheros-CSI-Tool(Ubuntu版本安装及使用过程)[原教程来自xieyaxiong]

1. AtherosTool安装

系统要求 Ubuntu:14.04
在电脑上安装Ubuntu版本Atheros Tool工具,参考教程:https://github.com/xieyaxiongfly/Atheros_CSI_tool_OpenWRT_src/wiki/Install-Ubuntu-version-of-Atheros-CSI-tool

1.1. 准备

在下载和安装修改后的内核之前,我们需要安装一些必要的软件包。我们首先安装git以下载最新版本的Atheros-CSI-Tool。

$ sudo apt-get install git

需要一些软件包才能成功运行“ make menuconfig”

$ sudo apt-get install libncurses5-dev libncursesw5-dev 

最后,安装一些用于编译Hostapd的软件包。

$ sudo apt-get install libnl-dev libssl-dev

通过以下方式下载内核源代码:

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

1.2. 配置,编译和安装

完成后,您应该找到一个名为“ Atheros-CSI-Tool”的文件夹。输入它,我们将在文件夹“/ Atheros-CSI-Tool /”中。下一步是配置内核并生成“.config”文件。在此文件夹中运行以下命令:

$ make menuconfig

我们将使用内核提供的默认配置。接下来,编译并安装内核模块。

$ make -j16
$ make modules
$ sudo make modules_install
$ sudo make install 

请注意,“-j16”用于加速编译过程。根据您的CPU内核编号选择数字“ 16”。通常,是您的CPU内核的2倍。
最后,重新启动系统。

$ sudo reboot

我们完了!您已经实现了定制的Linux Kernel 4.1.10。运行以下命令以检查您的内核版本。
$ uname -r
如果输出为“ 4.1.10+”,则说明安装成功。

1.3. 注意

(1) “uname -r”系统返回不是4.1.10+
开机进入Ubuntu高级选项-选内核为4.1.10+的版本。(Atheros Tool是安装在内核4.1.10+上面的,其他版本内核会在采集数据时报错
(2)启用WiFi后“WiFi网络”为灰色
进入/etc/NetworkManager/NetworkManager.conf

cd /etc/NetworkManager

修改NetworkManager.conf 里面的managed=false 改成managed=true

sudo gedit NetworkManager.conf

2.收集CSI

2.1. 在Ubuntu上设置AP

通过以下方式下载源代码:

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

完成后,您应该找到一个名为“ Atheros-CSI-Tool -UserSpace-APP”的文件夹。进入Hostapd文件夹:“/ Atheros / Atheros-CSI-Tool-UserSpace-APP / hostapd-2.5 / hostapd /”。编译源代码:

$ make

如果编译过程成功,则Hostapd软件已准备就绪。接下来,我们需要配置Wi-Fi接口。使用“ ifconfig”查找您的WiFi卡的接口名称,例如“ wlan0”。然后,通过输入以下内容来编辑文件“ / etc / network / interfaces”(在这里,WiFi卡的接口名称也可能是lo或其他的):

auto wlan0
iface wlan0 inet static
address 10.10.0.1
netmask 255.255.255.0

我们还需要安装DHCP服务器来自动为WiFi客户端分配IP地址,例如ISC DHCP服务器,并且可以使用以下命令进行安装:

$ sudo apt-get install isc-dhcp-server 

将ISC-DHCP-Server的默认接口更改为WiFi卡。编辑文件“ / etc / default / isc-dhcp-serve”并设置接口:

 INTERFACES="wlan0" 

编辑DHCP服务器配置文件“ /etc/dhcp/dhcpd.conf”。

#option definitions common to all supported networks…
#option domain-name “example.org”;
#option domain-name-servers ns1.example.org, ns2.example.org;
#default-lease-time 600;
#max-lease-time 7200; 

在文件末尾,添加:

subnet 10.10.0.0 netmask 255.255.255.0 {
range 10.10.0.2 10.10.0.16;
option domain-name-servers 8.8.4.4, 208.67.222.222;
option routers 10.10.0.1;
} 

在“/ Atheros-CSI-Tool-UserSpaceAPP / hostapd-2.5 / hostapd /”中有一个名为“ start_hostapd.sh”的批处理脚本文件。运行它以启动Hostapd。

2.2. 采集准备

在“Atheros-CSI-Tool-UserSpaceAPP”中,包含了四个子文件夹:
Hostapd-2.5:作用是通过启动文件夹里面的“ start_hostapd.sh”将主机设置为AP;
matlab:解析接收到的包含CSI数据的文件;
recvCSI:通过里面的命令控制主机作为接受方接受CSI数据;
sendData:通过里面的命令控制主机作为放射方放射CSI数据。

2.2.1 编译recvCSI

参考recvCSI里面的“makefile”,编译recvCSI里面的.c文件,进入./ Atheros-CSI-Tool-UserSpaceAPP/recvCSI路径,依次进行编译:

gcc -c main.c -o main.o
gcc -c csi_fun.c -o csi_fun.o
gcc csi_fun.o main.o -o recv_csi
2.2.2 编译sendData

sendData.c应该是编译过的,如果没有,则参考makefile将其编译为send_Data。

2.3. 采集数据

选择主机A作为发射方,进入“/ Atheros-CSI-Tool-UserSpaceAPP / hostapd-2.5 / hostapd /”启动批处理文件“ start_hostapd.sh”

cd / Atheros-CSI-Tool-UserSpaceAPP / hostapd-2.5 / hostapd /
sudo bash start_hostapd.sh

效果如图
在这里插入图片描述
这里的“b4:ee:b4:b7:08:27”是发送方的mac地址,“Atheros_csi_tool”是发射端的无线网络。

接收方B连接WIFI“Atheros_csi_tool”,发送方命令窗口给出连接信息。
在这里插入图片描述
这里的“b4:ee:b4:b7:08:3c”是接收方的mac地址,后面需要使用。

接收方B进入“recvCSI”文件夹,运行接受数据命令

cd /Atheros-CSI-Tool-UserSpaceAPP / recvCSI /
sudo ./recv_csi filename.dat

在这里插入图片描述

发送方A重新打开一个命令行界面,运行命令发送数据

cd / Atheros-CSI-Tool-UserSpaceAPP / sendData /
sudo ./sendData wlan0 b4:ee:b4:b7:08:3c 100

发送命令“sudo ./sendData wlan0 b4:ee:b4:b7:08:3c 100”的字段含义为“sendData 传输端口 接收方mac地址 发包数量
在这里插入图片描述
接收方接受数据
在这里插入图片描述
数据保存位置为”/ Atheros-CSI-Tool-UserSpaceAPP / recvCSI /csiData.dat”。

2.4 注意

1.接收方报错“Failed to open the device…: No such file or directory
通过命令“uname -r”检查系统内核是否是“4.1.10+”,如果不是,通过重启切换系统内核至“4.1.10+”。
2. 发送方报错“send failed
以管理员权限运行数据发送命令

sudo ./sendData wlan0 b4:ee:b4:b7:08:3c 100

3.解析CSI

打开“Atheros_tool_matlab/read.m”,修改对应文件路径,即可获得CSI幅值数据。
注意:

1.如果是从网上下载的matlab解析CSI代码,read_log_file.m可能会报错“缺失read_csi.c”。
解决:将read_csi.c重新编译为read_csi.mexw64
安装MinGW-w64:matlab附加功能-获取附加功能-搜索“MinGW-w64”(注意:这个方法仅支持matlab2017b及以上版本)
在这里插入图片描述

选择编译语言并编译.c文件(read_csi.c会产生警告,不用管)

Mex -setup c++
Mex read_csi.c

在这里插入图片描述
2. 运行read_log_file.m,matlab发生报错,并且需要重启软件。
在这里插入图片描述
解决办法:
将从网上下载的read_log_file.m的第46行改为

endian_format = 'ieee-le';
  • 10
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 43
    评论
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值