Dawn: a decentralized wireless controller

Maybe you know already DAWN. Thanks to the great work of some other contributors, I was now able to push some important new changes you can find here or also very interesting. (only on master). Be aware that I removed the config interface of the luci-app-dawn.

Before you update to the newest version please remove the old config: rm /etc/config/dawn.
Afterwards, please try enabling kicking by setting uci set dawn.@metric[0].kicking=1 && uci commit && /etc/init.d/dawn restart.

I would like to receive some feedback on the config options and I thought it would be a good idea to have a support thread where I can push important config changes and updates.



sorry stupid question: if i want to try i should used snapshot or build my own image with the update DAWN package, right?

I pushed that 2 days ago to master branch. So depending on your architecture and the speed of the buildbot, it could already be the newest version in the normal openwrt package repro. So you don't need to compile an own image. Otherwise, you can also wait some days.

Maximizing interoperability with all existing openwrt r/v/k settings would be interesting. Putting all the toggles (config options) for everything r/v/k (and dawn) on a single config page would be great for optimizing all the handover technologies on one page. “Here are all the centralized and decentralized options on one page, config to your heart’s delight”:

1 Like

Pushed a new commit that hopefully fixes some handling with ubus:

Further, if you still experience segfaults, can you try disabling symmetric encryption?

Please Try:

uci set dawn.@network[0].use_symm_enc=0 && uci commit && /etc/init.d/dawn restart

What are the benefits of dawn vs usteer?

I can not tell you. :confused: I think @blocktrron could probably tell something about it. I saw in his staging tree some work that is very interesting regarding bss-transitions, and learning of certain transitions, e.g. hostapd: ubus: add notification for BSS transition response.

However, I think usteer will be some really good project since a lot of OpenWrt Maintainers (@nbd, @blocktrron, @dangowrt) are working on it. Maybe they can say something about it. I don't know if it is a good idea to work as "one-man-show" on such a controller, if on the other side OpenWrt Devs are also developing a "new" solution. :wink: Maybe we can combine our efforts.

However, I will go on developing and testing DAWN. :slight_smile:

If you live in Berlin and want to get connected to the Freifunk Berlin (community wireless mesh) you can also use our ansible scripts with DAWN when I fixed everything: https://github.com/Freifunk-Spalter/bbb-configs/pull/81

I was not affiliated with the initial development of usteer, from my understanding it was developed for the TelecomInfraProject solution, but i do not have in-depth knowledge about that.

I'm working on usteer, as i have more familiarity with the codebase (and like the approach it takes more, personal preference) as we have offered a University undergraduate project for it last year, where the group was adding several features to usteer. Due to being busy most of last year, this is now slowly trickling upstream (IPv6 being the first).


Is there any overview what OpenWrt does or any meeting I could join to see whats happening?

Maybe next time they can also work on DAWN. xD (just kidding)

I have to do that also. However, umdns has no IPv6 support, but I don't understand how I can access the json format. For me it is just wrong, since the same identifier "ipv6" is used for every ipv6 address.

Currently, DAWN has issues with latest trunk. I will add more debug output. It looks like its appearing when using multiple APs. It could be the datastorage, network connection, or whatever. There was a big rewrite of the datastorage to linked list in the last months/years.

Thanks for taking time to answer here. :slight_smile:

1 Like

Thanks to @blocktrron we can now monitor bss-transision decisions from clients:

I will have a look how to integrate this in DAWN. Meanwhile you can also just use ubus monitor.

would love some assistance, been using DAWN for the last year with 4 dumb APs.
I Upgraded today to latest snapshots including new version of dawn, and now it seems like APs can't find each other.
each AP is only seeing itself in the DAWN network overview.

I tried to disable sym enc & update beacon report to no avail.
any help would be appreciated

my dawn config:

config network
	option broadcast_port '1025'
	option tcp_port '1026'
	option network_option '2'
	option shared_key 'Niiiiiiiiiiiiick'
	option iv 'Niiiiiiiiiiiiick'
	option use_symm_enc '0'
	option collision_domain '-1'
	option bandwidth '-1'
	option broadcast_ip ''

config ordering
	option sort_order 'cbfs'

config hostapd
	option hostapd_dir '/var/run/hostapd'

config times
	option update_client '10'
	option denied_req_threshold '30'
	option remove_client '15'
	option remove_probe '30'
	option remove_ap '460'
	option update_hostapd '10'
	option update_tcp_con '10'
	option update_chan_util '5'
	option update_beacon_reports '0'

config metric 'global'
	option rssi_weight '0'
	option rssi_center '0'
	option initial_score '0'
	option kicking_threshold '20'
	option duration '600'
	option rrm_mode 'apt'
	option ap_weight '0'
	option ht_support '0'
	option vht_support '0'
	option no_ht_support '0'
	option no_vht_support '0'
	option rssi '0'
	option low_rssi '0'
	option freq '0'
	option chan_util '0'
	option max_chan_util '0'
	option rssi_val '-60'
	option low_rssi_val '-80'
	option chan_util_val '0'
	option max_chan_util_val '0'
	option min_probe_count '0'
	option bandwidth_threshold '6'
	option use_station_count '0'
	option max_station_diff '0'
	option eval_probe_req '0'
	option eval_auth_req '0'
	option eval_assoc_req '0'
	option kicking '0'
	option deny_auth_reason '1'
	option deny_assoc_reason '17'
	option use_driver_recog '1'
	option chan_util_avg_period '3'
	option set_hostapd_nr '1'

config metric '802_11a'
	option rssi_weight '2'
	option rssi_center '-70'
	option initial_score '125'

config metric '802_11g'
	option rssi_weight '2'
	option rssi_center '-70'
	option initial_score '100'