Linux下安装配置FTM环境
准备工作
-安装系统
由于内核版本要求3.19.0-61-lowlatency,故系统自带的内核版本要低于该版本才行,这里选择Ubuntu 14.04.3
单系统会方便些,双系统可能会引起各种各样的奇葩问题,而且出现各种无法修复的bug后可能需要重装ubuntu系统,故这里推荐使用单ubuntu系统
使用u盘制作系统启动盘,通过ultraiso工具完成,具体过程不再赘述,详见如下链接
(https://jingyan.baidu.com/article/154b46311befea28ca8f41ae.html)
重启后快速按下DEL或F2键,选择UEFI模式的u盘启动;启动前注意要关闭BIOS中的Secure Boot,方法请自行百度
安装过程非常简单,注意不要选更新,直接安装即可(如果选择双系统,安装的时候需要选择some thing else手动分区)
系统安装大概需要10分钟左右,完成之后点击重启
-网络配置
刚刚安装好的14.04.3系统是不支持Intel AC8260网卡的,此时wifi应该处于不可用状态,暂时使用网线连接
实验室电脑需要配置ipv4信息,ubuntu系统当然也要配置
System settings->Network->Wired->options...->IPv4 Settings
Method选择Manual,Addresses、DNS Servers、Search Domains依次填写,点击保存
注意一定要点击右上角的双箭头,点击Wired connection 1重新连接,信息才会更新
-升级内核
文件下载地址
直接点击安装即可,完成之后执行
sudo reboot
再查看内核版本发现版本号已经改变
uname -r
-更新软件源
sudo apt-get update
sudo apt-get install gcc make linux-headers-$(uname -r) git-core
backport-iwlwifi安装
使用LinuxCore30版本,经测试一些内核编译该工具会报错,目前尝试成功的内核版本有3.19.0-61-lowlatency、4.4.0-21-generic(Ubuntu 16.04LTS原生内核版本)
iwlwifi为基于Linux系统的开源网卡驱动,backport-iwlwifi为iwlwifi的补丁;Intel AC8260网卡硬件层面虽支持FTM,但驱动层面仍未开放该功能。通过编译安装backport-iwlwifi实现iwlwifi驱动对FTM协议的支持
git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git -b release/LinuxCore30
cd backport-iwlwifi
make defconfig-iwlwifi-public
sed -i 's/CPTCFG_IWLMVM_VENDOR_CMDS=y/# CPTCFG_IWLMVM_VENDOR_CMDS is not set/' .config
make -j4
接下来需要在原有的文件上打补丁(也可通过手动修改的方式,具体方法参考手动修改方法)
首先需要修改文件夹名称:backport-iwlwifi修改为LinuxCore30
补丁文件下载地址
补丁文件放在LinuxCore30同目录下,然后执行命令
patch -s -p0 < patch_enableFTMResponder.txt
最后完成安装sudo make install
Firmware安装
使用Intel Dual Band Wireless-AC 8260无线网卡的Version 31版本
wget https://git.kernel.org/cgit/linux/kernel/git/iwlwifi/linux-firmware.git/plain/iwlwifi-8000C-31.ucode
sudo cp iwlwifi-8000C-31.ucode /lib/firmware/
modprobe iwlwifi
安装完成之后就会发现Wi-Fi变得可用了
支持FTM的无线AP配置
使用hostapd v2.6,在官网下载hostapd v2.6压缩包并解压
wget http://w1.fi/releases/hostapd-2.6.tar.gz
tar xzvf hostapd-2.6.tar.gz
cd hostapd-2.6/hostapd
修改配置文件使其支持nl80211驱动(Ubuntu 14.04.3系统自带的vi工具有些问题,这里需要重新安装一下)
sudo apt-get remove vim-common
sudo apt-get install vim
cp defconfig .config
vim .config
将以下三项配置前面的 # 去掉(去掉注释)
#CONFIG_DRIVER_NL80211=y
#CONFIG_IEEE80211N=y
#CONFIG_IEEE80211AC=y
编译前需要安装一些东西,具体命令如下:
sudo apt install libssl-dev libnl-3-dev libnl-genl-3-dev
sudo apt install libnl-dev
安装好之后编译即可:
make
修改hostapd-2.6/hostapd/hostapd.conf的配置文件,将#ftm_responder=0
前面的 # 去掉
网卡的名称如果不是wlan0的话,需要将interface项修改为对应的名称
在hostapd-2.6/hostapd目录下执行如下命令开启AP:
sudo ./hostapd ./hostapd.conf
不出意外的话,执行该命令会报错:could not configure driver mode...,解决方法如下:
sudo nmcli nm wifi off
sudo rfkill unblock wlan
sudo ifconfig wlan0 192.168.1.1/24 up(这里是配置IP地址和掩码,具体意思不太理解)
sudo ./hostapd ./hostapd.conf
配置FTM Station
安装iw工具(版本号为4.14)
git clone https://github.com/HappyZ/iw_intel8260_localization.git -b master
cd iw_intel8260_localization
make
sudo make install
开启iw ftm扫描
cd iw_intel8260_localization
echo bb:bb:bb:bb:bb:bb bw=20 cf=2412 asap > conf
./iw wlan0 measurement ftm_request conf
wifi scan with ranging
两个脚本:wifiScanWithRanging 和 processScan
./wifiScanWithRanging --spb=3 --ftmSupport=0 --scanPeriod=5
参考资料:http://www.winlab.rutgers.edu/~gruteser/projects/ftm/Setups.htm
https://github.com/HappyZ/iw_intel8260_localization/wiki/Enable-802.11mc-FTM-on-Intel-8260