Roaming aggressiveness wpa_supplicant
Saskia van Emst
s.vanemst at robotsecuritysystems.com
Wed Mar 23 04:10:00 PDT 2016
So I have compiled wpa_supplicant v2.5 on a Debian machine running 4.3 kernel. I used the CONFIG_BGSCAN_SIMPLE=y flag to include the bgscan module.
In my wpa_supplicant config I have:
What I want to achieve is aggressive roaming to the access point with the best signal because my station is moving quite fast. It seems though that when an access point with a stronger signal is found, this does not automatically mean the station will roam to it.
In wpa_cli I see this:
<3>CTRL-EVENT-SIGNAL-CHANGE above=0 signal=-64 noise=-95 txrate=180000
> bssid / frequency / signal level / flags / ssid
00:15:6d:a3:12:3b 2412 -23 [WPA2-PSK-CCMP+TKIP][ESS] RobuLAB10
00:12:a9:54:eb:74 2472 -55 [WPA2-PSK-CCMP][ESS] SAMMON
22:90:7f:b4:47:54 5500 -53 [WPA2-PSK-CCMP][ESS] Lobeco_Experience
02:90:7f:b4:47:54 5500 -52 [WPA2-PSK-CCMP][ESS] LOBECO_RenD
12:90:7f:b4:47:54 5500 -52 [WPA2-PSK-CCMP][ESS] RCS-wifi
32:90:7f:b4:47:54 5500 -52 [WPA2-PSK-CCMP][ESS] Lobeco_Gasten
00:90:7f:b4:47:53 2437 -42 [WPA2-PSK-CCMP][ESS] LOBECO_SECURE
dc:9f:db:ac:19:d9 2412 -45 [WPA2-PSK-CCMP][ESS] SAM-02.3
00:90:7f:b4:47:54 5500 -54 [WPA2-PSK-CCMP][ESS] LOBECO_SECURE <--------------------------- Accesspoint with better signal
There are two things I notice:
- When the station moves away from the accesspoint, I see (watching iw wlan0 link) the signal strength drop below the configured -55 dBm for the bgscan module. The message event-signal-change however comes much later. Is this not monitored continuously but on intervals or is there some other explanation?
- When a scan is started, and the results contain an access point with a stronger signal, the station does not immediately roam to it. Are other factors involved in making the roaming decision?
Also I have tried ap_scan=0, which should let the driver do ap scanning/selection but that did not connect at all.
What I hope is that someone can point me to a resource explaining, or explain themselves, how the roaming decision is made by wpa_supplicant. On top of that I would like to know if there is any way of making the roaming process more aggressive and what I could change to achieve that. I would prefer not to have to change the source code but if that is the only option I would love to know where to start.
The Wi-Fi module I am using is a Sparklan WPEA-127N with Atheros AR9380. It uses ath9k.
More information about the Hostap