Do 256 CSI subcarriers mean 256 independent dimensions? A two-capture GL-MT6000 redundancy audit

By Wu Jun · Updated 2026-11-01 · Wi-Fi CSI, subcarrier redundancy, PCA, effective dimensionality, GL-MT6000, MT7986 · 7 min read

Result first: in this 10-minute GL-MT6000 amplitude capture, the 256 array positions are not 256 independent observation dimensions. On a correlation-matrix PCA of per-snapshot normalized amplitudes, 6 components explain 90% of variance, 9 explain 95% and 20 explain 99%. The participation-ratio effective rank is 4.568732, and the median adjacent-bin correlation is 0.900779. This is not a claim that the router contains six physical sensors; it is a statistical dimensionality result for these two captures and this preprocessing.

Four-panel CSI subcarrier analysis showing normalized amplitude profiles from 10-minute and 60-second captures, a 4 by 4 block-averaged correlation matrix, PCA cumulative variance and an absolute-correlation histogram.

Figure 1: top left, normalized amplitude profiles for both captures; top right, a 4 x 4 block-averaged view of the 256 x 256 correlation matrix; bottom left, cumulative PCA variance for the 10-minute capture; bottom right, the absolute off-diagonal correlation distribution. The public script generates the figure.

1. Results

Both captures select tx0/rx0 only. The analysis never falls back to another chain and never treats multiple tx/rx records as additional time samples [1].

Metric 10-minute capture 60-second capture
Outer records 57,293 2,777
Closed bit-15 groups 7,609 347
Complete 256-bin tx0/rx0 rows 7,608 347
Incomplete fixed-chain groups 1 0
Components for 90% cumulative variance 6 not used for dimension selection
Components for 95% cumulative variance 9 not used for dimension selection
Components for 99% cumulative variance 20 not used for dimension selection
Participation-ratio effective rank 4.568732 not used for dimension selection
First-component variance 33.933% not used for dimension selection
First 10-component cumulative variance 96.858% not used for dimension selection
Median absolute off-diagonal correlation 0.204452 not used for dimension selection
Median adjacent-bin correlation 0.900779 not used for dimension selection
Pairs with abs(r) >= 0.75 17.451% not used for dimension selection
Pairs with abs(r) >= 0.90 10.064% not used for dimension selection

The 10-minute capture supplies the PCA dimensionality result. The 60-second capture is used only to ask whether a similar structure appears again; it does not select the number of components. This avoids leaking the comparison session into model selection.

2. Why 256 columns are not 256 degrees of freedom

A CSI frame is often flattened into a 256-dimensional vector. A later model may implicitly assume that each column is independent, or apply ordinary table-style feature selection. But nearby frequency positions share the transmitter, receiver, multipath, automatic gain and capture layout. A column count is not a measure of independent information [2] [3].

The distinction affects:

PCA does not establish the physical cause of a correlation. It describes how variance is distributed in the current matrix [4]. This article therefore reports correlation structure and statistical dimensionality, not “the hardware has only a few subcarriers”.

3. Data selection and preprocessing

The pipeline is:

  1. walk the outer <float64 ts><uint16 len><payload> container;
  2. close a measurement group on chain_info bit 15;
  3. select tx0/rx0; count missing or duplicate fixed-chain groups and skip them rather than silently substituting another chain;
  4. accept only complete 256-complex-pair records with non-zero I/Q;
  5. divide each 256-bin amplitude vector by its own median to remove the first-order shared gain;
  6. centre and scale each bin over time to unit standard deviation;
  7. eigendecompose the resulting 256 x 256 Pearson correlation matrix;
  8. define the dimension threshold as the first component count reaching 90%, 95% or 99% cumulative variance;
  9. also report a participation-ratio effective rank:
effective_rank = (sum(eigenvalues)^2) / sum(eigenvalues^2)

Of the 7,609 closed groups in the 10-minute data, 7,608 are complete 256-bin fixed-chain rows; one group is not a complete fixed-chain sample. All 347 closed groups in the 60-second capture are usable. Input SHA-256 values are 527466ceb8b5f835e55ff348f02808736b947db39e7baac1f34e375de146a440 and 41c35d9d23e5c03ddd34ae97617e772fecdb55e8545156181828b060605a87a6.

4. The correlation structure is layered, not uniformly high

Across the 32,640 off-diagonal bin pairs, the median absolute correlation is only 0.204452. Considered alone, that number can create the false impression that the bins are mostly independent. The upper tail is different:

A better description is therefore: nearby positions form strong local structures, many distant pairs are weakly correlated, and the matrix is not one uniform 256 x 256 block. A low median and a low PCA dimension are not contradictory; a small number of strong directions dominate the eigenspectrum.

The matrix cannot assign physical frequencies to array indices. Mapping indices to OFDM subcarriers, pilots, guard bands or resource units requires driver and firmware evidence that this experiment does not provide.

5. The 6 / 9 / 20 dimension thresholds

The leading eigenvalues of the 10-minute correlation matrix are:

Component Variance share Cumulative
1 33.933% 33.933%
2 25.669% 59.602%
3 16.927% 76.528%
4 6.754% 83.283%
5 5.088% 88.370%
6 3.670% 92.041%
7 1.477% 93.518%
8 1.415% 94.934%
9 1.194% 96.127%
10 0.730% 96.858%

Therefore:

It is also incorrect to call these six components “six physical paths”. PCA only provides a rotation ordered by squared variance under the chosen representation; it does not guarantee physical interpretability or cross-device alignment.

6. Does the 60-second capture reproduce the structure?

After normalizing each capture by its own 256-bin row median, the per-bin median amplitude profiles have:

The relative bin structure is highly similar across these captures. Absolute gain is not the same, so this cannot be described as unchanged absolute amplitude or link budget.

Per-bin temporal variability is also highly uneven:

Metric 10-minute 60-second
Minimum CV 0.087431 0.056579
CV p25 0.173107 0.102854
Median CV 0.248880 0.135704
CV p75 9.274449 7.475848
CV p95 10.816894 7.849462
Maximum CV 12.641809 8.561378
Share of bins with CV > 1 37.891% 36.328%

The distribution is strongly skewed. A high CV is not automatically bad data and does not prove greater sensing sensitivity. Local nulls, gain changes, multipath and capture layout can all contribute. The analysis publishes the per-bin values and does not delete them by a CV rule.

In the 10-minute capture, 127 bins contain at least one zero amplitude, with about 400 zero-bin observations in total; the largest per-bin zero fraction is about 0.131%. The 60-second capture has 47 such bins and about 55 observations, with a maximum fraction of about 0.576%. The number is small but non-zero, so a parser must handle it rather than divide by zero or fill silently.

7. Consequences for modelling and experiment design

A more defensible practice is:

  1. describe the 256-dimensional input as a redundant raw representation, not 256 independent sensors;
  2. report correlations and effective dimensionality within each session;
  3. if PCA or another reduction is used, choose its dimension on a training session only;
  4. evaluate on an unseen session or room rather than declaring generalisation from a random split of one capture;
  5. compare the raw 256-dimensional input with lower-dimensional representations across linear, tree and neural models instead of assuming reduction is automatically better;
  6. publish bin identity, preprocessing and the eigenvalue spectrum rather than only an accuracy number.

“Six components explain 90%” does not mean every task needs only six features. A task may depend on weak tail signals, specific pilots or local nulls. The correct question is how much tail variance can be discarded for this task and this independent test protocol.

8. Reproduce

Download the public 10-minute capture and 60-second demo source, then run:

python3 analyze_csi_subcarrier_redundancy.py \
  csi_udp_20261010_10m.anon.bin \
  csi_demo_60s_anonymized.bin \
  --out-dir csi-subcarrier-redundancy \
  --img csi-subcarrier-redundancy.svg

The script requires Python 3.9+ and NumPy only. Public files:

See the GL-MT6000 Wi-Fi CSI dataset for the source captures, the chain-health audit for missing-chain behaviour, and the timestamp-gap spectral analysis for the sampling-time consequences.

9. Evidence boundaries

This is a first-party, reproducible analysis (grade E) [5], with the PCA method context taken from a peer-reviewed review [4]. It does not prove:

Both captures lack an empty-room baseline, known actions, subject position and human-event ground truth. The experiment supports amplitude-redundancy auditing, dimension reporting and stricter experimental design only.

10. Acceptance checklist

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 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).
  3. Grade B · peer-reviewed Tool release: gathering 802.11n traces with channel state information
    D. Halperin, W. Hu, A. Sheth, D. Wetherall · ACM SIGCOMM Computer Communication Review · 2011
    doi:10.1145/1925861.1925870 · citations 1713 · verified: CrossRef API, 2026-10-11 · The formal paper for the Intel 5300 CSI Tool (1713 citations) — the widely reproduced starting point for CSI capture.
  4. Grade B · peer-reviewed Principal component analysis: a review and recent developments
    I. T. Jolliffe, J. Cadima · Philosophical Transactions of the Royal Society A · 2016
    doi:10.1098/rsta.2015.0202 · citations 7798 · verified: CrossRef API, 2026-11-01 · A peer-reviewed PCA review covering explained variance, dimensionality reduction and interpretation limits. This article uses it for the method definition, not as causal evidence for the observed correlation.
  5. Grade E · first-party measurement CSI subcarrier redundancy and effective-dimensionality audit (script, metrics, PCA spectrum)
    Router CSI Lab · 2026
    okwujun.pw/en/csi-subcarrier-redundancy/ · verified: Rerun from the public 10-minute and 60-second captures with input SHA-256 527466ce…a440 and 41c35d9d…87a6; script, JSON, CSVs and figure are published together (2026-11-01) · This establishes correlation structure and effective dimensionality in these two amplitude captures only. It does not map array indices to physical frequencies or provide human ground truth.
  6. 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.