admin管理员组文章数量:1609198
Linux 802.11n CSI tool安装教程
前言
网上关于Intel5300 CSI tool的教程繁多,实际有效的可以说极少,各种疏漏错误。装的时候被坑无数次,终于调通。其实装这个工具并不太难,但是很多人把它弄得极其复杂,所以写这篇博客来帮助和我有一样困扰的人。我基本沿用的是官方文档旧版本的安装方案,针对其冗杂之处做了大量改进。
旧版安装教程:
http://dhalperi.github.io/linux-80211n-csitool/old_installation.html
若需转载请注明出处:
https://blog.csdn/u014645508/article/details/81359409
特别提醒:使用虚拟机安装csi tool是收不到数的!
安装Ubuntu及换源
1.首先安装Ubuntu 12.04 LTS。
32位下载地址
64位下载地址(页面中第一个链接)
建议使用64位,因为后续处理数据用的matlab,其32位版本不好找。
2.换源。这是为了切换到国内的源,加速下载的速度。可以用命令行操作打开source.list换源,但是容易出现问题。我建议采用在图形界面换源的方案:打开Ubuntu Software Center,在左上角Edit栏里打开Software Sources,在Ubuntu Software 下的Download from里选择 Other... ,选择China中的源,我这里选择清华源。
3. ctrl+alt+T新建终端,执行
sudo apt-get update
安装依赖
4 继续执行
sudo apt-get -y install git-core kernel-package fakeroot build-essential ncurses-dev
这一步一般不会有问题,如果出错考虑换源有问题,或采用博主Tdbtx_j的补救方案。
5.继续执行
sudo apt-get -y install libnl-dev libssl-dev 这一步一般不会有问题
6.继续执行
sudo apt-get -y install iw 这一步一般不会有问题
下载并编译内核
7.下载 intel-5300-csi-github-master.tar.gz
下载地址:https://download.csdn/download/u014645508/10579514
原教程在这一步是git clone操作,会克隆一个庞大的内核csitool,极为耗时,其实并不需要。这里下载的intel-5300-csi-github-master.tar.gz是一个精简版的内核,只有十分之一大小,但收数功能是完全相同的。
8.将上一步下载的压缩包利用U盘拷贝到Ubuntu系统Home目录下,准备在Ubuntu上解压。解压命令:
tar -xvf intel-5300-csi-github-master.tar.gz
可能遇到的问题:Ubuntu报错unable mounting ...exfat,这是由于Ubuntu无法识别U盘格式,
解决方案:执行 sudo apt-get install exfat-fuse 即可识别U盘内容
9.切换至解压后的文件夹下:
cd intel-5300-csi-github
10 执行命令 make oldconfig
一路按回车即可,大概耗时半分钟。
11.执行命令 make menuconfig
会弹出一个窗口,什么也不需要做,Save并Exit即可,这一步主要作用是生成一个 .config文件。
12. make -j3
整个流程中最为耗时的一步,我的机器大约需要运行半小时。3这个参数可以理解为编译的速度,机器性能比较优良的话可以使用 make -j5。
13.sudo make install modules_install
安装相关模块,耗时十五分钟左右。这一步执行以后刚开始可能会弹出couldn‘t load 等字样,这是因为还没有执行14步,加载不出是正常的。
14.执行
sudo make install
把13步遗留的问题补上。然后再执行一次
sudo make install modules_install
依旧耗时15分钟,这两步也许可以优化,我没有深究。
15. 执行
sudo mkinitramfs -o /boot/initrd.img-`cat include/config/kernel.release` `cat include/config/kernel.release`
16.我理解这一步作用是安装与后续编译有关的文件
make headers_install
17. 执行
sudo mkdir /usr/src/linux-headers-`cat include/config/kernel.release`
18.
sudo cp -rf usr/include /usr/src/linux-headers-`cat include/config/kernel.release`/include
17、18两步是操作和移动release的内核
至此,内核编译完成,需要reboot系统。
这里可能会遇到一个问题:内核编译后不显示新添加的启动项选项,可按照如下方式使之显示出来。
cd /etc/default
sudo gedit grub
注释下面一行
#GRUB_HIDDEN_TIMEOUT=0
然后保存。
19.更新grub
sudo update-grub
20. 重启计算机,进入新的内核,我这里是进入4.2.0的内核。
以后每次都进该版本内核,否则收不到数。
替换固件
替换固件部分,官方教程让人有些晕。本质就是将iwlwifi-5000-2.ucode.sigcomm2010 这个文件复制到系统的固件目录下,让其发挥作用。按如下方法执行即可:
21.执行
git clone git://github/dhalperi/linux-80211n-csitool-supplementary.git
22.执行
for file in /lib/firmware/iwlwifi-5000-*.ucode; do sudo mv $file $file.orig; done
23.
sudo cp linux-80211n-csitool-supplementary/firmware/iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/
24.
sudo ln -s iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/iwlwifi-5000-2.ucode
替换固件工作完成。
编译收数文件
25.切换至netlink目录,准备编译
cd ~/linux-80211n-csitool-supplementary/netlink
26. 执行
make
这一步是编译生成log_to_file等文件。log_to_file可以实现收数功能。如果这一步报错可能是前面make_headers步骤出了错。我们有需要的话可以自行修改log_to_file.c文件,但之后需要在该目录下重新编译,即执行
make clean
make
改驱动和收数环节
官方教程中使用hostapd收数,每次收数还要执行一大串复杂指令,例如将一个connector_log的参数置1,繁琐。
我摒弃了官方教程中直接使用hostapd的方案,同时修改了驱动,这样就一劳永逸了。如果不修改驱动connector_log值的话,可能会导致无法收数,每次都要人为置1,麻烦。强烈建议修改。PS:修改驱动这一步是可选的。
2018.10.16日补充:后来经过实验,调通了官方的hostapd收数方案,但是其写的过于含糊,这里也不再赘述流程了。
修改驱动部分:
思路:安装Sublime text,利用其全局搜索功能检索connector_log.再利用gedit修改其值。
1)在Sublime Text官网下载linux版本,网址:https://www.sublimetext/3
根据操作系统位数选择对应的版本。
2)下载的文件在Downloads目录下,使用 cd Downloads命令
3)之后解压缩 tar -xvf sublime_text_3_build_3176_x32.tar.bz2 (按Tab补全即可)
4)打开解压缩下的Sublime Text目录, 双击运行sublime_text.
5)快捷键ctrl+shift+f打开其搜索功能。
find:connector_log
Where:在省略号中选择Add folder, 之后选择/home/csi/intel-5300-csi-github(即将你的解压出的intel-5300-csi-github文件夹作为folder,这里的csi替换为你的计算机名称)
搜索结果中,可以看到/home/csi/intel-5300-csi-github/drivers/net/wireless/iwlwifi/dvm/main.c 中1045行:
priv->connector_log=iwlwifi_mod_params.connector_log;
这是我们要改的地方。
sudo gedit /home/csi/intel-5300-csi-github/drivers/net/wireless/iwlwifi/dvm/main.c
使用搜索功能搜索connector_log,将该句右侧置为1,即
priv->connector_log=1;
保存。
6)修改之后还需要重新install,那么我们执行cd intel-5300-csi-github
然后依次执行
sudo make -j3
sudo make install modules_install
sudo make install
sudo update-grub
修改驱动到此大功告成
收数方案(AP模式)
我将安装好的电脑作为client,连接一台没有密码的路由器(有密码的是连不上的)。还有方案是利用create ap生成软AP的方法,在github上有。以后每次收数都执行27、28、29、30四步。
(如果修改过了驱动就跳过27、28两步)
27. 执行
sudo rmmod iwldvm iwlwifl mac80211 cfg80211
这一步如果报错 ...is in use by ... ,说明想要卸载的模块在被其他模块使用。例如
cfg80211 is in use by ath9k 那我们需要使用sudo rmmod 命令先卸载 ath9k。
官方教程使用的是modprobe命令,它报错的话只会告诉你in use,但不会告诉你依赖关系,很头疼。可使用lsmod | grep 模块名命令补救。
28.执行
sudo modprobe iwlwifi connector_log=0x1
29. 连接上路由器wifi后,我们可以查看其connection information,在Default Route栏获取路由器的IP地址。假设为192.168.1.1。使用ctrl+alt+T新建另一个终端,并执行指令
ping 192.168.1.1 -i 0.5(0.5为发包间隔,使用sudo权限可以获取更短的发包间隔)
我们的电脑会不停地ping AP,这时就可以测CSI了。
30. 在原终端打开log_to_file收数:
cd /home/csi/linux-supplementary/netlink(这里的csi是你的计算机名称)
sudo ./log_to_file test.dat
可以看到输出了 wrote 393 bytes
received 393 bytes:id:26 val:1 seq:10 clen:393等字样,收数成功!可以打开netlink目录查看收到的dat文件。
PS:
1.可以将第30步这两行命令保存在.sh脚本文件里,以后每次运行脚本文件即可。
2. 下面版本的log_to_file,以时间戳命名了csi的dat文件,同时优化了文件的读写操作。有需要可以下载。下载后覆盖/home/csi/linux-supplementary/netlink的log_to_file,按第26步重新make即可。
下载地址:
https://download.csdn/download/u014645508/10580332
-------------------------------------------------------------------------------------------------------------------
补充一下利用create_ap收数的方案:
利用create_ap收数
环境要求:除了我们刚装好的电脑A作为client之外,我们需要另一台电脑B来开软AP,该电脑需装有可开启AP功能及支持80211n的网卡,5300网卡貌似不行,因为理论上它已经被阉割了开启AP的功能。我们可以选择Atheros系列的网卡(2018.10.16 更新:此处有误,5300可以通过官方hostapd方式开启AP,那么create_ap方式理论上也可以,可能需要调整设置)。我们进入Atheros普通内核即可,如果进入Atheros编译过能收csi的内核是不行的!编译过的内核已经关闭了not-sounding功能。当我们的5300 网卡ping电脑B时,会检测到not-sounding功能关闭,会停止收csi,导致的结果是收到的csi文件无法在matlab上解析。这就是不能用特殊内核的原因。
电脑B上执行如下命令:
1)git clone https://github/oblique/create_ap
2)cd create_ap
3)make install
4)pacman -S create_ap
如果没有装pacman则 使用命令 sudo apt-get install pacman
5)sudo apt-get install hostapd
6)创建一个无密码且能上网的ap:
格式如下:sudo create_ap --ieee80211n wlan0 eth0 AP_name
其中wlan0、eth0需要运行ifconfig命令查看具体名称。AP_name为AP热点的名字。一个示例如下:
sudo create_ap --ieee80211n wlp2s0 enp0s25 csitest
(创建了一个名为csitest的AP)
也可以创建无密码且不能上网的ap,
格式:sudo create_ap -n --ieee80211n wlan0 AP_name
例如:sudo create_ap -n --ieee80211n wlp2s0 csitest
这两种方式都不影响收csi数据。
附:创建一个有密码且能上网的ap:
create_ap wlan0 eth0 MyAccessPoint MyPassPhrase
创建一个有密码且不能上网的ap:
create_ap -n wlan0 MyAccessPoint MyPassPhrase
这样AP就建立好了,我们继续按教程27-30步执行即可(修改过驱动则跳过27、28两步),就可以顺利收数和解析了。
最后还是要说一句,Atheros大法好!5300收到的数据其实是有不少问题的。。
版权声明:本文标题:[原创]Linux 802.11n CSI tool安装教程(亲测可用) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dongtai/1725171009a1011021.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论