80 MHz vs 40 MHz for Wi-Fi CSI: resolution, snapshot rate and a real compatibility trap

By Wu Jun · Updated 2026-10-29 · 4 min read

Channel bandwidth is one of the most consequential choices in a Wi-Fi CSI setup. It controls how much frequency information each measurement contains. It can also expose a practical failure: a legacy 40 MHz client inside an 80 MHz BSS may make the AP's transmit rate periodically collapse to VHT-MCS0 1SS.

This page separates three issues: bandwidth resolution, the independent snapshot rate, and the wide-BSS client problem reproduced on our GL-MT6000.

1. What bandwidth actually buys you

Bandwidth Subcarriers reported (this hardware) Range bin (c/2B) Notes
20 MHz 64 (HE20) / commonly 30-64 on ESP32 ~7.5 m coarse, but easier to cover
40 MHz about half of the 80 MHz count ~3.75 m compromise between range and resolution
80 MHz 256 (measured) ~1.875 m best resolution, requires cleaner spectrum

This table describes the frequency dimension only. Subcarrier count changes with chip, width, firmware and reporting mode. Always count data_num in your own capture instead of inferring it from nominal bandwidth.

More bandwidth is not automatically better:

Maximum width is therefore a sensible starting point for a dedicated CSI radio, not a universal setting for every client in the house.

2. 95.5 records/s is not 95.5 independent snapshots/s

Our 10-minute capture contains 57,293 chain records over 599.924 seconds, or 95.5 records/s. One measurement can contain up to eight tx/rx chain records that share almost the same instant. Closing groups on chain_info bit 15 gives 7,609 measurements, so the independent snapshot rate is:

7,609 / 599.924 s ≈ 12.68 measurements/s

The full analysis also removes 25 zero-heavy groups, obtaining about 12.64 Hz. Time and Doppler processing must use this grouped timeline. Eight chains are not eight consecutive time samples.

Two limits follow:

  1. Respiration: at 0.1-0.5 Hz, a 12.64 Hz snapshot rate still has ample Nyquist margin;
  2. True walking micro-Doppler: at 5 GHz, radial motion at 1 m/s produces 2v / λ = 2 / 0.06 ≈ 33 Hz, well outside the ±6.32 Hz unambiguous range of a 12.64 Hz snapshot system, so it aliases.

The capture can therefore support slow motion envelopes, respiration and other low-frequency changes. It cannot support a claim that the full gait micro-Doppler spectrum has been recovered. That needs a higher independent snapshot rate, a dedicated radar waveform or different hardware. Counting chain records does not increase Nyquist.

Keep the dimensions separate:

3. The legacy-client failure we reproduced

Our test client uses a 2013-era Broadcom NIC and negotiates 40 MHz only. Inside an 80 MHz BSS, the AP's transmit rate for that client periodically collapsed to VHT-MCS0 1SS: 13.5 Mbps PHY and about 7-10 Mbps achieved downlink, while upload remained normal.

The test held the client, room and channel fixed and changed only radio width. After 60 seconds idle, we ran six 6-second LAN downloads. These are grade E first-party results; the captures and scripts are public [1] [2]:

Radio setting Six downlink runs
HE80 (40 MHz client inside an 80 MHz BSS) 7.4 / 7.3 / 9.3 / 9.5 / 9.6 / 9.6 Mbps
HE40 (40 MHz client at native width) 384 / 375 / 328 / 416 / 411 / 419 Mbps

RSSI stayed near -40 dBm and the client reached 400 Mbps in its fast state, so this was not a weak-signal problem. It resembles a rate-control or airtime-processing failure for a narrow-band client inside a wide BSS. We did not instrument the firmware's internal rate state, so we report the reproducible phenomenon without inventing a specific register-level root cause.

4. Keeping CSI resolution and usable clients together

Goal Approach Cost
Maximum CSI resolution run the CSI radio at 80 MHz and move legacy clients elsewhere another radio, AP or isolated SSID/VLAN
Legacy clients must be stable run the whole radio at 40 MHz fewer subcarriers and coarser range bins
Use both at different times script HE80 to HE40 switching about 30 seconds of reconfiguration; no seamless concurrency
Both simultaneously one dedicated 80 MHz sensing radio plus a 40 MHz/2.4 GHz service radio more hardware and management complexity

For a single-radio device, 40 MHz is often the conservative default unless frequency resolution is the dominant requirement. If 80 MHz is essential, isolate it on a dedicated interface and keep legacy clients off that BSS.

5. Reproduce the diagnosis

First check whether the client really collapses:

# tx bitrate = AP -> client, usually the failing direction
# rx bitrate = client -> AP, which may remain normal
iw dev <ap> station dump | grep -E "Station|tx bitrate|rx bitrate"

# inspect width, channel and associated stations
iwinfo <ap> info
iw dev <ap> station dump

Then run an A/B test with one variable at a time:

  1. Fix client position, channel, transmit power and test file;
  2. idle for 60 seconds between runs to avoid cache and burst scheduling effects;
  3. alternate HE80 and HE40 for at least six runs each;
  4. record PHY rate, achieved throughput, RSSI, retries and time;
  5. do not use a public download as the only load; it adds server and ISP variables.

During our collapse, 12 seconds moved 12.4 MB while the AP transmitted 12.87 MB. There was almost no retransmission waste. The radio stayed at a very low rate and left most airtime idle. A single final speed-test number hides that distinction.

6. Conclusion

Related: the MCS0 rate-control deep dive · OpenWrt Wi-Fi slow after idle · reproduction guide

References and data sources

Every external claim carries a source and an evidence grade (grading scheme). Grade E marks first-party, reproducible measurements from this project.

  1. Grade E · first-party measurement This project's 10-minute raw capture (57,293 records / 600.0 s, SHA-256 00373f83…95e2)
    Router CSI Lab · 2026
    okwujun.pw/en/datasets/ · verified: Reassembled chunks verified byte-identical (2026-10-11) · The local raw master has SHA-256 00373f83…95e2; the public de-identified derivative has SHA-256 527466ce…a440. They must not be confused.
  2. Grade E · first-party measurement Router CSI Toolkit — capture/analysis/watchdog scripts (MIT, public repository)
    Router CSI Lab · 2026
    github.com/jjjwu/router-csi-toolkit · verified: GitHub API verified the public repository, capture-quality preflight, successful CI and the v0.1.3 release on 2026-11-02; the archive SHA-256 is 59f144c0…adea7 · The public repository includes a dependency-free capture preflight; the browser checker uses the same container definition and evidence boundaries.