Android phone doesn't band-steer and regularly disconnects

Ever since I had to migrate from LineageOS (Android 16) to the stock ROM (Android 13), my Motorola phone won’t do band steering as expected, and it briefly disconnects a few times a day.

The first thing I noticed is that the wi-fi signal on the phone briefly becomes “low quality”, followed by a short disconnect and re-connection. This happens whether I’m standing right next to the router (strong signal), or in another room (regular signal strength). The connection is quickly reestablished and it doesn’t seem to cause any noticeable problem.

The second unexpected behavior is that it won’t ever switch to the 2.4 GHz network. No matter how far I move away from the router, it will stick to 5 GHz. As I move away, the signal will gradually become weaker until the phone reports it as “low quality” and then disconnects (until it’s brought in range again).

Grandma’s phone is a slightly newer Motorola with a newer Android version, and it easily switches between bands as it moves away, keeping a stable connection to the AP. It can be moved much further away from the router by using the 2.4 GHz signal. With LineageOS (Android 16), my phone does that too. This likely means that it’s an Android 13 issue.

What do you recommend I do to mitigate this issue?


I’m running OpenWrt 25.12.2 on an Archer C6 v3 (TP-Link).

Wi-fi is configured as dual-band with only one SSID, and the encryption is sae-mixed (WPA2+WPA3).

config wifi-device 'radio0'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0'
        option band '2g'
        option channel '1'
        option htmode 'HT20'
        option disabled '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid 'radium.lan'
        option encryption 'sae-mixed'
        option disabled '0'
        option key 'REDACTED'

config wifi-device 'radio1'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
        option band '5g'
        option channel '36'
        option htmode 'VHT80'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'radium.lan'
        option encryption 'sae-mixed'
        option disabled '0'
        option key 'REDACTED'

The disconnect/reconnect problem could be this issue, but I’m not sure.

Based on the answers here, OpenWrt doesn’t do band-steering itself by default. Maybe the only solution is on the client’s end, after all.

I thought I would be able to work around it by using a different wireless configuration on the router — such as a different encryption or separate SSIDs — but that would be sacrificing features because of one stupid device.


EDIT — I just tested these:

  • Separate SSIDs: it will switch to 2.4 GHz when the 5 GHz signal is too weak, but it won’t switch back to 5 GHz when it’s in range again.
  • Encryption `psk2+aes` didn’t affect band steering at all.

What did LineageOS support/forums say about this?

But this is about the stock ROM from Motorola (which is no longer supported) and the OpenWrt router. LineageOS has no such issues, and I don’t think they would give support for an OS that is not theirs.

I must have misunderstood your post. My bad, carry on.

Did OpenWrt work with the previous ROM (i.e., did you make changes)?

Yes, it has been working as expected on LineageOS 23.2 (Android 16) and CalyxOS (Android 15). The ROM I’m using right now, Android 13, doesn’t seem to handle the band steering well.

I think there’s nothing I can do about it, other than document the problem here.

Try using wpa2 only, i have a Tablet that only roams using wpa2

I tried `psk2+aes` yesterday, but it didn’t change anything.

Encryption `psk2+aes` didn’t affect band steering at all.

Did you try fast roaming?

Not yet, but I’m considering it. I think you're talking about this.