Research-grade Wi-Fi CSI extraction for commodity Atheros 802.11n (ath9k) NICs on Linux
Authorship / Origin
Developed by Yaxiong Xie under the supervision of Prof. Mo Li (PhD advisor), WANDS group.
- 🌐 Project website (docs / setup / examples / citation): https://wands.hk/external/wifi/AtherosCSI/index.html
- 🧰 User-space capture & parser tools: https://github.com/xieyaxiongfly/Atheros-CSI-Tool-UserSpace-APP
- What this is
- Why CSI / what you can do
- Key features
- Hardware support
- Getting started
- CSI format
- Reproducibility notes
- Citation
- Contributing
- Credits
- License
Atheros-CSI-Tool extracts fine-grained Wi-Fi Channel State Information (CSI) from
off-the-shelf Atheros 802.11n NICs supported by the Linux ath9k driver stack.
It enables reproducible experiments on commodity platforms (PCs / embedded boards / routers), and has been widely used by the research community for Wi-Fi sensing, localization, and wireless measurement.
CSI provides per-subcarrier complex channel responses at the PHY layer and enables research in:
| Area | Example topics |
|---|---|
| Wi-Fi sensing | activity recognition, gesture, respiration, tracking |
| Localization & analytics | fingerprinting, channel analytics, AoA/ToF-related processing |
| Wireless measurement | debugging, environment characterization, cross-layer studies |
| Security & robustness | device/channel signatures, anomaly detection |
- ✅ Per-packet CSI (complex-valued across OFDM subcarriers)
- ✅ Rich metadata (platform/config dependent): timestamps, RSSI per chain, rate/MCS, payload, driver-level info
- ✅ Commodity-friendly: built on
ath9k(no firmware hacks) - ✅ Multi-receiver ready: one TX packet can be collected by multiple RX nodes (each logging CSI)
- ✅ Tooling ecosystem: pair kernel-side extraction with user-space logging/parsing utilities
Target: Atheros 802.11n chipsets supported by ath9k.
Validated chipsets (commonly used in the community):
| Chipset | Status |
|---|---|
| AR9580 | ✅ validated |
| AR9590 | ✅ validated |
| AR9344 | ✅ validated |
| QCA9558 | ✅ validated |
For recommended NIC/router models and practical setup notes, see:
https://wands.hk/AtherosCSI/index.html
This repository provides the kernel-side components. For end-to-end CSI logging (setup → capture → parse → export), follow the documentation portal:
- Read docs & pick your platform (Ubuntu / OpenWRT)
https://wands.hk/AtherosCSI/index.html - Install/build according to the website guide
- Use the user-space tools to capture/parse CSI
https://github.com/xieyaxiongfly/Atheros-CSI-Tool-UserSpace-APP
In OFDM Wi-Fi systems, CSI is typically represented as a complex tensor per received packet:
- 20 MHz: often
Ntx × Nrx × 56subcarriers - 40 MHz: often
Ntx × Nrx × 114subcarriers
Exact dimensions and header fields depend on bandwidth / NIC / configuration.
For detailed format explanation & examples, see:
https://wands.hk/external/wifi/AtherosCSI/index.html
If you are collecting datasets or evaluating algorithms, we recommend logging and reporting:
- Hardware: NIC/router model + chipset
- Software: OS image, kernel version,
ath9kversion/commit - Radio config: channel, bandwidth, TX power, antenna chains, MCS/rate settings
- Data: raw CSI + per-packet metadata (rate, RSSI, timestamps) and parsing scripts
If you use Atheros-CSI-Tool in academic work, please cite the tool page and any associated references listed there:
https://wands.hk/external/wifi/AtherosCSI/index.html
Contributions are welcome—especially:
- expanding chipset/platform coverage
- improving documentation & troubleshooting
- adding parsers/exporters and reproducible experiment scripts
Please open an issue before large changes.
If this project supports your research, starring the repo helps others discover it ⭐
GPL (see COPYING).