Setting up DAWN and band-steering in OpenWrt

DAWN is a “Decentralized Wifi Controller” which can be used for band-steering in OpenWrt.

This can be useful for improved wifi performance when you have a network with multiple APs and 802.11r-based Wifi roaming enabled.

The following items are required to setup DAWN with OpenWrt:

  • One or more OpenWrt based APs (and routers).
  • A wifi network with 802.11r enabled

And that's pretty much it.

These instructions have been tested with OpenWrt 21.02.x. For different versions, details may differ.

To setup DAWN we need to do 4 things:

  • install the full version of wpad
  • configure 802.11k and 802.11v on all wifi AP-nodes.
  • install and configure required packages for DAWN
  • reboot all nodes (or just restart the network).

SSH into each of your wifi/AP nodes and add the following config-lines in `/etc/config/wireless` to each of your 802.11r enabled SSIDs:

      option bss_transition '1'
      option wnm_sleep_mode '1'
      option time_advertisement '2'
      option time_zone 'GMT0'
      option ieee80211k '1'
      option rrm_neighbor_report '1'
      option rrm_beacon_report '1'

Note: On previous versions of OpenWrt the config option “bss_transition” used to be called “ieee80211v”. If migrating from an older version, please update this config-option too!

We need to install DAWN and umdns. Unfortunately for us, in OpenWrt 21.02.x none of these packages works out of the box, and need fixing before we can use them.

First of all, SSH into all the AP-nodes in your network and install the required packages. If you have a dedicated router (without AP functionality enabled) and you would like to get DAWN dashboards in Luci there too, you need to install these packages here as well:

 opkg update && opkg install dawn

umdns is a dependency of dawn and will be installed automatically too.

At this point you have all the packages you need, but they may be in need of additional configuration.

Since dawn depends on umdns, ensure umdns is working correctly first. On all nodes where you installed dawn, try the following command:

 /etc/init.d/umdns restart

If this command completes without error, umdns is working correctly. On OpenWrt 21.02.x however, it has an incorrect seccomp configuration causing loading to fail. To fix/bypass this, we can disable the umdns seccomp profile:

 mv /etc/seccomp/umdns.json /etc/seccomp/umdns.json.disable

Restarting or starting umdns should now succeed.

Do this for all nodes in your “DAWN”-netwwrk.

dawn's config-file /etc/config/dawn specifies which subnet is used for broadcasts to discover other nodes. By default this is specified as “10.0.0.255”. If your OpenWrt has a default 192.168.1.x LAN-subnet, you will need to change this file.

In /etc/config/dawn, change this line:

  option broadcast_ip '10.0.0.255'

To this line:

  option broadcast_ip '192.168.1.255'

Also, consider changing the default password to something else, but make sure the same password is used on all nodes!

After making this change, restart dawn:

  /etc/init.d/dawn restart

Again, do this on all nodes in your “DAWN”-network.

You may also optionally install “luci-app-dawn”. luci-app-dawn provides a network overview inside Luci, and can be useful to ensure your setup works correctly.

You can install it on any node you like, including your main router, even if that does not provide wifi.

Installing it on all nodes can be useful, as it lets you verify that you get the same DAWN information on all nodes, and thus that they are communicating together correctly.

On the nodes where you want a DAWN dashboard in luci, enter the following command:

  opkg install luci-app-dawn

After making these changes you need to restart networking on all nodes to make changes effective.

You can either reboot/power-cycle the device, or just SSH into the node and issue:

  /etc/init.d/network restart

Once this has been done on all nodes, you should be able to get a nice dashboard in luci showing you your network topology:

Mission accomplished!

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2022/11/20 17:27
  • by chrisl