Roaming aggressiveness wpa_supplicant

Saskia van Emst s.vanemst at robotsecuritysystems.com
Wed Mar 23 04:10:00 PDT 2016


Hi, 

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:

update_config=1
ctrl_interface=/var/run/wpa_supplicant
fast_reauth=1
pmf=1
okc=1

network={
    ssid="LOBECO_SECURE"
    key_mgmt=WPA-PSK
    psk="***"
    bgscan="simple:5:-55:30"
}

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
<3>CTRL-EVENT-SCAN-STARTED
<3>CTRL-EVENT-SCAN-RESULTS
scan_results
> 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.

Best regards,
Saskia



More information about the Hostap mailing list