Why Android Phone can't change AP automaticly with diffirent channel?

Hi there
I'm using several device with openwrt 21.02.1 in my house.
I enable the 802.11k/v/r in the ssid of 802.11ac, and set to diffirent Channel like 36,64,149
the experien of iPhone is awsome.
But for my Android device(oneplus 9)
It seems that it is not willing to change AP.
Software shows the TX/RX is 65Mbps-120Mbps, the ping test is keeping lost packet/timeout
And it still keep link to the old AP.
Disconnect and reconnect to the SSID will change to the nearly AP.
The only situation that Android phone successfully change AP is to set every device to a same channel.
So is it necessary for 802.11r to use same channel?

You sure the OnePlus supports 802.11k/v/r ?

I found a table said Oneplus 8 support 802.11v
But have no idea about k
BTW I heard 802.11r is not so important for PSK
So I don't know wether if it will influence the romance

You have the OnePlus 9, right?

This indicates it does not support 802.11k/v/r

1 Like

I used the airmon-ng to dump the 802.11 frame
It seems at least this device support 802.11v.
But seems there is no frame about 802.11k with all devices

Have you tuned your APs for optimal standard roaming performance? Keep in mind that roaming is a client side process in most cases. It is important to adjust the power levels to the minimum necessary to cover the desired area. You want it to be low enough that the overlap between neighboring APs is relatively small. Most people tend to have the power maxed on all of their APs, which doesn't really work well because the devices still appear have a sufficient quality signal from a more distant AP, even though there is a more proximate one that would actually be better. By lowering the power on each AP, you will encourage the client devices to roam more smoothly.

All of that said, you don't necessarily need 802.11k/v/r for this to work well. Properly tuned, roaming can be nearly seamless without those standards enabled.

Here is a video that explains some of the principles involved in properly tuning your wifi. In the video, they talk about Unifi APs, but the conceptual frameworks are the same regardless which APs/firmware you are using.

Yep I have modify the power of my AP
limited the wifi extender's power.
But the device is not willing to change the beacon even if the signal is weak and can't keep ping command

In the following post here I mentioned a tool that can display all features supported by any device - it needs Linux ( more exactly Python3 ) and a Wifi adapter that supports monitor mode - it worked very well for me using an older 2.4Ghz adapter but not with 5.0 Gb/s that works fine in Kismet ( all on the newest Kali Linux ). Here is the link.

Thanks for replying.
I'm using Linux but it is a desktop PC without wireless card. sad

Most built-in Wifi cards in laptops don't support monitor mode. Some of the best cards used for sniffing traffic are USB e.g. Alfa, but there are many cheap once - it is just a question of finding one.

On the other hand if you don't plan to look at the wireless traffic either to better understand it, or to see if your Openwrt AP is working fine, I suspect it is not worth it to purchase a card just to see if a device supports 802.11r/k/v.

Then, how does it works with an openwrt router as monitor mode?
I means to better know how wireless traffic works
I have multiple routers of course
And I know it could switch to monitor mode.

Yes you can do a lot with Openwrt - if you have enough disk space you can install many tools including tcpdump and others. The tool I posted link to is not an Openwrt package - it is a Python3 script installed with pip. In my case I installed it on Kali Linux, and then connected with my client and it showed the exact details of what the client supports.

To be honest if you really want to explore this, take a look at the hostapd debug options - I have not looked in detail, but since that is the application that is doing the Wifi communication, there is a chance it might display all the details about the client - there is a lot of info on how to increase the log level using uci or editing the hostapd config files. Hope others can chime in on the subject.

Thanks a lot, it' a good idear for me to try

Using information from this link I was able to run wireshark on my desktop and use the Openwrt AP Wifi module as the source of packets - the quick summary would be:

On the AP ( will use AP as the device name - as long as it has a Wifi module it can be anything running Openwrt with ssh access )

  • install iwcap package on the AP
  • grep -q mon0 /proc/net/dev || /usr/sbin/iw phy phy0 interface add mon0 type monitor # creates monitor device
  • /sbin/ifconfig mon0 up

From a Linux desktop that has Wireshark installed

  • ssh root@AP '/usr/sbin/iwcap -i mon0 -s -f' | wireshark -k -i - # interface can be wlanX[-Y]

When done shutdown the mon0 interface on the AP with

  • ifconfig mon0 down

Thanks to bobafetthotmail that created the docs referenced in the above link.