4.30.5 Building Unit Test App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506
4.30.6 Running Unit Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506
4.30.7 Timing Code with Cache Compensated Timer . . . . . . . . . . . . . . . . . . . . . . . 1507
4.30.8 Mocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1508
4.31 Unit Testing on Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510
4.31.1 Embedded Software Tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510
4.31.2 IDF Unit Tests on Linux Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1510
4.32 USB OTG Console . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1511
4.32.1 Hardware Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1511
4.32.2 Software Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1511
4.32.3 Uploading the Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512
4.32.4 Limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512
4.33 Wi-Fi Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513
4.33.1 ESP32-S2 Wi-Fi Feature List . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513
4.33.2 How To Write a Wi-Fi Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1513
4.33.3 ESP32-S2 Wi-Fi API Error Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1514
4.33.4 ESP32-S2 Wi-Fi API Parameter Initialization . . . . . . . . . . . . . . . . . . . . . . . 1515
4.33.5 ESP32-S2 Wi-Fi Programming Model . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515
4.33.6 ESP32-S2 Wi-Fi Event Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1515
4.33.7 ESP32-S2 Wi-Fi Station General Scenario . . . . . . . . . . . . . . . . . . . . . . . . . 1518
4.33.8 ESP32-S2 Wi-Fi AP General Scenario . . . . . . . . . . . . . . . . . . . . . . . . . . . 1521
4.33.9 ESP32-S2 Wi-Fi Scan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1521
4.33.10 ESP32-S2 Wi-Fi Station Connecting Scenario . . . . . . . . . . . . . . . . . . . . . . . 1528
4.33.11 ESP32-S2 Wi-Fi Station Connecting When Multiple APs Are Found . . . . . . . . . . . 1532
4.33.12 Wi-Fi Reconnect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532
4.33.13 Wi-Fi Beacon Timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532
4.33.14 ESP32-S2 Wi-Fi Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532
4.33.15 Wi-Fi Easy Connect™ (DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1538
4.33.16 Wireless Network Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1538
4.33.17 Radio Resource Measurement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1538
4.33.18 Wi-Fi Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1539
4.33.19 ESP32-S2 Wi-Fi Power-saving Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1539
4.33.20 ESP32-S2 Wi-Fi Throughput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1540
4.33.21 Wi-Fi 80211 Packet Send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1540
4.33.22 Wi-Fi Sniffer Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1543
4.33.23 Wi-Fi Multiple Antennas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1543
4.33.24 Wi-Fi Channel State Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1544
4.33.25 Wi-Fi Channel State Information Configure . . . . . . . . . . . . . . . . . . . . . . . . . 1545
4.33.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1546
4.33.27 Wi-Fi QoS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1546
4.33.28 Wi-Fi AMSDU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547
4.33.29 Wi-Fi Fragment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547
4.33.30 WPS Enrollee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547
4.33.31 Wi-Fi Buffer Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1547
4.33.32 How to improve Wi-Fi performance . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1548
4.33.33 Wi-Fi Menuconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1551
4.33.34 Troubleshooting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1554
4.34 Wi-Fi Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1558
4.34.1 ESP32-S2 Wi-Fi Security Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1560
4.34.2 Protected Management Frames (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1560
4.34.3 WPA3-Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1561
5 Libraries and Frameworks 1563
5.1 Cloud Frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563
5.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563
5.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563
5.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563
5.1.4 Google IoT Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1563
viii