To everyone claiming this project is an "elaborate hoax"
Let me save you some time: it works. WiFi CSI-based human sensing is not science fiction; it's published, peer-reviewed research dating back over a decade. The fact that you couldn't get it running on your random WiFi dongle from 2014 does not constitute a scientific rebuttal.
The actual problem
You're not using CSI-compatible hardware. That's it. That's the whole mystery.
Not every WiFi chipset exposes Channel State Information. Most consumer hardware doesn't. This isn't a bug, it's a hardware capability that specific chipsets support. If your device doesn't expose CSI data, you will get exactly nothing, and then apparently come here to tell me the laws of physics are wrong.
What actually works
| Hardware |
CSI Support |
Cost |
Difficulty |
| ESP32-S3 |
✅ Native promiscuous mode |
~$8 |
Easiest |
| Intel 5300 NIC |
✅ With modified firmware |
~$15 used |
Moderate |
| Atheros AR9580 |
✅ With ath9k patches |
~$20 used |
Moderate |
| Your laptop's built-in WiFi |
❌ Almost certainly not |
$0 |
Impossible |
The ESP32-S3 is the cheapest, most accessible path. We have:
- Working firmware in
firmware/esp32-csi-node/
- A Rust aggregator that parses live CSI frames
- 693 captured frames at ~21.6 fps with zero frame loss (ADR-018)
- 20 Rust tests + 6 Python tests passing
- A complete step-by-step tutorial that walks you through every single step
What CSI actually gives you
Each WiFi frame carries channel state information — amplitude and phase across subcarriers. When a human body moves through the signal path, it changes the multipath propagation pattern. This is measurable. This is physics. The ESP32 gives you 64/128/192 subcarrier I/Q pairs at ~20 Hz. Amplitude variance correlates with motion. This has been demonstrated in hundreds of papers.
Before opening an issue claiming it's fake
- Check your hardware. Is it on the supported list? No? That's your answer.
- Read the tutorial. All of it. Including the prerequisites table.
- Actually build and flash the firmware. With an actual ESP32-S3.
- Run the aggregator. See the frames arrive. Walk near the antenna. Watch the amplitude change.
If you did all four steps and it doesn't work, then open an issue with your hardware model, serial output, and aggregator logs. Happy to help.
If you didn't do any of those steps and just want to argue — I wish you well on your journey, but this isn't the repo for that.
References
For the "this can't possibly work" crowd:
The science is settled. The code is open source. The hardware costs less than lunch. Figure it out or don't, but stop calling working technology a hoax because you skipped the README.
To everyone claiming this project is an "elaborate hoax"
Let me save you some time: it works. WiFi CSI-based human sensing is not science fiction; it's published, peer-reviewed research dating back over a decade. The fact that you couldn't get it running on your random WiFi dongle from 2014 does not constitute a scientific rebuttal.
The actual problem
You're not using CSI-compatible hardware. That's it. That's the whole mystery.
Not every WiFi chipset exposes Channel State Information. Most consumer hardware doesn't. This isn't a bug, it's a hardware capability that specific chipsets support. If your device doesn't expose CSI data, you will get exactly nothing, and then apparently come here to tell me the laws of physics are wrong.
What actually works
The ESP32-S3 is the cheapest, most accessible path. We have:
firmware/esp32-csi-node/What CSI actually gives you
Each WiFi frame carries channel state information — amplitude and phase across subcarriers. When a human body moves through the signal path, it changes the multipath propagation pattern. This is measurable. This is physics. The ESP32 gives you 64/128/192 subcarrier I/Q pairs at ~20 Hz. Amplitude variance correlates with motion. This has been demonstrated in hundreds of papers.
Before opening an issue claiming it's fake
If you did all four steps and it doesn't work, then open an issue with your hardware model, serial output, and aggregator logs. Happy to help.
If you didn't do any of those steps and just want to argue — I wish you well on your journey, but this isn't the repo for that.
References
For the "this can't possibly work" crowd:
esp_wifi_set_csi_config()is a real function in a real SDKThe science is settled. The code is open source. The hardware costs less than lunch. Figure it out or don't, but stop calling working technology a hoax because you skipped the README.