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 也不是无条件更好:
- 同样的发射功率分散到更宽频段,每个子载波的 SNR 可能下降;
- DFS 信道可能发生雷达事件与自动切信道;
- 邻近 80MHz 网络重叠时,空口竞争更严重;
- 老客户端或低功耗客户端可能只支持 20/40MHz。
因此"最大带宽"只适合作为 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 个连续时间采样。
这带来两个重要边界:
- 呼吸:约 0.1–0.5Hz,12.64Hz 快照率仍有足够 Nyquist 余量;
- 真实行走微多普勒: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 测试时,请一次只改一个变量:
- 固定客户端位置、信道、发射功率和测试文件;
- 每轮空闲 60 秒,防止缓存与突发调度影响结果;
- 交替测试 HE80 与 HE40,至少各 6 次;
- 同时记录 PHY 速率、实际吞吐、RSSI、重传和测试时间;
- 不用公网下载作为唯一负载,它会引入服务器与运营商两个不可控变量。
塌陷期间,12 秒传输实际移动了 12.4MB,而 AP 发出 12.87MB,几乎没有重传浪费。空口不是"传了很多但丢掉了", 而是长期停留在极低速率、剩余时间大量空闲。只看一次测速软件的最终数字,很容易漏掉这个区别。
6. 结论
- 80MHz 换来约 256 个子载体和更细的距离分辨单元,但要求更好的 SNR 与频谱环境;
- 95.5 条记录/秒不能当成 95.5Hz 时间采样;独立测量率约 12.64Hz;
- 12.64Hz 适合作低频运动/呼吸研究,不足以恢复真实步行的微多普勒;
- HE80 与老 40MHz 客户端的兼容性问题必须实测,不能只看关联成功;
- 生产环境优先用独立射频/AP 分离感知链路和普通客户端。
相关:mt76 速率控制深度分析 · OpenWrt 空闲后变慢 · 复现教程
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 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 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 · 公开版含无第三方依赖的抓包质量预检;网页端检查器使用同一容器定义和边界口径。