Dawn: a decentralized wireless controller

I have the same problem, I don't understand why some devices show me as duplicates in the hearing map (rightly as the device is able to connect between multiple APs) while others disappear once disconnected, as if the system forgot that it was connected also losing the score.
This is the main functionality for those like me who have chosen the kicking 1 option (rssi comparison). I tried rrm_mode apt but nothing changes. I think the bug is that the score information is somehow lost, preventing the system from understanding when and what to kick.
Any ideas how to solve? This is my config

I'm trying now the "remove_client" option.
Timer to remove expired client entries from core data set [15] to [0]



config local
	option loglevel '0'

config network
	option broadcast_ip '192.168.1.255'
	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'

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

config times
	option con_timeout '60'
	option update_client '10'
	option remove_client '0'
	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 '20'

config metric 'global'
	option min_probe_count '3'
	option bandwidth_threshold '0'
	option use_station_count '0'
	option max_station_diff '1'
	option eval_probe_req '1'
	option eval_auth_req '1'
	option eval_assoc_req '1'
	option kicking '1'
	option kicking_threshold '20'
	option deny_auth_reason '1'
	option deny_assoc_reason '17'
	option min_number_to_kick '3'
	option chan_util_avg_period '3'
	option set_hostapd_nr '2'
	option duration '10'
	option rrm_mode 'apt'
        option disassoc_nr_length '600'

config metric '802_11g'
	option initial_score '80'
	option ht_support '10'
	option vht_support '10'
	option no_ht_support '0'
	option no_vht_support '0'
	option rssi '0'
	option rssi_val '-60'
	option low_rssi_val '-80'
	option low_rssi '0'
	option chan_util '0'
	option chan_util_val '140'
	option max_chan_util '-15'
	option max_chan_util_val '170'
	option rssi_weight '2'
	option rssi_center '-65'

config metric '802_11a'
	option initial_score '100'
	option ht_support '5'
	option vht_support '5'
	option no_ht_support '0'
	option no_vht_support '0'
	option rssi '15'
	option rssi_val '-60'
	option low_rssi_val '-80'
	option low_rssi '-15'
	option chan_util '0'
	option chan_util_val '140'
	option max_chan_util '-15'
	option max_chan_util_val '170'
	option rssi_weight '0'
	option rssi_center '-70'

I just deployed v23.05.2, moving far from v19.07.10, and also noticed this.

Sat Dec 16 00:19:11 2023 daemon.warn dawn: Client / BSSID = E4:AA:EA:59:06:FD / 50:FA:84:09:0D:FC: BEACON REQUEST failed
Sat Dec 16 00:19:14 2023 daemon.warn dawn: Client / BSSID = E4:AA:EA:59:06:FD / 60:E3:27:A6:61:AD: BEACON REQUEST failed
Sat Dec 16 00:19:17 2023 daemon.warn dawn: Client / BSSID = E4:AA:EA:59:06:FD / 60:E3:27:A6:61:AE: BEACON REQUEST failed

I'm seeing that on one of my laptops with QCA6174 onboard. Running Debian 12. A Windows machine with an exactly identical card does not cause that.

And by looking on the hearing map, it seems like a lot of my devices do support RRM, so this is the misbehaving one.

'tis gonna be fun.
Edit: just noticed the same on another Debian 12 + ath9k laptop. For every BSSID in the network they're on. And that happens when affected devices are on 5GHz band, handled by ath10k. While on 2.4GHz it looks, like this mechanism works.

Happy new year everyone, and thanks for a good software package.

Quick question, just to see if am i understanding this right: When a client has traffic below the bandwidth_threshold value, is it kicked from the AP regardless of its signal strength or only if the signal goes below a certain score?
If it's kicked anyway, is there any way to disable kicking for such instances? I have IoT devices that sometimes simply don't do any traffic.

Or better yet: is there a sanctioned set of settings for DAWN that's optimal for IoT devices?

Hello,
Does anyone have Dawn working with OpenWRT 23.05.2?
I am using OpenWRT 23.05.2 and have been trying to get Dawn to run for over a month without success. I have tried several things.
So I wonder if Dawn is simply not compatible with 23.05?

It works fine with 23.05.

Hello,
Thank you for your reply. How did you install and set up DAWN?

Hi, I've a strange problem with DAWN. kernel kills dawn process for invalid read access from an address.

Kernel log
[    0.000000] Linux version 5.15.137 (builder@buildhost) (mipsel-openwrt-linux-musl-gcc (OpenWrt GCC 12.3.0 r23630-842932a63d) 12.3.0, GNU ld (GNU Binutils) 2.40.0) #0 SMP Tue Nov 14 13:38:11 2023
[    0.000000] SoC Type: MediaTek MT7621 ver:1 eco:3
[    0.000000] printk: bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 0001992f (MIPS 1004Kc)
[    0.000000] MIPS: machine is D-Link DIR-2640 A1
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] VPE topology {2,2} total 4
[    0.000000] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000000fffffff]
[    0.000000] percpu: Embedded 11 pages/cpu s14736 r8192 d22128 u45056
[    0.000000] pcpu-alloc: s14736 r8192 d22128 u45056 alloc=11*4096
[    0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 64960
[    0.000000] Kernel command line: console=ttyS0,57600 rootfstype=squashfs,jffs2
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes, linear)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes, linear)
[    0.000000] Writing ErrCtl register=0002bbc0
[    0.000000] Readback ErrCtl register=0002bbc0
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] Memory: 249120K/262144K available (7300K kernel code, 624K rwdata, 880K rodata, 1232K init, 226K bss, 13024K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Hierarchical RCU implementation.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
[    0.000000] NR_IRQS: 256
[    0.000000] clocksource: GIC: mask: 0xffffffffffffffff max_cycles: 0xcaf478abb4, max_idle_ns: 440795247997 ns
[    0.000004] sched_clock: 64 bits at 880MHz, resolution 1ns, wraps every 4398046511103ns
[    0.016025] Calibrating delay loop... 586.13 BogoMIPS (lpj=2930688)
[    0.088331] pid_max: default: 32768 minimum: 301
[    0.098289] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.112707] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear)
[    0.131956] rcu: Hierarchical SRCU implementation.
[    0.142181] smp: Bringing up secondary CPUs ...
[    0.151974] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.152000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.152014] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.152059] CPU1 revision is: 0001992f (MIPS 1004Kc)
[    0.211720] Synchronize counters for CPU 1: done.
[    0.274024] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.274046] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.274057] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.274086] CPU2 revision is: 0001992f (MIPS 1004Kc)
[    0.332962] Synchronize counters for CPU 2: done.
[    0.393358] Primary instruction cache 32kB, VIPT, 4-way, linesize 32 bytes.
[    0.393381] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.393392] MIPS secondary cache 256kB, 8-way, linesize 32 bytes.
[    0.393424] CPU3 revision is: 0001992f (MIPS 1004Kc)
[    0.452541] Synchronize counters for CPU 3: done.
[    0.512138] smp: Brought up 1 node, 4 CPUs
[    0.525600] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 19112604462750000 ns
[    0.545098] futex hash table entries: 1024 (order: 3, 32768 bytes, linear)
[    0.559004] pinctrl core: initialized pinctrl subsystem
[    0.570920] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.583394] thermal_sys: Registered thermal governor 'step_wise'
[    0.589467] FPU Affinity set after 11720 emulations
[    0.614122] clocksource: Switched to clocksource GIC
[    0.625481] NET: Registered PF_INET protocol family
[    0.635279] IP idents hash table entries: 4096 (order: 3, 32768 bytes, linear)
[    0.650647] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 6144 bytes, linear)
[    0.667209] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
[    0.682565] TCP established hash table entries: 2048 (order: 1, 8192 bytes, linear)
[    0.697775] TCP bind hash table entries: 2048 (order: 2, 16384 bytes, linear)
[    0.711963] TCP: Hash tables configured (established 2048 bind 2048)
[    0.724718] UDP hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.737639] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes, linear)
[    0.751821] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.763059] PCI: CLS 0 bytes, default 32
[    0.773535] workingset: timestamp_bits=14 max_order=16 bucket_order=2
[    0.791692] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.803273] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    0.824201] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 251)
[    0.842689] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.854299] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.865686] mt7621_gpio 1e000600.gpio: registering 32 gpios
[    0.877234] mt7621-pci 1e140000.pcie: host bridge /pcie@1e140000 ranges:
[    0.890516] mt7621-pci 1e140000.pcie:   No bus range found for /pcie@1e140000, using [bus 00-ff]
[    0.907983] mt7621-pci 1e140000.pcie:      MEM 0x0060000000..0x006fffffff -> 0x0060000000
[    0.924224] mt7621-pci 1e140000.pcie:       IO 0x001e160000..0x001e16ffff -> 0x0000000000
[    1.294129] mt7621-pci 1e140000.pcie: pcie2 no card, disable it (RST & CLK)
[    1.307910] mt7621-pci 1e140000.pcie: PCIE0 enabled
[    1.317554] mt7621-pci 1e140000.pcie: PCIE1 enabled
[    1.327250] PCI coherence region base: 0x60000000, mask/settings: 0xf0000002
[    1.341382] mt7621-pci 1e140000.pcie: PCI host bridge to bus 0000:00
[    1.353914] pci_bus 0000:00: root bus resource [bus 00-ff]
[    1.364804] pci_bus 0000:00: root bus resource [mem 0x60000000-0x6fffffff]
[    1.378438] pci_bus 0000:00: root bus resource [io  0x0000-0xffff]
[    1.390760] pci 0000:00:00.0: [0e8d:0801] type 01 class 0x060400
[    1.402654] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0x7fffffff]
[    1.415098] pci 0000:00:00.0: reg 0x14: [mem 0x60400000-0x6040ffff]
[    1.427591] pci 0000:00:00.0: supports D1
[    1.435466] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
[    1.447750] pci 0000:00:01.0: [0e8d:0801] type 01 class 0x060400
[    1.459680] pci 0000:00:01.0: reg 0x10: [mem 0x00000000-0x7fffffff]
[    1.472064] pci 0000:00:01.0: reg 0x14: [mem 0x60410000-0x6041ffff]
[    1.484582] pci 0000:00:01.0: supports D1
[    1.492417] pci 0000:00:01.0: PME# supported from D0 D1 D3hot
[    1.506246] pci 0000:01:00.0: [14c3:7615] type 00 class 0x000280
[    1.518182] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit]
[    1.531768] pci 0000:01:00.0: 2.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x1 link at 0000:00:00.0 (capable of 4.000 Gb/s with 5.0 GT/s PCIe x1 link)
[    1.562755] pci 0000:00:00.0: PCI bridge to [bus 01-ff]
[    1.573078] pci 0000:00:00.0:   bridge window [io  0x0000-0x0fff]
[    1.585146] pci 0000:00:00.0:   bridge window [mem 0x60000000-0x600fffff]
[    1.598627] pci 0000:00:00.0:   bridge window [mem 0x60100000-0x601fffff pref]
[    1.612968] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[    1.626371] pci 0000:02:00.0: [14c3:7615] type 00 class 0x000280
[    1.638280] pci 0000:02:00.0: reg 0x10: [mem 0x00000000-0x000fffff 64bit]
[    1.651849] pci 0000:02:00.0: 2.000 Gb/s available PCIe bandwidth, limited by 2.5 GT/s PCIe x1 link at 0000:00:01.0 (capable of 4.000 Gb/s with 5.0 GT/s PCIe x1 link)
[    1.682840] pci 0000:00:01.0: PCI bridge to [bus 02-ff]
[    1.693173] pci 0000:00:01.0:   bridge window [io  0x0000-0x0fff]
[    1.705230] pci 0000:00:01.0:   bridge window [mem 0x60200000-0x602fffff]
[    1.718712] pci 0000:00:01.0:   bridge window [mem 0x60300000-0x603fffff pref]
[    1.733053] pci_bus 0000:02: busn_res: [bus 02-ff] end is updated to 02
[    1.746248] pci 0000:00:00.0: BAR 0: no space for [mem size 0x80000000]
[    1.759318] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x80000000]
[    1.773141] pci 0000:00:01.0: BAR 0: no space for [mem size 0x80000000]
[    1.786270] pci 0000:00:01.0: BAR 0: failed to assign [mem size 0x80000000]
[    1.800111] pci 0000:00:00.0: BAR 8: assigned [mem 0x60000000-0x600fffff]
[    1.813588] pci 0000:00:00.0: BAR 9: assigned [mem 0x60100000-0x601fffff pref]
[    1.827920] pci 0000:00:01.0: BAR 8: assigned [mem 0x60200000-0x602fffff]
[    1.841403] pci 0000:00:01.0: BAR 9: assigned [mem 0x60300000-0x603fffff pref]
[    1.855748] pci 0000:00:00.0: BAR 1: assigned [mem 0x60400000-0x6040ffff]
[    1.869237] pci 0000:00:01.0: BAR 1: assigned [mem 0x60410000-0x6041ffff]
[    1.882698] pci 0000:00:00.0: BAR 7: assigned [io  0x0000-0x0fff]
[    1.894793] pci 0000:00:01.0: BAR 7: assigned [io  0x1000-0x1fff]
[    1.906901] pci 0000:01:00.0: BAR 0: assigned [mem 0x60000000-0x600fffff 64bit]
[    1.921422] pci 0000:00:00.0: PCI bridge to [bus 01]
[    1.931266] pci 0000:00:00.0:   bridge window [io  0x0000-0x0fff]
[    1.943348] pci 0000:00:00.0:   bridge window [mem 0x60000000-0x600fffff]
[    1.956826] pci 0000:00:00.0:   bridge window [mem 0x60100000-0x601fffff pref]
[    1.971188] pci 0000:02:00.0: BAR 0: assigned [mem 0x60200000-0x602fffff 64bit]
[    1.985706] pci 0000:00:01.0: PCI bridge to [bus 02]
[    1.995536] pci 0000:00:01.0:   bridge window [io  0x1000-0x1fff]
[    2.007628] pci 0000:00:01.0:   bridge window [mem 0x60200000-0x602fffff]
[    2.021111] pci 0000:00:01.0:   bridge window [mem 0x60300000-0x603fffff pref]
[    2.037984] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    2.055490] printk: console [ttyS0] disabled
[    2.063968] 1e000c00.uartlite: ttyS0 at MMIO 0x1e000c00 (irq = 19, base_baud = 3125000) is a 16550A
[    2.081934] printk: console [ttyS0] enabled
[    2.098441] printk: bootconsole [early0] disabled
[    2.120867] nand: device found, Manufacturer ID: 0xef, Chip ID: 0xf1
[    2.133594] nand: Winbond W29N01HV
[    2.140370] nand: 128 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64
[    2.155457] mt7621-nand 1e003000.nand: ECC strength adjusted to 4 bits
[    2.168572] 9 fixed-partitions partitions found on MTD device mt7621-nand
[    2.183392] Creating 9 MTD partitions on "mt7621-nand":
[    2.193878] 0x000000000000-0x000000080000 : "Bootloader"
[    2.208268] 0x000000080000-0x000000100000 : "config"
[    2.221869] 0x000000100000-0x000000140000 : "factory"
[    2.234374] 0x000000140000-0x000000180000 : "config2"
[    2.246888] 0x000000180000-0x000002980000 : "firmware"
[    2.467932] 2 uimage-fw partitions found on MTD device firmware
[    2.479834] Creating 2 MTD partitions on "firmware":
[    2.489813] 0x000000000000-0x000000400000 : "kernel"
[    2.521029] 0x000000400000-0x000002800000 : "ubi"
[    2.712701] 0x000002980000-0x000004980000 : "private"
[    2.885109] 0x000004980000-0x000007180000 : "firmware2"
[    3.098386] 0x000007180000-0x000007780000 : "mydlink"
[    3.140020] 0x000007780000-0x000008000000 : "reserved"
[    3.337700] mt7530-mdio mdio-bus:1f: MT7530 adapts as multi-chip module
[    3.358047] mtk_soc_eth 1e100000.ethernet eth0: mediatek frame engine at 0xbe100000, irq 21
[    3.378090] mtk_soc_eth 1e100000.ethernet wan: mediatek frame engine at 0xbe100000, irq 21
[    3.396820] i2c_dev: i2c /dev entries driver
[    3.408587] NET: Registered PF_INET6 protocol family
[    3.421381] Segment Routing with IPv6
[    3.428805] In-situ OAM (IOAM) with IPv6
[    3.436776] NET: Registered PF_PACKET protocol family
[    3.446970] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    3.473351] 8021q: 802.1Q VLAN Support v1.8
[    3.487902] mt7530-mdio mdio-bus:1f: MT7530 adapts as multi-chip module
[    3.520340] mt7530-mdio mdio-bus:1f: configuring for fixed/rgmii link mode
[    3.534976] mt7530-mdio mdio-bus:1f: Link is Up - 1Gbps/Full - flow control rx/tx
[    3.544913] mt7530-mdio mdio-bus:1f lan4 (uninitialized): PHY [mt7530-0:00] driver [MediaTek MT7530 PHY] (irq=23)
[    3.573189] mt7530-mdio mdio-bus:1f lan3 (uninitialized): PHY [mt7530-0:01] driver [MediaTek MT7530 PHY] (irq=24)
[    3.596297] mt7530-mdio mdio-bus:1f lan2 (uninitialized): PHY [mt7530-0:02] driver [MediaTek MT7530 PHY] (irq=25)
[    3.619307] mt7530-mdio mdio-bus:1f lan1 (uninitialized): PHY [mt7530-0:03] driver [MediaTek MT7530 PHY] (irq=26)
[    3.642171] DSA: tree 0 setup
[    3.650652] UBI: auto-attach mtd6
[    3.657397] ubi0: attaching mtd6
[    4.208342] ubi0: scanning is finished
[    4.232278] ubi0: attached mtd6 (name "ubi", size 36 MiB)
[    4.243130] ubi0: PEB size: 131072 bytes (128 KiB), LEB size: 126976 bytes
[    4.256841] ubi0: min./max. I/O unit sizes: 2048/2048, sub-page size 2048
[    4.270367] ubi0: VID header offset: 2048 (aligned 2048), data offset: 4096
[    4.284237] ubi0: good PEBs: 288, bad PEBs: 0, corrupted PEBs: 0
[    4.296212] ubi0: user volume: 2, internal volumes: 1, max. volumes count: 128
[    4.310603] ubi0: max/mean erase counter: 3/1, WL threshold: 4096, image sequence number: 1682627295
[    4.328796] ubi0: available PEBs: 0, total reserved PEBs: 288, PEBs reserved for bad PEB handling: 20
[    4.347193] ubi0: background thread "ubi_bgt0d" started, PID 340
[    4.349829] block ubiblock0_0: created from ubi0:0(rootfs)
[    4.370192] ubiblock: device ubiblock0_0 (rootfs) set to be root filesystem
[    4.392970] VFS: Mounted root (squashfs filesystem) readonly on device 254:0.
[    4.411457] Freeing unused kernel image (initmem) memory: 1232K
[    4.423346] This architecture does not have kernel memory protection.
[    4.436194] Run /sbin/init as init process
[    4.444375]   with arguments:
[    4.444384]     /sbin/init
[    4.444390]   with environment:
[    4.444395]     HOME=/
[    4.444400]     TERM=linux
[    4.892520] init: Console is alive
[    4.899901] init: - watchdog -
[    5.706752] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[    5.773552] usbcore: registered new interface driver usbfs
[    5.784729] usbcore: registered new interface driver hub
[    5.795507] usbcore: registered new device driver usb
[    5.816787] xhci-mtk 1e1c0000.xhci: supply vbus not found, using dummy regulator
[    5.831805] xhci-mtk 1e1c0000.xhci: supply vusb33 not found, using dummy regulator
[    5.847192] xhci-mtk 1e1c0000.xhci: xHCI Host Controller
[    5.857837] xhci-mtk 1e1c0000.xhci: new USB bus registered, assigned bus number 1
[    5.877832] xhci-mtk 1e1c0000.xhci: hcc params 0x01401198 hci version 0x96 quirks 0x0000000000290010
[    5.896131] xhci-mtk 1e1c0000.xhci: irq 20, io mem 0x1e1c0000
[    5.907865] xhci-mtk 1e1c0000.xhci: xHCI Host Controller
[    5.918474] xhci-mtk 1e1c0000.xhci: new USB bus registered, assigned bus number 2
[    5.933393] xhci-mtk 1e1c0000.xhci: Host supports USB 3.0 SuperSpeed
[    5.947117] hub 1-0:1.0: USB hub found
[    5.954867] hub 1-0:1.0: 2 ports detected
[    5.963770] usb usb2: We don't know the algorithms for LPM for this host, disabling LPM.
[    5.980966] hub 2-0:1.0: USB hub found
[    5.988694] hub 2-0:1.0: 1 port detected
[    6.004737] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[    6.029623] init: - preinit -
[    6.863309] random: jshn: uninitialized urandom read (4 bytes read)
[    6.989915] random: jshn: uninitialized urandom read (4 bytes read)
[    7.040938] random: jshn: uninitialized urandom read (4 bytes read)
[    7.366719] mtk_soc_eth 1e100000.ethernet eth0: configuring for fixed/rgmii link mode
[    7.387219] mtk_soc_eth 1e100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[    7.394610] mt7530-mdio mdio-bus:1f lan1: configuring for phy/gmii link mode
[    7.418562] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    9.603237] UBIFS (ubi0:1): Mounting in unauthenticated mode
[    9.614883] UBIFS (ubi0:1): background thread "ubifs_bgt0_1" started, PID 488
[    9.695439] UBIFS (ubi0:1): recovery needed
[    9.891563] UBIFS (ubi0:1): recovery completed
[    9.900708] UBIFS (ubi0:1): UBIFS: mounted UBI device 0, volume 1, name "rootfs_data"
[    9.916334] UBIFS (ubi0:1): LEB size: 126976 bytes (124 KiB), min./max. I/O unit sizes: 2048 bytes/2048 bytes
[    9.936092] UBIFS (ubi0:1): FS size: 27299840 bytes (26 MiB, 215 LEBs), max 225 LEBs, journal size 1396736 bytes (1 MiB, 11 LEBs)
[    9.959303] UBIFS (ubi0:1): reserved for root: 1289438 bytes (1259 KiB)
[    9.972480] UBIFS (ubi0:1): media format: w5/r0 (latest is w5/r0), UUID 9060038D-DBF2-4B76-AAA4-D86B0B1BDE61, small LPT model
[   10.001806] mount_root: switching to ubifs overlay
[   10.032536] urandom-seed: Seeding with /etc/urandom.seed
[   10.148316] procd: - early -
[   10.154432] procd: - watchdog -
[   10.782239] procd: - watchdog -
[   10.791226] procd: - ubus -
[   10.875128] random: ubusd: uninitialized urandom read (4 bytes read)
[   10.890288] random: ubusd: uninitialized urandom read (4 bytes read)
[   10.903621] random: ubusd: uninitialized urandom read (4 bytes read)
[   10.920107] procd: - init -
[   11.650076] kmodloader: loading kernel modules from /etc/modules.d/*
[   11.854515] Loading modules backported from Linux version v6.1.24-0-g0102425ac76b
[   11.869495] Backport generated by backports.git v5.15.92-1-44-gd6ea70fafd36
[   12.127562] pci 0000:00:00.0: enabling device (0006 -> 0007)
[   12.138912] mt7615e 0000:01:00.0: enabling device (0000 -> 0002)
[   12.165531] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht'
[   12.171370] pci 0000:00:01.0: enabling device (0006 -> 0007)
[   12.182755] mt7615e 0000:02:00.0: enabling device (0000 -> 0002)
[   12.195675] mt7615e 0000:01:00.0: HW/SW Version: 0x8a108a10, Build Time: 20180518100604a
[   12.195675] 
[   12.221698] ieee80211 phy1: Selected rate control algorithm 'minstrel_ht'
[   12.221755] ieee80211 phy1: copying sband (band 1) due to VHT EXT NSS BW flag
[   12.245168] mt7615e 0000:02:00.0: HW/SW Version: 0x8a108a10, Build Time: 20180518100604a
[   12.245168] 
[   12.290486] PPP generic driver version 2.4.2
[   12.303355] NET: Registered PF_PPPOX protocol family
[   12.326323] kmodloader: done loading kernel modules from /etc/modules.d/*
[   12.510474] mt7615e 0000:01:00.0: N9 Firmware Version: _reserved_, Build Time: 20200814163649
[   12.527701] mt7615e 0000:02:00.0: N9 Firmware Version: _reserved_, Build Time: 20200814163649
[   12.662903] mt7615e 0000:01:00.0: CR4 Firmware Version: _reserved_, Build Time: 20190415154149
[   12.662897] mt7615e 0000:02:00.0: CR4 Firmware Version: _reserved_, Build Time: 20190415154149
[   12.828462] random: jshn: uninitialized urandom read (4 bytes read)
[   13.208287] random: jshn: uninitialized urandom read (4 bytes read)
[   13.227587] urngd: v1.0.2 started.
[   13.239715] random: ubusd: uninitialized urandom read (4 bytes read)
[   13.944833] random: jshn: uninitialized urandom read (4 bytes read)
[   14.464420] random: crng init done
[   14.471240] random: 49 urandom warning(s) missed due to ratelimiting
[   21.022872] mtk_soc_eth 1e100000.ethernet eth0: Link is Down
[   21.061363] mtk_soc_eth 1e100000.ethernet eth0: configuring for fixed/rgmii link mode
[   21.077491] mtk_soc_eth 1e100000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
[   21.086427] mt7530-mdio mdio-bus:1f lan1: configuring for phy/gmii link mode
[   21.110293] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[   21.124398] br-lan: port 1(lan1) entered blocking state
[   21.134921] br-lan: port 1(lan1) entered disabled state
[   21.148245] device lan1 entered promiscuous mode
[   21.157563] device eth0 entered promiscuous mode
[   21.206695] mt7530-mdio mdio-bus:1f lan2: configuring for phy/gmii link mode
[   21.222996] br-lan: port 2(lan2) entered blocking state
[   21.233563] br-lan: port 2(lan2) entered disabled state
[   21.247662] device lan2 entered promiscuous mode
[   21.273618] mt7530-mdio mdio-bus:1f lan3: configuring for phy/gmii link mode
[   21.290413] br-lan: port 3(lan3) entered blocking state
[   21.300949] br-lan: port 3(lan3) entered disabled state
[   21.315095] device lan3 entered promiscuous mode
[   21.337273] mt7530-mdio mdio-bus:1f lan4: configuring for phy/gmii link mode
[   21.353270] br-lan: port 4(lan4) entered blocking state
[   21.363861] br-lan: port 4(lan4) entered disabled state
[   21.376831] device lan4 entered promiscuous mode
[   23.841402] mt7530-mdio mdio-bus:1f lan1: Link is Up - 1Gbps/Full - flow control off
[   23.865323] br-lan: port 1(lan1) entered blocking state
[   23.875824] br-lan: port 1(lan1) entered forwarding state
[   23.892355] IPv6: ADDRCONF(NETDEV_CHANGE): br-lan: link becomes ready
[   26.237692] br-lan: port 5(phy0-ap0) entered blocking state
[   26.248896] br-lan: port 5(phy0-ap0) entered disabled state
[   26.260748] device phy0-ap0 entered promiscuous mode
[   26.271174] br-lan: port 5(phy0-ap0) entered blocking state
[   26.282447] br-lan: port 5(phy0-ap0) entered forwarding state
[   26.311666] br-lan: port 5(phy0-ap0) entered disabled state
[   26.331760] device phy0-ap0 left promiscuous mode
[   26.341720] br-lan: port 5(phy0-ap0) entered disabled state
[   26.399491] br-lan: port 5(phy0-ap0) entered blocking state
[   26.410752] br-lan: port 5(phy0-ap0) entered disabled state
[   26.422701] device phy0-ap0 entered promiscuous mode
[   26.781756] IPv6: ADDRCONF(NETDEV_CHANGE): phy0-ap0: link becomes ready
[   26.795458] br-lan: port 5(phy0-ap0) entered blocking state
[   26.806710] br-lan: port 5(phy0-ap0) entered forwarding state
[   26.981973] do_page_fault(): sending SIGSEGV to umdns for invalid write access to 00000004
[   26.998634] epc = 77d0d62b in libubox.so.20230523[77d0b000+1f000]
[   27.010962] ra  = 77d10a0f in libubox.so.20230523[77d0b000+1f000]
[   27.040250] br-lan: port 6(phy0-ap1) entered blocking state
[   27.051531] br-lan: port 6(phy0-ap1) entered disabled state
[   27.063747] device phy0-ap1 entered promiscuous mode
[   27.091725] br-lan: port 6(phy0-ap1) entered blocking state
[   27.103053] br-lan: port 6(phy0-ap1) entered forwarding state
[   27.124909] device phy0-ap1 left promiscuous mode
[   27.134663] br-lan: port 6(phy0-ap1) entered disabled state
[   27.208020] br-lan: port 6(phy0-ap1) entered blocking state
[   27.219331] br-lan: port 6(phy0-ap1) entered disabled state
[   27.231348] device phy0-ap1 entered promiscuous mode
[   27.241848] br-lan: port 6(phy0-ap1) entered blocking state
[   27.253078] br-lan: port 6(phy0-ap1) entered forwarding state
[   27.304397] br-lan: port 6(phy0-ap1) entered disabled state
[   27.436274] IPv6: ADDRCONF(NETDEV_CHANGE): phy0-ap1: link becomes ready
[   27.449842] br-lan: port 6(phy0-ap1) entered blocking state
[   27.461022] br-lan: port 6(phy0-ap1) entered forwarding state
[   27.529176] br-lan: port 7(phy0-ap2) entered blocking state
[   27.540437] br-lan: port 7(phy0-ap2) entered disabled state
[   27.553262] device phy0-ap2 entered promiscuous mode
[   27.567891] br-lan: port 7(phy0-ap2) entered blocking state
[   27.579115] br-lan: port 7(phy0-ap2) entered forwarding state
[   27.598359] device phy0-ap2 left promiscuous mode
[   27.608104] br-lan: port 7(phy0-ap2) entered disabled state
[   27.648486] br-lan: port 7(phy0-ap2) entered blocking state
[   27.659726] br-lan: port 7(phy0-ap2) entered disabled state
[   27.671689] device phy0-ap2 entered promiscuous mode
[   27.682205] br-lan: port 7(phy0-ap2) entered blocking state
[   27.693457] br-lan: port 7(phy0-ap2) entered forwarding state
[   27.986661] IPv6: ADDRCONF(NETDEV_CHANGE): phy0-ap2: link becomes ready
[   29.459584] br-lan: port 8(phy1-ap0) entered blocking state
[   29.470801] br-lan: port 8(phy1-ap0) entered disabled state
[   29.482573] device phy1-ap0 entered promiscuous mode
[   29.499939] device phy1-ap0 left promiscuous mode
[   29.509566] br-lan: port 8(phy1-ap0) entered disabled state
[   29.567509] br-lan: port 8(phy1-ap0) entered blocking state
[   29.578843] br-lan: port 8(phy1-ap0) entered disabled state
[   29.590735] device phy1-ap0 entered promiscuous mode
[   43.148869] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
[   43.165432] epc = 0040c11b in dawn[400000+13000]
[   43.174724] ra  = 0040c11b in dawn[400000+13000]
[   58.284323] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
[   58.300910] epc = 0040c11b in dawn[400000+13000]
[   58.310208] ra  = 0040c11b in dawn[400000+13000]
[   73.420210] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
[   73.436814] epc = 0040c11b in dawn[400000+13000]
[   73.446102] ra  = 0040c11b in dawn[400000+13000]
[   88.556723] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
[   88.573244] epc = 0040c11b in dawn[400000+13000]
[   88.582496] ra  = 0040c11b in dawn[400000+13000]
[   96.808727] IPv6: ADDRCONF(NETDEV_CHANGE): phy1-ap0: link becomes ready
[   96.822263] br-lan: port 8(phy1-ap0) entered blocking state
[   96.833441] br-lan: port 8(phy1-ap0) entered forwarding state
[   96.899503] br-lan: port 9(phy1-ap1) entered blocking state
[   96.910814] br-lan: port 9(phy1-ap1) entered disabled state
[   96.922720] device phy1-ap1 entered promiscuous mode
[   96.935423] br-lan: port 9(phy1-ap1) entered blocking state
[   96.946671] br-lan: port 9(phy1-ap1) entered forwarding state
[   96.966379] device phy1-ap1 left promiscuous mode
[   96.976153] br-lan: port 9(phy1-ap1) entered disabled state
[   97.028264] br-lan: port 9(phy1-ap1) entered blocking state
[   97.039517] br-lan: port 9(phy1-ap1) entered disabled state
[   97.051310] device phy1-ap1 entered promiscuous mode
[   97.061591] br-lan: port 9(phy1-ap1) entered blocking state
[   97.072766] br-lan: port 9(phy1-ap1) entered forwarding state
[   97.089308] IPv6: ADDRCONF(NETDEV_CHANGE): phy1-ap1: link becomes ready

This is using dawn 2022-07-24-9e8060ea-3 used on OpenWrt 23.05.2 r23630-842932a63d on DIR-2640 A1 device.

I'm unable to reason out why dawn needs to read from such low memory address.

As an aside, umdns is not able to discover any devices unless I restart the service, and therefore DAWN is not able to steer the devices to neighbouring APs. There were similar reports on the forum in past. I wonder if it's related to the kernel killing the umdns process. Is there a suggested workaround as DAWN is recommended to be used with umdns discovery for neighbouring APs? I'm considering restarting the umdns unit a few seconds after boot up.

Edit: Found the a bug report for the umdns issue at https://github.com/openwrt/openwrt/issues/14120

1 Like

I changed the loglevel to 3 (which gives the most amount of logs), and have observed that kernel kills dawn process every 15 seconds. I'm on mostly default dawn config.

Here's the syslog of two consecutive process killings. It always seems to follow IW info update for AP 0C:0E:76:DD:47:74 and page faults at the same address. From source code, it appears to be in the function update_iw_info, perhaps inside client_find_first_bc_entry

syslog
Mon Jan 22 17:40:20 2024 daemon.debug dawn: IW info update for AP 0C:0E:76:DD:47:74
Mon Jan 22 17:40:20 2024 daemon.debug dawn: client_find_first_bc_entry()=datastorage.c@116 Entering...
Mon Jan 22 17:40:20 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:118[2011663756l]
Mon Jan 22 17:40:20 2024 kern.info kernel: [347039.664690] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
Mon Jan 22 17:40:20 2024 kern.info kernel: [347039.681432] epc = 0040c11b in dawn[400000+13000]
Mon Jan 22 17:40:20 2024 kern.info kernel: [347039.690879] ra  = 0040c11b in dawn[400000+13000]
Mon Jan 22 17:40:35 2024 daemon.info dawn: DAWN instance built around 14:16:58 on Jan  9 2024 starting...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_dawn_network()=dawn_uci.c@394 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_time_config()=dawn_uci.c@85 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_dawn_hostapd_dir()=dawn_uci.c@443 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: insert_macs_from_file()=datastorage.c@1290 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@datastorage.c:1299)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@datastorage.c:1304)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Printing MAC list:
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (datastorage.c:1336 -> X@datastorage.c:1299)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (datastorage.c:1340 -> X@datastorage.c:1304)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: dawn_init_ubus()=ubus.c@765 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Connected to ubus
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:776)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_dawn_metric()=dawn_uci.c@320 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_find_metric_section()=dawn_uci.c@222 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_find_metric_section()=dawn_uci.c@222 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_lookup_mac_list()=dawn_uci.c@195 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_find_metric_section()=dawn_uci.c@222 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_lookup_mac_list()=dawn_uci.c@195 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uloop_add_data_cbs()=ubus.c@2324 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_add_oject()=ubus.c@1624 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: start_tcp_con_update()=ubus.c@1178 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Adding socket!
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscribe_to_new_interfaces()=ubus.c@1796 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscriber_to_interface()=ubus.c@1767 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (C@ubus.c:1769)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_hostname()=dawn_uci.c@28 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (dawn_uci.c:58 -> X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscribe()=ubus.c@1690 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: respond_to_notify()=ubus.c@1639 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:1642)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:1650 -> X@ubus.c:1642)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:1658)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:1669 -> X@ubus.c:1658)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_rrm()=ubus.c@982 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:992 -> X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Subscribed to: phy0-ap1
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscriber_to_interface()=ubus.c@1767 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (C@ubus.c:1769)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_hostname()=dawn_uci.c@28 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (dawn_uci.c:58 -> X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscribe()=ubus.c@1690 Entering...
Mon Jan 22 17:40:35 2024 daemon.warn dawn: Failed to lookup ID!
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscriber_to_interface()=ubus.c@1767 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (C@ubus.c:1769)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_hostname()=dawn_uci.c@28 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (dawn_uci.c:58 -> X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscribe()=ubus.c@1690 Entering...
Mon Jan 22 17:40:35 2024 daemon.warn dawn: Failed to lookup ID!
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscriber_to_interface()=ubus.c@1767 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (C@ubus.c:1769)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_hostname()=dawn_uci.c@28 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (dawn_uci.c:58 -> X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscribe()=ubus.c@1690 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: respond_to_notify()=ubus.c@1639 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:1642)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:1650 -> X@ubus.c:1642)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:1658)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:1669 -> X@ubus.c:1658)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_rrm()=ubus.c@982 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_rrm_cb()=ubus.c@944 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Copied Neighborreport: 0a0e76dd4774ef0900005101070603000100,
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:992 -> X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:992 -> X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Subscribed to: phy0-ap2
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscriber_to_interface()=ubus.c@1767 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (C@ubus.c:1769)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: uci_get_hostname()=dawn_uci.c@28 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (dawn_uci.c:58 -> X@dawn_uci.c:33)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscribe()=ubus.c@1690 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: respond_to_notify()=ubus.c@1639 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:1642)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:1650 -> X@ubus.c:1642)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:1658)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:1669 -> X@ubus.c:1658)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_rrm()=ubus.c@982 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_rrm_cb()=ubus.c@944 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Copied Neighborreport: 0c0e76dd4774ef0900005101070603000100,
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:992 -> X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_rrm_cb()=ubus.c@944 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Copied Neighborreport: 0a0e76dd4774ef0900005101070603000100,
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:992 -> X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:992 -> X@ubus.c:989)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Subscribed to: phy0-ap0
Mon Jan 22 17:40:35 2024 daemon.debug dawn: update_hostapd_sockets()=ubus.c@1187 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: subscribe_to_new_interfaces()=ubus.c@1796 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: remove_probe_array_cb()=ubus.c@2332 [Thread] : Removing old probe entries!
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 430724@ubus.c:2334[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: remove_old_probe_entries()=datastorage.c@1160 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430724@datastorage.c:1162[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 4306E8@datastorage.c:1166[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 4306E8@datastorage.c:1209[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 430724@ubus.c:2336[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: [Thread] : Removing old entries finished!
Mon Jan 22 17:40:35 2024 daemon.debug dawn: remove_client_array_cb()=ubus.c@2344 [ULOOP] : Removing old client entries!
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 4306E8@ubus.c:2346[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: remove_old_client_entries()=datastorage.c@1145 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:1147[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 4306E8@ubus.c:2348[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: remove_ap_array_cb()=ubus.c@2354 [ULOOP] : Removing old ap entries!
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 430704@ubus.c:2356[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1213[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 430704@ubus.c:2358[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: update_clients()=ubus.c@999 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_clients()=ubus.c@924 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:931)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ubus_get_clients_cb()=ubus.c@839 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:868)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:871)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:874 -> X@ubus.c:871)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: blobmsg_add_macaddr()=ubus.c@246 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: get_band_from_bssid()=ubus.c@824 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 430704@ubus.c:825[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@ubus.c:827[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ap_array_get_ap()=datastorage.c@1112 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1114[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 430704@ubus.c:833[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: send_blob_attr_via_network()=ubus.c@667 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:678)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:681)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (X@ubus.c:687)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: send_tcp()=tcpsocket.c@386 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: --------Connections------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ------------------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (M@tcpsocket.c:440)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (tcpsocket.c:468 -> M@tcpsocket.c:440)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:700 -> X@ubus.c:687)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:704 -> X@ubus.c:681)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:706 -> X@ubus.c:678)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: parse_to_clients()=msghandler.c@484 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: dump_client_table()=msghandler.c@465 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: dump_client()=msghandler.c@378 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (M@msghandler.c:380)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: dump_rrm_data()=msghandler.c@365 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 4306E8@msghandler.c:446[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: client_array_update_entry()=datastorage.c@1226 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:1227[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: client_find_first_bc_entry()=datastorage.c@116 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:118[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: client_array_update_entry()=datastorage.c@1249 Adding entry...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 4306E8@msghandler.c:455[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: dump_client()=msghandler.c@378 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (M@msghandler.c:380)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: dump_rrm_data()=msghandler.c@365 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 4306E8@msghandler.c:446[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: client_array_update_entry()=datastorage.c@1226 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:1227[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: client_find_first_bc_entry()=datastorage.c@116 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:118[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: client_array_update_entry()=datastorage.c@1249 Adding entry...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 4306E8@msghandler.c:455[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: registering memory (M@msghandler.c:508)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: Neighbor Report - hex length of 36
Mon Jan 22 17:40:35 2024 daemon.debug dawn: insert_to_ap_array()=datastorage.c@1064 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 430704@datastorage.c:1068[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1070[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ap_array_update_entry()=datastorage.c@1013 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1016[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ap_array_insert()=datastorage.c@1085 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1087[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: --------APs------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1434[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1419[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ssid: ether, bssid_addr: 0C:0E:76:DD:47:74, freq: 2412, ht: 1, vht: 0, chan_utilz: 0, neighbor_report: 0c0e76dd4774ef0900005101070603000100
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ------------------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 430704@datastorage.c:1077[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 4306E8@ubus.c:902[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: --------Clients------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:1410[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:1396[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: bssid_addr: 0C:0E:76:DD:47:74, client_addr: 90:A8:22:76:E2:23, freq: 2412, ht_supported: 1, vht_supported: 0, ht: 1, vht: 0, kick: 0
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:1396[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: bssid_addr: 0C:0E:76:DD:47:74, client_addr: D8:F1:5B:C7:1B:2C, freq: 2412, ht_supported: 1, vht_supported: 0, ht: 1, vht: 0, kick: 0
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ------------------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 4306E8@ubus.c:904[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 430704@ubus.c:906[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: --------APs------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1434[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1419[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ssid: ether, bssid_addr: 0C:0E:76:DD:47:74, freq: 2412, ht: 1, vht: 0, chan_utilz: 0, neighbor_report: 0c0e76dd4774ef0900005101070603000100
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ------------------
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX  unlock = 430704@ubus.c:908[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: mem-audit: unregistering memory (ubus.c:911 -> X@ubus.c:868)...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: update_iw_info()=datastorage.c@654 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 4306E8@datastorage.c:656[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 430724@datastorage.c:657[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX    lock = 430704@datastorage.c:658[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:660[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: ap_array_get_ap()=datastorage.c@1112 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 430704@datastorage.c:1114[2012061068l]
Mon Jan 22 17:40:35 2024 daemon.debug dawn: IW info update for AP 0C:0E:76:DD:47:74
Mon Jan 22 17:40:35 2024 daemon.debug dawn: client_find_first_bc_entry()=datastorage.c@116 Entering...
Mon Jan 22 17:40:35 2024 daemon.debug dawn: MUTEX require = 4306E8@datastorage.c:118[2012061068l]
Mon Jan 22 17:40:35 2024 kern.info kernel: [347054.817419] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
Mon Jan 22 17:40:35 2024 kern.info kernel: [347054.834186] epc = 0040c11b in dawn[400000+13000]
Mon Jan 22 17:40:35 2024 kern.info kernel: [347054.843696] ra  = 0040c11b in dawn[400000+13000]
/etc/config/dawn
config local
        option loglevel '3'

config network
        option broadcast_ip '192.168.2.255'
        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'

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

config times
        option con_timeout '60'
        option update_client '10'
        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 '20'

config metric 'global'
        option min_probe_count '3'
        option bandwidth_threshold '6'
        option use_station_count '0'
        option max_station_diff '1'
        option eval_probe_req '0'
        option eval_auth_req '0'
        option eval_assoc_req '0'
        option kicking '3'
        option kicking_threshold '20'
        option deny_auth_reason '1'
        option deny_assoc_reason '17'
        option min_number_to_kick '3'
        option chan_util_avg_period '3'
        option set_hostapd_nr '0'
        option duration '0'
        option rrm_mode 'pat'

config metric '802_11g'
        option initial_score '80'
        option ht_support '5'
        option vht_support '5'
        option no_ht_support '0'
        option no_vht_support '0'
        option rssi '15'
        option rssi_val '-60'
        option low_rssi_val '-80'
        option low_rssi '-15'
        option chan_util '0'
        option chan_util_val '140'
        option max_chan_util '-15'
        option max_chan_util_val '170'
        option rssi_weight '0'
        option rssi_center '-70'

config metric '802_11a'
        option initial_score '100'
        option ht_support '5'
        option vht_support '5'
        option no_ht_support '0'
        option no_vht_support '0'
        option rssi '15'
        option rssi_val '-60'
        option low_rssi_val '-80'
        option low_rssi '-15'
        option chan_util '0'
        option chan_util_val '140'
        option max_chan_util '-15'
        option max_chan_util_val '170'
        option rssi_weight '0'
        option rssi_center '-70'

I'm not familiar with DAWN code, so this is the extent of debugging I could do.

Looks like it was DFS wreaking havoc on my AP

syslog
Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap1: BEACON-REQ-TX-STATUS d0:88:0c:5c:21:be 212 ack=1
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap1: BEACON-RESP-RX d0:88:0c:5c:21:be 212 04
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap0: DFS-RADAR-DETECTED freq=5260 ht_enabled=0 chan_offset=0 chan_width=3 cf1=5290 cf2=0
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: dfs_downgrade_bandwidth: no DFS channels left, waiting for NOP to finish
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap0: AP-DISABLED
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED c0:3c:59:b4:ec:40
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap0: AP-STA-DISCONNECTED 90:a8:22:76:e2:23
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap1: AP-STA-DISCONNECTED 90:78:b2:b2:c4:af
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap1: AP-STA-DISCONNECTED 66:6f:27:87:38:5d
Tue Jan 23 10:04:34 2024 daemon.notice hostapd: phy1-ap1: AP-STA-DISCONNECTED d0:88:0c:5c:21:be
Tue Jan 23 10:04:34 2024 daemon.err hostapd: 20/40 MHz: center segment 0 (=58) and center freq 1 (=5270) not in sync
Tue Jan 23 10:04:35 2024 kern.info kernel: [47475.365071] br-lan: port 9(phy1-ap1) entered disabled state
Tue Jan 23 10:04:35 2024 kern.info kernel: [47475.412376] device phy1-ap1 left promiscuous mode
Tue Jan 23 10:04:35 2024 kern.info kernel: [47475.421869] br-lan: port 9(phy1-ap1) entered disabled state
Tue Jan 23 10:04:35 2024 daemon.notice netifd: Network device 'phy1-ap1' link is down
Tue Jan 23 10:04:35 2024 daemon.notice hostapd: nl80211: Failed to remove interface phy1-ap1 from bridge br-lan: No such device
Tue Jan 23 10:04:35 2024 daemon.notice hostapd: nl80211: deinit ifname=phy1-ap0 disabled_11b_rates=0
Tue Jan 23 10:04:36 2024 daemon.notice hostapd: phy1-ap0: interface state ENABLED->DISABLED
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.356129] br-lan: port 8(phy1-ap0) entered disabled state
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.369057] device phy1-ap0 left promiscuous mode
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.378682] br-lan: port 8(phy1-ap0) entered disabled state
Tue Jan 23 10:04:36 2024 daemon.notice netifd: Network device 'phy1-ap0' link is down
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.475766] br-lan: port 8(phy1-ap0) entered blocking state
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.487005] br-lan: port 8(phy1-ap0) entered disabled state
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.498698] device phy1-ap0 entered promiscuous mode
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.508974] br-lan: port 8(phy1-ap0) entered blocking state
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.520147] br-lan: port 8(phy1-ap0) entered forwarding state
Tue Jan 23 10:04:36 2024 daemon.notice hostapd: phy1-ap0: interface state DISABLED->COUNTRY_UPDATE
Tue Jan 23 10:04:36 2024 daemon.notice hostapd: phy1-ap0: interface state COUNTRY_UPDATE->HT_SCAN
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.544513] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.561075] epc = 0040c11b in dawn[400000+13000]
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.570403] ra  = 0040c11b in dawn[400000+13000]
Tue Jan 23 10:04:36 2024 kern.info kernel: [47476.579838] br-lan: port 8(phy1-ap0) entered disabled state
Tue Jan 23 10:04:36 2024 daemon.info hostapd: phy0-ap2: STA 66:6f:27:87:38:5d IEEE 802.11: authenticated
Tue Jan 23 10:04:36 2024 daemon.info hostapd: phy0-ap2: STA 66:6f:27:87:38:5d IEEE 802.11: associated (aid 2)
Tue Jan 23 10:04:36 2024 daemon.notice hostapd: phy0-ap2: AP-STA-CONNECTED 66:6f:27:87:38:5d auth_alg=open
Tue Jan 23 10:04:36 2024 daemon.info hostapd: phy0-ap2: STA 66:6f:27:87:38:5d RADIUS: starting accounting session 8CBD7DF7C3A0195D
Tue Jan 23 10:04:36 2024 daemon.info hostapd: phy0-ap2: STA 66:6f:27:87:38:5d WPA: pairwise key handshake completed (RSN)
Tue Jan 23 10:04:36 2024 daemon.notice hostapd: phy0-ap2: EAPOL-4WAY-HS-COMPLETED 66:6f:27:87:38:5d
Tue Jan 23 10:04:37 2024 daemon.err hostapd: could not get valid channel
Tue Jan 23 10:04:37 2024 daemon.notice hostapd: phy1-ap0: interface state HT_SCAN->DFS
Tue Jan 23 10:04:37 2024 daemon.info hostapd: phy0-ap0: STA 90:a8:22:76:e2:23 IEEE 802.11: authenticated
Tue Jan 23 10:04:37 2024 daemon.info hostapd: phy0-ap0: STA 90:a8:22:76:e2:23 IEEE 802.11: associated (aid 2)
Tue Jan 23 10:04:37 2024 daemon.notice hostapd: phy0-ap0: AP-STA-CONNECTED 90:a8:22:76:e2:23 auth_alg=open
Tue Jan 23 10:04:37 2024 daemon.info hostapd: phy0-ap0: STA 90:a8:22:76:e2:23 RADIUS: starting accounting session FAFB83784ADA135B
Tue Jan 23 10:04:37 2024 daemon.info hostapd: phy0-ap0: STA 90:a8:22:76:e2:23 WPA: pairwise key handshake completed (RSN)
Tue Jan 23 10:04:37 2024 daemon.notice hostapd: phy0-ap0: EAPOL-4WAY-HS-COMPLETED 90:a8:22:76:e2:23
Tue Jan 23 10:04:40 2024 daemon.notice hostapd: phy0-ap2: AP-STA-DISCONNECTED 66:6f:27:87:38:5d
Tue Jan 23 10:04:51 2024 daemon.warn dawn: Failed to lookup ID!
Tue Jan 23 10:04:51 2024 daemon.warn dawn: Failed to lookup ID!
Tue Jan 23 10:04:51 2024 kern.info kernel: [47491.694630] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
Tue Jan 23 10:04:51 2024 kern.info kernel: [47491.711267] epc = 0040c11b in dawn[400000+13000]
Tue Jan 23 10:04:51 2024 kern.info kernel: [47491.720518] ra  = 0040c11b in dawn[400000+13000]
Tue Jan 23 10:04:53 2024 daemon.err hostapd: nl80211: kernel reports: key addition failed
Tue Jan 23 10:04:53 2024 daemon.info hostapd: phy0-ap2: STA 90:78:b2:b2:c4:af IEEE 802.11: associated (aid 2)
Tue Jan 23 10:04:53 2024 daemon.notice hostapd: phy0-ap2: AP-STA-CONNECTED 90:78:b2:b2:c4:af auth_alg=ft
Tue Jan 23 10:05:06 2024 daemon.warn dawn: Failed to lookup ID!
Tue Jan 23 10:05:06 2024 daemon.warn dawn: Failed to lookup ID!
Tue Jan 23 10:05:06 2024 kern.info kernel: [47506.832381] do_page_fault(): sending SIGSEGV to dawn for invalid read access from 00000068
Tue Jan 23 10:05:06 2024 kern.info kernel: [47506.848960] epc = 0040c11b in dawn[400000+13000]
Tue Jan 23 10:05:06 2024 kern.info kernel: [47506.858217] ra  = 0040c11b in dawn[400000+13000]

I haven't manually disabled the AP (ethereal on radio1 = ap1-phy1), but luci shows the AP as disabled.

I'll have to debug what DFS is doing to my network, but it's likely dawn is page-faulting due to this.

Update: I've moved off DFS channels and no longer see DAWN page fault.

1 Like

Do I need to install Dawn at only one of devices or to all?

You have to install it to all AP's

DAWN does not work for me, it doesn't steer any of my devices.
The log always shows for each device:

daemon.warn dawn: Client / BSSID = XX:XX:XX:XX:XX:XX:XX:XX / YY:YY:YY:YY:YY:YY:YY: BEACON REQUEST failed

I have been trying to get DAWN to run for several months now, but without success.
My config is actually default.

What can I do?

Do you have the most verbose logging turned on? Maybe that gives more of a clue.

Alternatively you could try usteer

Thank you for your answer,

I wanted to change the loglevel before, but I don't quite understand in the documentation which loglevel is the one that outputs the most. Which one should I use, 1,2,3,4 or 5?

I've seen a few forum posts about usteer, and I've often read that usteer barely steers, so it doesn't really make a difference to use usteer or not. I haven't tried it myself, but I've read that a lot.

0 seems to be highest level of debugging, see https://github.com/berlin-open-wireless-lab/DAWN/blob/master/CONFIGURE.md.

About usteer vs dawn it is all a matter how you setup thing, specifically how aggressive you want to be with kicking. The thing is with kicking off a client really refuses to roam then the AP can kick them but the client does lose connection, battery usage goes up, etc. Same with aggressively requesting roam scans. I personally do not think this is the right idea. I think the client should make the right decision given the information that should be provided by dawn or usteer using 802.11k/v. What i did was tune transmit powers such that clients tend to favor 5 Ghz and that at the point I want them to roam from AP to AP that the signal is not to strong, such that the clients get nervous about losing connection already by themselves.

For example i have my 2.5GHz transmit power set to the minimum.

Anyway, if people claim usteer does not do anything that is because by default it is not set up to aggressively kick.

In the end use what you like of course

Does usteer provides similar functionality to dawn?
Any known benefits for trying usteer?

Same goal, try to get wifi clients connected to the right AP and band. It is also decentralized. Methods are also similar, provide clients with AP list, and suggest them to start roaming/scanning. Both can also kick clients off ths AP. Exact criteria when it is doing what likely are different/needs to be tweaked. I would not dare say one is better than the other, it is just different.

3 Likes

Does dawn depend on beacon report to steer client ? What if client doesn't report some channel requested from rrm_beacon_req, will it affect client roaming ? Some device i had does this and it stuck on 2.4Ghz wifi.

It does not strictly depend on the beacon reports. If the client does not support them but scans for other APs and BSSIDs periodically on its own, DAWN can still use the signal level of these scans. The result would be delayed steering.

I think this client support 802.11v pretty well, it just doesn't report some channel like 36 or 64 while it successfully report AP transmitting in channel 149-161. I end up having to reconnect the client manually in order to restore connection on channel 36. I did try to move upstair and back and ended up with 2.4Ghz.