#include #include // Arduino-ESP32 WiFi (works on ESP32-C6 with Arduino 3.x) static const char* authModeToStr(wifi_auth_mode_t m) { switch (m) { case WIFI_AUTH_OPEN: return "OPEN"; case WIFI_AUTH_WEP: return "WEP"; case WIFI_AUTH_WPA_PSK: return "WPA_PSK"; case WIFI_AUTH_WPA2_PSK: return "WPA2_PSK"; case WIFI_AUTH_WPA_WPA2_PSK: return "WPA/WPA2_PSK"; case WIFI_AUTH_WPA2_ENTERPRISE:return "WPA2_ENT"; case WIFI_AUTH_WPA3_PSK: return "WPA3_PSK"; case WIFI_AUTH_WPA2_WPA3_PSK: return "WPA2/WPA3"; case WIFI_AUTH_WAPI_PSK: return "WAPI_PSK"; case WIFI_AUTH_OWE: return "OWE"; default: return "UNKNOWN"; } } void setup() { Serial.begin(115200); delay(300); // Scan as a station, disconnected WiFi.mode(WIFI_STA); WiFi.persistent(false); WiFi.disconnect(true, true); WiFi.setSleep(false); Serial.println("\nWiFi scanner ready."); } void loop() { Serial.println("\n--- Scanning... ---"); // Synchronous scan; set 2nd arg to true to include hidden SSIDs int n = WiFi.scanNetworks(/*async=*/false, /*show_hidden=*/true); if (n <= 0) { Serial.println("No networks found."); } else { Serial.printf("Found %d network(s):\n", n); for (int i = 0; i < n; ++i) { String ssid = WiFi.SSID(i); String bssid = WiFi.BSSIDstr(i); int32_t rssi = WiFi.RSSI(i); int32_t ch = WiFi.channel(i); auto auth = (wifi_auth_mode_t)WiFi.encryptionType(i); bool hidden = (ssid.length() == 0); // no API needed if (hidden) ssid = "(hidden)"; Serial.printf("%2d) %-32s BSSID:%s CH:%2ld RSSI:%4ld dBm AUTH:%s\n", i + 1, ssid.c_str(), bssid.c_str(), (long)ch, (long)rssi, authModeToStr(auth) ); } } WiFi.scanDelete(); // free RAM delay(5000); }