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

相關文章
相關標籤/搜索