Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
designed DEPLOY-001

AX210 Fleet Deployment — FIIT Library Reading Hall

In plain words

Does the installed library layout deliver the coverage and count information predicted by the placement model?

transmitter nine receivers, mixed heights the layout everything measured since rests on
One transmitter and nine receivers placed on the library floor where a ray-traced model said they would hear the most of it. The design claims the layout still covers the walkable floor; the card records whether that claim was ever measured. Schematic of the design, not a measurement.
Why it matters
The placement model needs a measured check at the positions the radios actually occupy.
How it is done
Match a dated survey and radio configuration to source-scoped measurements, then compare the observed spatial pattern with the frozen prediction.
Where it stands
Installed infrastructure; the placement hypothesis remains untested. The six-node deployment table below records July 28, not the September fleet.

Asks, formallyA mixed-height 1-Tx + 9-Rx AX210/Pi5 topology chosen at the coverage×count-informativeness Pareto knee of a ray-traced placement oracle retains ≥99% walkable coverage while maximising crowd-count information, and provides the persistent real-data anchor the simulation corpus needs.

FoundThe July 28 installation is a historical build record.

StandingDesigned, not yet run · last activity 2026-07-14

RoomReal — FIIT library reading hall (scan-native PostGIS floor fiit-library-lidar-floor-0, RoomPlan/Polycam 2026-05-29 bundle); 3 unmanaged eduroam 5 GHz APs provide ambient traffic

AX210 Fleet Deployment: FIIT Library Reading Hall

Current assessment (2026-09-15)

The July 28 installation is a historical build record. Subsequent experiments contain recordings from monad01–monad10, so the original six-node provisioning table is not a current inventory. The predicted 99% coverage and count-information advantage remain unverified at the as-built positions.

The deployment supports the measurement instrument chapter. A working fleet does not establish a coverage percentage or the placement ranking. Later survey-based work uses fiit-ground-0; the original scan-native coordinates below must retain their own frame and date. Claims of continuous reachability since July were not verified in this review.

Next evidence needed: Use the dated survey and acquisition configuration of the intended comparison. Validate the spatial prediction through EXP-F4 before claiming the placement model predicts the deployed floor.

Basis: Thesis Narrative, the September 10 synthesis, and the September 15 register review. See the review record for evidence sources and outstanding checks.

Earlier protocol and dated results

The methods and observations below retain their original scope. Read their readiness statements and proposed next steps as historical. The current assessment above records what has changed; frozen thresholds have not been retrospectively revised.

Ten Pi5+AX210 nodes installed 2026-07-28 on the scan-native floor fiit-library-lidar-floor-0 (envelope, walls, 4 doors, window, 35 furniture obstacles and 68 chair-seats all derived from the single RoomPlan OBJ — no scan→CAD registration; converter notebooks/gis/converters/06_polycam_native_floor.py). The previous CAD-polygonized floor (453 wall fragments, no doors, twice mis-registered furniture) was deleted.

Results

The installation succeeded; the experiment on this card has not been run. That is why status: planned rather than analysed — the status tracks the hypothesis, and the coverage claim below has never met a measurement.

planned actual
nodes 10 (1 Tx + 9 Rx) 6 (monad01–06); monad07–10 never provisioned
installed 2026-07-28 2026-07-28, continuously reachable since
deployment-day captures d1-validate, d1-empty-reference, d1-illuminated none produced a durable session
coverage ≥99 % walkable from the ray-traced oracle not measured at the installed positions

What the deployment did deliver is the thing everything since rests on: every capture campaign from 2026-08-10 onward — EXP-011 Paired-Band Delivery and Pacing Contrast, EXP-LIB-01 Overnight CSI Drift Baseline, the rate ladder in EXP-007 Packet-Rate Floor for Motion Sensing — ran on this installation. The fleet is the instrument; this card is its build record.

This card deliberately claims no capture data. Its d1-* arms produced none, and the fleet's continuous console capture is infrastructure — it runs on every node regardless of experiment and belongs to no card, so claiming it here would attribute roughly 900 node-hours of ambient recording to a deployment note.

To close the hypothesis, the coverage and count-informativeness claim needs a measurement at the as-built positions — which first needs the as-built survey that EXP-LIB-01 Overnight CSI Drift Baseline also records as missing. That is a separate experiment, not a follow-up edit to this card.

Limits

  1. The Pareto-knee claim is unverified. The topology was chosen from a ray-traced placement oracle; nothing has measured coverage or count informativeness at the installed positions, so the ≥99 % walkable-coverage figure in the hypothesis is a simulation output, not a deployment result.
  2. As-built positions were never surveyed. The coordinates below are the planned frame. EXP-LIB-01 Overnight CSI Drift Baseline records the same gap, and it is why that run makes no spatial claims.
  3. The D1 session plan below never produced a capture. Verified against the whole S3 archive on 2026-08-16: exactly one d1-* session exists, monad02_d1-illuminated_20260727-141232 — 0 records, 6 s, on the office pair the day before this deployment, and it belongs to EXP-P2 Illuminator Bring-Up and First Controlled Link as a tune-fix check. d1-validate and d1-empty-reference have never run at all. This card therefore owns no measurement data; the fleet's continuous console capture is infrastructure and belongs to no experiment.
  4. Ten nodes planned, six built. monad07–10 are commented out in infra/ansible/inventory/hosts.yml and have never appeared in fleet telemetry — they were not provisioned, rather than provisioned and silent. Every statement about the 1-Tx + 9-Rx topology describes the design, and the installation is 6 nodes.

Method

Positions come from the c-placement-oracle generative-evaluation pipeline run locally on the new floor: a staggered library-day agenda crowd (count varies 1–10) drives a coupled walk→Sionna-RT run at 5.18 GHz against a 30-candidate mountable grid. Wall mounting is not permitted in the library, so the candidate classes are floor stands along the wall lines (z 0.25 m), shelf tops (≈2.0 m) and table tops (≈0.85–0.9 m) — mixed heights within what furniture and floor allow. Per-candidate count-informativeness I(C;Φ) is estimated from ray-traced links (3 seeds, averaged), coverage from the LOS proxy over the walkable area. Grounding: wang2025_2c42 (IoT-J) supplies the Fresnel/RSQ placement rules (proximity to occupied regions, balanced topology, height as a first-class variable); the oracle adds the generative ray-traced evaluation the RSQ geometric baseline cannot (cross-floor surrogate ρ≈0.02 here — geometry alone does not predict measured MI).

  • Runs: 01KYFPCRE245WW4RSCEWGV4JJT, 01KYFPESCYG6KVHCTVJ9FZST13, 01KYFPG9M7GFVXDRNPPTNF8R75 (an earlier wall-bracket variant — runs 01KYFKDR…/01KYFKN6…/01KYFKSW…, fiit-ax210/rec.json — was superseded when wall mounting was ruled out)
  • Reduction: _attachments/placement-oracle/fiit-ax210-v2/rec.json (seed-rank ρ = 0.943)
  • Pareto knee (k=9): identical set for λ ∈ [0.25, 0.75] — footfall coverage 1.000, I(C;Φ) 1.087 nats (pure-coverage set: 1.000 / 0.784)
  • k=7 fallback (two devices upstairs): drop monad04 + monad08 — the remaining seven are the k=7 knee (coverage 1.000, I(C;Φ) 0.989 nats)
  • GIS: experiment ax210-fiit-deployment, candidate grid csi-oracle-grid-fiit-library-lidar

Node positions (SRID-900010 cm frame; origin = scan min corner)

node role mount x (m) y (m) z (m)
monad01 Tx injector freestanding shelf/partition 16.94 12.42 1.80
monad02 Rx floor stand (W wall, by door_8) 0.50 6.32 0.25
monad03 Rx floor stand (W wall, mid) 0.50 9.95 0.25
monad04 Rx floor stand (NW corner) ↑ 0.50 18.89 0.25
monad05 Rx floor stand (N wall, centre) 8.24 19.03 0.25
monad06 Rx floor stand (S wall, mid) 9.42 3.23 0.25
monad07 Rx desk (central table) 9.80 12.49 0.87
monad08 Rx desk (centre-west island) ↑ 5.19 9.72 0.85
monad09 Rx desk (centre-east island) 15.16 6.42 0.87
monad10 Rx desk (far-east, open wing) 20.51 16.70 0.92

↑ = the two nodes to relocate if the upstairs room is included (the remaining seven stay k=7-optimal). If relocated: Polycam-scan the upstairs room (5 min), run 06_polycam_native_floor.py --building fiit-library --floor fiit-library-lidar-floor-1, and re-run the oracle for the pair.

Printable install sheet (A4 landscape, map + table): _attachments/figures/fig-ax210-deploy-sheet.pdf (source _attachments/figures/src/fig-ax210-deploy-sheet.py) · Map: _attachments/floorplans/fiit-library/ax210_deployment_map.png · candidates: _attachments/floorplans/fiit-library/ax210_candidates.json · floor QA: _attachments/floorplans/fiit-library/native_floor_db.png

Topology rationale

monad01 injects (controlled rate + known position — the calibration anchor for EXP-008 Active Injection vs Passive Sniffing and the BLE-calibration thesis line); monad02–monad10 capture CSI on the injector's channel. The room's three unmanaged eduroam 5 GHz APs are opportunistic secondary sources (csid can sniff their traffic per-channel) but are deliberately not optimization anchors — their traffic, channels and positions are outside our control. Desk-height nodes sit in the antenna plane where furniture is CSI-invisible but bodies are not; floor stands look under the furniture plane (legs/gait dominate) — the height split is a deliberate probe of the antenna-plane effect found in c-furniture-csi-observatory, now spanning below-furniture, in-furniture and above-furniture strata.

Install checklist (2026-07-28)

  1. Mount per the table (floor stands ~0.45 m off the wall line, antenna at 0.25 m; desk nodes on table centrelines; monad01 on the freestanding shelf).
  2. Photograph each node in place; measure actual x/y/z with laser meter where they deviate >10 cm and update experiment_devices accordingly.
  3. Note the 3 eduroam AP ceiling positions on the printed map → register as context devices.
  4. node-validate.yml each node over eth0 before leaving (see docs/FLEET-WIFI.md).
  5. Run the first-capture session plan below.

First capture — csid session plan (D1, 2026-07-28)

Profiles d1-validate / d1-empty-reference / d1-illuminated ship via ansible-playbook playbooks/fleet.yml --tags csid (declared in group_vars/csi_nodes.yml; parameter rationale in docs/CSI-CAPTURE-PARAMETERS.md). csid is passive-only — the controlled source is monad01's mgmt wlan0 (separate radio from its AX210, so monad01 captures during illumination too). One radio per node: stop the console feed before any research session (systemctl stop csid@console), restart it when done.

D1.0 — channel truth (5 min, before shipping configs)

The channel: 36 in all three profiles is a placeholder. On monad01: iw dev wlan0 link → note the eduroam AP BSSID + channel + width it is associated to; csid bench smoke --channels <UNII-1,UNII-3 set> for the other two APs' channels and ambient rates. Write BSSID(s), channels, and monad01's wlan0 MAC on the printed sheet. Set the real channel in group_vars/csi_nodes.yml, re-run --tags csid.

D1.1 — per-node validation sweep (d1-validate, ~25 min for 10 nodes)

Per node: systemctl start csid@d1-validate, open http://monadNN:8088 (csiscope, tailnet) and gate on: 4 chains present (2×2), record rate > 0 on the target channel, RSSI in −18…−89 dBm (−127 = unmeasured-chain sentinel), no interleaved-class surprises (note the dominant (ntone, modulation) class). A node that fails at 0.25 m gets nudged up onto low furniture — note new z.

D1.2 — empty-hall reference (d1-empty-reference, 10 min, all nodes)

While the hall is empty (during install, before students settle): start on all 10 nodes in parallel — this is the empty-room CFR anchor every drift and calibration analysis compares against (EXP-002 CSI Model Drift Measurement Over Time). Log start/stop time and the (near-zero) occupant count.

D1.3 — illuminated capture (d1-illuminated, 15 min, all nodes)

On monad01: ping -i 0.01 -s 1200 <eduroam-gw> (≈100 Hz uniform uplink from a known position). All 10 nodes capture. This is the controlled-source arm (EXP-008 Active Injection vs Passive Sniffing proxy) and the first real test of the placement ranking: per-node record rate + amplitude variance vs the oracle's predicted per-candidate MI ordering.

D1.4 — ambient occupancy baseline (exp-c1-occupancy, 30 min, all nodes)

The standing occupancy profile (5 GHz, 80 MHz, ~100 Hz cap) with the hall in normal use. Ground truth is manual: headcount every 5 min + a door-event tally (pen on the printed sheet, or phone timer); note anything anomalous (cleaning cart, window opened). This seeds EXP-001 BLE-Assisted CSI Ground Truth Collection until the BLE anchor protocol runs.

D1.5 — close-out (10 min)

  • Restart console feeds: systemctl start csid@console per node.
  • Verify sync: sessions appear under s3://monad-knowledge/datasets/ax210-csi-captures/<host>/<session_id>/ with .synced markers (15-min timer; force with the sync unit if leaving sooner).
  • Back home: csi_sources / csi_overview on one session per node class (floor vs desk vs shelf) — amplitude-grid + waterfall sanity via the csi-visualization skill; file actual-vs-planned positions into experiment_devices.

Session bookkeeping: session IDs embed the experiment slug (<host>_<experiment>_<timestamp>); the sidecar carries node identity — the GIS position joins via devices.name = monadNN in ax210-fiit-deployment. Volume note: 10 nodes × uncapped 80 MHz can reach ~1.5 GB/h/node (608 Hz benchmark); D1 sessions are short by design — watch budget.s3_bytes before extending durations.

See it run

Trajectory replay of run CNEESSQ4 — press play, scrub the timeline, toggle agent trails and footfall.

Loading replay…

Open the run workbench →

Simulation runs the 20 most recent, newest first
Run Date Gate Campaign Replay
CNEESSQ4 2026-07-14 ✓ c-placement-oracle replay →
5AESXWYK 2026-07-14 ✓ c-placement-oracle replay →
N7H8KJ2H 2026-07-14 ✓ c-placement-oracle replay →
92KCZ1T8 2026-07-14 ✓ c-placement-oracle replay →
6NQSSEN2 2026-07-14 ✓ c-placement-oracle replay →
G5C57F1B 2026-07-14 ✓ c-placement-oracle replay →
NB36STQX 2026-07-14 ✓ c-placement-oracle replay →
RV1QPPNR 2026-07-14 ✓ c-placement-oracle replay →
SXG9HHKN 2026-07-14 ✓ c-placement-oracle replay →
XBY52GD6 2026-07-14 ✓ c-placement-oracle replay →
0E8M2NE1 2026-07-14 ✓ c-placement-oracle replay →
CG3RB8E8 2026-07-14 ✗ c-placement-oracle —
ZD30MRBF 2026-07-14 ✓ c-placement-oracle replay →
95VRKNSE 2026-07-14 ✓ c-placement-oracle replay →
547GTCTX 2026-07-13 ✓ c-placement-oracle replay →
JX4V5RTN 2026-07-13 ✓ c-placement-oracle replay →
R2TYKTXZ 2026-07-13 ✓ c-placement-oracle replay →
J5TEA8NW 2026-07-13 ✓ c-placement-oracle replay →
W48MHPMW 2026-07-13 ✓ c-placement-oracle replay →
MV408DA8 2026-07-13 ✓ c-placement-oracle replay →

All exp-csi-crowd runs in the workbench →

Provenance

—
not recorded

Data types

  • csi-amplitude
  • csi-phase
  • ble-rssi