跳转至

WIFI感知

利用WIFI信号来对人体,环境进行检测及感知是近期无线感知领域一项较为新颖的技术。在这个研究领域中,相较于信号强度等信息,通过对WIFI信号的CSI信息进行分析,能够达到更高的感知精度。

获取CSI信息

目前主流的获取WIFI CSI信息的工具有以下几种

这些工具对应的硬件分别是Intel 5300无线网卡、ESP32 Node MCU、部分高通芯片的无线网卡等。实时上CSI信息在驱动内部是早就被使用,主要是如何将信息拿出来,所以大部分工作都是解决如何从驱动中将信息拿出来,如果这部分由驱动厂商来做,将会做得很好。我们以其中的Linux 802.11n CSI Tool为例说明如何获取WIFI CSI信息:

软硬件要求

我们需要使用Intel 5300无线网卡以及装有Linux 4.15内核的操作系统(如Ubuntu 16.04.4)

我们按照https://github.com/spanev/linux-80211n-csitool的安装指南,在较新的内核(4.15)上安装CSI工具。

安装过程

  1. 安装依赖
sudo apt install build-essential linux-headers-$(uname -r) git-core
  1. 安装更高版本的编译工具链
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-8 g++-8
# 替换高版本的编译工具链
sudo rm /usr/bin/gcc
sudo rm /usr/bin/g++
sudo ln -s /usr/bin/gcc-8 /usr/bin/gcc
sudo ln -s /usr/bin/g++-8 /usr/bin/g++
  1. 编译安装修改的无线驱动
git clone https://github.com/spanev/linux-80211n-csitool.git
cd linux-80211n-csitool
CSITOOL_KERNEL_TAG=csitool-$(uname -r | cut -d . -f 1-2)
git checkout ${CSITOOL_KERNEL_TAG}
make -j `nproc` -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi modules
sudo make -C /lib/modules/$(uname -r)/build M=$(pwd)/drivers/net/wireless/intel/iwlwifi \
INSTALL_MOD_DIR=updates modules_install
sudo depmod
cd ..
  1. 替换修改后的固件
    git clone https://github.com/dhalperi/linux-80211n-csitool-supplementary.git
    for file in /lib/firmware/iwlwifi-5000-*.ucode; do sudo mv $file $file.orig; done
    sudo cp linux-80211n-csitool-supplementary/firmware/iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/
    sudo ln -s iwlwifi-5000-2.ucode.sigcomm2010 /lib/firmware/iwlwifi-5000-2.ucode
    

相关论文

  1. Smokey: Ubiquitous smoking detection with commercial WiFi infrastructures, X Zheng, J Wang, L Shangguan, Z Zhou, Y Liu, IEEE INFOCOM 2016