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/)
https://stevenmhernandez.github.io/ESP32-CSI-Tool/
MIT License
262 stars 72 forks source link

How to implement "passtive" subproject to get data from AP or STA? #73

Closed Sunlu2333 closed 1 year ago

Sunlu2333 commented 1 year ago

Describe the bug The CSI of the two ESP32 boards cannot be obtained after burning the passive subproject into the third ESP32.

Tool Settings

To Reproduce Steps to reproduce the behavior:

  1. Build project(s) active_ap, active_sta, passive

  2. Flash project(s) active_ap, active_sta, passive to 3 ESP32s

  3. menuconfig: image image image

  4. When using channel 4 for above 3 projects, I can not sniffer any data from other device, and unable to get data from AP or STA. While CSI can be normally obtained between AP and STA. image

Desktop (please complete the following information):

Sunlu2333 commented 1 year ago

Actually I have get some information when monitor "passive" and encounter some problems as follows image image image

StevenMHernandez commented 1 year ago

I am unable to test right now, but previously I have seen these panic_abort messages randomly as well. I found reflashing the ESP32 or trying a new ESP32 would often fix the issue. Try something like this:

idf.py fullclean  # Cleans old build files
idf.py flash monitor
Gowtham-Gorajana commented 1 year ago

@Sunlu2333 can you please share how to get the csi data using two esp32s

Sunlu2333 commented 1 year ago

@Sunlu2333 can you please share how to get the csi data using two esp32s

Follow the readme guide and add command ”idf.py set-target esp32“ according to your type of board(e.g. esp32s2、esp32, etc)before "idf.py build".

Sunlu2333 commented 1 year ago

I am unable to test right now, but previously I have seen these panic_abort messages randomly as well. I found reflashing the ESP32 or trying a new ESP32 would often fix the issue. Try something like this:

idf.py fullclean  # Cleans old build files
idf.py flash monitor

Thank you for your answer. I found that I forgot to check the channel state information in the wifi configuration, and now it works normally. But I have a new problem: When I use one ESP32 board as AP and two ESP32 boards as STAs, which ping the same AP at the same time, and the fourth ESP32 board is assigned to passive, I can only receive CSI from one of the STAs, and the number of packets received is very small (All four boards work in channel 4). Can you give me some suggestions?

StevenMHernandez commented 1 year ago

For future reference: panic_abort may be caused by not enabling:

Component config > Wi-Fi > WiFi CSI(Channel State Information)

in menuconfig. Thanks for sharing this!

Your second question is a good one. If you have one AP and two STAs, typically one of the STAs overwhelms the AP and the other STA suffers as a result. One solution to this is to allow time between packet transmissions so that both STAs transmit equally. Unfortunately we do not have any public implementations for successfully using multiple STAs with one AP. However, if you are interested in working on implementing and evaluating this project, please let me know. We could always use the help! Thanks!

Also, based on your screenshots, I would suggest increasing the BAUD_RATE so that more CSI data can pass through the serial port.

StevenMHernandez commented 1 year ago

Follow the readme guide and add command ”idf.py set-target esp32“ according to your type of board(e.g. esp32s2、esp32, etc)before "idf.py build".

@Sunlu2333 which version of the esp-idf are you using? Should idf.py set-target esp32 should be added to the README, or is the default value always esp32?

Sunlu2333 commented 1 year ago

version: idf 4.4

I'm not sure, but without this command, I saw nothing when opening the monitor. Before: image After: image image

StevenMHernandez commented 1 year ago

I believe this issue has been solved. @Sunlu2333, please let me know if you have any other issues with the project.