Wi-Fi CSI 完全指南:从信道状态信息到人体感知
作者 Wu Jun · 更新于 2026-11-02 · 约 7 分钟
Wi-Fi CSI(Channel State Information,信道状态信息)是 Wi-Fi 接收端对无线信道"此刻长什么样"的测量结果。 它比我们熟悉的 RSSI 细得多:RSSI 是一个数(信号强度),CSI 是每个子载波、每条收发链上的复数(幅度 + 相位)。
本站的全部内容来自一台 GL-MT6000(MT7986)路由器的实测:5GHz、80MHz、256 子载波、
tx 0/1 × rx 0/1/2/3, 10 分钟连续抓到 57,293 条链记录、平均 95.5 条/秒;按 bit15 组合并后是 7,609 次独立测量, 约 12.68Hz;再剔除记录规则公开的异常组后,分析率为 12.64Hz。daemon 常驻内存约 5.2MB (原始数据可核对 [1])。
一个够用的测量模型
对每个子载波和空间流,可以先用一个简化模型理解 CSI:
H[k] = Y[k] / X[k]
其中 X[k] 是接收端能够利用的已知训练信息,Y[k] 是实际收到的信号,H[k] 是估计出的信道响应。
|H[k]| 是 CSI 幅度,H[k] 的角度是 CSI 相位。人移动时会改变多条无线传播路径,于是大量 H[k]
会随时间一起变化,这就是 Wi-Fi 感知能够利用的物理信号 [2]。
这个模型也说明边界:CSI 是信道测量,不是摄像头画面。原始数据里没有房间图像、人脸或直接的人体模型。 论文可能从受控的多天线数据中推断粗略动作甚至姿态,但那仍然是从信道变化做出的推断,不是 CSI 中“看得见”的照片。
四个不能混用的数量
CSI 文章最容易把记录数、数值数、链数和时间采样数混在一起。下面这些单位必须分开:
| 本项目的数量 | 实际在数什么 | 不代表什么 |
|---|---|---|
| 256 个子载波 | 一条链内部的频域采样 | 256 个时间快照 |
8 条链(2 Tx × 4 Rx) |
与一个测量组关联的空间测量 | 8 个独立用户或 8 个房间 |
| 57,293 条链记录 | 10 分钟文件中的外层记录总数 | 57,293 次独立测量 |
| 7,609 个 bit15 组 | 把同一测量的链记录归并后的测量组 | 7,609 个固定 8 链数据包 |
| 95.5 条链记录/秒 | 载荷记录吞吐率 | 95.5 次独立快照/秒 |
| 约 12.68 个闭合组/秒 | 按 bit15 分组后的独立测量率 | 每个链数值的更新率 |
| 约 12.64 个分析组/秒 | 执行公开异常过滤(7,583 组)后的测量率 | 另一份独立数据集 |
这份 10 分钟抓包里同时存在 8 链组与 4 链组。把 57,293 条记录当成独立样本,或者直接除以 8,
都会得到错误的时间轴,甚至制造出物理信号里并不存在的频谱峰。公开解析器按 chain_info bit15 闭合测量组,
而不是假设每帧固定八条链 [3]。
CSI 和 RSSI 有什么本质区别
| 维度 | RSSI | CSI |
|---|---|---|
| 输出 | 一个标量(dBm) | 每个子载波的复数(I/Q) |
| 频率分辨率 | 无 | 有(80MHz 下 256 个子载波) |
| 空间分辨率 | 无 | 有(多天线链路) |
| 典型用途 | 链路质量、粗略距离 | 动作识别、呼吸/心率、定位、手势 |
| 受环境影响 | 强(多径一锅端) | 可解析多径,因此能看到"人动了" |
一句话:RSSI 告诉你"信号多强",CSI 告诉你"信号走的每条路都发生了什么"。
CSI 能做什么、不能做什么
已被论文与开源项目验证的方向
- 存在/占用检测(房间里有没有人)
- 动作与活动识别(走路、坐下、跌倒)
- 呼吸与心率(需要静坐、低运动、较长窗口)
- 手势识别、人数估计、粗略定位
(这些方向在领域综述里有系统梳理 [2]。)
容易翻车的地方
- 穿墙"看人"被夸大:能看到的是运动引起的信道变化,不是图像。 静止且无呼吸扰动时,信号几乎不变,算法会"失明"。
- 环境依赖:换房间、换家具、换人体姿态,模型准确率大幅下降。
- 采样率与算法匹配:呼吸/心率需要稳定的低频信号,帧率抖动会直接毁掉频谱分析。
- 多径与硬件差异:不同芯片、不同带宽拿到的 CSI 形态完全不同,模型几乎不能直接迁移。
五条主流硬件路线对比
| 路线 | 带宽/子载波 | 成本 | 覆盖范围 | 适合谁 |
|---|---|---|---|---|
| Intel 5300(CSI Tool)[4] [5] | 20MHz / 30 | 二手网卡 | 一台 PC | 复现论文(工具最近提交为 2020 年、更新停滞) |
| Atheros(Atheros CSI Tool)[6] | 40MHz / 114 | 二手网卡 | 一台 PC | 数据集复现 |
| ESP32(esp-csi / CSI Tool)[7] | 20MHz / 30–64 | ¥20 起 | 单点 | 入门、IoT、智能家居 |
| Nexmon CSI(树莓派/手机)[8] | 80MHz / 256 | ¥300 起 | 单点 | 抓包灵活、社区活跃 |
| 路由器(MT7986 + mt76 CSI) | 80MHz / 256 | 一台路由器 | 全屋覆盖 | 想长期部署、做真实场景 |
| 科研平台(PicoScenes / SDR)[9] | 任意 | ¥1 万+ | 实验台 | 高校科研 |
如果目标是"长期、真实家庭环境、不动声色的感知",路由器形态有明显优势: 它本来就 7×24 供电、放在房子中央、有多个天线,而且不用额外买设备。
用路由器拿 CSI 的整体思路
路由器(采集) 本机/服务器(分析)
┌───────────────────┐ ┌──────────────────────────┐
│ OpenWrt + mt76 │ UDP │ 解析 → 缓冲 → 特征 → 检测 │
│ CSI 补丁 │ ─────▶ │ 可视化(热图/瀑布/多普勒)│
│ mt76-csi-daemon │ 8888 │ 存储(HDF5/Zarr)+ 回放 │
└───────────────────┘ └──────────────────────────┘
关键点:
- 驱动与固件:MT7986 需要带 CSI 支持的 mt76 补丁 + 20260515 版 Wi-Fi 固件;
- 必须设置 frame-type 过滤(
frame_type = 0,34),否则固件不会上报任何 CSI; - 必须把目标设备加入 MAC 过滤表,否则拿不到该设备的测量;
- CSI 是"接收端测量":要有稳定流量,且目标设备与 AP 之间保持关联。
10 分钟验收流程
在训练分类器之前,先证明采集链路本身可信:
- 冻结无线电变量:记录路由器型号、驱动与 Wi-Fi 固件版本、信道、带宽、天线状态、国家/监管设置和客户端型号。
- 制造可控流量:使用局域网主机反复传输或 ping;不要把公网测速服务器当作发包时钟。
- 采集已知区间:先跑 60 秒,再跑 10 分钟;除 CSI 文件外,也要在外部记录开始与结束时间。
- 检查记录完整性:解析每一条外层记录,检查时间戳是否大致单调、是否有长空档、头部是否损坏、末尾是否残留字节。
- 先分组再重采样:用
chain_infobit15 闭合一次测量,分别统计 4 链组、8 链组和未闭合残片。 - 检查质量而不只看数量:画出组间隔、链完整度、零值比例、RSSI 和 SNR 随时间的变化;异常只能按公开规则剔除。
- 公开证据链:保留原始抓包、解析器版本、manifest、SHA-256 与失败结果。只有热图、没有输入的“复现” 无法被第三方核验 [10]。
本站这份 10 分钟数据产生了 57,293 条外层记录、7,609 个完整测量组和约 12.68 组/秒。三个数来自同一文件, 但回答的是不同问题;数据集页公开了完整统计与限制,读者可以自己核对 [3]。
如何判断一条 CSI 结论可不可信
| 看到的主张 | 应该先问什么 | 为什么重要 |
|---|---|---|
| “采到了 256 个子载波” | 每条链,还是插值后的结果? | 频域点数不等于时间采样率 |
| “有 2,048 个 CSI 数值” | 数值、链记录,还是独立快照? | 256 × 8 是一个测量组,不代表 8 秒时间序列 |
| “采样率是 95Hz” | 记录率还是分组后的测量率? | 算法使用的是时间轴,不是文件行数 |
| “呼吸准确率 95%” | 距离、姿态、窗口长度和参考设备是什么? | 没有实验协议的准确率无法迁移到另一个房间 |
| “可以隔墙工作” | 受控研究装置还是消费级产品? | 阵列、墙体材料与真值标注决定结论范围 |
| “模型可以泛化” | 是否换过房间、受试者和硬件? | 三者都会改变 CSI 分布 |
常见失败怎么定位
| 现象 | 先检查 | 不要做什么 |
|---|---|---|
| CSI 使能成功,但没有记录 | 固件版本、frame-type 过滤、MAC 过滤和接收流量 | 直接认定客户端损坏 |
| 有记录,但测量组数量不对 | chain_info bit15 和末尾残余字节 |
用总记录数直接除以 8 |
| 有测量组,但时间轴出现假峰 | 发包触发、省电、组间隔和重采样 | 在错误时间轴上调分类器 |
| 离线检测指标异常漂亮 | 窗口重叠、受试者泄漏、同场次训练/测试划分 | 把它当成真实场景准确率 |
| 启用 CSI 后家庭 Wi-Fi 塌陷 | 独立 AP、速率控制状态和客户端带宽 | 不做回退继续叠加 CSI 参数 |
| 结论需要身份或图像 | 物理量到底测到了什么 | 把信道响应实验描述成摄像头 |
采到数据之后:一条流水线
| 环节 | 做什么 | 常见坑 |
|---|---|---|
| 解析 | 24 字节头 + int16 I/Q,按子载波交错 | 字节序、链标记(chain_info bit15) |
| 清洗 | 相位去卷绕、去 CFO/SFO、去直流 | 不做校正直接用相位 → 噪声 |
| 特征 | 幅度方差、STFT 多普勒、PCA | 帧率抖动会污染频谱 |
| 检测 | 阈值/机器学习(SenseFi 等) | 换环境后模型失效 |
| 可视化 | 热图、瀑布图、运动指标曲线 | 256×N 的点数必须用 WebGL/位图 |
本项目已经公开的东西
- 完整复现教程:用 GL-MT6000 拿到 256 子载波 CSI
- 真机 A/B 排障:跑起 CSI 之后 Wi-Fi 为什么可能变慢
- 工具与数据集:脚本、抓包格式、10 分钟原始数据
研究 Wi-Fi 感知时请遵守当地法律与伦理边界:不要用于未经同意的监控, CSI 即使没有图像和声音,也可能暴露是否在家与生活规律。应取得知情同意、缩短保留时间, 只公开脱敏后的数据,并在论文/项目中说明数据来源。
延伸阅读
- IEEE 802.11bf(WLAN Sensing)标准化进展 [11]
- 清华 WST(Hands-on Wireless Sensing with Wi-Fi)教程 [12]
- 开源工具:
esp-csi、CSIKit、csiread、SenseFi、ESPectre;其中RuView属社区项目、宣传语未经同行评审,仅作线索 [13]
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 E 级的是本项目可复现的实测数据。
- E 级 · 本项目实测
本项目 10 分钟实测抓包(57,293 条 / 600.0 s,SHA-256 00373f83…95e2)
Router CSI Lab · 2026
okwujun.pw/zh/datasets/ · 核实: 分片重组逐字节校验通过(2026-10-11) · 本地原始母片 SHA-256 为 00373f83…95e2;公开下载的是去标识派生文件,SHA-256 为 527466ce…a440,两者不可混用。 - A 级 · 标准/综述
WiFi Sensing with Channel State Information: A Survey
W. Ma, W. Zhou, X. Wang · ACM Computing Surveys · 2019
doi:10.1145/3310194 · 被引 857 · 核实: CrossRef API, 2026-10-11 · 领域内最常被引用的 CSI 感知综述(被引 857 次,核实于 CrossRef)。 - E 级 · 本项目实测
Router CSI Lab — GL-MT6000 (MT7986) Wi-Fi CSI dataset, 10 s sample + 10 min capture
Router CSI Lab · 2026
doi:10.5281/zenodo.23434789 · 核实: CC BY 4.0;SHA-256 已发布;Zenodo DOI 10.5281/zenodo.23434789 · 数据集已获 Zenodo DOI(10.5281/zenodo.23434789),可直接引用。 - B 级 · 同行评审
Tool release: gathering 802.11n traces with channel state information
D. Halperin, W. Hu, A. Sheth, D. Wetherall · ACM SIGCOMM Computer Communication Review · 2011
doi:10.1145/1925861.1925870 · 被引 1713 · 核实: CrossRef API, 2026-10-11 · Intel 5300 CSI Tool 的正式论文(被引 1713 次),是 CSI 采集被广泛复现的起点。 - C 级 · 官方资料
dhalperi/linux-80211n-csitool-supplementary — Intel 5300 CSI Tool (code)
D. Halperin et al.
github.com/dhalperi/linux-80211n-csitool-supplementary · 核实: GitHub API 2026-10-11 (stars 221, last push 2020-05-25) · Intel 5300 采集工具的代码仓库;最近一次提交为 2020 年,可作为“工具更新停滞”的依据。 - B 级 · 同行评审
Precise Power Delay Profiling with Commodity WiFi (Atheros CSI Tool)
Y. Xie, Z. Li, M. Li · ACM MobiCom 2015 · 2015
doi:10.1145/2789168.2790124 · 被引 521 · 核实: CrossRef API, 2026-10-11 · Atheros CSI Tool 的论文(被引 521 次),给出 40MHz 下的 CSI/功率时延剖面采集方法。 - C 级 · 官方资料
espressif/esp-csi — Applications based on Wi-Fi CSI
Espressif Systems
github.com/espressif/esp-csi · 核实: GitHub API 2026-10-29 (stars 1,723; README confirms the complete ESP32 series list and three sender/receiver routes) · 官方 README 原文:“All ESP32 series support CSI, including ESP32 / ESP32-S2 / ESP32-C3 / ESP32-S3 / ESP32-C5 / ESP32-C6 / ESP32-C61.” - C 级 · 官方资料
seemoo-lab/nexmon_csi — CSI extraction on various Broadcom Wi-Fi chips
SEEMOO Lab, TU Darmstadt
github.com/seemoo-lab/nexmon_csi · 核实: GitHub API 2026-10-29 (stars 479, last push 2026-09-30; README lists bcm43455c0 on Raspberry Pi 3B+/4B/5) - C 级 · 官方资料
PicoScenes — modern Wi-Fi ISAC research platform
Z. Jiang et al. (PicoScenes project)
ps.zpj.io/ · 核实: ps.zpj.io HTTP 200, 2026-10-11 · 面向 Wi-Fi ISAC 研究的软硬件平台官网(SDR 路线)。 - E 级 · 本项目实测
Router CSI Toolkit — 采集/分析/守护脚本(MIT,公开仓库)
Router CSI Lab · 2026
github.com/jjjwu/router-csi-toolkit · 核实: GitHub API 于 2026-11-02 核实公开仓库、抓包质量预检、成功 CI 与 v0.1.3 Release;归档 SHA-256 为 59f144c0…adea7 · 公开版含无第三方依赖的抓包质量预检;网页端检查器使用同一容器定义和边界口径。 - A 级 · 标准/综述
IEEE 802.11bf — WLAN Sensing (standard project)
IEEE Standards Association · IEEE 802.11 Working Group · 2020
standards.ieee.org/ieee/802.11bf/10331/ · 核实: standards.ieee.org HTTP 200, 2026-10-11 · 把“感知”变成 WLAN 标准能力的官方项目页(2020-09 立项)。 - C 级 · 官方资料
WST — Hands-on Wireless Sensing with Wi-Fi (Tsinghua tutorial)
Tsinghua University TNS group
tns.thss.tsinghua.edu.cn/wst/ · 核实: tns.thss.tsinghua.edu.cn HTTP 200, 2026-10-11 · 高校发布的 Wi-Fi 感知动手教程(含讲义与数据集),非同行评审论文。 - D 级 · 预印本/百科
ruvnet/RuView — community Wi-Fi spatial-intelligence project
r. u. v. (community maintainer) · 2026
github.com/ruvnet/RuView · 核实: GitHub API 2026-10-11 (stars 97,237; created 2025-06-07) · 社区项目,非同行评审:宣传语(实时“空间智能/体征监测”)未见于独立复现,仅作线索、不作结论。