A 10-minute router CSI quality audit: 12.68 Hz average, 2.37 s maximum gap

By Wu Jun · Updated 2026-10-29 · Wi-Fi CSI, data quality, sampling rate, GL-MT6000, MT7986, time series · 5 min read

Most CSI tutorials quote an average packet or measurement rate. That number alone does not tell you whether the capture can be treated as a uniform time series. This audit reopens the public 10-minute GL-MT6000 capture and measures the time axis directly.

Evidence grade E: every number below comes from this project's published raw file and the audit script linked at the end. The capture has no person, breathing or fall-event ground truth, so the audit can establish acquisition quality, not sensing accuracy [1] [2].

Headline result

The file contains 57,293 chain records and 7,609 groups closed by chain_info bit 15 over 599.924 s. After requiring 256 subcarriers and a non-zero I/Q block, 7,608 groups remain usable.

Quantity Measured
Source size / SHA-256 60,612,922 bytes / 527466ce…6a440
Capture duration 599.924 s
Chain records 57,293
Closed bit-15 groups 7,609
Usable 256-subcarrier groups 7,608
8-chain / 4-chain usable groups 6,714 / 894
Quarantined 64-subcarrier group 1
Incomplete tail record 1
Median group-to-group interval 41.019 ms
95th / 99th percentile interval 321.838 / 945.690 ms
Maximum interval 2.373 s
Intervals longer than 1 s / 2 s / 5 s 57 / 2 / 0
RSSI minimum / mean / maximum -48 / -31.30 / -26 dBm
SNR minimum / mean / maximum 52 / 53.29 / 55 dB

CSI measurement interval distribution and CDF

Distribution of 7,607 usable group-to-group intervals. The upper plot omits 57 intervals above 1 s so that the common burst structure remains visible; the lower plot shows the empirical CDF and long-gap boundary.

Average rate is not a sampling clock

Using closed groups divided by capture duration gives about 12.683 groups/s. The mean reciprocal interval over the usable series is about 12.680 Hz. Both are useful summaries, but neither means that a sample arrived every 78.9 ms.

The actual intervals are strongly bursty:

This is why reporting only “12.68 Hz” is incomplete. A spectral estimator assumes a time origin for every sample. If the processing code ignores the long gaps, interpolation can turn missing packets into apparent low-frequency energy. That failure matters for respiration, heart rate and event detection because those methods look for small periodic changes in exactly that band.

CSI capture timing and link quality over ten minutes

Top: group interval on a logarithmic scale; middle: chain records per group; bottom: RSSI and SNR. The timing regime changes visibly around 370 s. The capture does not contain a synchronised traffic or client-state log, so this audit does not invent a cause for that change.

The visible regime change is another warning: a ten-minute file can contain more than one acquisition state. Pooling the whole file and then fitting one stationary spectrum may average across different traffic behaviour.

Four and eight chains are both real

The capture contains:

The existence of 4-chain groups is not a parser accident. A reader who divides 57,293 records by eight gets roughly 7,162 and silently loses most four-chain measurements. Grouping on bit 15 instead gives 7,609 closed groups.

The full analysis pipeline later removes 25 zero-heavy groups and uses 7,583 measurements. That filtered analysis rate is about 12.64 Hz. It is a different denominator from the 7,609 closed groups, which is why this article states the filter rule explicitly instead of presenting every “CSI Hz” number as interchangeable.

Method

The audit uses these definitions:

  1. Record: one outer container entry containing a 24-byte CSI header and I/Q payload.
  2. Group: all records from the previous group boundary up to and including the record with bit 15 set.
  3. Group timestamp: outer timestamp of the first chain record in the group.
  4. Usable group: every record has exactly 256 subcarriers and at least one I/Q block is non-zero.
  5. Interval: difference between consecutive usable-group timestamps.
  6. Long gap: a positive interval above the stated threshold. Gap causes are not inferred.

The script does not smooth, interpolate or remove long gaps before calculating the statistics. That is intentional: the purpose is to expose the raw time-axis properties before an algorithm hides them.

Seven quality gates before modelling

  1. File integrity: verify the published part hashes and whole-file SHA-256.
  2. Record parsing: confirm there are no malformed payload lengths or unread tail bytes.
  3. Grouping: close a measurement on bit 15; never divide record count by a guessed chain count.
  4. Subcarrier shape: quarantine groups whose data_num differs from the expected 256.
  5. I/Q presence: reject a group when no chain contains a usable non-zero block.
  6. Time-axis audit: report n, duration, median, p95, p99, maximum and the count above the analysis threshold.
  7. Non-stationarity: plot timing and link quality over the whole capture; choose contiguous windows only after checking the plot.

These gates do not “clean” the data for free. They make each exclusion visible and reproducible.

What the capture supports

The evidence supports these limited statements:

It does not establish:

The distinction follows the same boundary used by the CSI sensing literature: a method can be plausible in a controlled study, but the local hardware, timing, room and ground truth still need separate verification [3].

Reproduce or inspect the result

The source is the 10-minute public capture with DOI 10.5281/zenodo.23434789. The next step for a sensing experiment is not a larger classifier: it is a synchronised ground-truth log, a fixed traffic workload and an analysis window that respects the gaps shown above.

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 Lab — GL-MT6000 (MT7986) Wi-Fi CSI dataset, 10 s sample + 10 min capture
    Router CSI Lab · 2026
    doi:10.5281/zenodo.23434789 · verified: CC BY 4.0; SHA-256 published; Zenodo DOI 10.5281/zenodo.23434789 · The dataset has a Zenodo DOI (10.5281/zenodo.23434789) and can be cited directly.
  3. Grade A · standard/review WiFi Sensing with Channel State Information: A Survey
    W. Ma, W. Zhou, X. Wang · ACM Computing Surveys · 2019
    doi:10.1145/3310194 · citations 857 · verified: CrossRef API, 2026-10-11 · The field's most-cited CSI sensing survey (857 citations, verified via CrossRef).
  4. 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.