无线感知研究入门:手把手教你用CSI Tool搭建双机Monitor模式测试环境
无线感知研究实战:双机CSI数据采集环境搭建全指南
在无线感知研究领域,获取精确的信道状态信息(CSI)是行为识别、室内定位等应用的基础。本文将手把手教你搭建基于Intel 5300网卡的双机测试平台,从硬件准备到数据采集,覆盖完整工作流程。
1. 实验环境准备
搭建CSI采集环境需要两台配备Intel 5300无线网卡的计算机,推荐使用ThinkPad X200/X201或Dell Latitude E6400等兼容性较好的机型。操作系统选择Ubuntu 14.04 LTS,这是与CSI Tool兼容性最好的Linux发行版。
硬件检查清单:
- 确认两台电脑均配备Intel 5300网卡(命令:
lspci | grep -i wireless) - 准备千兆以太网交叉线或通过路由器连接两台机器
- 确保电源稳定,建议使用有线网络连接避免干扰
注意:实验环境应尽量远离其他WiFi信号源,2.4GHz频段的微波炉、蓝牙设备等都可能造成干扰。
2. 系统与驱动配置
2.1 Ubuntu系统安装
下载Ubuntu 14.04.4 LTS镜像并制作启动盘:
# 使用dd命令制作启动盘(假设U盘设备为/dev/sdb) sudo dd if=ubuntu-14.04.4-desktop-amd64.iso of=/dev/sdb bs=4M status=progress安装完成后,首先更新软件源并安装必要工具:
sudo apt-get update sudo apt-get install -y git build-essential linux-headers-$(uname -r)2.2 CSI Tool内核编译
CSI Tool需要特定的内核版本支持,以下是编译步骤:
下载定制内核源码:
wget https://github.com/dhalperi/linux-80211n-csitool/archive/master.zip unzip master.zip cd linux-80211n-csitool-master配置并编译内核:
make oldconfig make -j$(nproc) sudo make modules_install install更新引导配置:
sudo update-initramfs -c -k $(make kernelrelease) sudo update-grub
3. 无线网卡模式配置
3.1 Monitor模式设置
双机通信需要将发送端配置为Inject模式,接收端为Monitor模式。
发送端配置:
sudo ifconfig wlan0 down sudo iwconfig wlan0 mode monitor sudo ifconfig wlan0 up sudo iwconfig wlan0 channel 6接收端配置:
sudo ifconfig wlan0 down sudo iw dev wlan0 interface add mon0 type monitor sudo ifconfig mon0 up sudo iw dev mon0 set channel 6 HT20关键参数说明:HT20表示20MHz信道带宽,对于CSI采集建议使用HT40(40MHz)以获得更多子载波信息。
3.2 参数优化配置
调整发射功率和速率参数可显著改善数据质量:
# 设置发射功率(单位dBm) sudo iwconfig wlan0 txpower 15 # 配置MIMO参数(示例为2x2 MIMO) echo 0x4101 | sudo tee /sys/kernel/debug/ieee80211/phy0/iwlwifi/iwldvm/debug/monitor_tx_rate4. 数据采集与验证
4.1 发送端脚本配置
创建发送脚本send_packets.sh:
#!/bin/bash CHANNEL=${1:-6} # 默认信道6 BW=${2:-HT40} # 默认带宽HT40 sudo ./setup_inject.sh $CHANNEL $BW sudo ./random_packets 1000 100 1 1004.2 接收端数据采集
接收端使用以下命令开始记录CSI数据:
sudo ./log_to_file csi_data.dat --bandwidth=HT40 --channel=6数据格式解析: CSI数据通常包含以下字段:
- 时间戳(微秒精度)
- 发射/接收MAC地址
- RSSI值
- 30个子载波的幅度和相位信息
4.3 数据质量检查
使用Python简单分析采集的数据:
import numpy as np data = np.fromfile('csi_data.dat', dtype=np.float32) print(f"采集到{len(data)//56}个CSI样本") # 每个样本56个float值5. 常见问题排查
问题1:收不到任何数据
- 检查两台机器是否在同一信道
- 确认防火墙已关闭:
sudo ufw disable - 验证网卡驱动是否加载:
lsmod | grep iwlwifi
问题2:数据包丢失严重
- 尝试降低发送速率:调整
random_packets的间隔参数 - 检查环境干扰:使用
sudo iwlist wlan0 scan查看信道占用情况 - 缩短设备间距,确保视距传输
问题3:CSI数值异常
- 重新校准天线位置
- 检查网卡固件版本:
sudo dmesg | grep iwlwifi - 尝试更换信道避开干扰
6. 高级配置技巧
对于需要高精度时间同步的实验,可以考虑以下方案:
PTP精密时间协议:
sudo apt-get install ptpd sudo ptpd -i eth0 -M硬件同步: 通过GPIO接口连接两台机器的触发引脚,使用外部信号同步采集。
MIMO高级配置: 对于3x3 MIMO系统,需要修改发射参数:
echo 0x1c111 | sudo tee /sys/kernel/debug/ieee80211/phy0/iwlwifi/iwldvm/debug/monitor_tx_rate
实际项目中,我们发现信道6和11在2.4GHz频段通常干扰较少,而HT40模式虽然提供了更多子载波,但对环境要求更高。建议初次实验从HT20模式开始,稳定后再尝试HT40配置。
