Lets talk about usteer

Most clients like iPhones does not answer beacon requests above -60 and as we know from earlier discussion some devices gets a short disruption if they answer on a beacon request. As the connection is good I think it is also unnecessary.

Can someone tell me how to apply these patches, complete newbie here

i guess you need to have a build environment set up to use them.

I am trying to get the band steering work to switch my 2,4G clients to 5G band but unfortunately it does not work as expected. I have read documentation and it seems like my config is OK but I'm definitely missing something.
I am using usteer 2022.08.18~7d2b17c9-r1
Here is my config:

config usteer
        option network 'lan'
        option syslog '1'
        option local_mode '0'
        option ipv6 '0'
        option debug_level '3'
        option min_snr '-85'
        option roam_scan_snr '-55'
        option signal_diff_threshold '8'
        option roam_trigger_interval '11000'
        option load_balancing_threshold '1'
        option band_steering_threshold '1'
        option band_steering_interval '10000'

Clients:

root@OpenWrt:~# ubus call usteer connected_clients
{
        "hostapd.phy0-ap0": {
                "7e:2b:e2:84:a7:fb": {
                        "signal": -34,
                        "created": 10772764,
                        "connected": 10708000,
                        "snr-kick": {
                                "seen-below": 0
                        },
                        "roam-state-machine": {
                                "state": "ROAM_TRIGGER_IDLE",
                                "tries": 0,
                                "event": 0,
                                "kick-count": 0,
                                "last-kick": 0,
                                "scan_start": 0,
                                "scan_timeout_start": 0
                        },
                        "bss-transition-response": {
                                "status-code": 1,
                                "age": 39938
                        },
                        "beacon-measurement-modes": [
                                "PASSIVE",
                                "ACTIVE",
                                "TABLE"
                        ],
                        "link-measurement": true,
                        "bss-transition-management": true,
                        "multi-band-operation": false,
                        "measurements": [
                                {
                                        "node": "hostapd.phy0-ap0",
                                        "rcpi": 161,
                                        "rsni": 68,
                                        "rssi": -30,
                                        "age": 26844
                                }
                        ]
                },
                "da:f5:12:a5:98:07": {
                        "signal": -39,
                        "created": 13942944,
                        "connected": 13819000,
                        "snr-kick": {
                                "seen-below": 0
                        },
                        "roam-state-machine": {
                                "state": "ROAM_TRIGGER_IDLE",
                                "tries": 0,
                                "event": 2663952,
                                "kick-count": 0,
                                "last-kick": 0,
                                "scan_start": 3858085,
                                "scan_timeout_start": 0
                        },
                        "bss-transition-response": {
                                "status-code": 0,
                                "age": 17748
                        },
                        "beacon-measurement-modes": [
                                "PASSIVE",
                                "ACTIVE",
                                "TABLE"
                        ],
                        "link-measurement": true,
                        "bss-transition-management": true,
                        "multi-band-operation": false,
                        "measurements": [
                                {
                                        "node": "hostapd.phy0-ap0",
                                        "rcpi": 154,
                                        "rsni": 63,
                                        "rssi": -33,
                                        "age": 57946
                                }
                        ]
                }
        },
        "hostapd.phy1-ap0": {

        }
}

There are some improvements for band steering I implemented in the version mentioned above.

With the version you are using only this settings should be set. Usteer will then move clients with an SNR higher than -60 (if I remember correctly) to 5Ghz every 2 minutes. The interval should not be changed as clients like iPhone will not answer scan requests so Usteers only option is to check the actual SNR. If the check interval is shorter a client could jump with this interval between bands which could leads into interruptions. This for example does not happen anymore in the newer version which is actually not merged to the official repo.

And also the SSID must be the same for both bands.

config usteer
        option network 'lan'
        option syslog '1'
        option local_mode '0'
        option ipv6 '0'
        option debug_level '2'
        option roam_scan_snr '-65'
        option signal_diff_threshold '8'

Okey so should I not touch load_balancing_threshold and band_steering_threshold? Docs says that the former should be set > 0 for band steering to work.
To be sure, I should compile exact this repo master? https://github.com/NilsRo/usteer

That is not correct in the docs or better not exact. The parameters are used for band comparison during roaming not for band steering you talking about. Will perhaps request access to the docs, there are some not very well explanations about some parameters…

The new version also includes log messages what happens. So if you are able to compile the package you can use this repo. It is a fast copy of the patches only so ignore the commits. Will delete it if it is merged to the main repo.

1 Like

You can get access to the docs with a GitHub account.

Here you have my tutorial that I have prepared when I was compiling @NilsRo repo.

Thanks @NilsRo now everything works great, band steering, AP steering, I hope your patch will be included into the openwrt master soon :slight_smile:

2 Likes

Very nice to hear. I hope that also, would not my preference to create a new usteer2 package or something like this. Hopefully my hostap patch will also merged so the last issue could be fixed.

Btw. using Windows WSL for building so it is easy to achieve to setup a working environment (if you find all information) within Windows.

Why you have not made a PR to the official packages repo: https://github.com/openwrt/packages/pulls

Most pull requests are not accepted / discussed and the last merges are replicated from the mailinglists git repo. So I decided to go there as it seems more active in general for OpenWRT itself.

Maybe check with one of the developers with commit rights on how to get something accepted?

I do a little bit of development on Luci (e.g. i wrote luci-app-usteer amongst others). If I make a PR there it does get accepted. So not sure where your expience comes from.

thanks compiled an .ipk, checking if i can manage to compile an .apk using main branch. Is there any way to install a .ipk into current snapshot builds that have alpine package keeper as default package manager?

For some reason there is a separate repo for usteer: https://github.com/openwrt/usteer
It looks kind of abandoned, the last commit is over 2 years old and I couldn“t find any developer feedback on the PRs or Issues, so I guess just posting the patches there would be a lost cause.

@NilsRo I agree with Ramon, you could ask blocktrron, he is listed as the maintainer of usteer, or perhaps Ansuel, as he was the last to commit to the repo.

@blocktrron aka David Bauer is cc-recipient of the patches. So he is informed of it. But perhaps it is overlooked in the emails so I linked him here.

It is totally abandoned, no sign of life for years
among other "functionality" kicks wds extenders.

and sends wifi map to all users every second.

ā€œTalk is cheap, send patchesā€

BS, i paid 2.5 human years waiting for signs of life.

Then fork it and make a new package. Call it usteer2 (or something)