802.11r Fast Transition how to understand that FT works?

I have a similar configuration:

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option encryption 'psk2'
        option dtim_period '3'
        option key 'xxxxxxxxxxxxxxx
        option ieee80211r '1'
        option mobility_domain 'XXXX'
        option reassociation_deadline '20000'
        option ft_over_ds '0'
        option ft_psk_generate_local '1'
        option ssid 'xxxxxx'
        option wpa_group_rekey '86400'
        option nasid 'xxlocalmacxx'
        option ieee80211v '1'
        option ieee80211k '1'
        option time_advertisement '2'
        option time_zone 'GMT0'
        option rrm_neighbor_report '1'
        option rrm_beacon_report '1'
        option wnm_sleep_mode '1'
        option bss_transition '1'

Main difference is ft_psk_generate_local '1' (simpler)
I'm using the same mobility_domain for all AP
nasid was set to AP MAC (but I remember it was also working when it was not set)

I have few android devices roaming correctly (AP-STA-DISCONNECTED without EAPOL-4WAY-HS-COMPLETED)
other devices seem not supporting 802.11r at all (PCs for example)

3 Likes

Thanks for the answer! Yes, that is the strange thing. I've readed all the thread, and tried all the different configurations without luck.
For this reason I was thinking my Pixel 4 was not supported, but in other messages of this thread several people say the Pixel 3a of my wife must work. In my case, none of them work :frowning:

Oh man I feel your pain. In my case with 3xRT3200's I just set it up in LuCi (WPA2-PSK) with all defaults save for setting FT over air and reassociation deadline to 20000 and it just works even for Pixel 3a. I could post my config if that'd be helpful.

I do have some trouble with Apple devices getting disconnects or connectivity issues requiring manual WiFi disconnection and reconnection at the device.

May be you already know it, just put it here

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'same-ssid-5g'
        option key 'samepassword'
        option wpa_disable_eapol_key_retries '1'
        option disassoc_low_ack '0'
        option ieee80211r '1'
        option mobility_domain 'a76c'
        option nasid '3345B3C6F232'
        option reassociation_deadline '20000'
        option ft_over_ds '0'
        option ft_psk_generate_local '1'
        option encryption 'psk2+ccmp'
        option max_inactivity '120'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'same-ssid-5g'
        option key 'samepassword'
        option wpa_disable_eapol_key_retries '1'
        option disassoc_low_ack '0'
        option ieee80211r '1'
        option mobility_domain 'a76c'
        option nasid '334700DD434A'
        option reassociation_deadline '20000'
        option ft_over_ds '0'
        option ft_psk_generate_local '1'
        option encryption 'psk2+ccmp'
        option max_inactivity '120'

the key point for simplest setup is

  1. same ssid
  2. same password
  3. different channel
  4. same mobility domain
  5. different nasid
  6. reassociation deadline 20000
  7. generate psk locally
  8. ft over air
  9. don't set r0 and r1
  10. proper wifi signal strength (don't be too strong nor too weak)
2 Likes

I will try again this weekend with your steps, but in theory this was tested several times. Maybe I forgot something. Who knows. :slight_smile:

If you're using WPA2-PSK you shouldn't have to put in anything for NASID. Have you tried it without?

One thing that seems strange to me, I don't know if it's related...
If I list the ubus hostapd commands, I can see the bss_mgmt_enable command available:

root@router-comedor:~# ubus -v list hostapd.wlan5g
'hostapd.wlan5g' @1b0f88fe
        "reload":{}
        "get_clients":{}
        "get_status":{}
        "del_client":{"addr":"String","reason":"Integer","deauth":"Boolean","ban_time":"Integer"}
        "update_airtime":{"sta":"String","weight":"Integer"}
        "list_bans":{}
        "wps_start":{}
        "wps_status":{}
        "wps_cancel":{}
        "update_beacon":{}
        "get_features":{}
        "switch_chan":{"freq":"Integer","bcn_count":"Integer","center_freq1":"Integer","center_freq2":"Integer","bandwidth":"Integer","sec_channel_offset":"Integer","ht":"Boolean","vht":"Boolean","he":"Boolean","block_tx":"Boolean","force":"Boolean"}
        "set_vendor_elements":{"vendor_elements":"String"}
        "notify_response":{"notify_response":"Integer"}
        "bss_mgmt_enable":{"neighbor_report":"Boolean","beacon_report":"Boolean","link_measurement":"Boolean","bss_transition":"Boolean"}
        "rrm_nr_get_own":{}
        "rrm_nr_list":{}
        "rrm_nr_set":{"list":"Array"}
        "rrm_beacon_req":{"addr":"String","mode":"Integer","op_class":"Integer","channel":"Integer","duration":"Integer","bssid":"String","ssid":"String"}
        "link_measurement_req":{"addr":"String","tx-power-used":"Integer","tx-power-max":"Integer"}
        "bss_transition_request":{"addr":"String","disassociation_imminent":"Boolean","disassociation_timer":"Integer","validity_period":"Integer","neighbors":"Array","abridged":"Boolean","dialog_token":"Integer","mbo_reason":"Integer","cell_pref":"Integer","reassoc_delay":"Integer"}

But if I try to execute it, I get an error of command not supported:

root@router-comedor:~# ubus call hostapd.wlan5g bss_mgmt_enable
Command failed: Operation not supported

or

root@router-comedor:~# ubus call hostapd.wlan5g bss_mgmt_enable '{"neighbor_report":true,"beacon_report":true,"link_measurement":true,"bss_transition":true}'
Command failed: Invalid command

If this expected? Am I doing something wrong?

do you have full version of wpad/hostapd installed or -basic one?

I have "wpad-wolfssl".

so it's "full" version. interesting

What's the source of this information?

It's in the GUI and I've seen others in the forum mention it as well. I have it blank and it works:

2 Likes

I'm not sure but have you tried turning off option ieee80211k '1'?

Then set WPA2-PSK, Force CCMP (AES), no NAS ID, a mobility domain that is the same for all AP's, a Reassociation deadline of 20000, FT over the air, generate PMK locally, 802.11 management frame protection off, and KRACK countermeasures off.

Then add stuff back in one at a time to figure out your cause.

1 Like

In MASTER. As of mid-December:

1 Like

Tested, the same. Don't work.

I start thinking is not problem of the configuration, so I end with two options:

  • The pixel 3a and pixel 4 don't support FT (despite someone in this thread said that the pixel 3a supports it). Can someone confirm again that it works for sure?
  • Something with the wifi driver or other part of the code is wrong. This are two Xiaomi AX3600, that use the ath11k driver. They have official support since only some weeks ago, someone here has the same driver/similar device and can confirm that works? Maybe some simple misconfiguration, because is strange that it does not support the ubus bss_mgmt_enable command. This command is implemented in the driver?

Thanks!

The Pixel 3a for sure supports FT. I've tested in two ways. First by enabling more verbose logging and verifying on router logs. And second running the Ubiquiti WiFiman app that allows you to watch the transition events occur as a timeline.

Terrific phone by the way. I have had this for absolutely ages and it's still going strong. Plus you get unlimited Google photos for yourself and partner when you enable partner sharing.

4 Likes

Thanks! Then is clear that is not a problem of the phone.
Someone can confirm where must be implemented the bss_mgmt_enable and what happens if it is not? Can this affect the FT ? I've look at the code, but I'm not good at C code, the hostapd code has the method, but I can't see here where it can end with Operation not supported: https://github.com/openwrt/openwrt/blob/master/package/network/services/hostapd/src/src/ap/ubus.c#L1692

1 Like

I am thinking verify that super simple config doesn't work first. I'll share my WiFi config as soon as I can convince my wife to give me my router password back.

1 Like

my bet is on wrt drivers.

Have over 150APs with owrt 21.* and 22.* and over 100 gadgets and mobile users (android phones, tablets and iphones).
Never have i seen 2way connection in logs - meaning FT does not work.
roaming "works", but not via FT ( wireless.radio0.cell_density='1' radio1.cell_density='2' and other "hacks").

2 Likes

I have been playing with a Xiaomi mi 4 router, and testing fast transition between the 2.4 and the 5Ghz networks, and it worked at the first attempt. Fast roaming without problems.
I will test tomorrow with the AX3600 between the 2.4 and the 5GHz too, to see if I can confirm that the same config does not work.
At least now I'm sure that the pixel 4 supports FT too.