Open-source Rust tooling for Wi-Fi Channel State Information (CSI) on ESP32 devices
From no_std firmware on the radio to host-side servers and desktop clients:
collect, stream, visualize, and record CSI with a single, consistent toolchain.
Channel State Information describes how a Wi-Fi signal propagates between a transmitter and a receiver: the amplitude and phase of every subcarrier. Because people and objects in a room disturb that channel, CSI is the raw material for Wi-Fi sensing: presence and motion detection, activity recognition, localization, and more.
csi-rs makes that data easy to get from inexpensive ESP32 boards, using the terminology of IEEE 802.11bf (WLAN Sensing) wherever the standard has one.
flowchart LR
subgraph Embedded["Embedded tier (ESP32 nodes)"]
CORE["esp-csi-rs<br/><sub>no_std CSI driver</sub>"]
CLI["esp-csi-cli-rs<br/><sub>ready-to-flash firmware</sub>"]
LITE["esp-csi-litetui-rs<br/>esp-csi-litegui-rs<br/><sub>on-device scopes</sub>"]
CORE --> CLI
CORE --> LITE
end
subgraph Host["Host tier (controller)"]
SRV["csi-webserver-rs<br/><sub>USB to HTTP/WebSocket bridge</sub>"]
SCORE["csi-webserver-core-rs<br/><sub>embeddable library</sub>"]
WEB["csi-webclient-rs<br/><sub>desktop GUI</sub>"]
SCORE --> SRV
SRV -- "HTTP / WS" --> WEB
end
CLI -- "USB serial" --> SRV
| Repository | Description |
|---|---|
| esp-csi-rs | The core no_std crate for collecting CSI on ESP32-series devices. Station, sniffer, softAP, raw 802.11 emitter, and ESP-NOW modes, with multiple output formats. |
| esp-csi-cli-rs | Pre-built firmware with a serial command-line interface. Flash it and configure CSI collection without writing any code. |
| esp-csi-litetui-rs | A handheld CSI scope for the M5Stack CoreS3 SE: live visualization and SD-card logging. |
| esp-csi-litegui-rs | Live CSI heatmap on ESP32-S3 AMOLED boards (Waveshare, LilyGo T4-S3). |
| Repository | Description |
|---|---|
| csi-webserver-rs | Ready-to-run server that discovers boards over USB and exposes them over HTTP/WebSocket, with optional Parquet session dumps. |
| csi-webserver-core-rs | The library behind csi-webserver, for embedding the CSI server in your own application. |
| csi-webclient-rs | Native desktop client for configuring, controlling, and recording one or many devices through csi-webserver. |
Supported chips: ESP32, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-S3.
-
Flash a board with
esp-csi-cli-rs(pre-built binaries are available in its releases). -
Run the host server:
cargo install csi-webserver csi-webserver
-
Connect with
csi-webclient-rs, or talk to the HTTP/WebSocket API directly.
Prefer to write your own firmware? Add esp-csi-rs
to your project and read the
network model.
Issues and pull requests are welcome on any of the repositories above. Please read our Code of Conduct before participating.
All projects are licensed under Apache-2.0 unless stated otherwise.