- Saved searches
- Use saved searches to filter your results more quickly
- License
- jonathanmuller/ESP32-gather-channel-state-information-CSI-
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Saved searches
- Use saved searches to filter your results more quickly
- channel-state-information
- Here are 23 public repositories matching this topic.
- StevenMHernandez / ESP32-CSI-Tool
- Marsrocky / Awesome-WiFi-CSI-Sensing
- ludlows / CSI-Activity-Recognition
- Retsediv / WIFI_CSI_based_HAR
- yongsen / SignFi
- spanev / linux-80211n-csitool
- nexmonster / nexmon_csi
- ChunjingXiao / CsiGAN
- tahmidzbr / Human-Activities-Gestures-Recognition-using-Channel-State-Information-CSI-of-IEEE-802.11n
- itskalvik / WiFi-user-recognition
- arthurgassner / thymio-radio-map
- putterer / csi-server
- dingyiyi0226 / gesture-recognition-csi
- cheeseBG / csi-visualization
- lcsig / Dataset-for-Wi-Fi-based-human-activity-recognition-in-LOS-and-NLOS-indoor-environments
- wldhg / 15na-tools
- channelcharting / channelcharting.github.io
- winwinashwin / CSI-Sense-Zero
- wldhg / 15na-server
- nexmonster / picsi
- Improve this page
- Add this topic to your repo
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
Get CSI frames (Channel State Information) with the use of an ESP32 WiFi chip
License
jonathanmuller/ESP32-gather-channel-state-information-CSI-
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md
Gather CSI (Channel State Information) frames with the use of an ESP32 WiFi chip
This project allows to extract WiFi CSI (Channel State Information) frames from compatible AP by using an ESP32 chip. Those CSI frames can be processed in order to precisely localize it using phase aggregation or fingerprinting.
This project is under active developement, do not hesitate to contact me (email on my bio/issues) if you have question, suggestions, informations or spotted errors, I usually respond within few days.
The goal of this project is :
- To send 802.11n frames (So AP respond with CSI frames)
- Partially done : CSI frames consistently works between 2 ESP32 boards. It should also work with any commercial AP. The only part left is to send CSI without being connected
- You can help by finding a way to use esp_wifi_80211_tx at the same time as the esp_wifi_internal_set_fix_rate private function
- Done : CSI frames are catched and loged (in an unfriendly format for now)
- You can help by understanding why some frames are dropped by filter_promi_ctrl_field (see «WIFI_PROMIS_CTRL_FILTER_MASK_ALL» in code)
- To do : Need more progress
- Done : 802.11n frames are catched, logged, and converted to pcap (wireshark friendly)
- Partially done : Need to validate the informations
- You can help by verifying the informations
First figure how to upload a code on your ESP32 board (it should be easy, many tutorials are available, including a detailed one on Espressif github : https://docs.espressif.com/projects/esp-idf/en/stable/get-started/), then you can use one of the folliwng folders :
- «create_STA_and_AP» -> Using 2 ESP32 boards connected over WiFi. One send an UDP packet, which triggers the CSI callbal on the other.
- «gather_csi_in_promiscuous» -> Loop across the 13 WiFi channels and print any CSI frame
- «read_non_csi_frames» -> Print NON-CSI frames in HEX (so you can dump them and see them on WireShark for example)
- «request_csi_frames» -> (Missing esp_wifi_80211_tx call) Send a OFDM/802.11n to an AP which should answer with a CSI frame
- CSI is a preamble to frames.
- It is used to determin the «noise» between the STA and the AP (which is assumed to be the same as the AP to the STA)
- It is a specificity of the 802.11n mode, which is enabled only under certain conditions. Exemple : STA send a frame to the AP at speed > 6mb/s [which is OFDM] AP respond with a frame at speed > 6 mb/s [which is OFDM] -> The ESP32 extract the CSI header This means that to generate CSI preamble with an ESP32 you need to be connected to the AP, else you can’t send at >6mb/s ans there will be no CSI preamble. You can’t only use «esp_wifi_80211_tx» without being connected (because it will only send at 1 mb/s). So you also need to use the hidden «esp_wifi_internal_set_rate» function.
If you have more informations, please let me know so it is (finally ..) possible to continously receive CSI frames from any AP without being connected to it
There is currently a bug in Espressif SDK where CSI callback is triggered instead of promiscuous callback. See issue espressif/esp-idf#2909
This means for now I have to apply a filter on rx_ctrl.sig_mode so only valid CSI frames are shown (thanks @kraoa).
If your code is dater before 03.04.2019 your results may be affected.
Can the ESP32 do the same as the IWL5300 ?
No, it physically can't. IWL5300 has multiple antennas while the ESP32 only has one
I don’t receive CSI frames
Normally this code scan across the 13 avaible channels, is it so ? If yes, maybe your AP don't send any CSI frames
I dont understand what is in the CSI frame
Please see https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/wifi.html?highlight=channel%20state%20information#wi-fi-channel-state-information
How can I access X (header, gain control, raw info, . )
It is very specific, you can suggest me to add this information by "issue" or by contacting me via email
NB : I have a modified/hacked WiFi library which allow to send any frame but I will NOT upload it. Nevertheless I can explain you approximately how to get the same result
About
Get CSI frames (Channel State Information) with the use of an ESP32 WiFi chip
Saved searches
Use saved searches to filter your results more quickly
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.
channel-state-information
Here are 23 public repositories matching this topic.
StevenMHernandez / ESP32-CSI-Tool
Extract Channel State Information from WiFi-enabled ESP32 Microcontroller. Active and Passive modes available. (https://stevenmhernandez.github.io/ESP32-CSI-Tool/)
Marsrocky / Awesome-WiFi-CSI-Sensing
A list of awesome papers and cool resources on WiFi CSI sensing.
ludlows / CSI-Activity-Recognition
Human Activity Recognition using Channel State Information
Retsediv / WIFI_CSI_based_HAR
Human Activity Recognition based on WiFi Channel State Information
yongsen / SignFi
Sign Language Recognition using WiFi and Convolutional Neural Networks
spanev / linux-80211n-csitool
802.11n CSI Tool based on iwlwifi and Linux
nexmonster / nexmon_csi
Channel State Information for Raspberry Pi. Use the pi-5.10.92 branch.
ChunjingXiao / CsiGAN
An implementation for our paper: CsiGAN: Robust Channel State Information-based Activity Recognition with GANs (IEEE Internet of Things Journal, 2019), which is the semi-supervised Generative Adversarial Network (GAN) for Channel State Information (CSI) -based activity recognition.
tahmidzbr / Human-Activities-Gestures-Recognition-using-Channel-State-Information-CSI-of-IEEE-802.11n
This is a data-set for Human Activities & Gestures Recognition (HAGR) using the Channel State information (CSI) of IEEE 802.11n devices
itskalvik / WiFi-user-recognition
Gait Based User Recognition from Channel State Information(CSI) collected from WiFi Data
arthurgassner / thymio-radio-map
Automated radio map construction using a Thymio II and a Software-Defined Radio (SDR)
putterer / csi-server
A server for shipping channel state information obtained using the Atheros CSI Tool via UDP in real time.
dingyiyi0226 / gesture-recognition-csi
Gesture recognition by wifi channel state information (CSI)
cheeseBG / csi-visualization
📊 Wi-Fi Channel State Information(CSI) visualization with python
lcsig / Dataset-for-Wi-Fi-based-human-activity-recognition-in-LOS-and-NLOS-indoor-environments
Baha’ A. Alsaify, Mahmoud M. Almazari, Rami Alazrai, Mohammad I. Daoud, A dataset for Wi-Fi-based human activity recognition in line-of-sight and non-line-of-sight indoor environments, Data in Brief, Volume 33, 2020, 106534, ISSN 2352-3409, https://doi.org/10.1016/j.dib.2020.106534.
wldhg / 15na-tools
Data processing tools for CSI motion recognition
channelcharting / channelcharting.github.io
winwinashwin / CSI-Sense-Zero
Realtime Wi-Fi CSI based Human Activity Recognition on a Raspberry Pi Zero + ESP32 setup
wldhg / 15na-server
Real-time CSI classifier using MATLAB and Keras [NOTE: You may have to change «wldh-g» to «wldhg» in README links]
nexmonster / picsi
Nexmon CSI utilities for Raspberry Pi
Improve this page
Add a description, image, and links to the channel-state-information topic page so that developers can more easily learn about it.
Add this topic to your repo
To associate your repository with the channel-state-information topic, visit your repo’s landing page and select «manage topics.»