esp-idf/examples/wifi/roaming
kapil.gupta 27101f9454 wpa_supplicant: Add initial roaming support
This commit adds different features from 802.11k and 802.11v
specifications to make the device ready for network assisted
roaming. It also adds initial framework for device to detect
whether it needs to move to a better AP.

Followings are added as part of this.

1. Support for sending neighbor report request and provide
   the report back to the APP.
2. Support for beacon measurement report.
3. Support for link measurement report.
4. Support for sending bss transition management query frame
   (triggered by the APP).
5. Support for bss transition management request and move
   to the candidate based on that.
6. Sending the bss transition management response.
2020-11-17 17:15:26 +05:30
..
main
CMakeLists.txt
Makefile
README.md
sdkconfig.defaults

README.md

Roaming Example

This example demonstrate a roaming example using 11k and 11v APIs.

All the logs are taken after debug enabled:

Beacon request:

I (11125) wpa: scan issued at time=7579442263 I (11125) wpa: BSS: Add new id 1 BSSID b6:fb:e4:4d:6e:22 SSID 'ESPTest' chan 1 I (11135) wpa: BSS: Add new id 2 BSSID d6:fb:e4:4d:6e:22 SSID 'ESPDedicated' chan 1 I (11165) wpa: BSS: Add new id 3 BSSID c6:fb:e4:4d:6e:22 SSID 'ESPGuestNetwork' chan 1 I (11185) wpa: BSS: Add new id 4 BSSID b4:fb:e4:4d:6e:22 SSID 'ESPIndia' chan 1 I (11245) wpa: BSS: Add new id 5 BSSID b8:27:eb:3b:4a:59 SSID 'wpa2_enterprise' chan 6 I (11365) wpa: BSS: Add new id 6 BSSID 38:94:ed:34:07:66 SSID 'Nighthawk' chan 6 I (11365) wpa: BSS: Add new id 7 BSSID 10:da:43:dc:99:20 SSID 'NETGEAR40' chan 6 I (12435) wpa: BSS: Add new id 8 BSSID c6:fb:e4:4d:7c:89 SSID 'ESPGuestNetwork' chan 11 I (12445) wpa: BSS: Add new id 9 BSSID d6:fb:e4:4d:7c:89 SSID 'ESPDedicated' chan 11 I (12455) wpa: BSS: Add new id 10 BSSID b6:fb:e4:4d:7c:89 SSID 'ESPTest' chan 11 I (12485) wpa: BSS: Add new id 11 BSSID b4:fb:e4:4d:7c:89 SSID 'ESPIndia' chan 11 I (12825) wpa: scan done received I (12845) wpa: action frame sent I (12845) wpa: action frame sent

Sta's moving from one AP to another on BTM request:

I (379479) wpa: WNM: RX action 7 from 50:3e:aa:26:35:42 I (379479) wpa: WNM: BSS Transition Management Request: dialog_token=1 request_mode=0x1 disassoc_timer=0 validity_interval=1 I (379489) wpa: WNM: Neighbor report tag 52 I (379499) wpa: WNM: Subelement id=3 len=1 I (379499) wpa: WNM: BSS Transition Candidate List I (379509) wpa: 0: b4:e6:2d:eb:1d:76 info=0x0 op_class=81 chan=1 phy=7 pref=255 I (379519) wpa: WNM: Candidate list valid for 102 ms I (379519) wpa: WNM: Scan only for a specific BSSID since there is only a single candidate b4:e6:2d:eb:1d:76 I (379539) wpa: scan issued at time=9979439869 I (379539) wpa: BSS: Add new id 12 BSSID b4:e6:2d:eb:1d:76 SSID 'roaming_test123' chan 6 I (381979) wpa: scan done received I (381979) wpa: WNM: Process scan results for BSS Transition Management I (381979) wpa: WNM: Found an acceptable preferred transition candidate BSS b4:e6:2d:eb:1d:76 (RSSI -7) I (381989) wpa: WNM: Transition to BSS b4:e6:2d:eb:1d:76 based on BSS Transition Management Request after_new_scan=1) I (381999) wpa: WNM: Sending successful BSS Transition Management Response I (382009) wpa: WNM: Send BSS Transition Management Response to 50:3e:aa:26:35:42 dialog_token=1 status=0 reason=0 delay=0 I (382019) wpa: action frame sent I (382029) wpa: WNM: Issuing connect I (382029) wifi:state: run -> init (0) I (382029) wifi:pm stop, total sleep time: 102136757 us / 109258805 us

I (382039) wifi🆕<6,0>, old:<6,0>, ap:<255,255>, sta:<6,0>, prof:1 I (382769) wifi🆕<6,1>, old:<6,0>, ap:<255,255>, sta:<6,1>, prof:1 I (384689) wifi:state: init -> auth (b0) I (384699) wifi:state: auth -> assoc (0) I (384709) wifi:state: assoc -> run (10) I (384729) wifi:connected with roaming_test123, aid = 1, channel 6, 40U, bssid = b4:e6:2d:eb:1d:76 I (384729) wifi:security: WPA2-PSK, phy: bgn, rssi: -7 I (384729) wifi:pm start, type: 1

I (384789) wifi:AP's beacon interval = 102400 us, DTIM period = 2 I (385609) esp_netif_handlers: sta ip: 192.168.4.2, mask: 255.255.255.0, gw: 192.168.4.1