独家排障:路由器跑起 CSI 后 Wi-Fi 变慢的真相(ATF 与 40MHz 塌陷)

2026-10-11 · 约 3 分钟

这是我们在把 CSI 跑进真实家庭网络后遇到的最难排查的问题,也是全网目前没有公开记录的现象:

同一台路由器,开启 CSI 之后,Mac 的下行速度从 300–400Mbps 掉到 6–10Mbps,而上行依然有 45Mbps。

下面是完整的定位过程、根因与两种修复方式。所有数字均为可复现的一手实测(E 级): 原始数据、对照实验方法与脚本一并公开 [2] [3];涉及的开源驱动为上游 mt76 [1]。

1. 先把范围缩小到"无线下行"

我们做了四组对照,把可能的环节逐个排除:

假设 实验 结论
宽带/光猫问题 路由器直接下载国内镜像 264–300Mbps(4 线程聚合 391Mbps),正常
有线问题 检查 WAN 口协商 1000Mbps 全双工,错误计数为 0
CSI 采集开销 关闭 CSI(CSI enable: 0)后复测 仍然塌陷 → 与 CSI 采集无关
客户端发射能力 Mac 上行 SSH 传输 188Mbps,AP 侧 rx 速率 600Mbps 3SS,正常

结论:只有 AP→客户端(下行)方向塌陷,速率被压到 VHT-MCS0 1SS(13.5Mbps)。

2. 关键线索:空闲就塌,且"塌了回不来"

用路由器侧 debugfs 观察客户端实时速率:

iw dev <iface> station dump | grep -E "tx bitrate|rx bitrate|signal"

现象:

  1. 空闲约 1 秒后,AP 对该客户端的发送速率掉到 MCS0;
  2. 持续流量下有时能爬回 MCS9(约 400Mbps),有时永远爬不回来;
  3. 客户端与 AP 的 ping:0% 丢包,但 RTT 抖动到 243ms(省电/缓冲特征)。

在"卡死"状态里,即使连续 36 秒满载下载,速率依然停在 7–10Mbps。

3. 根因一:固件 VoW ATF 让速率无法恢复

在 mt76 的 debugfs 里有一个固件特性开关:

cat /sys/kernel/debug/ieee80211/phy*/mt76/vow_atf   # 默认 = 1

对照实验(同客户端、同一时段、只改这一个开关,均为"空闲 60 秒后连续 6 次下载"):

vow_atf 6 次结果(Mbps) 行为
1(固件默认) 9.5 / 7.3 / 9.5 / 7.4 / 9.6 / 7.2 36 秒持续下载也完全不恢复
0(关闭) 7.8 / 8.8 / 20 / 146 / 387 / 393 约 15–20 秒内自动爬回满速
0 + 客户端重新关联 369 / 374 / 376 / 390 / 409 / 397 直接满速,6/6 通过

修复(已持久化):关闭 vow_atf,并在开机与每分钟的 watchdog 中重放设置 (驱动重载/重启后不会丢):

echo 0 > /sys/kernel/debug/ieee80211/phy*/mt76/vow_atf

4. 根因二:40MHz 客户端接入 80MHz BSS

ATF 解决后,仍然存在"周期性塌陷"。继续对照发现:

客户端 带宽 稳定性
老款 Mac(Broadcom,VHT 3SS) 40MHz 反复塌陷
手机(HE 2SS) 80MHz 稳定 1200Mbps
其他设备(VHT 1SS) 80MHz 稳定

把 5GHz 射频从 80MHz 切成 40MHz(htmode=HE40)后:

配置 空闲 60 秒后连续 6 次下载
HE80(80MHz) 7.4 / 7.3 / 9.3 / 9.5 / 9.6 / 9.6 Mbps(全塌陷)
HE40(40MHz) 384 / 375 / 328 / 416 / 411 / 419 Mbps(6/6 稳定)

结论:只协商 40MHz 的老客户端,在 80MHz 的 BSS 里会被固件的速率自适应/PPDU 处理拖垮。 把射频设成该客户端的原生带宽,问题消失。

5. 两种修复怎么选

目标 做法 代价
保 CSI 高精度(80MHz / 256 子载波) 保持 HE80 40MHz 老客户端会变慢
保日常可用(客户端满速) 切 HE40 CSI 带宽与子载波数减半

可以做一个 30 秒切换的脚本,按需切换:

sh /usr/bin/wifi-htmode HE80   # CSI 实验模式
sh /usr/bin/wifi-htmode HE40   # 日常模式

6. 你可以直接复用的判断流程

Wi-Fi 变慢
  ├─ 只有下行慢、上行正常? ──▶ 查 AP 侧 tx bitrate 是否被压到 MCS0
  │     ├─ 空闲后塌陷且不恢复 ──▶ 关 vow_atf(并持久化)
  │     └─ 仍周期性塌陷 ─────▶ 查客户端带宽 vs BSS 带宽是否不一致
  ├─ 上下行都慢 ──▶ 查干扰/信道/协商(本文不覆盖)
  └─ 有线也慢 ────▶ 查 WAN 协商与宽带(本案例 WAN 始终 1000Mbps)

如果你的路由器也是 MT7986/MT7915 系列(OpenWrt + mt76),建议先跑一遍上面两张表, 五分钟就能判定你遇到的是哪一种。

参考与数据来源

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

  1. C 级 · 官方资料 openwrt/mt76 — mac80211 driver for MediaTek Wi-Fi chipsets
    OpenWrt project / MediaTek
    github.com/openwrt/mt76 · 核实: GitHub API 2026-10-11 (stars 890, last push 2026-10-08) · 本项目使用的开源 mt76 驱动上游;CSI 能力的补丁正是在这一代码库之上编排。
  2. E 级 · 本项目实测 本项目 10 分钟实测抓包(57,293 条 / 600.0 s,SHA-256 00373f83…95e2)
    Router CSI Lab · 2026
    csi.okwujun.pw/zh/datasets/ · 核实: 分片重组逐字节校验通过(2026-10-11)
  3. E 级 · 本项目实测 Router CSI Toolkit — 采集/分析/守护脚本(MIT)
    Router CSI Lab · 2026
    csi.okwujun.pw/zh/tools/ · 核实: 仓库打包含 SHA-256,脚本在真机运行