[原創]Linux 802.11n CSI tool安裝教程(親測可用)

Linux 802.11n CSI tool安裝教程

前言

網上關於Intel5300 CSI tool的教程繁多,實際有效的可以說極少,各種疏漏錯誤。裝的時候被坑無數次,終於調通。其實裝這個工具並不太難,但是很多人把它弄得極其複雜,所以寫這篇博客來幫助和我有一樣困擾的人。我基本沿用的是官方文檔舊版本的安裝方案,針對其冗雜之處做了大量改進。

舊版安裝教程:

http://dhalperi.github.io/linux-80211n-csitool/old_installation.html

若需轉載請註明出處:

https://blog.csdn.net/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.net/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.com/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.com/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.net/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.com/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收到的數據其實是有不少問題的。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章