Wi-Fi CSI 选 80MHz 还是 40MHz:分辨率、独立采样率与真实兼容性坑

作者 Wu Jun · 更新于 2026-10-29 · 约 4 分钟

搭 Wi-Fi CSI 时最重要的一个决定是信道带宽:它决定每次测量能拿到多少频率信息。它也可能暴露一个很现实的问题: 只支持 40MHz 的老客户端接入 80MHz BSS 后,AP 的发送速率可能周期性塌到 VHT-MCS0 1SS。

本文把三件事分开讲:带宽带来的分辨率、独立测量快照率,以及我们在 GL-MT6000 上复现到的宽带 BSS 客户端异常。

1. 带宽到底买到了什么

带宽 子载波数(本硬件实测) 距离分辨单元(c/2B) 说明
20MHz 64(HE20)/ ESP32 上常见 30–64 ≈7.5 m 粗,但更稳、更容易覆盖
40MHz 约为 80MHz 的一半 ≈3.75 m 覆盖与分辨率的折中
80MHz 256(实测) ≈1.875 m 分辨率最好,但要求更干净的频谱

这张表只说明频率维的信息量。子载波数会随芯片、带宽、固件和上报模式变化,必须从自己的抓包里统计 data_num,不能只按信道宽度推断。

80MHz 也不是无条件更好:

因此"最大带宽"只适合作为 CSI 专用射频的起点,不适合直接套到家里所有客户端。

2. 95.5 条记录/秒不等于 95.5Hz 独立快照

本项目 10 分钟抓包有 57,293 条链记录 / 599.924 秒 ≈ 95.5 条记录/秒。但一次测量最多包含 8 条 tx/rx 链记录,它们共享接近相同的时间点。按 chain_info bit15 闭合测量后得到 7,609 组, 独立快照率是:

7,609 / 599.924 s ≈ 12.68 measurements/s

完整分析会进一步剔除 25 个零值过多的异常组,得到约 12.64Hz 的独立快照率。时间/多普勒分析必须 先落到这 12.64Hz 的时间轴上,不能把 8 条链当成 8 个连续时间采样。

这带来两个重要边界:

  1. 呼吸:约 0.1–0.5Hz,12.64Hz 快照率仍有足够 Nyquist 余量;
  2. 真实行走微多普勒:5GHz 下 1m/s 的径向运动产生的多普勒约为 2v / λ = 2 / 0.06 ≈ 33Hz,远高于 12.64Hz 快照系统的 ±6.32Hz 无模糊范围,会发生混叠。

所以这份抓包可以分析慢运动包络、呼吸和其他低频变化,但不能据此宣称能够恢复完整的步行微多普勒谱。 真正的步态 Doppler 需要更高的独立快照率、专用雷达波形或其他硬件,而不是把链记录数放大。

带宽和多普勒的关系也要说清:

3. 我们复现到的老客户端问题

测试客户端使用 2013 年的 Broadcom 网卡,只协商 40MHz。把它放进 80MHz BSS 后,AP 对该客户端的 发送速率周期性塌到 VHT-MCS0 1SS:物理层 13.5Mbps,实际下行约 7–10Mbps,而上行一直正常。

测试方法是同一客户端、同一房间、同一信道,只改射频带宽;空闲 60 秒后连续做 6 次 6 秒内网下载。 结果如下,属于本项目 E 级一手实测,原始记录和脚本已公开 [1] [2]:

射频设置 6 次下行结果
HE80(40MHz 客户端接入 80MHz BSS) 7.4 / 7.3 / 9.3 / 9.5 / 9.6 / 9.6 Mbps
HE40(40MHz 客户端原生带宽) 384 / 375 / 328 / 416 / 411 / 419 Mbps

RSSI 一直在约 −40dBm,客户端在"快状态"下能跑到 400Mbps,所以这不是距离或信号太弱。它更像是 "窄带客户端在宽带 BSS 内"的速率控制或空口处理异常。由于我们没有继续抓取固件内部速率状态,这里只声明 可复现现象,不把根因夸大为某个确定寄存器。

4. 怎么同时保住 CSI 分辨率与正常网络

目标 做法 代价
最高 CSI 分辨率 CSI 射频跑 80MHz,老客户端移到别的射频/AP 需要额外射频或隔离 SSID/VLAN
老客户端必须稳定 整块射频跑 40MHz CSI 子载波和距离分辨率下降
分时使用 脚本切换 HE80 ↔ HE40 约 30 秒重配置,不能无感并发
同时满足 一块 80MHz 专用感知射频,一块 40MHz/2.4GHz 服务射频 硬件与配置复杂度增加

如果是单射频设备,最稳妥的默认值通常不是 80MHz,而是根据客户端组合与用途选择 40MHz;如果目标优先是 CSI 频率分辨率,则把 80MHz 放在独立接口,并严格隔离老客户端。

5. 自己复现验证

先确认客户端是否真的出现速率塌陷:

# tx bitrate = AP -> client,通常是出问题的方向
# rx bitrate = client -> AP,可能一直正常
iw dev <ap> station dump | grep -E "Station|tx bitrate|rx bitrate"

# 查看当前带宽、信道与关联客户端
iwinfo <ap> info
iw dev <ap> station dump

再做 A/B 测试时,请一次只改一个变量:

  1. 固定客户端位置、信道、发射功率和测试文件;
  2. 每轮空闲 60 秒,防止缓存与突发调度影响结果;
  3. 交替测试 HE80 与 HE40,至少各 6 次;
  4. 同时记录 PHY 速率、实际吞吐、RSSI、重传和测试时间;
  5. 不用公网下载作为唯一负载,它会引入服务器与运营商两个不可控变量。

塌陷期间,12 秒传输实际移动了 12.4MB,而 AP 发出 12.87MB,几乎没有重传浪费。空口不是"传了很多但丢掉了", 而是长期停留在极低速率、剩余时间大量空闲。只看一次测速软件的最终数字,很容易漏掉这个区别。

6. 结论

相关:mt76 速率控制深度分析 · OpenWrt 空闲后变慢 · 复现教程

参考与数据来源

本文的每条外部结论都标注来源与证据等级(分级标准);标注 E 级的是本项目可复现的实测数据。

  1. 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,两者不可混用。
  2. 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 · 公开版含无第三方依赖的抓包质量预检;网页端检查器使用同一容器定义和边界口径。