Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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”.