10 分钟路由器 CSI 质量审计:平均 12.68Hz,最大间隔 2.37 秒
作者 Wu Jun · 更新于 2026-10-29 · Wi-Fi CSI, 数据质量, 采样率, GL-MT6000, MT7986, 时间序列 · 约 4 分钟
很多 CSI 教程只给出平均包率或平均测量率。但一个平均值不能证明这份抓包具有均匀时间轴。本文重新打开项目公开的 10 分钟 GL-MT6000 原始文件,直接审计时间轴、链完整度与链路质量。
证据等级 E:下面的数字全部来自本项目公开原始文件和文末审计脚本。抓包没有人、呼吸或跌倒事件的真值, 因此它能证明采集质量,不能证明感知准确率 [1] [2]。
核心结果
文件包含 57,293 条链记录、7,609 个由 chain_info bit15 闭合的测量组,时间跨度 599.924 秒。
进一步要求每条记录都是 256 子载波,且组内至少有一个非零 I/Q 块后,剩下 7,608 个可用测量组。
| 数量 | 实测 |
|---|---|
| 源文件大小 / SHA-256 | 60,612,922 字节 / 527466ce…6a440 |
| 抓包时长 | 599.924 秒 |
| 链记录 | 57,293 |
| bit15 闭合组 | 7,609 |
| 可用 256 子载波组 | 7,608 |
| 可用的 8 链 / 4 链组 | 6,714 / 894 |
| 被质量门隔离的 64 子载波组 | 1 |
| 末尾未闭合记录 | 1 |
| 组间隔中位数 | 41.019ms |
| 第 95 / 99 百分位间隔 | 321.838 / 945.690ms |
| 最大间隔 | 2.373 秒 |
| 间隔超过 1 / 2 / 5 秒 | 57 / 2 / 0 次 |
| RSSI 最小 / 平均 / 最大 | -48 / -31.30 / -26dBm |
| SNR 最小 / 平均 / 最大 | 52 / 53.29 / 55dB |

7,607 个可用测量组间隔的分布。上图省略 57 个大于 1 秒的间隔,以便看清常见的突发结构;下图给出经验 CDF 与长空档边界。
平均测量率不等于采样时钟
用全部闭合组除以抓包时长,约为 12.683 组/秒;在可用组时间轴上取间隔倒数的平均值,约为 12.680Hz。 两者都是有意义的摘要,但它们不表示每隔 78.9ms 就准时到一个样本。
真实间隔具有强烈的突发性:
- 一半间隔不超过 41ms;
- 1,605 个间隔超过 50ms;
- 224 个超过 500ms;
- 57 个超过 1 秒;
- 2 个超过 2 秒,但没有超过 5 秒。
这就是只写“12.68Hz”不完整的原因。频谱估计需要为每个样本指定时间;如果处理代码忽略长空档, 插值会把缺失数据变成虚假的低频能量。呼吸、心率与事件检测恰好会寻找这一频带中的细小周期变化, 因此这个错误会直接影响结论。

上图:对数尺度的组间隔;中图:每组链记录数;下图:RSSI 与 SNR。约 370 秒附近能明显看到时间模式发生变化。 抓包没有同步记录发包脚本状态或客户端省电状态,因此本文不编造这一变化的具体原因。
这段可见的状态变化也是警告:同一个 10 分钟文件里可能包含不止一种采集状态。把整段拼成一个平稳时间序列, 再做一次频谱估计,可能把不同流量行为混在一起。
4 链组和 8 链组都真实存在
抓包中有:
- 6,714 个包含 8 条链记录的测量组;
- 894 个可用的 4 链 256 子载波组;
- 1 个 64 子载波过渡组,被质量门隔离;
- 末尾 1 条没有收到 bit15 闭合标记的链记录。
4 链组不是解析器错觉。把 57,293 除以 8 得到约 7,162,会悄悄丢掉大量 4 链测量;按 bit15 分组才得到 7,609 个闭合组。
完整分析流程后面还会剔除 25 个零值过多的组,使用 7,583 次测量,对应约 12.64Hz。这个分母与 7,609 个闭合组不同,所以本文把过滤规则写清楚,而不把所有“CSI Hz”数字当成可以互换。
方法定义
本次审计采用以下口径:
- 记录:外层容器中的一条记录,含 24 字节 CSI 头和 I/Q 载荷。
- 测量组:从上一组结束后的第一条记录,到当前 bit15 置位的记录为止。
- 组时间戳:组内第一条链记录的外层时间戳。
- 可用组:组内每条记录都是 256 子载波,且至少一个 I/Q 块非零。
- 间隔:相邻两个可用组时间戳之差。
- 长空档:超过给定阈值的正间隔;本文不推断空档原因。
脚本在统计前不做平滑、不插值,也不删除长间隔。这是有意设计:先让算法可能隐藏的时间轴问题显式暴露出来。
建模前的七道质量门
- 文件完整性:核对公开分片哈希与整文件 SHA-256。
- 记录解析:确认没有异常载荷长度,也没有未读取的尾部字节。
- 测量分组:按 bit15 闭合一次测量,绝不拿总记录数除以猜测的链数。
- 子载波形状:隔离
data_num不是预期 256 的测量组。 - I/Q 有效性:组内所有链都没有可用非零块时,拒绝该组。
- 时间轴审计:报告样本数、时长、中位数、p95、p99、最大值及超过分析阈值的间隔数。
- 非平稳性检查:画出整段间隔与链路质量;确认状态后,再选择连续分析窗口。
这些质量门不会“免费净化”数据。它们的作用是让每一次排除都有明确规则、可以复现。
这份抓包能证明什么
现有证据支持以下有限结论:
- 抓包包含约 10 分钟连续的 256 子载波 CSI;
- 实际同时出现 4 链组与 8 链组;
- 没有任何间隔超过 5 秒;
- RSSI 与 SNR 位于上表范围;
- 测量流具有明显突发性和一段可见的状态变化。
它不能证明:
- 12.68Hz 是均匀采样时钟;
- 某个呼吸或心率模型能够跨环境泛化;
- 仅凭这份文件就能检测跌倒;
- 时间模式的变化一定来自某个具体发包、客户端或省电原因。
这个边界与 CSI 感知文献的原则一致:论文中的方法可能成立,但本地硬件、时间轴、房间和真值仍要单独验证 [3]。
复现与下载
原始文件为 DOI 10.5281/zenodo.23434789 的 10 分钟公开抓包。 下一步不是换一个更大的分类器,而是加入同步真值日志、固定发包负载,并让分析窗口遵守上面这些长空档。
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 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,两者不可混用。 - 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),可直接引用。 - 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 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 · 公开版含无第三方依赖的抓包质量预检;网页端检查器使用同一容器定义和边界口径。