Live status · Read the latest
monad-knowledge Wi-Fi sensing lab · FIIT STU
Toolbox · 11 live instruments

Learn. Observe. Check.

Explore standards and teaching models alongside this project's data: a byte of a capture, a minute of a day, a ladder of transmission rates. Each page gives you controls to ask a question. Nothing here reaches a live store while you look; each tile says what it reads and what to know before trusting a number on it.

If you are new here, the whole lab in four sentences

A transmitter sends a known training signal. Listening radios estimate how the channel changed its amplitude and phase across frequencies and antenna links. People can change those estimates, as can the radios, traffic and environment. Start with the CSI course, then explore recorded observations and the evidence needed to interpret them.

  1. 1CSI from Zero
  2. 2The estimator from zero
  3. 3The estimators, day by day
  4. 4Corpus
1

Start from the beginning

Start with CSI from Zero, or open the Wi-Fi standards, OFDM/signal, frequency-band and CSIQ workbenches directly. Then learn the thesis estimator equation by equation: the hidden count, the three observations, the person scale nobody can measure, the filter and the scores that test it.

Interactive lesson guided course · interactive labs

CSI from Zero

What does every number in a CSI vector mean?

Build the idea from waves and two-number arrows to antenna links, Intel AX210 and ESP32-C5 records, and the pictures in csiscope.

What it shows, what it reads, and the one thing to know first
On the page
Twelve guided lessons with 2D/3D labs, a local value inspector, worked examples and questions to explain back.
Where the numbers come from
Declared synthetic models and explicit vendor formats. Pasted scalar values stay in the browser.
Read this first
The inspector needs a matching profile and does not validate capture headers; the models are not measured deployments.
Open
Companion labs (1)
  • One record Live on real data

    What is inside one channel measurement, and what does each number mean?

Live on real data declared physics · real bytes

Three bands, one room

What changes when the same room is listened to on 2.4, 5 and 6 GHz, and what does not?

A Wi-Fi channel is a note the radio sings. The three bands are three octaves: the higher the note, the shorter its wave, and the wavelength is the ruler the room is measured with. A person is a large object at twelve centimetres and a larger one at five. This essay changes only that one quantity and follows what moves with it.

What it shows, what it reads, and the one thing to know first
On the page
Nine figures, one per step: the wavelength each channel gives on a 50 cm ruler, the Doppler shift a walker writes on it, the path loss between a transmitter and a listener, the three channel plans to scale with the fleet's hours on them, the tone grids the records carry, the same room seen through each band on real captures, and what the fleet has actually measured on each.
Where the numbers come from
Declared physics with its source printed beside every constant; the corpus snapshot for the measured census; and one committed capture per band decoded on the request path, the way Format decodes its bytes. No request reaches S3, the lake or the vault.
Read this first
The corpus is silent on 6 GHz sensing and on ranking channels within a band. The fleet's 6 GHz record is one pilot hour, and every cross-band number on the page carries the validity rung it earns.
Open
Interactive lesson standards · illustrative models

Wi-Fi, generation by generation

What do modern Wi-Fi generations change in the signal, shared airtime and sensing?

A radio turns bits into a waveform and waits for a chance to send it. Change the signal, the available spectrum or the sharing rules and see which part of the result changes.

What it shows, what it reads, and the one thing to know first
On the page
Compare Wi-Fi 4–7, move a QAM constellation, calculate a PHY rate, share airtime, puncture a channel, schedule multiple links and distinguish bandwidth from tone density. Each lesson has a question to try and an answer to reveal.
Where the numbers come from
Declared standards capabilities with primary references and deterministic teaching models. No measurements or remote stores are read.
Read this first
Capability ceilings are not product guarantees. Illustrative schedules are not measured latency, and higher PHY rates do not establish better crowd sensing.
Open
Interactive lesson QAM · OFDM · an illustrative room

Signals, up close

How does a QAM point become a wave, and what does a room do to it?

Choose a symbol, build its wave, disturb it and let the receiver try to recover it. Then move a receiver through a room and watch two signal paths add together.

What it shows, what it reads, and the one thing to know first
On the page
Operate linked constellation and waveform views, compare received and equalized QAM, combine OFDM tones, explore a two-path room channel with a movable receiver, then add up to eight people to a walled room and watch the path arrows and the CSI change.
Where the numbers come from
Declared equations, reproducible synthetic symbols and an invented room. Every assumption is printed beside its view; no capture or remote store is read.
Read this first
These are teaching models, not a coverage survey, a full IEEE waveform, an EVM compliance test or a sensing-accuracy prediction.
Open
Interactive lesson frozen model · thesis math

The estimator from zero

How does the thesis turn Bluetooth addresses and CSI wobble into a number of people it cannot see?

Nobody counts the people in the library; the radios only hear their traces. The estimator keeps a probability for every possible headcount, from 0 to 160, moves it forward one minute with a rule for arrivals and departures, and corrects it with what the radios heard. This course builds that machine one equation at a time, with the numbers the frozen model actually uses.

What it shows, what it reads, and the one thing to know first
On the page
Eleven lessons in the order of the thesis: the queue that moves the count, the CSI and Bluetooth likelihoods, the scale symmetry that unlabelled data cannot break, the prior mixture that carries it, the forward filter run on a real day in your browser, the EM fit, the levels, bands and 90 % band set, the scores that test H2 and H3, the floor ratio of H1, and where the model is knowingly wrong. Every lesson has a lab, worked numbers and a 'Prove it' fold with the derivation.
Where the numbers come from
The frozen model file the fusion study pinned in the vault (its sha256 is printed and checked on every request) and one exported day of its inputs and posterior. The labs run the same equations in the browser; no request reaches the lake, S3 or the fleet.
Read this first
The labs let you move the constants to see what each one does. The frozen model does not move: the values it was frozen with on 17 October 2026 are the defaults, and the scored predictions use only those.
Open
Companion labs (1)
  • How a level is made Live on real data

    How does one minute of radio measurements become a number of people?

Live on real data real bytes

The capture format

What do the bytes of a capture file mean, byte by byte?

A capture is a binary file, and a binary file is readable exactly when you can put a finger on a byte and be told what it is. This is that finger: a real file from the archive on the left, its bytes in the middle, and the meaning of what you point at on the right. Point your own reader at the same file and compare.

What it shows, what it reads, and the one thing to know first
On the page
The capture format, decoded in front of you: the structure of one real capture on the left, its bytes in the middle, what the selected bytes mean on the right. Selecting a field lights its bytes; clicking a byte selects the field that owns it. Every sample is downloadable with its expected decode.
Where the numbers come from
Eleven byte-preserving slices of real captures, committed to this repository, decoded on the request path by the same reader the specification documents. No store is consulted.
Read this first
MAC addresses in the samples are relabelled into the RFC 7042 documentation range; everything else is the archive's own bytes.
Open
2

Watch the room

What nine listening radios read on the library floor, minute by minute, for every measured day, what the frozen thesis estimator concluded from it, and the experiments that push the instrument until it stops working. Every page here reads a file built offline; nothing asks the fleet a question while you look.

Live on real data lake snapshot

Occupancy

How many people were in the library?

Pick a day on the calendar and see people per minute: the Wi-Fi room level, calibrated that day against the Bluetooth devices the fleet heard, and fused with them. The people scale is a stated assumption you can move. A gap is a gap; nobody fills it with a zero.

What it shows, what it reads, and the one thing to know first
On the page
The room's state now, a week of quarter hours, and the chosen day minute by minute with the fused level and its band. A headcount appears where labelled examples support one. The per-receiver comparisons, the calibrated count archive and the instrument are linked as diagnostics.
Where the numbers come from
A snapshot built offline from the measurement lake's per-minute injector envelope on every library radio configuration, bystander Bluetooth per receiver (non-public addresses only: the public ones are the floor's static advertisers), and the labelled windows in the vault. The people-per-minute fit is run offline too, into a versioned publication. The site reads local copies; no request reaches the lake or S3, and no request fits a model.
Read this first
Each receiver is compared with its own previous empty night, so a radio configuration that never runs at night is a gap. Only one configuration has labelled examples, and there two and three people share one interval: most occupied minutes carry no number.
Open
Companion labs (1)
  • Episodes Live on real data

    When was the floor occupied, as visits rather than as minutes?

Live on real data vault evidence · BLE · CSI

Bluetooth in the room

What do the fleet's Bluetooth scanners hear, how far does it count, and what does it teach the Wi-Fi channel?

Every library node also listens for Bluetooth. It hears the phones, watches and laptops of whoever is on the floor, as anonymous addresses that change every few minutes. This page shows what that stream is made of, the day the crowd arrived, a week of it by the hour, and how far it gets towards a count of people.

What it shows, what it reads, and the one thing to know first
On the page
The static background and why it is the public addresses; the onset of the bystander crowd from both BLE sources; the day-by-hour table; the first Bluetooth occupancy model with its uncalibrated rate; the CSI of a fixed link calibrated by Bluetooth against the clock, the Wi-Fi frame rate and device-free Bluetooth, with three recalibration regimes; and the literature estimators on the labels that exist.
Where the numbers come from
Evidence files the ble-daily notebooks pin in the vault (_attachments/figures/src/), synced to the site. No request reaches the lake, S3 or the fleet; a missing file is shown as not built.
Read this first
Counts are addresses, not devices and not people. The people rate rests on four labels from one visit, so its interval spans a factor of four to seven. The CSI calibration covers two links on one channel.
Open
Live on real data four models · BLE · CSI

The estimators, day by day

What did the thesis estimator say about the library, minute by minute, on every day it has run?

Explore what the most accurate model believed: whether the library was empty, lightly used or busy, which band of headcounts it thought likely, and how wide its honest answer had to be. See every day at once, open one day beside the radio signals it read, or lay several days over each other. A separate view ranks every model by how close it came to the people counted on site.

What it shows, what it reads, and the one thing to know first
On the page
The model with the lowest error at the counted visits, with any other one as an overlay: Model 1 (Near-NB, frozen), Model 2 (Room-CMP, candidate), Model 3 (Room-CMP-safe, CSI weighted by forecast) or Model 4 (Room-CMP-rssi, plus the RSSI spread). Four views over every exported day. All days: a day by hour heatmap and the profile of each day class. One day: the Bluetooth count, CSI level, CSI spread and ambient Wi-Fi beside the level probabilities, P(busy) under both priors and the calendar alone, a difference chart, the posterior mean and the six bands with the 90 % set, all on one shared cursor and zoom. Compare: any series for chosen days on one time-of-day axis. Compare the models: what each reads and how far their conclusions part on shared days. Every chart carries a how-to-read fold and its course lesson.
Where the numbers come from
Per-day files each model's study exports from that model's own predictions into the vault, each folder with its model's sha256 checked against its model file. No request reaches the lake, S3 or the fleet, and no request runs the model.
Read this first
Every posterior is filtered: a minute is answered from earlier minutes only and never revised. A day appears only after its CSI is covered by a published lake release; until then it is a stated gap. No people count is shown here, and none enters the model.
Open
Live on real data PostGIS ledger · CSI

Night motion in the closed library

Did anything move in the library while it was closed, more often than chance would say?

At night the library is locked and the radio links between our receivers should sit still. If two of them jolt in the same minute, something may have moved near them, or two restless receivers may have jolted together by luck. This page shows every closed night, what the detector found, and how often luck alone would find as much.

What it shows, what it reads, and the one thing to know first
On the page
A calendar of closed nights coloured by verdict (insufficient, quiet, possible, corroborated), the event count of each night against its chance rate, every night's events on one 22:00 to 06:00 clock, and one night in detail: receivers, peak z, hot minutes and whether Bluetooth activity coincided.
Where the numbers come from
A snapshot built offline from the night-motion ledger in PostGIS, which the detector writes after each night. No request reaches the database, the lake or S3.
Read this first
An event is possible motion near two links, never a person. The detector has had no positive control yet, and an insufficient night is not a quiet one.
Open
Live on real data lake snapshot

The rate ladder

How fast can the transmitter tick before the room stops delivering its ticks, and is day worse than night?

Imagine a metronome in a hall and nine people counting its beats. Speed it up and at some point they start to miss beats; fill the hall with other conversations and they miss more. The fleet runs exactly that: the transmitter steps through a ladder of rates while every receiver counts what arrives.

What it shows, what it reads, and the one thing to know first
On the page
Every ladder the fleet has run, per channel: the schedule of commanded rates as a staircase, then delivered hertz against commanded hertz per receiver with night and day ladders on one axis, and what the envelope and the Doppler band do at each step when the rate is the only thing that moved.
Where the numbers come from
A snapshot built offline from the lake: the illuminator's own step sessions for the commanded rates and their windows, and the observers' per-minute injector frame counts from the reduced minutes. The site reads a local copy; no request reaches the lake or S3.
Read this first
Delivered rate is plotted in hertz against hertz, never as a percentage, because a miss and a deferral look the same in a ratio. A ladder's day and night runs are one draw of the channel each.
Open
Interactive lesson simulation snapshot

Ray atlas

Which radio paths does a person in the library actually touch, and how does that change as they move?

A transmitter fills a room with radio waves that bounce off walls, pass through them and scatter off furniture before they reach each receiver. A person reading at a table or walking to a shelf touches only a few of those paths. This page draws every path a ray tracer found, frame by frame, in 3D, so you can watch which ones the people cut.

What it shows, what it reads, and the one thing to know first
On the page
A 3D view of one simulated room per snapshot: walls, the transmitter and receivers, the walking people, and the strongest paths to each receiver coloured by their last interaction (line of sight, reflected, through a wall, scattered). Play the walk, orbit the room, filter by receiver, interaction and power, or show only the paths that touch a person.
Where the numbers come from
Curated snapshots solved offline with Sionna RT 2.0.1 from simulation runs on S3 and committed with the site. No request reaches S3 or runs the ray tracer.
Read this first
Simulated data. A snapshot keeps the strongest paths per receiver per frame, not every path, and the diffuse scattering strength is an assumption of the run, not a measurement of the room.
Open
3

Keep the books

Whether the numbers above can be trusted: what the fleet captured and what the lake actually decoded. A ledger rather than a detector: a row missing here is a fact, and it is the one nobody reads in a status counter.

Live on real data lake snapshot · vault

Corpus

Which dates, channels and devices does the capture corpus cover?

Filter the recorded dataset by date, channel, device or capture profile. Compare recorded and decoded session-hours, then open the captures behind a total.

What it shows, what it reads, and the one thing to know first
On the page
Coverage by date, channel, device and profile using the same filters. Measurement sessions are the default; bench and quarantined sessions can be included. Session pages retain yields and ownership.
Where the numbers come from
A snapshot built offline from the lake's session tables and the vault's capture notes and experiment cards, rebuilt nightly. Ownership is declared on a card, never inferred from a profile name. The site reads a local copy; no request reaches the lake, S3 or the vault.
Read this first
Session-hours add across devices and belong to the session's start date. Decoded hours mean frame rows exist for every segment; they do not certify usable CSI or current reductions.
Open

Why every tile states its source. A public page that asked the fleet a question on your behalf would slow a running capture and could leak a number nobody has checked. So every instrument here reads either bytes committed to the repository or a snapshot the pipeline built overnight, and the snapshot's own date is printed on the page.