From 123df30351accff0ea2aa8a804613f167d8f9f4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Volkan=20TA=C5=9ECI?= Date: Mon, 1 Jun 2026 18:58:34 +0300 Subject: [PATCH] fix(firmware): change promiscuous filter to ALL frames for CSI capture MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ESP32-S3 CSI requires DATA frames (LTF extraction) — MGMT-only filter silences CSI entirely on this chip revision because management frames (beacons, probe req/resp) contain no extractable LTF. Root cause: CSI yield=0pps despite WiFi connected and RSSI healthy. Fix: WIFI_PROMIS_FILTER_MASK_MGMT → WIFI_PROMIS_FILTER_MASK_ALL. Verified on Heltec LoRa V3 (ESP32-S3FN8 rev v0.2, Zyxel_D631 AP). Post-fix yield: 5-8 pps stable. Note: On busy networks (100+ data frames/sec) this may cause WiFi HW interrupt storms that crash Core 0. Low-traffic networks are safe. --- firmware/esp32-csi-node/main/csi_collector.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/esp32-csi-node/main/csi_collector.c b/firmware/esp32-csi-node/main/csi_collector.c index 484b40cc..0ad623c2 100644 --- a/firmware/esp32-csi-node/main/csi_collector.c +++ b/firmware/esp32-csi-node/main/csi_collector.c @@ -472,7 +472,7 @@ void csi_collector_init(void) * adds ~10 Hz probe responses from APs → ~20 Hz total, matching the * edge processing designed sample rate of 20 Hz. */ wifi_promiscuous_filter_t filt = { - .filter_mask = WIFI_PROMIS_FILTER_MASK_MGMT, + .filter_mask = WIFI_PROMIS_FILTER_MASK_ALL, }; ESP_ERROR_CHECK(esp_wifi_set_promiscuous_filter(&filt));