Dawn: a decentralized wireless controller

Okay, something is wrong. These tcp warnining message should not appear so often. They are generated by this callback:
https://git.openwrt.org/?p=project/libubox.git;a=blob;f=ustream.h;h=9a306180bc20f7ac87ee95b426fddbbba7f05055;hb=HEAD#l78

We reworked the callback:

1 Like

No you don't need to install it on an AP without radios.

1 Like

What instructions? Can you link to them?

Alright, thanks for clarifying.

Sure, these:

BTW - do I need adapted settings for a WDS? I'm noticing the APs on both ends of the WDS (the master and client APs themselves so to speak) do not see all the other APs in the network.

WDS master AP
This one is not seeing the WDS client AP (?) - IP 10.0.0.21:

root@OpenWrt:~# ubus call umdns browse
{
	"_dawn._tcp": {
		"OpenWrt": {
			"ipv4": "10.0.0.3",
			"ipv6": [snip],
			"ipv4": "10.0.0.13",
			"ipv6": "[snip],
			"port": 1026

WDS client AP
This one is not seeing the AP on the ground floor (10.0.0.3), but does see the one that's sitting behind it (10.0.0.13).

root@OpenWrt:~# ubus call umdns browse
{
	"_dawn._tcp": {
		"OpenWrt": {
			"ipv4": "10.0.0.12",
			"ipv6": [snip],
			"ipv4": "10.0.0.13",
			"ipv6": [snip],
			"port": 1026
		}

APs 10.0.0.3 (WDS master) and 10.0.0.12 are wired to a switch directly, AP 10.0.0.13 is sitting behind 10.0.0.3 (wired as well). AP 10.0.0.21 is the WDS client, so no wires running to the rest of the network there.

Edit: topology here), might be easier.

1 Like

I think I solved this - I had modified some parameters in Dawn to try to weight to 5 GHz band more heavily, removed them to test this issue, but I think I didn't restart. Once I went back to the stock config and rebooted, most of my devices are seeing multiple APs.

1 Like

Are there any additional docs on these parameters?

  • The way 802.11v Neighbor Reports are generated can be adjusted.
    • disassoc_nr_length controls the number of entries in the list.
    • set_hostapd_nr controls the mechanism used to build the AP NR
      • "Static" will be sufficient for a small network, and contain all the AP entries
      • "Dynamic" will allow a large network to automatically determine a suitable set for each AP, containing a set of nearby APs

Seems like set_hostapd_nr is set to 0 by default now, but used to be set to 1. Any explanation why this changed?

Oh that looks wrong. :confused: Why does your "OpenWrt" Host has two ipv4 addresses from different devices?
Do both hosts have the same hostname?

Just skipped over the relevant parts again. Try setting it to set_hostapd_nr=2. I think 1 has a bug. I need to investigate that. It will than include in the bss_transition the best aps for the client. Actual, that should be a good default setting.

1 Like

I never bother with the hostnames frankly :see_no_evil:. That's an issue for DAWN?

It seems to be an issue for umdns. :S

1 Like

OK I'll switch to unique hostnames and let you know.

1 Like

@PolynomialDivision You were right, once I switched to unique hostnames on the APs and restarted umdns, a ubus call umdns browse shows all the other APs.

1 Like

Do I need to synchronize config across different APs, or does each make it's own kicking decisions based on it's own config? Will things get weird if, for example, one AP has

option bandwidth_threshold '6'

and another has

option bandwidth_threshold '12'
?

Related question: what is the rationale / use-case for option bandwidth_threshold?

An important bugfix backbport was merged to OpenWrt-21.02. So in the next release the crashing of hostapd should also be fixed with 21.02.

2 Likes

Sorry, I did not see your post. Yes the configs should be the same. However, they should synchronize themselves.

If they don't try reloading the config on one ap:

ubus call dawn reload_config
1 Like

You typically don't want to kick a client while doing an active transmission (maybe with 802.11r + all the fast roaming amendments it is another situation). If you don't transmit the client is somehow at a rate of 6 Mbit/s. If the client is above this threshold, it won't get kicked. The config option just makes the threshold configurable because you may use different rate settings or whatever in your setup. :slight_smile:

2 Likes

I'd like to use verbose logging for dawn but even just loglevel 1 swamps syslog in the sense that it holds only a couple of minutes of info. Is there a recommended config? I know I can set dawn to log to a file, but then I have the problem of having to rotate that file so /tmp doesn't fill up. If someone has a trick or a sample config to share that would be awesome.

I'm not understanding something... I'm having trouble on a large property with multiple access points 'cause devices just stick to a fading AP way too long, even when they know about better available APs. So I'm on a phone call walking around and DAWN doesn't help to kick the device to the better AP 'cause I have an "active transmission"? Isn't it exactly when I have an active transmission that my phone needs to be pushed to use the better AP? Or is this something DAWN can't do anyway? I'm confused...

NB: I do have 802.11r & FT.

I've been looking at beacon reports using ubus monitor and what I'm seeing is a bit disappointing...

I have several android phone running the latest version and they rarely provide any rcpi or rsni information. (Also, the bssid field is always 00:00:00:00:00:00.) I'm having one of the phones sitting here running a wifi scanner and it shows me other access points but doesn't report on them in its beacon-responses.

I have an ipad and I had to modify the dawn.global.duration to be >0 for it to respond to beacon requests. It then only responds every 2 minutes or so, but at least provides complete reports with rcpi and rnsi.

All this means there's very little information to base decisions on...

Question, does the following mean that this particular AP is not able to provide a neighbor list to clients? What do I have to change in the dawn config to make it happen?

root@desk-ap:/etc/config# ubus call hostapd.wlan0 rrm_nr_list
{
        "list": [

        ]
}