Preface
Channel State Information has been a research instrument for fifteen years and a deployable technology for about three. The gap between those dates is mostly a story about hardware: extracting CSI used to mean a patched Broadcom firmware or a specific Intel NIC in a desktop running a modified kernel, and it now means a three-dollar microcontroller that runs on a battery.
That change is what csi-rs exists to take advantage of. It is an umbrella
project building an open, community-driven ecosystem of libraries, tools, and
documentation for CSI-based work in Rust. The current focus is narrow and
deliberate: making CSI collection accessible, convenient, and robust on
cheap and widely available devices, so that the barrier to starting is as low as
we can make it. What you do with the data afterwards is a much larger field, and
one we would rather feed than fence in.
We chose Rust because collection is the part of the problem where correctness is
cheapest to enforce at compile time and most expensive to debug at three in the
morning — a borrowed buffer in an interrupt callback, a concurrent queue drained
from another core — and because no_std Rust turns out to fit these parts
comfortably. The csi-rs chapter makes that
case with numbers.
Who This Book Is For
Two audiences, reading in different directions.
If you are new to Wi-Fi sensing, start at the beginning and read straight through. The first three chapters build up from what Wi-Fi sensing is and why the channel carries information about a room, through the mathematics of CSI, to how the field has historically extracted it and why that changed. No radio background is assumed.
If you already know CSI and want the tooling, skip to Crates & Libraries for the reference, or straight to Getting Started to have a board producing data within the hour.
Either way, we assume you are comfortable with Rust, and that you can find your way around a terminal. Embedded experience helps but is not required — The Rust on ESP Book covers that ground, and we point at it where it matters rather than reproducing it.
How the Book Is Organised
- Chapters 0–2 are explanation. What CSI is, what the field has done with it, and why this project exists.
- Chapter 3 is reference. One section per crate, covering what it is, where it sits, and how to use it.
- Chapter 4 is the walkthrough. From an unopened board to a recorded dataset, in five steps.
- Chapter 5 is what comes after collection: processing, classification, and the diagnosis of captures that do not look right.
The appendix carries a consolidated reference list and an FAQ.
A Note on Honesty
This ecosystem moves quickly, and parts of it are further along than others. Where something does not work, the book says so plainly rather than leaving you to discover it. Where documentation in the source repositories has fallen out of step with the code, the book follows the code and says which is which. Where a technique is genuinely unsolved, such as making a trained model survive a change of room, it is described as unsolved.
We would rather be useful than impressive.
Contributing
This book is a work in progress, and so is everything it documents. If you find an error, a gap, or an instruction that does not work on your hardware, every kind of contribution is welcome — including the kind that just says “this section confused me”.