Roaming Issues Xiaomi AX3600

Hi,

I have two "dumb" openwrt APs (Xiaomi AX3600) connected with a LAN. No WAN, VLAN or firewall.
Both APs have one ath10k (only 2.4 GHz used) and one ath11k (2.4 and 5 GHz used).
While ultimately I want to roam between ath11k 2.4 and 5 GHz with one SSID, currently they are two separate SSIDs. All are in the same IP4 subnet (for now IPV6 is disabled as far as I could do that).
One AP is the DHCP- and DNS-server of the LAN.

When I move a device from one AP to the other, it usually takes a very long time (minute/s) until the device can communicate again. IP stays the same, but sometimes vanishes for some time. Restarting Wifi on the devices (so far tested on iPhone 8, 12 or Samsung 7, 10) usually speed up a reconnect, but is not as instant as new connections.

In the process of debugging this I learned a bit about 802.11r, k, v and DAWN.
Enabling and configuring them with as much info as I could find did not help. The symptom is still the same. Although I sometimes see messages that 4-way handshake is skipped.

What I tried:

  • Just use same SSID on both APs, coming from a 2 AVM Fritzbox setup where this was (good) enough
  • Disabled WPA3, only using WPA2-PSK with AES
  • Enable 802.11r with luci (using FT over DS and generate PMK locally, started with same NAS-ID and mobility domain, then learned I need a different NAS-ID on each of the 6 interfaces).
  • Enabled Disassociate On Low Acknowledgement
  • Installed full hostap v2.10-devel and wpad (I think)
    • hostapd-common - 2021-05-22-b102f19b-17
    • hostapd-utils - 2021-05-22-b102f19b-20
    • wpad-wolfssl - 2021-05-22-b102f19b-20
  • Enabled more logging for hostapd (set wireless.radio*.log_level=1)

This is how a bad roaming looks like now:

2021-07-13T20:35:45+02:00 ax2 hostapd: nl80211: kernel reports: key addition failed
2021-07-13T20:35:45+02:00 ax2 hostapd: wlan1: STA 52:c5:22:5f:b0:c1 IEEE 802.11: associated (aid 2)
2021-07-13T20:35:45+02:00 ax2 hostapd: wlan1: AP-STA-CONNECTED 52:c5:22:5f:b0:c1
2021-07-13T20:35:47+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:47+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:35:47+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:47+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:35:48+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:48+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:35:48+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:48+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:35:51+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:51+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:35:51+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:51+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:35:55+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:35:55+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:55+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:35:55+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:57+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:35:57+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:57+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:35:57+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:59+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:35:59+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:35:59+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:35:59+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:03+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:03+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:03+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:03+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:12+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:12+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:12+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:12+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: AP-STA-DISCONNECTED 52:c5:22:5f:b0:c1
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: STA 52:c5:22:5f:b0:c1 IEEE 802.11: disassociated
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: STA 52:c5:22:5f:b0:c1 IEEE 802.11: authenticated
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: STA 52:c5:22:5f:b0:c1 IEEE 802.11: associated (aid 2)
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: AP-STA-CONNECTED 52:c5:22:5f:b0:c1
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: STA 52:c5:22:5f:b0:c1 RADIUS: starting accounting session 5FC92EF7F7AE7085
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: STA 52:c5:22:5f:b0:c1 WPA: pairwise key handshake completed (RSN)
2021-07-13T20:36:16+02:00 ax2 hostapd: wlan1: EAPOL-4WAY-HS-COMPLETED 52:c5:22:5f:b0:c1
2021-07-13T20:36:16+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:16+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:36:16+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:16+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:36:18+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:18+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:36:18+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:18+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:36:21+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:21+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:36:21+02:00 ax1 dnsmasq-dhcp[3407]: DHCPREQUEST(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:21+02:00 ax1 dnsmasq-dhcp[3407]: DHCPACK(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1 JoBa-SE
2021-07-13T20:36:26+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:26+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:26+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:26+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:27+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:27+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:27+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:27+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:29+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:29+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:29+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:29+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:33+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:33+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:33+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:33+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:42+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:42+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:42+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:42+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:50+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:50+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:50+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:50+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:58+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:58+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:36:58+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:36:58+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:37:07+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:37:07+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:37:07+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:37:07+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:37:15+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:37:15+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:37:15+02:00 ax1 dnsmasq-dhcp[3407]: DHCPDISCOVER(br-lan) 52:c5:22:5f:b0:c1
2021-07-13T20:37:15+02:00 ax1 dnsmasq-dhcp[3407]: DHCPOFFER(br-lan) 192.168.1.193 52:c5:22:5f:b0:c1
2021-07-13T20:37:16+02:00 ax2 hostapd: wlan1: AP-STA-DISCONNECTED 52:c5:22:5f:b0:c1

This can repeat several times. No other syslog messages until communication works again some minutes later.

I hope I can get some hints on where to look next!

Config follows (too long for one post...)

Here is the current full uci config of the first AP with DHCP/DNS

collectd.globals=globals
collectd.globals.alt_config_file='/etc/collectd.conf'
dawn.@network[0]=network
dawn.@network[0].broadcast_ip='10.0.0.255'
dawn.@network[0].broadcast_port='1025'
dawn.@network[0].tcp_port='1026'
dawn.@network[0].network_option='2'
dawn.@network[0].shared_key='Niiiiiiiiiiiiiik'
dawn.@network[0].iv='Niiiiiiiiiiiiiik'
dawn.@network[0].use_symm_enc='1'
dawn.@network[0].collision_domain='-1'
dawn.@network[0].bandwidth='-1'
dawn.@ordering[0]=ordering
dawn.@ordering[0].sort_order='cbfs'
dawn.@hostapd[0]=hostapd
dawn.@hostapd[0].hostapd_dir='/var/run/hostapd'
dawn.@times[0]=times
dawn.@times[0].update_client='10'
dawn.@times[0].denied_req_threshold='30'
dawn.@times[0].remove_client='15'
dawn.@times[0].remove_probe='30'
dawn.@times[0].remove_ap='460'
dawn.@times[0].update_hostapd='10'
dawn.@times[0].update_tcp_con='10'
dawn.@times[0].update_chan_util='5'
dawn.@times[0].update_beacon_reports='20'
dawn.@metric[0]=metric
dawn.@metric[0].ap_weight='0'
dawn.@metric[0].ht_support='0'
dawn.@metric[0].vht_support='0'
dawn.@metric[0].no_ht_support='0'
dawn.@metric[0].no_vht_support='0'
dawn.@metric[0].rssi='10'
dawn.@metric[0].low_rssi='-500'
dawn.@metric[0].freq='100'
dawn.@metric[0].chan_util='0'
dawn.@metric[0].max_chan_util='-500'
dawn.@metric[0].rssi_val='-60'
dawn.@metric[0].low_rssi_val='-80'
dawn.@metric[0].chan_util_val='140'
dawn.@metric[0].max_chan_util_val='170'
dawn.@metric[0].min_probe_count='0'
dawn.@metric[0].bandwidth_threshold='6'
dawn.@metric[0].use_station_count='1'
dawn.@metric[0].max_station_diff='1'
dawn.@metric[0].eval_probe_req='0'
dawn.@metric[0].eval_auth_req='0'
dawn.@metric[0].eval_assoc_req='0'
dawn.@metric[0].kicking='0'
dawn.@metric[0].deny_auth_reason='1'
dawn.@metric[0].deny_assoc_reason='17'
dawn.@metric[0].use_driver_recog='1'
dawn.@metric[0].min_number_to_kick='3'
dawn.@metric[0].chan_util_avg_period='3'
dawn.@metric[0].set_hostapd_nr='1'
dawn.@metric[0].op_class='0'
dawn.@metric[0].duration='0'
dawn.@metric[0].mode='0'
dawn.@metric[0].scan_channel='0'
dcwapd.general=general
dcwapd.general.enabled='0'
dcwapd.general.tmpdir='/tmp/dcwapd'
dcwapd.channelset0=channel-set
dcwapd.channelset0.enabled='0'
dcwapd.channelset0.ssid='OpenWrt'
dcwapd.channelset0.bridge='br-lan'
dcwapd.channelset0.data_channels='datachannel0'
dcwapd.datachannel0=datachannel
dcwapd.datachannel0.ssid='OpenWrt-DCW'
dcwapd.datachannel0.bridge='br-dc0'
dcwapd.TFP_Default=filter-set
dcwapd.TFP_Default.mac='*'
dcwapd.TFP_Default.filters='filter0 filter1'
dcwapd.filter0=filter
dcwapd.filter0.packet_size='*'
dcwapd.filter0.source_ip='*'
dcwapd.filter0.source_port='80'
dcwapd.filter0.protocol='tcp'
dcwapd.filter0.dest_port='*'
dcwapd.filter1=filter
dcwapd.filter1.packet_size='*'
dcwapd.filter1.source_ip='*'
dcwapd.filter1.source_port='443'
dcwapd.filter1.protocol='tcp'
dcwapd.filter1.dest_port='*'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.d/resolv.conf.auto'
dhcp.@dnsmasq[0].localservice='1'
dhcp.@dnsmasq[0].ednspacket_max='1232'
dhcp.@dnsmasq[0].authoritative='1'
dhcp.@dnsmasq[0].local='/job/'
dhcp.@dnsmasq[0].domain='job'
dhcp.@dnsmasq[0].filterwin2k='1'
dhcp.@dnsmasq[0].rebind_domain='fritz.box' 'my-name.my-domain.com'
dhcp.@dnsmasq[0].server='192.168.1.221'
dhcp.@dnsmasq[0].address='/fritz2.box/192.168.1.223' '/my-name.my-domain.com/192.168.1.4' '/fritz1.box/192.168.1.222'
dhcp.lan=dhcp
dhcp.lan.interface='lan'
dhcp.lan.start='100'
dhcp.lan.leasetime='12h'
dhcp.lan.dhcpv4='server'
dhcp.lan.limit='100'
dhcp.lan.dhcp_option='42,192.168.1.222' '3,192.168.1.221' '7,192.168.1.4' '9,192.168.1.55'
dhcp.lan.ra_flags='none'
dhcp.wan=dhcp
dhcp.wan.interface='wan'
dhcp.wan.ignore='1'
dhcp.wan.ra_flags='none'
dhcp.odhcpd=odhcpd
dhcp.odhcpd.maindhcp='0'
dhcp.odhcpd.leasefile='/tmp/hosts/odhcpd'
dhcp.odhcpd.leasetrigger='/usr/sbin/odhcpd-update'
dhcp.odhcpd.loglevel='4'
dhcp.@domain[0]=domain
dhcp.@domain[0].name='job4'
dhcp.@domain[0].ip='192.168.1.4'
dhcp.@domain[1]=domain
dhcp.@domain[1].name='ax1'
dhcp.@domain[1].ip='192.168.1.236'
dhcp.@domain[2]=domain
dhcp.@domain[2].name='ax2'
dhcp.@domain[2].ip='192.168.1.237'
dhcp.@host[0]=host
dhcp.@host[0].name='vu-uno'
dhcp.@host[0].dns='1'
dhcp.@host[0].mac='00:1D:EC:17:0E:A1'
dhcp.@host[0].ip='192.168.1.15'
dropbear.@dropbear[0]=dropbear
dropbear.@dropbear[0].PasswordAuth='on'
dropbear.@dropbear[0].RootPasswordAuth='on'
dropbear.@dropbear[0].Port='22'
firewall.@defaults[0]=defaults
firewall.@defaults[0].input='ACCEPT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].synflood_protect='1'
firewall.@defaults[0].forward='ACCEPT'
firewall.@defaults[0].flow_offloading='1'
firewall.@defaults[0].flow_offloading_hw='1'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[0].network='lan'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].mtu_fix='1'
firewall.@zone[1].input='ACCEPT'
firewall.@zone[1].forward='ACCEPT'
firewall.@forwarding[0]=forwarding
firewall.@forwarding[0].src='lan'
firewall.@forwarding[0].dest='wan'
firewall.@rule[0]=rule
firewall.@rule[0].name='Allow-DHCP-Renew'
firewall.@rule[0].src='wan'
firewall.@rule[0].proto='udp'
firewall.@rule[0].dest_port='68'
firewall.@rule[0].target='ACCEPT'
firewall.@rule[0].family='ipv4'
firewall.@rule[1]=rule
firewall.@rule[1].name='Allow-Ping'
firewall.@rule[1].src='wan'
firewall.@rule[1].proto='icmp'
firewall.@rule[1].icmp_type='echo-request'
firewall.@rule[1].family='ipv4'
firewall.@rule[1].target='ACCEPT'
firewall.@rule[2]=rule
firewall.@rule[2].name='Allow-IGMP'
firewall.@rule[2].src='wan'
firewall.@rule[2].proto='igmp'
firewall.@rule[2].family='ipv4'
firewall.@rule[2].target='ACCEPT'
firewall.@rule[3]=rule
firewall.@rule[3].name='Allow-DHCPv6'
firewall.@rule[3].src='wan'
firewall.@rule[3].proto='udp'
firewall.@rule[3].src_ip='fc00::/6'
firewall.@rule[3].dest_ip='fc00::/6'
firewall.@rule[3].dest_port='546'
firewall.@rule[3].family='ipv6'
firewall.@rule[3].target='ACCEPT'
firewall.@rule[4]=rule
firewall.@rule[4].name='Allow-MLD'
firewall.@rule[4].src='wan'
firewall.@rule[4].proto='icmp'
firewall.@rule[4].src_ip='fe80::/10'
firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0'
firewall.@rule[4].family='ipv6'
firewall.@rule[4].target='ACCEPT'
firewall.@rule[5]=rule
firewall.@rule[5].name='Allow-ICMPv6-Input'
firewall.@rule[5].src='wan'
firewall.@rule[5].proto='icmp'
firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement'
firewall.@rule[5].limit='1000/sec'
firewall.@rule[5].family='ipv6'
firewall.@rule[5].target='ACCEPT'
firewall.@rule[6]=rule
firewall.@rule[6].name='Allow-ICMPv6-Forward'
firewall.@rule[6].src='wan'
firewall.@rule[6].dest='*'
firewall.@rule[6].proto='icmp'
firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type'
firewall.@rule[6].limit='1000/sec'
firewall.@rule[6].family='ipv6'
firewall.@rule[6].target='ACCEPT'
firewall.@rule[7]=rule
firewall.@rule[7].name='Allow-IPSec-ESP'
firewall.@rule[7].src='wan'
firewall.@rule[7].dest='lan'
firewall.@rule[7].proto='esp'
firewall.@rule[7].target='ACCEPT'
firewall.@rule[8]=rule
firewall.@rule[8].name='Allow-ISAKMP'
firewall.@rule[8].src='wan'
firewall.@rule[8].dest='lan'
firewall.@rule[8].dest_port='500'
firewall.@rule[8].proto='udp'
firewall.@rule[8].target='ACCEPT'
firewall.@rule[9]=rule
firewall.@rule[9].name='Support-UDP-Traceroute'
firewall.@rule[9].src='wan'
firewall.@rule[9].dest_port='33434:33689'
firewall.@rule[9].proto='udp'
firewall.@rule[9].family='ipv4'
firewall.@rule[9].target='REJECT'
firewall.@rule[9].enabled='false'
firewall.@include[0]=include
firewall.@include[0].path='/etc/firewall.user'
firewall.@forwarding[1]=forwarding
firewall.@forwarding[1].src='wan'
firewall.@forwarding[1].dest='lan'
firewall.miniupnpd=include
firewall.miniupnpd.type='script'
firewall.miniupnpd.path='/usr/share/miniupnpd/firewall.include'
firewall.miniupnpd.family='any'
firewall.miniupnpd.reload='1'
luci.main=core
luci.main.lang='auto'
luci.main.resourcebase='/luci-static/resources'
luci.main.ubuspath='/ubus/'
luci.main.mediaurlbase='/luci-static/openwrt2020'
luci.flash_keep=extern
luci.flash_keep.uci='/etc/config/'
luci.flash_keep.dropbear='/etc/dropbear/'
luci.flash_keep.openvpn='/etc/openvpn/'
luci.flash_keep.passwd='/etc/passwd'
luci.flash_keep.opkg='/etc/opkg.conf'
luci.flash_keep.firewall='/etc/firewall.user'
luci.flash_keep.uploads='/lib/uci/upload/'
luci.languages=internal
luci.languages.de='Deutsch (German)'
luci.languages.en='English'
luci.sauth=internal
luci.sauth.sessionpath='/tmp/luci-sessions'
luci.sauth.sessiontime='3600'
luci.ccache=internal
luci.ccache.enable='1'
luci.themes=internal
luci.themes.Bootstrap='/luci-static/bootstrap'
luci.themes.OpenWrt2020='/luci-static/openwrt2020'
luci.apply=internal
luci.apply.rollback='90'
luci.apply.holdoff='4'
luci.apply.timeout='5'
luci.apply.display='1.5'
luci.diag=internal
luci.diag.dns='openwrt.org'
luci.diag.ping='openwrt.org'
luci.diag.route='openwrt.org'
luci_statistics.collectd=statistics
luci_statistics.collectd.BaseDir='/var/run/collectd'
luci_statistics.collectd.Include='/etc/collectd/conf.d'
luci_statistics.collectd.PIDFile='/var/run/collectd.pid'
luci_statistics.collectd.PluginDir='/usr/lib/collectd'
luci_statistics.collectd.TypesDB='/usr/share/collectd/types.db'
luci_statistics.collectd.Interval='30'
luci_statistics.collectd.ReadThreads='2'
luci_statistics.rrdtool=statistics
luci_statistics.rrdtool.default_timespan='1hour'
luci_statistics.rrdtool.image_width='600'
luci_statistics.rrdtool.image_path='/tmp/rrdimg'
luci_statistics.collectd_rrdtool=statistics
luci_statistics.collectd_rrdtool.enable='1'
luci_statistics.collectd_rrdtool.DataDir='/tmp/rrd'
luci_statistics.collectd_rrdtool.RRARows='144'
luci_statistics.collectd_rrdtool.RRASingle='1'
luci_statistics.collectd_rrdtool.RRATimespans='1hour 1day 1week 1month 1year'
luci_statistics.collectd_csv=statistics
luci_statistics.collectd_csv.enable='0'
luci_statistics.collectd_csv.StoreRates='0'
luci_statistics.collectd_csv.DataDir='/tmp'
luci_statistics.collectd_email=statistics
luci_statistics.collectd_email.enable='0'
luci_statistics.collectd_email.SocketFile='/var/run/collectd/email.sock'
luci_statistics.collectd_email.SocketGroup='nogroup'
luci_statistics.collectd_logfile=statistics
luci_statistics.collectd_logfile.enable='0'
luci_statistics.collectd_logfile.LogLevel='notice'
luci_statistics.collectd_logfile.File='/var/log/collectd.log'
luci_statistics.collectd_logfile.Timestamp='1'
luci_statistics.collectd_network=statistics
luci_statistics.collectd_network.enable='1'
luci_statistics.collectd_syslog=statistics
luci_statistics.collectd_syslog.enable='0'
luci_statistics.collectd_syslog.LogLevel='warning'
luci_statistics.collectd_syslog.NotifyLevel='WARNING'
luci_statistics.collectd_unixsock=statistics
luci_statistics.collectd_unixsock.enable='0'
luci_statistics.collectd_unixsock.SocketFile='/var/run/collectd/query.sock'
luci_statistics.collectd_unixsock.SocketGroup='nogroup'
luci_statistics.collectd_apcups=statistics
luci_statistics.collectd_apcups.enable='0'
luci_statistics.collectd_apcups.Host='localhost'
luci_statistics.collectd_apcups.Port='3551'
luci_statistics.collectd_chrony=statistics
luci_statistics.collectd_chrony.enable='0'
luci_statistics.collectd_chrony.Host='127.0.0.1'
luci_statistics.collectd_chrony.Port='323'
luci_statistics.collectd_chrony.Timeout='2'
luci_statistics.collectd_conntrack=statistics
luci_statistics.collectd_conntrack.enable='0'
luci_statistics.collectd_contextswitch=statistics
luci_statistics.collectd_contextswitch.enable='0'
luci_statistics.collectd_cpu=statistics
luci_statistics.collectd_cpu.enable='1'
luci_statistics.collectd_cpu.ReportByCpu='1'
luci_statistics.collectd_cpu.ReportByState='1'
luci_statistics.collectd_cpu.ShowIdle='0'
luci_statistics.collectd_cpu.ValuesPercentage='1'
luci_statistics.collectd_cpufreq=statistics
luci_statistics.collectd_cpufreq.enable='0'
luci_statistics.collectd_curl=statistics
luci_statistics.collectd_curl.enable='0'
luci_statistics.collectd_df=statistics
luci_statistics.collectd_df.enable='0'
luci_statistics.collectd_df.Devices='/dev/mtdblock/4'
luci_statistics.collectd_df.MountPoints='/overlay'
luci_statistics.collectd_df.FSTypes='tmpfs'
luci_statistics.collectd_df.IgnoreSelected='0'
luci_statistics.collectd_df.ValuesPercentage='0'
luci_statistics.collectd_dhcpleases=statistics
luci_statistics.collectd_dhcpleases.enable='0'
luci_statistics.collectd_dhcpleases.Path='/tmp/dhcp.leases'
luci_statistics.collectd_disk=statistics
luci_statistics.collectd_disk.enable='0'
luci_statistics.collectd_disk.Disks='hda1 hdb'
luci_statistics.collectd_disk.IgnoreSelected='0'
luci_statistics.collectd_dns=statistics
luci_statistics.collectd_dns.enable='0'
luci_statistics.collectd_dns.Interfaces='br-lan'
luci_statistics.collectd_dns.IgnoreSources='127.0.0.1'
luci_statistics.collectd_entropy=statistics
luci_statistics.collectd_entropy.enable='0'
luci_statistics.collectd_exec=statistics
luci_statistics.collectd_exec.enable='0'
luci_statistics.collectd_interface=statistics
luci_statistics.collectd_interface.enable='1'
luci_statistics.collectd_interface.Interfaces='br-lan' 'eth0' 'eth1' 'eth2' 'eth3' 'wlan0' 'wlan1' 'wlan2'
luci_statistics.collectd_ipstatistics=statistics
luci_statistics.collectd_ipstatistics.enable='0'
luci_statistics.collectd_iptables=statistics
luci_statistics.collectd_iptables.enable='0'
luci_statistics.@collectd_iptables_match[0]=collectd_iptables_match
luci_statistics.@collectd_iptables_match[0].table='nat'
luci_statistics.@collectd_iptables_match[0].chain='luci_fw_postrouting'
luci_statistics.@collectd_iptables_match[0].target='MASQUERADE'
luci_statistics.@collectd_iptables_match[0].source='192.168.1.0/24'
luci_statistics.@collectd_iptables_match[0].outputif='br-ff'
luci_statistics.@collectd_iptables_match[0].name='LAN-Clients traffic'
luci_statistics.@collectd_iptables_match[1]=collectd_iptables_match
luci_statistics.@collectd_iptables_match[1].chain='luci_fw_postrouting'
luci_statistics.@collectd_iptables_match[1].table='nat'
luci_statistics.@collectd_iptables_match[1].target='MASQUERADE'
luci_statistics.@collectd_iptables_match[1].source='10.61.230.0/24'
luci_statistics.@collectd_iptables_match[1].outputif='br-ff'
luci_statistics.@collectd_iptables_match[1].name='WLAN-Clients traffic'
luci_statistics.collectd_irq=statistics
luci_statistics.collectd_irq.enable='0'
luci_statistics.collectd_irq.Irqs='2 3 4 7'
luci_statistics.collectd_iwinfo=statistics
luci_statistics.collectd_iwinfo.enable='1'
luci_statistics.collectd_load=statistics
luci_statistics.collectd_load.enable='1'
luci_statistics.collectd_memory=statistics
luci_statistics.collectd_memory.enable='1'
luci_statistics.collectd_memory.ValuesAbsolute='1'
luci_statistics.collectd_memory.ValuesPercentage='0'
luci_statistics.collectd_netlink=statistics
luci_statistics.collectd_netlink.enable='0'
luci_statistics.collectd_netlink.IgnoreSelected='0'
luci_statistics.collectd_netlink.VerboseInterfaces='br-lan'
luci_statistics.collectd_netlink.QDiscs='br-lan'
luci_statistics.collectd_nut=statistics
luci_statistics.collectd_nut.enable='0'
luci_statistics.collectd_nut.UPS='myupsname'
luci_statistics.collectd_olsrd=statistics
luci_statistics.collectd_olsrd.enable='0'
luci_statistics.collectd_olsrd.Port='2006'
luci_statistics.collectd_olsrd.Host='127.0.0.1'
luci_statistics.collectd_openvpn=statistics
luci_statistics.collectd_openvpn.enable='0'
luci_statistics.collectd_ping=statistics
luci_statistics.collectd_ping.enable='0'
luci_statistics.collectd_ping.TTL='127'
luci_statistics.collectd_ping.Interval='30'
luci_statistics.collectd_ping.Hosts='127.0.0.1'
luci_statistics.collectd_processes=statistics
luci_statistics.collectd_processes.enable='0'
luci_statistics.collectd_processes.Processes='uhttpd dnsmasq dropbear'
luci_statistics.collectd_sensors=statistics
luci_statistics.collectd_sensors.enable='0'
luci_statistics.collectd_snmp6=statistics
luci_statistics.collectd_snmp6.enable='0'
luci_statistics.collectd_snmp6.Interfaces='br-lan'
luci_statistics.collectd_snmp6.IgnoreSelected='0'
luci_statistics.collectd_splash_leases=statistics
luci_statistics.collectd_splash_leases.enable='0'
luci_statistics.collectd_tcpconns=statistics
luci_statistics.collectd_tcpconns.enable='0'
luci_statistics.collectd_tcpconns.ListeningPorts='0'
luci_statistics.collectd_tcpconns.LocalPorts='22 80'
luci_statistics.collectd_thermal=statistics
luci_statistics.collectd_thermal.enable='0'
luci_statistics.collectd_thermal.IgnoreSelected='0'
luci_statistics.collectd_uptime=statistics
luci_statistics.collectd_uptime.enable='0'
luci_statistics.@collectd_network_server[0]=collectd_network_server
luci_statistics.@collectd_network_server[0].port='25826'
luci_statistics.@collectd_network_server[0].host='192.168.1.237'
luci_statistics.@collectd_network_listen[0]=collectd_network_listen
luci_statistics.@collectd_network_listen[0].host='192.168.1.236'
luci_statistics.@collectd_network_listen[0].port='25826'
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0' 'eth1' 'eth2' 'eth3'
network.@device[0].ipv6='0'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.netmask='255.255.255.0'
network.lan.broadcast='192.168.1.255'
network.lan.ipaddr='192.168.1.236'
network.lan.ipv6='off'
network.lan.delegate='0'
network.lan.gateway='192.168.1.221'
nginx.global=main
nginx.global.uci_enable='true'
nginx._lan=server
nginx._lan.listen='443 ssl default_server' '[::]:443 ssl default_server'
nginx._lan.server_name='_lan'
nginx._lan.include='restrict_locally' 'conf.d/*.locations'
nginx._lan.ssl_session_cache='shared:SSL:32k'
nginx._lan.ssl_session_timeout='64m'
nginx._lan.access_log='off; # logd openwrt'
nginx._lan.ssl_certificate='/etc/letsencrypt/my-name.my-domain.com.pem'
nginx._lan.ssl_certificate_key='/etc/letsencrypt/my-name.my-domain.com.pem'
nginx._lan.uci_manage_ssl='letsencrypt'
nginx._redirect2ssl=server
nginx._redirect2ssl.listen='80' '[::]:80'
nginx._redirect2ssl.server_name='_redirect2ssl'
nginx._redirect2ssl.return='302 https://$host$request_uri'
ntpclient.@ntpserver[0]=ntpserver
ntpclient.@ntpserver[0].hostname='0.openwrt.pool.ntp.org'
ntpclient.@ntpserver[0].port='123'
ntpclient.@ntpserver[1]=ntpserver
ntpclient.@ntpserver[1].hostname='1.openwrt.pool.ntp.org'
ntpclient.@ntpserver[1].port='123'
ntpclient.@ntpserver[2]=ntpserver
ntpclient.@ntpserver[2].hostname='2.openwrt.pool.ntp.org'
ntpclient.@ntpserver[2].port='123'
ntpclient.@ntpserver[3]=ntpserver
ntpclient.@ntpserver[3].hostname='3.openwrt.pool.ntp.org'
ntpclient.@ntpserver[3].port='123'
ntpclient.@ntpdrift[0]=ntpdrift
ntpclient.@ntpdrift[0].freq='0'
ntpclient.@ntpclient[0]=ntpclient
ntpclient.@ntpclient[0].interval='600'
prometheus-node-exporter-lua.main=prometheus-node-exporter-lua
prometheus-node-exporter-lua.main.listen_interface='lan'
prometheus-node-exporter-lua.main.listen_ipv6='0'
prometheus-node-exporter-lua.main.listen_port='9100'
prometheus-node-exporter-lua-opkg.main=prometheus-node-exporter-lua
prometheus-node-exporter-lua-opkg.main.listen_interface='loopback'
prometheus-node-exporter-lua-opkg.main.listen_ipv6='0'
prometheus-node-exporter-lua-opkg.main.listen_port='9100'
qos.wan=interface
qos.wan.classgroup='Default'
qos.wan.enabled='0'
qos.wan.upload='128'
qos.wan.download='1024'
qos.@classify[0]=classify
qos.@classify[0].ports='22,53'
qos.@classify[0].comment='ssh, dns'
qos.@classify[0].target='Express'
qos.@classify[1]=classify
qos.@classify[1].target='Normal'
qos.@classify[1].proto='tcp'
qos.@classify[1].ports='20,21,25,80,110,443,993,995'
qos.@classify[1].comment='ftp, smtp, http(s), imap'
qos.@classify[2]=classify
qos.@classify[2].target='Express'
qos.@classify[2].ports='5190'
qos.@classify[2].comment='AOL, iChat, ICQ'
qos.@default[0]=default
qos.@default[0].target='Express'
qos.@default[0].proto='udp'
qos.@default[0].pktsize='-500'
qos.@reclassify[0]=reclassify
qos.@reclassify[0].target='Priority'
qos.@reclassify[0].proto='icmp'
qos.@default[1]=default
qos.@default[1].target='Bulk'
qos.@default[1].portrange='1024-65535'
qos.Default=classgroup
qos.Default.classes='Priority Express Normal Bulk'
qos.Default.default='Normal'
qos.Priority=class
qos.Priority.packetsize='400'
qos.Priority.avgrate='10'
qos.Priority.priority='20'
qos.Priority_down=class
qos.Priority_down.packetsize='1000'
qos.Priority_down.avgrate='10'
qos.Express=class
qos.Express.packetsize='1000'
qos.Express.avgrate='50'
qos.Express.priority='10'
qos.Normal=class
qos.Normal.packetsize='1500'
qos.Normal.packetdelay='100'
qos.Normal.avgrate='10'
qos.Normal.priority='5'
qos.Normal_down=class
qos.Normal_down.avgrate='20'
qos.Bulk=class
qos.Bulk.avgrate='1'
qos.Bulk.packetdelay='200'
rpcd.@rpcd[0]=rpcd
rpcd.@rpcd[0].socket='/var/run/ubus/ubus.sock'
rpcd.@rpcd[0].timeout='30'
rpcd.@login[0]=login
rpcd.@login[0].username='root'
rpcd.@login[0].password='$p$root'
rpcd.@login[0].read='*'
rpcd.@login[0].write='*'
sqm.eth1=queue
sqm.eth1.enabled='0'
sqm.eth1.interface='eth1'
sqm.eth1.download='85000'
sqm.eth1.upload='10000'
sqm.eth1.qdisc='cake'
sqm.eth1.script='piece_of_cake.qos'
sqm.eth1.qdisc_advanced='0'
sqm.eth1.ingress_ecn='ECN'
sqm.eth1.egress_ecn='ECN'
sqm.eth1.qdisc_really_really_advanced='0'
sqm.eth1.itarget='auto'
sqm.eth1.etarget='auto'
sqm.eth1.linklayer='none'
system.@system[0]=system
system.@system[0].ttylogin='0'
system.@system[0].log_size='64'
system.@system[0].urandom_seed='0'
system.@system[0].hostname='ax1'
system.@system[0].description='Xiaomi AX3600 1'
system.@system[0].zonename='Europe/Berlin'
system.@system[0].timezone='CET-1CEST,M3.5.0,M10.5.0/3'
system.@system[0].log_proto='udp'
system.@system[0].conloglevel='8'
system.@system[0].cronloglevel='5'
system.@system[0].log_ip='192.168.1.4'
system.ntp=timeserver
system.ntp.server='0.openwrt.pool.ntp.org' '1.openwrt.pool.ntp.org' '2.openwrt.pool.ntp.org' '3.openwrt.pool.ntp.org'
system.ntp.enable_server='1'
system.@led[0]=led
system.@led[0].sysfs='blue:system'
system.@led[0].name='Power'
system.@led[0].trigger='default-on'
system.@led[0].default='0'
system.@led[1]=led
system.@led[1].sysfs='yellow:system'
system.@led[1].trigger='netdev'
system.@led[1].name='AX Conn'
system.@led[1].dev='wlan1'
system.@led[1].mode='link'
system.@led[2]=led
system.@led[2].sysfs='yellow:network'
system.@led[2].trigger='netdev'
system.@led[2].name='AC Conn'
system.@led[2].dev='wlan0'
system.@led[2].mode='link'
system.@led[3]=led
system.@led[3].sysfs='blue:network'
system.@led[3].trigger='netdev'
system.@led[3].dev='wlan2'
system.@led[3].name='24 Conn'
system.@led[3].mode='link'
system.@led[4]=led
system.@led[4].sysfs='blue:aiot'
system.@led[4].trigger='netdev'
system.@led[4].name='Br RxTx'
system.@led[4].dev='br-lan'
system.@led[4].mode='tx' 'rx'
ttyd.@ttyd[0]=ttyd
ttyd.@ttyd[0].interface='@lan'
ttyd.@ttyd[0].command='/bin/login'
ttyd.@ttyd[0].debug='7'
ttyd.@ttyd[0].enable='0'
ubootenv.@ubootenv[0]=ubootenv
ubootenv.@ubootenv[0].dev='/dev/mtd6'
ubootenv.@ubootenv[0].offset='0x0'
ubootenv.@ubootenv[0].envsize='0x10000'
ubootenv.@ubootenv[0].secsize='0x20000'
ucitrack.@network[0]=network
ucitrack.@network[0].init='network'
ucitrack.@network[0].affects='dhcp'
ucitrack.@wireless[0]=wireless
ucitrack.@wireless[0].affects='network'
ucitrack.@firewall[0]=firewall
ucitrack.@firewall[0].init='firewall'
ucitrack.@firewall[0].affects='luci-splash' 'qos' 'miniupnpd' 'sqm'
ucitrack.@olsr[0]=olsr
ucitrack.@olsr[0].init='olsrd'
ucitrack.@dhcp[0]=dhcp
ucitrack.@dhcp[0].init='dnsmasq'
ucitrack.@dhcp[0].affects='odhcpd'
ucitrack.@odhcpd[0]=odhcpd
ucitrack.@odhcpd[0].init='odhcpd'
ucitrack.@dropbear[0]=dropbear
ucitrack.@dropbear[0].init='dropbear'
ucitrack.@httpd[0]=httpd
ucitrack.@httpd[0].init='httpd'
ucitrack.@fstab[0]=fstab
ucitrack.@fstab[0].exec='/sbin/block mount'
ucitrack.@qos[0]=qos
ucitrack.@qos[0].init='qos'
ucitrack.@system[0]=system
ucitrack.@system[0].init='led'
ucitrack.@system[0].exec='/etc/init.d/log reload'
ucitrack.@system[0].affects='luci_statistics' 'dhcp'
ucitrack.@luci_splash[0]=luci_splash
ucitrack.@luci_splash[0].init='luci_splash'
ucitrack.@ntpclient[0]=ntpclient
ucitrack.@ntpclient[0].init='ntpclient'
ucitrack.@samba[0]=samba
ucitrack.@samba[0].init='samba'
ucitrack.@tinyproxy[0]=tinyproxy
ucitrack.@tinyproxy[0].init='tinyproxy'
ucitrack.@upnpd[0]=upnpd
ucitrack.@upnpd[0].init='miniupnpd'
ucitrack.@luci_statistics[0]=luci_statistics
ucitrack.@luci_statistics[0].init='luci_statistics'
ucitrack.@watchcat[0]=watchcat
ucitrack.@watchcat[0].init='watchcat'
ucitrack.@sqm[0]=sqm
ucitrack.@sqm[0].init='sqm'
uhttpd.main=uhttpd
uhttpd.main.listen_http='0.0.0.0:80' '[::]:80'
uhttpd.main.listen_https='0.0.0.0:443' '[::]:443'
uhttpd.main.home='/www'
uhttpd.main.rfc1918_filter='1'
uhttpd.main.max_requests='3'
uhttpd.main.max_connections='100'
uhttpd.main.cgi_prefix='/cgi-bin'
uhttpd.main.lua_prefix='/cgi-bin/luci=/usr/lib/lua/luci/sgi/uhttpd.lua'
uhttpd.main.script_timeout='60'
uhttpd.main.network_timeout='30'
uhttpd.main.http_keepalive='20'
uhttpd.main.tcp_keepalive='1'
uhttpd.main.ubus_prefix='/ubus'
uhttpd.main.cert='/etc/letsencrypt/my-name.my-domain.com.pem'
uhttpd.main.key='/etc/letsencrypt/my-name.my-domain.com.pem'
uhttpd.main.redirect_https='0'
uhttpd.defaults=cert
uhttpd.defaults.days='730'
uhttpd.defaults.key_type='ec'
uhttpd.defaults.bits='2048'
uhttpd.defaults.ec_curve='P-256'
uhttpd.defaults.country='ZZ'
uhttpd.defaults.state='Somewhere'
uhttpd.defaults.location='Unknown'
uhttpd.defaults.commonname='OpenWrt'
umdns.@umdns[0]=umdns
umdns.@umdns[0].jail='1'
umdns.@umdns[0].network='lan'
upnpd.config=upnpd
upnpd.config.enabled='0'
upnpd.config.enable_natpmp='1'
upnpd.config.enable_upnp='1'
upnpd.config.secure_mode='1'
upnpd.config.log_output='0'
upnpd.config.download='1024'
upnpd.config.upload='512'
upnpd.config.internal_iface='lan'
upnpd.config.port='5000'
upnpd.config.upnp_lease_file='/var/run/miniupnpd.leases'
upnpd.config.igdv1='1'
upnpd.@perm_rule[0]=perm_rule
upnpd.@perm_rule[0].action='allow'
upnpd.@perm_rule[0].ext_ports='1024-65535'
upnpd.@perm_rule[0].int_addr='0.0.0.0/0'
upnpd.@perm_rule[0].int_ports='1024-65535'
upnpd.@perm_rule[0].comment='Allow high ports'
upnpd.@perm_rule[1]=perm_rule
upnpd.@perm_rule[1].action='deny'
upnpd.@perm_rule[1].ext_ports='0-65535'
upnpd.@perm_rule[1].int_addr='0.0.0.0/0'
upnpd.@perm_rule[1].int_ports='0-65535'
upnpd.@perm_rule[1].comment='Default deny'
watchcat.@watchcat[0]=watchcat
watchcat.@watchcat[0].period='6h'
watchcat.@watchcat[0].mode='ping_reboot'
watchcat.@watchcat[0].pinghosts='8.8.8.8'
watchcat.@watchcat[0].forcedelay='30'
wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.path='soc/20000000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
wireless.radio0.cell_density='0'
wireless.radio0.htmode='HT20'
wireless.radio0.band='2g'
wireless.radio0.channel='auto'
wireless.radio0.txpower='20'
wireless.radio0.country='DE'
wireless.radio0.log_level='1'
wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.path='platform/soc/c000000.wifi'
wireless.radio1.band='5g'
wireless.radio1.htmode='HE80'
wireless.radio1.cell_density='0'
wireless.radio1.channel='44'
wireless.radio1.txpower='24'
wireless.radio1.country='DE'
wireless.radio1.log_level='1'
wireless.radio2=wifi-device
wireless.radio2.type='mac80211'
wireless.radio2.path='platform/soc/c000000.wifi+1'
wireless.radio2.band='2g'
wireless.radio2.htmode='HE20'
wireless.radio2.cell_density='0'
wireless.radio2.channel='auto'
wireless.radio2.txpower='20'
wireless.radio2.country='DE'
wireless.radio2.log_level='1'
wireless.wifinet6=wifi-iface
wireless.wifinet6.device='radio1'
wireless.wifinet6.mode='ap'
wireless.wifinet6.key='my-passphrase'
wireless.wifinet6.ieee80211r='1'
wireless.wifinet6.ft_over_ds='1'
wireless.wifinet6.ft_psk_generate_local='1'
wireless.wifinet6.ieee80211w='1'
wireless.wifinet6.network='lan'
wireless.wifinet6.ssid='job.openwrt.ssid'
wireless.wifinet6.encryption='psk2+ccmp'
wireless.wifinet6.nasid='job1-2'
wireless.wifinet7=wifi-iface
wireless.wifinet7.device='radio2'
wireless.wifinet7.mode='ap'
wireless.wifinet7.key='my-passphrase'
wireless.wifinet7.ieee80211r='1'
wireless.wifinet7.ft_over_ds='1'
wireless.wifinet7.ft_psk_generate_local='1'
wireless.wifinet7.ieee80211w='1'
wireless.wifinet7.network='lan'
wireless.wifinet7.ssid='job.fritz.ssid'
wireless.wifinet7.encryption='psk2+ccmp'
wireless.wifinet7.nasid='job1-3'
wireless.wifinet4=wifi-iface
wireless.wifinet4.device='radio0'
wireless.wifinet4.mode='ap'
wireless.wifinet4.ssid='job.iot.ssid'
wireless.wifinet4.encryption='psk2+ccmp'
wireless.wifinet4.key='my-passphrase'
wireless.wifinet4.ieee80211r='1'
wireless.wifinet4.ft_over_ds='1'
wireless.wifinet4.ft_psk_generate_local='1'
wireless.wifinet4.network='lan'
wireless.wifinet4.nasid='job1-1'

And from second AP without DHCP/DNS

collectd.globals=globals
collectd.globals.alt_config_file='/etc/collectd.conf'
dawn.@network[0]=network
dawn.@network[0].broadcast_ip='10.0.0.255'
dawn.@network[0].broadcast_port='1025'
dawn.@network[0].tcp_port='1026'
dawn.@network[0].network_option='2'
dawn.@network[0].shared_key='Niiiiiiiiiiiiiik'
dawn.@network[0].iv='Niiiiiiiiiiiiiik'
dawn.@network[0].use_symm_enc='1'
dawn.@network[0].collision_domain='-1'
dawn.@network[0].bandwidth='-1'
dawn.@ordering[0]=ordering
dawn.@ordering[0].sort_order='cbfs'
dawn.@hostapd[0]=hostapd
dawn.@hostapd[0].hostapd_dir='/var/run/hostapd'
dawn.@times[0]=times
dawn.@times[0].update_client='10'
dawn.@times[0].denied_req_threshold='30'
dawn.@times[0].remove_client='15'
dawn.@times[0].remove_probe='30'
dawn.@times[0].remove_ap='460'
dawn.@times[0].update_hostapd='10'
dawn.@times[0].update_tcp_con='10'
dawn.@times[0].update_chan_util='5'
dawn.@times[0].update_beacon_reports='20'
dawn.@metric[0]=metric
dawn.@metric[0].ap_weight='0'
dawn.@metric[0].ht_support='0'
dawn.@metric[0].vht_support='0'
dawn.@metric[0].no_ht_support='0'
dawn.@metric[0].no_vht_support='0'
dawn.@metric[0].rssi='10'
dawn.@metric[0].low_rssi='-500'
dawn.@metric[0].freq='100'
dawn.@metric[0].chan_util='0'
dawn.@metric[0].max_chan_util='-500'
dawn.@metric[0].rssi_val='-60'
dawn.@metric[0].low_rssi_val='-80'
dawn.@metric[0].chan_util_val='140'
dawn.@metric[0].max_chan_util_val='170'
dawn.@metric[0].min_probe_count='0'
dawn.@metric[0].bandwidth_threshold='6'
dawn.@metric[0].use_station_count='1'
dawn.@metric[0].max_station_diff='1'
dawn.@metric[0].eval_probe_req='0'
dawn.@metric[0].eval_auth_req='0'
dawn.@metric[0].eval_assoc_req='0'
dawn.@metric[0].kicking='0'
dawn.@metric[0].deny_auth_reason='1'
dawn.@metric[0].deny_assoc_reason='17'
dawn.@metric[0].use_driver_recog='1'
dawn.@metric[0].min_number_to_kick='3'
dawn.@metric[0].chan_util_avg_period='3'
dawn.@metric[0].set_hostapd_nr='1'
dawn.@metric[0].op_class='0'
dawn.@metric[0].duration='0'
dawn.@metric[0].mode='0'
dawn.@metric[0].scan_channel='0'
dcwapd.general=general
dcwapd.general.enabled='0'
dcwapd.general.tmpdir='/tmp/dcwapd'
dcwapd.channelset0=channel-set
dcwapd.channelset0.enabled='0'
dcwapd.channelset0.ssid='OpenWrt'
dcwapd.channelset0.bridge='br-lan'
dcwapd.channelset0.data_channels='datachannel0'
dcwapd.datachannel0=datachannel
dcwapd.datachannel0.ssid='OpenWrt-DCW'
dcwapd.datachannel0.bridge='br-dc0'
dcwapd.TFP_Default=filter-set
dcwapd.TFP_Default.mac='*'
dcwapd.TFP_Default.filters='filter0 filter1'
dcwapd.filter0=filter
dcwapd.filter0.packet_size='*'
dcwapd.filter0.source_ip='*'
dcwapd.filter0.source_port='80'
dcwapd.filter0.protocol='tcp'
dcwapd.filter0.dest_port='*'
dcwapd.filter1=filter
dcwapd.filter1.packet_size='*'
dcwapd.filter1.source_ip='*'
dcwapd.filter1.source_port='443'
dcwapd.filter1.protocol='tcp'
dcwapd.filter1.dest_port='*'
dhcp.@dnsmasq[0]=dnsmasq
dhcp.@dnsmasq[0].domainneeded='1'
dhcp.@dnsmasq[0].localise_queries='1'
dhcp.@dnsmasq[0].rebind_protection='1'
dhcp.@dnsmasq[0].rebind_localhost='1'
dhcp.@dnsmasq[0].expandhosts='1'
dhcp.@dnsmasq[0].readethers='1'
dhcp.@dnsmasq[0].leasefile='/tmp/dhcp.leases'
dhcp.@dnsmasq[0].resolvfile='/tmp/resolv.conf.d/resolv.conf.auto'
dhcp.@dnsmasq[0].localservice='1'
dhcp.@dnsmasq[0].ednspacket_max='1232'
dhcp.@dnsmasq[0].local='/job/'
dhcp.@dnsmasq[0].domain='job'
dhcp.@dnsmasq[0].server='192.168.1.236'
dhcp.lan=dhcp
dhcp.lan.interface='lan'
dhcp.lan.leasetime='12h'
dhcp.lan.dhcpv4='server'
dhcp.lan.ignore='1'
dhcp.lan.start='200'
dhcp.lan.limit='20'
dhcp.lan.dhcp_option='42,192.168.1.222' ' 3,192.168.1.222'
dhcp.lan.ra_flags='none'
dhcp.wan=dhcp
dhcp.wan.interface='wan'
dhcp.wan.ignore='1'
dhcp.wan.ra_flags='none'
dhcp.odhcpd=odhcpd
dhcp.odhcpd.maindhcp='0'
dhcp.odhcpd.leasefile='/tmp/hosts/odhcpd'
dhcp.odhcpd.leasetrigger='/usr/sbin/odhcpd-update'
dhcp.odhcpd.loglevel='4'
dropbear.@dropbear[0]=dropbear
dropbear.@dropbear[0].PasswordAuth='on'
dropbear.@dropbear[0].RootPasswordAuth='on'
dropbear.@dropbear[0].Port='22'
firewall.@defaults[0]=defaults
firewall.@defaults[0].input='ACCEPT'
firewall.@defaults[0].output='ACCEPT'
firewall.@defaults[0].synflood_protect='1'
firewall.@defaults[0].forward='ACCEPT'
firewall.@defaults[0].flow_offloading='1'
firewall.@defaults[0].flow_offloading_hw='1'
firewall.@zone[0]=zone
firewall.@zone[0].name='lan'
firewall.@zone[0].input='ACCEPT'
firewall.@zone[0].output='ACCEPT'
firewall.@zone[0].forward='ACCEPT'
firewall.@zone[0].network='lan'
firewall.@zone[1]=zone
firewall.@zone[1].name='wan'
firewall.@zone[1].output='ACCEPT'
firewall.@zone[1].input='ACCEPT'
firewall.@zone[1].forward='ACCEPT'
firewall.@forwarding[0]=forwarding
firewall.@forwarding[0].src='lan'
firewall.@forwarding[0].dest='wan'
firewall.@rule[0]=rule
firewall.@rule[0].name='Allow-DHCP-Renew'
firewall.@rule[0].src='wan'
firewall.@rule[0].proto='udp'
firewall.@rule[0].dest_port='68'
firewall.@rule[0].target='ACCEPT'
firewall.@rule[0].family='ipv4'
firewall.@rule[1]=rule
firewall.@rule[1].name='Allow-Ping'
firewall.@rule[1].src='wan'
firewall.@rule[1].proto='icmp'
firewall.@rule[1].icmp_type='echo-request'
firewall.@rule[1].family='ipv4'
firewall.@rule[1].target='ACCEPT'
firewall.@rule[2]=rule
firewall.@rule[2].name='Allow-IGMP'
firewall.@rule[2].src='wan'
firewall.@rule[2].proto='igmp'
firewall.@rule[2].family='ipv4'
firewall.@rule[2].target='ACCEPT'
firewall.@rule[3]=rule
firewall.@rule[3].name='Allow-DHCPv6'
firewall.@rule[3].src='wan'
firewall.@rule[3].proto='udp'
firewall.@rule[3].src_ip='fc00::/6'
firewall.@rule[3].dest_ip='fc00::/6'
firewall.@rule[3].dest_port='546'
firewall.@rule[3].family='ipv6'
firewall.@rule[3].target='ACCEPT'
firewall.@rule[4]=rule
firewall.@rule[4].name='Allow-MLD'
firewall.@rule[4].src='wan'
firewall.@rule[4].proto='icmp'
firewall.@rule[4].src_ip='fe80::/10'
firewall.@rule[4].icmp_type='130/0' '131/0' '132/0' '143/0'
firewall.@rule[4].family='ipv6'
firewall.@rule[4].target='ACCEPT'
firewall.@rule[5]=rule
firewall.@rule[5].name='Allow-ICMPv6-Input'
firewall.@rule[5].src='wan'
firewall.@rule[5].proto='icmp'
firewall.@rule[5].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type' 'router-solicitation' 'neighbour-solicitation' 'router-advertisement' 'neighbour-advertisement'
firewall.@rule[5].limit='1000/sec'
firewall.@rule[5].family='ipv6'
firewall.@rule[5].target='ACCEPT'
firewall.@rule[6]=rule
firewall.@rule[6].name='Allow-ICMPv6-Forward'
firewall.@rule[6].src='wan'
firewall.@rule[6].dest='*'
firewall.@rule[6].proto='icmp'
firewall.@rule[6].icmp_type='echo-request' 'echo-reply' 'destination-unreachable' 'packet-too-big' 'time-exceeded' 'bad-header' 'unknown-header-type'
firewall.@rule[6].limit='1000/sec'
firewall.@rule[6].family='ipv6'
firewall.@rule[6].target='ACCEPT'
firewall.@rule[7]=rule
firewall.@rule[7].name='Allow-IPSec-ESP'
firewall.@rule[7].src='wan'
firewall.@rule[7].dest='lan'
firewall.@rule[7].proto='esp'
firewall.@rule[7].target='ACCEPT'
firewall.@rule[8]=rule
firewall.@rule[8].name='Allow-ISAKMP'
firewall.@rule[8].src='wan'
firewall.@rule[8].dest='lan'
firewall.@rule[8].dest_port='500'
firewall.@rule[8].proto='udp'
firewall.@rule[8].target='ACCEPT'
firewall.@rule[9]=rule
firewall.@rule[9].name='Support-UDP-Traceroute'
firewall.@rule[9].src='wan'
firewall.@rule[9].dest_port='33434:33689'
firewall.@rule[9].proto='udp'
firewall.@rule[9].family='ipv4'
firewall.@rule[9].target='REJECT'
firewall.@rule[9].enabled='false'
firewall.@include[0]=include
firewall.@include[0].path='/etc/firewall.user'
firewall.@forwarding[1]=forwarding
firewall.@forwarding[1].src='wan'
firewall.@forwarding[1].dest='lan'
firewall.miniupnpd=include
firewall.miniupnpd.type='script'
firewall.miniupnpd.path='/usr/share/miniupnpd/firewall.include'
firewall.miniupnpd.family='any'
firewall.miniupnpd.reload='1'
luci.main=core
luci.main.lang='auto'
luci.main.resourcebase='/luci-static/resources'
luci.main.ubuspath='/ubus/'
luci.main.mediaurlbase='/luci-static/openwrt2020'
luci.flash_keep=extern
luci.flash_keep.uci='/etc/config/'
luci.flash_keep.dropbear='/etc/dropbear/'
luci.flash_keep.openvpn='/etc/openvpn/'
luci.flash_keep.passwd='/etc/passwd'
luci.flash_keep.opkg='/etc/opkg.conf'
luci.flash_keep.firewall='/etc/firewall.user'
luci.flash_keep.uploads='/lib/uci/upload/'
luci.languages=internal
luci.languages.de='Deutsch (German)'
luci.languages.en='English'
luci.sauth=internal
luci.sauth.sessionpath='/tmp/luci-sessions'
luci.sauth.sessiontime='3600'
luci.ccache=internal
luci.ccache.enable='1'
luci.themes=internal
luci.themes.Bootstrap='/luci-static/bootstrap'
luci.themes.OpenWrt2020='/luci-static/openwrt2020'
luci.apply=internal
luci.apply.rollback='90'
luci.apply.holdoff='4'
luci.apply.timeout='5'
luci.apply.display='1.5'
luci.diag=internal
luci.diag.dns='openwrt.org'
luci.diag.ping='openwrt.org'
luci.diag.route='openwrt.org'
luci_statistics.collectd=statistics
luci_statistics.collectd.BaseDir='/var/run/collectd'
luci_statistics.collectd.Include='/etc/collectd/conf.d'
luci_statistics.collectd.PIDFile='/var/run/collectd.pid'
luci_statistics.collectd.PluginDir='/usr/lib/collectd'
luci_statistics.collectd.TypesDB='/usr/share/collectd/types.db'
luci_statistics.collectd.Interval='10'
luci_statistics.collectd.ReadThreads='3'
luci_statistics.rrdtool=statistics
luci_statistics.rrdtool.default_timespan='1hour'
luci_statistics.rrdtool.image_width='600'
luci_statistics.rrdtool.image_path='/tmp/rrdimg'
luci_statistics.collectd_rrdtool=statistics
luci_statistics.collectd_rrdtool.enable='1'
luci_statistics.collectd_rrdtool.DataDir='/tmp/rrd'
luci_statistics.collectd_rrdtool.RRARows='144'
luci_statistics.collectd_rrdtool.RRASingle='1'
luci_statistics.collectd_rrdtool.RRATimespans='1hour 1day 1week 1month 1year'
luci_statistics.collectd_csv=statistics
luci_statistics.collectd_csv.enable='0'
luci_statistics.collectd_csv.StoreRates='0'
luci_statistics.collectd_csv.DataDir='/tmp'
luci_statistics.collectd_email=statistics
luci_statistics.collectd_email.enable='0'
luci_statistics.collectd_email.SocketFile='/var/run/collectd/email.sock'
luci_statistics.collectd_email.SocketGroup='nogroup'
luci_statistics.collectd_logfile=statistics
luci_statistics.collectd_logfile.enable='0'
luci_statistics.collectd_logfile.LogLevel='notice'
luci_statistics.collectd_logfile.File='/var/log/collectd.log'
luci_statistics.collectd_logfile.Timestamp='1'
luci_statistics.collectd_network=statistics
luci_statistics.collectd_network.enable='1'
luci_statistics.collectd_network.Forward='1'
luci_statistics.collectd_network.ReportStats='1'
luci_statistics.collectd_syslog=statistics
luci_statistics.collectd_syslog.enable='0'
luci_statistics.collectd_syslog.LogLevel='warning'
luci_statistics.collectd_syslog.NotifyLevel='WARNING'
luci_statistics.collectd_unixsock=statistics
luci_statistics.collectd_unixsock.enable='0'
luci_statistics.collectd_unixsock.SocketFile='/var/run/collectd/query.sock'
luci_statistics.collectd_unixsock.SocketGroup='nogroup'
luci_statistics.collectd_apcups=statistics
luci_statistics.collectd_apcups.enable='0'
luci_statistics.collectd_apcups.Host='localhost'
luci_statistics.collectd_apcups.Port='3551'
luci_statistics.collectd_chrony=statistics
luci_statistics.collectd_chrony.enable='0'
luci_statistics.collectd_chrony.Host='127.0.0.1'
luci_statistics.collectd_chrony.Port='323'
luci_statistics.collectd_chrony.Timeout='2'
luci_statistics.collectd_conntrack=statistics
luci_statistics.collectd_conntrack.enable='0'
luci_statistics.collectd_contextswitch=statistics
luci_statistics.collectd_contextswitch.enable='0'
luci_statistics.collectd_cpu=statistics
luci_statistics.collectd_cpu.enable='1'
luci_statistics.collectd_cpu.ReportByCpu='1'
luci_statistics.collectd_cpu.ReportByState='1'
luci_statistics.collectd_cpu.ShowIdle='0'
luci_statistics.collectd_cpu.ValuesPercentage='1'
luci_statistics.collectd_cpufreq=statistics
luci_statistics.collectd_cpufreq.enable='0'
luci_statistics.collectd_curl=statistics
luci_statistics.collectd_curl.enable='0'
luci_statistics.collectd_df=statistics
luci_statistics.collectd_df.enable='0'
luci_statistics.collectd_df.Devices='/dev/mtdblock/4'
luci_statistics.collectd_df.MountPoints='/overlay'
luci_statistics.collectd_df.FSTypes='tmpfs'
luci_statistics.collectd_df.IgnoreSelected='0'
luci_statistics.collectd_df.ValuesPercentage='0'
luci_statistics.collectd_dhcpleases=statistics
luci_statistics.collectd_dhcpleases.enable='0'
luci_statistics.collectd_dhcpleases.Path='/tmp/dhcp.leases'
luci_statistics.collectd_disk=statistics
luci_statistics.collectd_disk.enable='0'
luci_statistics.collectd_disk.Disks='hda1 hdb'
luci_statistics.collectd_disk.IgnoreSelected='0'
luci_statistics.collectd_dns=statistics
luci_statistics.collectd_dns.enable='0'
luci_statistics.collectd_dns.Interfaces='br-lan'
luci_statistics.collectd_dns.IgnoreSources='127.0.0.1'
luci_statistics.collectd_entropy=statistics
luci_statistics.collectd_entropy.enable='0'
luci_statistics.collectd_exec=statistics
luci_statistics.collectd_exec.enable='0'
luci_statistics.collectd_interface=statistics
luci_statistics.collectd_interface.enable='1'
luci_statistics.collectd_interface.Interfaces='br-lan' 'eth0' 'eth1' 'eth2' 'eth3' 'wlan0' 'wlan1' 'wlan2'
luci_statistics.collectd_ipstatistics=statistics
luci_statistics.collectd_ipstatistics.enable='0'
luci_statistics.collectd_iptables=statistics
luci_statistics.collectd_iptables.enable='0'
luci_statistics.@collectd_iptables_match[0]=collectd_iptables_match
luci_statistics.@collectd_iptables_match[0].table='nat'
luci_statistics.@collectd_iptables_match[0].chain='luci_fw_postrouting'
luci_statistics.@collectd_iptables_match[0].target='MASQUERADE'
luci_statistics.@collectd_iptables_match[0].source='192.168.1.0/24'
luci_statistics.@collectd_iptables_match[0].outputif='br-ff'
luci_statistics.@collectd_iptables_match[0].name='LAN-Clients traffic'
luci_statistics.@collectd_iptables_match[1]=collectd_iptables_match
luci_statistics.@collectd_iptables_match[1].chain='luci_fw_postrouting'
luci_statistics.@collectd_iptables_match[1].table='nat'
luci_statistics.@collectd_iptables_match[1].target='MASQUERADE'
luci_statistics.@collectd_iptables_match[1].source='10.61.230.0/24'
luci_statistics.@collectd_iptables_match[1].outputif='br-ff'
luci_statistics.@collectd_iptables_match[1].name='WLAN-Clients traffic'
luci_statistics.collectd_irq=statistics
luci_statistics.collectd_irq.enable='0'
luci_statistics.collectd_irq.Irqs='2 3 4 7'
luci_statistics.collectd_iwinfo=statistics
luci_statistics.collectd_iwinfo.enable='1'
luci_statistics.collectd_load=statistics
luci_statistics.collectd_load.enable='1'
luci_statistics.collectd_memory=statistics
luci_statistics.collectd_memory.enable='1'
luci_statistics.collectd_memory.ValuesAbsolute='1'
luci_statistics.collectd_memory.ValuesPercentage='0'
luci_statistics.collectd_netlink=statistics
luci_statistics.collectd_netlink.enable='0'
luci_statistics.collectd_netlink.IgnoreSelected='0'
luci_statistics.collectd_netlink.VerboseInterfaces='br-lan'
luci_statistics.collectd_netlink.QDiscs='br-lan'
luci_statistics.collectd_nut=statistics
luci_statistics.collectd_nut.enable='0'
luci_statistics.collectd_nut.UPS='myupsname'
luci_statistics.collectd_olsrd=statistics
luci_statistics.collectd_olsrd.enable='0'
luci_statistics.collectd_olsrd.Port='2006'
luci_statistics.collectd_olsrd.Host='127.0.0.1'
luci_statistics.collectd_openvpn=statistics
luci_statistics.collectd_openvpn.enable='0'
luci_statistics.collectd_ping=statistics
luci_statistics.collectd_ping.enable='0'
luci_statistics.collectd_ping.TTL='127'
luci_statistics.collectd_ping.Interval='30'
luci_statistics.collectd_ping.Hosts='127.0.0.1'
luci_statistics.collectd_processes=statistics
luci_statistics.collectd_processes.enable='0'
luci_statistics.collectd_processes.Processes='uhttpd dnsmasq dropbear'
luci_statistics.collectd_sensors=statistics
luci_statistics.collectd_sensors.enable='0'
luci_statistics.collectd_snmp6=statistics
luci_statistics.collectd_snmp6.enable='0'
luci_statistics.collectd_snmp6.Interfaces='br-lan'
luci_statistics.collectd_snmp6.IgnoreSelected='0'
luci_statistics.collectd_splash_leases=statistics
luci_statistics.collectd_splash_leases.enable='0'
luci_statistics.collectd_tcpconns=statistics
luci_statistics.collectd_tcpconns.enable='0'
luci_statistics.collectd_tcpconns.ListeningPorts='0'
luci_statistics.collectd_tcpconns.LocalPorts='22 80'
luci_statistics.collectd_thermal=statistics
luci_statistics.collectd_thermal.enable='0'
luci_statistics.collectd_thermal.IgnoreSelected='0'
luci_statistics.collectd_uptime=statistics
luci_statistics.collectd_uptime.enable='0'
luci_statistics.@collectd_network_listen[0]=collectd_network_listen
luci_statistics.@collectd_network_listen[0].host='192.168.1.237'
luci_statistics.@collectd_network_listen[0].port='25826'
luci_statistics.@collectd_network_server[0]=collectd_network_server
luci_statistics.@collectd_network_server[0].host='192.168.1.236'
luci_statistics.@collectd_network_server[0].port='25826'
network.loopback=interface
network.loopback.device='lo'
network.loopback.proto='static'
network.loopback.ipaddr='127.0.0.1'
network.loopback.netmask='255.0.0.0'
network.globals=globals
network.@device[0]=device
network.@device[0].name='br-lan'
network.@device[0].type='bridge'
network.@device[0].ports='eth0' 'eth1' 'eth2' 'eth3'
network.@device[0].ipv6='0'
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.netmask='255.255.255.0'
network.lan.broadcast='192.168.2.255'
network.lan.ipaddr='192.168.1.237'
network.lan.ipv6='off'
network.lan.dns='192.168.1.236'
network.lan.dns_search='job'
network.lan.delegate='0'
network.lan.gateway='192.168.1.221'
nginx.global=main
nginx.global.uci_enable='true'
nginx._lan=server
nginx._lan.listen='443 ssl default_server' '[::]:443 ssl default_server'
nginx._lan.server_name='_lan'
nginx._lan.include='restrict_locally' 'conf.d/*.locations'
nginx._lan.ssl_session_cache='shared:SSL:32k'
nginx._lan.ssl_session_timeout='64m'
nginx._lan.access_log='off; # logd openwrt'
nginx._lan.ssl_certificate='/etc/letsencrypt/my-name.my-domain.com.pem'
nginx._lan.ssl_certificate_key='/etc/letsencrypt/my-name.my-domain.com.pem'
nginx._lan.uci_manage_ssl='my_letsencrypt'
nginx._redirect2ssl=server
nginx._redirect2ssl.listen='80' '[::]:80'
nginx._redirect2ssl.server_name='_redirect2ssl'
nginx._redirect2ssl.return='302 https://$host$request_uri'
ntpclient.@ntpserver[0]=ntpserver
ntpclient.@ntpserver[0].hostname='0.openwrt.pool.ntp.org'
ntpclient.@ntpserver[0].port='123'
ntpclient.@ntpserver[1]=ntpserver
ntpclient.@ntpserver[1].hostname='1.openwrt.pool.ntp.org'
ntpclient.@ntpserver[1].port='123'
ntpclient.@ntpserver[2]=ntpserver
ntpclient.@ntpserver[2].hostname='2.openwrt.pool.ntp.org'
ntpclient.@ntpserver[2].port='123'
ntpclient.@ntpserver[3]=ntpserver
ntpclient.@ntpserver[3].hostname='3.openwrt.pool.ntp.org'
ntpclient.@ntpserver[3].port='123'
ntpclient.@ntpdrift[0]=ntpdrift
ntpclient.@ntpdrift[0].freq='0'
ntpclient.@ntpclient[0]=ntpclient
ntpclient.@ntpclient[0].interval='600'
prometheus-node-exporter-lua.main=prometheus-node-exporter-lua
prometheus-node-exporter-lua.main.listen_interface='lan'
prometheus-node-exporter-lua.main.listen_ipv6='0'
prometheus-node-exporter-lua.main.listen_port='9100'
prometheus-node-exporter-lua-opkg.main=prometheus-node-exporter-lua
prometheus-node-exporter-lua-opkg.main.listen_interface='loopback'
prometheus-node-exporter-lua-opkg.main.listen_ipv6='0'
prometheus-node-exporter-lua-opkg.main.listen_port='9100'
qos.wan=interface
qos.wan.classgroup='Default'
qos.wan.enabled='0'
qos.wan.upload='128'
qos.wan.download='1024'
qos.@classify[0]=classify
qos.@classify[0].ports='22,53'
qos.@classify[0].comment='ssh, dns'
qos.@classify[0].target='Express'
qos.@classify[1]=classify
qos.@classify[1].target='Normal'
qos.@classify[1].proto='tcp'
qos.@classify[1].ports='20,21,25,80,110,443,993,995'
qos.@classify[1].comment='ftp, smtp, http(s), imap'
qos.@classify[2]=classify
qos.@classify[2].target='Express'
qos.@classify[2].ports='5190'
qos.@classify[2].comment='AOL, iChat, ICQ'
qos.@default[0]=default
qos.@default[0].target='Express'
qos.@default[0].proto='udp'
qos.@default[0].pktsize='-500'
qos.@reclassify[0]=reclassify
qos.@reclassify[0].target='Priority'
qos.@reclassify[0].proto='icmp'
qos.@default[1]=default
qos.@default[1].target='Bulk'
qos.@default[1].portrange='1024-65535'
qos.Default=classgroup
qos.Default.classes='Priority Express Normal Bulk'
qos.Default.default='Normal'
qos.Priority=class
qos.Priority.packetsize='400'
qos.Priority.avgrate='10'
qos.Priority.priority='20'
qos.Priority_down=class
qos.Priority_down.packetsize='1000'
qos.Priority_down.avgrate='10'
qos.Express=class
qos.Express.packetsize='1000'
qos.Express.avgrate='50'
qos.Express.priority='10'
qos.Normal=class
qos.Normal.packetsize='1500'
qos.Normal.packetdelay='100'
qos.Normal.avgrate='10'
qos.Normal.priority='5'
qos.Normal_down=class
qos.Normal_down.avgrate='20'
qos.Bulk=class
qos.Bulk.avgrate='1'
qos.Bulk.packetdelay='200'
rpcd.@rpcd[0]=rpcd
rpcd.@rpcd[0].socket='/var/run/ubus/ubus.sock'
rpcd.@rpcd[0].timeout='30'
rpcd.@login[0]=login
rpcd.@login[0].username='root'
rpcd.@login[0].password='$p$root'
rpcd.@login[0].read='*'
rpcd.@login[0].write='*'
sqm.eth1=queue
sqm.eth1.enabled='0'
sqm.eth1.interface='eth1'
sqm.eth1.download='85000'
sqm.eth1.upload='10000'
sqm.eth1.qdisc='cake'
sqm.eth1.script='piece_of_cake.qos'
sqm.eth1.qdisc_advanced='0'
sqm.eth1.ingress_ecn='ECN'
sqm.eth1.egress_ecn='ECN'
sqm.eth1.qdisc_really_really_advanced='0'
sqm.eth1.itarget='auto'
sqm.eth1.etarget='auto'
sqm.eth1.linklayer='none'
system.@system[0]=system
system.@system[0].ttylogin='0'
system.@system[0].log_size='64'
system.@system[0].urandom_seed='0'
system.@system[0].hostname='ax2'
system.@system[0].description='Xiaomi AX3600 2'
system.@system[0].log_proto='udp'
system.@system[0].conloglevel='8'
system.@system[0].cronloglevel='5'
system.@system[0].log_ip='192.168.1.4'
system.@system[0].zonename='Europe/Berlin'
system.@system[0].timezone='CET-1CEST,M3.5.0,M10.5.0/3'
system.ntp=timeserver
system.ntp.server='0.openwrt.pool.ntp.org' '1.openwrt.pool.ntp.org' '2.openwrt.pool.ntp.org' '3.openwrt.pool.ntp.org'
system.ntp.enable_server='1'
system.@led[0]=led
system.@led[0].name='Power'
system.@led[0].sysfs='blue:system'
system.@led[0].trigger='default-on'
system.@led[0].default='0'
system.@led[1]=led
system.@led[1].sysfs='yellow:system'
system.@led[1].trigger='netdev'
system.@led[1].dev='br-lan'
system.@led[1].name='AX Conn'
system.@led[1].mode='link'
system.@led[2]=led
system.@led[2].sysfs='yellow:network'
system.@led[2].trigger='netdev'
system.@led[2].dev='wlan1'
system.@led[2].name='AC Conn'
system.@led[2].mode='link'
system.@led[3]=led
system.@led[3].sysfs='blue:network'
system.@led[3].trigger='netdev'
system.@led[3].dev='wlan2'
system.@led[3].name='24 Conn'
system.@led[3].mode='link'
system.@led[4]=led
system.@led[4].sysfs='blue:aiot'
system.@led[4].trigger='netdev'
system.@led[4].dev='br-lan'
system.@led[4].name='Br Rx'
system.@led[4].mode='tx' 'rx'
ttyd.@ttyd[0]=ttyd
ttyd.@ttyd[0].interface='@lan'
ttyd.@ttyd[0].command='/bin/login'
ttyd.@ttyd[0].debug='7'
ttyd.@ttyd[0].enable='0'
ubootenv.@ubootenv[0]=ubootenv
ubootenv.@ubootenv[0].dev='/dev/mtd6'
ubootenv.@ubootenv[0].offset='0x0'
ubootenv.@ubootenv[0].envsize='0x10000'
ubootenv.@ubootenv[0].secsize='0x20000'
ucitrack.@network[0]=network
ucitrack.@network[0].init='network'
ucitrack.@network[0].affects='dhcp'
ucitrack.@wireless[0]=wireless
ucitrack.@wireless[0].affects='network'
ucitrack.@firewall[0]=firewall
ucitrack.@firewall[0].init='firewall'
ucitrack.@firewall[0].affects='luci-splash' 'qos' 'miniupnpd' 'sqm'
ucitrack.@olsr[0]=olsr
ucitrack.@olsr[0].init='olsrd'
ucitrack.@dhcp[0]=dhcp
ucitrack.@dhcp[0].init='dnsmasq'
ucitrack.@dhcp[0].affects='odhcpd'
ucitrack.@odhcpd[0]=odhcpd
ucitrack.@odhcpd[0].init='odhcpd'
ucitrack.@dropbear[0]=dropbear
ucitrack.@dropbear[0].init='dropbear'
ucitrack.@httpd[0]=httpd
ucitrack.@httpd[0].init='httpd'
ucitrack.@fstab[0]=fstab
ucitrack.@fstab[0].exec='/sbin/block mount'
ucitrack.@qos[0]=qos
ucitrack.@qos[0].init='qos'
ucitrack.@system[0]=system
ucitrack.@system[0].init='led'
ucitrack.@system[0].exec='/etc/init.d/log reload'
ucitrack.@system[0].affects='luci_statistics' 'dhcp'
ucitrack.@luci_splash[0]=luci_splash
ucitrack.@luci_splash[0].init='luci_splash'
ucitrack.@ntpclient[0]=ntpclient
ucitrack.@ntpclient[0].init='ntpclient'
ucitrack.@samba[0]=samba
ucitrack.@samba[0].init='samba'
ucitrack.@tinyproxy[0]=tinyproxy
ucitrack.@tinyproxy[0].init='tinyproxy'
ucitrack.@upnpd[0]=upnpd
ucitrack.@upnpd[0].init='miniupnpd'
ucitrack.@luci_statistics[0]=luci_statistics
ucitrack.@luci_statistics[0].init='luci_statistics'
ucitrack.@watchcat[0]=watchcat
ucitrack.@watchcat[0].init='watchcat'
ucitrack.@sqm[0]=sqm
ucitrack.@sqm[0].init='sqm'
uhttpd.main=uhttpd
uhttpd.main.listen_http='0.0.0.0:80' '[::]:80'
uhttpd.main.listen_https='0.0.0.0:443' '[::]:443'
uhttpd.main.redirect_https='0'
uhttpd.main.home='/www'
uhttpd.main.rfc1918_filter='1'
uhttpd.main.max_requests='3'
uhttpd.main.max_connections='100'
uhttpd.main.cert='/etc/uhttpd.crt'
uhttpd.main.key='/etc/uhttpd.key'
uhttpd.main.cgi_prefix='/cgi-bin'
uhttpd.main.lua_prefix='/cgi-bin/luci=/usr/lib/lua/luci/sgi/uhttpd.lua'
uhttpd.main.script_timeout='60'
uhttpd.main.network_timeout='30'
uhttpd.main.http_keepalive='20'
uhttpd.main.tcp_keepalive='1'
uhttpd.main.ubus_prefix='/ubus'
uhttpd.defaults=cert
uhttpd.defaults.days='730'
uhttpd.defaults.key_type='ec'
uhttpd.defaults.bits='2048'
uhttpd.defaults.ec_curve='P-256'
uhttpd.defaults.country='ZZ'
uhttpd.defaults.state='Somewhere'
uhttpd.defaults.location='Unknown'
uhttpd.defaults.commonname='OpenWrt'
umdns.@umdns[0]=umdns
umdns.@umdns[0].jail='1'
umdns.@umdns[0].network='lan'
upnpd.config=upnpd
upnpd.config.enabled='0'
upnpd.config.enable_natpmp='1'
upnpd.config.enable_upnp='1'
upnpd.config.secure_mode='1'
upnpd.config.log_output='0'
upnpd.config.download='1024'
upnpd.config.upload='512'
upnpd.config.internal_iface='lan'
upnpd.config.port='5000'
upnpd.config.upnp_lease_file='/var/run/miniupnpd.leases'
upnpd.config.igdv1='1'
upnpd.@perm_rule[0]=perm_rule
upnpd.@perm_rule[0].action='allow'
upnpd.@perm_rule[0].ext_ports='1024-65535'
upnpd.@perm_rule[0].int_addr='0.0.0.0/0'
upnpd.@perm_rule[0].int_ports='1024-65535'
upnpd.@perm_rule[0].comment='Allow high ports'
upnpd.@perm_rule[1]=perm_rule
upnpd.@perm_rule[1].action='deny'
upnpd.@perm_rule[1].ext_ports='0-65535'
upnpd.@perm_rule[1].int_addr='0.0.0.0/0'
upnpd.@perm_rule[1].int_ports='0-65535'
upnpd.@perm_rule[1].comment='Default deny'
watchcat.@watchcat[0]=watchcat
watchcat.@watchcat[0].period='6h'
watchcat.@watchcat[0].mode='ping_reboot'
watchcat.@watchcat[0].pinghosts='8.8.8.8'
watchcat.@watchcat[0].forcedelay='30'
wireless.radio0=wifi-device
wireless.radio0.type='mac80211'
wireless.radio0.path='soc/20000000.pci/pci0000:00/0000:00:00.0/0000:01:00.0'
wireless.radio0.cell_density='0'
wireless.radio0.country='DE'
wireless.radio0.channel='auto'
wireless.radio0.htmode='HT20'
wireless.radio0.band='2g'
wireless.radio0.txpower='20'
wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.path='platform/soc/c000000.wifi'
wireless.radio1.band='5g'
wireless.radio1.htmode='HE80'
wireless.radio1.cell_density='0'
wireless.radio1.country='DE'
wireless.radio1.channel='40'
wireless.default_radio1=wifi-iface
wireless.default_radio1.device='radio1'
wireless.default_radio1.network='lan'
wireless.default_radio1.mode='ap'
wireless.default_radio1.key='my-passphrase'
wireless.default_radio1.ieee80211r='1'
wireless.default_radio1.ft_over_ds='1'
wireless.default_radio1.ft_psk_generate_local='1'
wireless.default_radio1.ieee80211w='1'
wireless.default_radio1.ssid='job.openwrt.ssid'
wireless.default_radio1.encryption='psk2+ccmp'
wireless.default_radio1.nasid='job2-2'
wireless.radio2=wifi-device
wireless.radio2.type='mac80211'
wireless.radio2.path='platform/soc/c000000.wifi+1'
wireless.radio2.band='2g'
wireless.radio2.htmode='HE20'
wireless.radio2.channel='auto'
wireless.radio2.txpower='20'
wireless.radio2.cell_density='0'
wireless.radio2.country='DE'
wireless.default_radio2=wifi-iface
wireless.default_radio2.device='radio2'
wireless.default_radio2.network='lan'
wireless.default_radio2.mode='ap'
wireless.default_radio2.key='my-passphrase'
wireless.default_radio2.ieee80211r='1'
wireless.default_radio2.ft_over_ds='1'
wireless.default_radio2.ft_psk_generate_local='1'
wireless.default_radio2.ieee80211w='1'
wireless.default_radio2.ssid='job.fritz.ssid'
wireless.default_radio2.encryption='psk2+ccmp'
wireless.default_radio2.nasid='job2-3'
wireless.wifinet3=wifi-iface
wireless.wifinet3.device='radio0'
wireless.wifinet3.mode='ap'
wireless.wifinet3.ssid='job.iot.ssid'
wireless.wifinet3.encryption='psk2+ccmp'
wireless.wifinet3.key='my-passphrase'
wireless.wifinet3.ieee80211r='1'
wireless.wifinet3.ft_over_ds='1'
wireless.wifinet3.ft_psk_generate_local='1'
wireless.wifinet3.network='lan'
wireless.wifinet3.nasid='job2-1'

Does this happen every time when your devices roam/associate?

I'm having a similar/the same issue with the AX3600 configured as a dumb AP where sometimes WLAN clients can't get any access to LAN for the first few minutes after they associate. The situation corrects itself and everything works as expected a few minutes later.

not every time. Sometimes it just works, mostly on iPhones, while Samsung phones are stuck almost always.

I think we're seeing the same problem. Interestingly, changing the client's MAC address sometimes instantaneously allows traffic to pass again.

I've also observed on mine how all bridged LAN connections show up in conntrack on the AX3600/5.10 build, which isn't how 21.02 behaves. Not sure how related this is to the problem but disabling the firewall/flushing iptables rules doesn't help with the WLAN issue.

I can confirm I'm seeing the exact same behaviour. But it was already there before activating 802.11r, -k, -v, and DAWN. I just wasn't aware since I was still in the stage of configuring the damn thing via WiFi and I associated the issue with me somehow misconfiguring OpenWRT after having done so far too many times.

That looks like the same issue when mvebu and mt7621 switched to DSA - clients could not communicate for a while after roaming.
The root cause is source address learning is disabled at the CPU port of the switch. For details see this patch.

@Ansuel @robimarko Can you investigate this?

2 Likes

Hmm, it would be really weird if SSDK disabled address learning.
It should be an option somewhere in the SSDK shell tool to toggle that.

I have some new info, in case someone knowledgable in how a roam should look like in the logs wants to have a look:

I have written an ESP32 firmware now that connects to the WLAN, and once it succeeds, it pings a host on the same LAN (not WLAN) and also maintains a permanent connection to a TCP echo service (port 7) of that server where it sends and receives a byte every second. Finally the ESP monitors RSSI and reports if it changes by more than 5. All of this is written to the same remote syslog that the AP's use, to have a consolidated view of what happens during roaming on the APs (ax1, ax2) and the STA (Roamer).

This is the first start of the ESP near AP 1 after being off over night: immediate connection - fine!

2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authentication OK (open system)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-AUTHENTICATE.indication(24:a1:60:54:37:d4, OPEN_SYSTEM)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: association OK (aid 8)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 8)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-ASSOCIATE.indication(24:a1:60:54:37:d4)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: binding station to interface 'wlan2'
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: event 1 notification
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: start authentication
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.1X: unauthorizing port
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: sending 1/4 msg of 4-Way Handshake
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: received EAPOL-Key frame (2/4 Pairwise)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: sending 3/4 msg of 4-Way Handshake
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: received EAPOL-Key frame (4/4 Pairwise)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.1X: authorizing port
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session 25DB6ABA0E4AA074
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T09:46:05+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:46:05+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:46:05.357187+02:00 Roamer-5437D4 Roamer Host Roamer-5437D4 1.7 started with IP 192.168.1.179
2021-07-16T09:46:05.357187+02:00 Roamer-5437D4 Roamer Connect at 2021-07-16 09:46:05
2021-07-16T09:46:05.365995+02:00 Roamer-5437D4 Roamer RSSI -> -64 at 2021-07-16 09:46:05
2021-07-16T09:46:06.046985+02:00 Roamer-5437D4 Roamer Echo disconnect at 1900-01-00 00:00:00
2021-07-16T09:46:06.055725+02:00 Roamer-5437D4 Roamer Echo ok at 2021-07-16 09:46:06
2021-07-16T09:46:07.071089+02:00 Roamer-5437D4 Roamer No ping at 1900-01-00 00:00:00
2021-07-16T09:46:07.078153+02:00 Roamer-5437D4 Roamer Ping ok at 2021-07-16 09:46:07
2021-07-16T09:46:16.877529+02:00 Roamer-5437D4 Roamer RSSI -> -59 at 2021-07-16 09:46:16

Now I move the ESP from AP 1 to near AP 2: the AP 2 and ESP start connection and try a DHCP handshake (DHCP is on AP 1) but never fully succeed (skiped the middle part - it just repeats) until for some reason a weak connection to AP 1 is tried and immediately succeeds:

2021-07-16T09:52:17.194696+02:00 Roamer-5437D4 Roamer RSSI -> -72 at 2021-07-16 09:52:17
2021-07-16T09:52:17.305858+02:00 Roamer-5437D4 Roamer RSSI -> -77 at 2021-07-16 09:52:17
2021-07-16T09:52:17.719723+02:00 Roamer-5437D4 Roamer RSSI -> -84 at 2021-07-16 09:52:17
2021-07-16T09:52:17.909847+02:00 Roamer-5437D4 Roamer RSSI -> -78 at 2021-07-16 09:52:17
2021-07-16T09:52:18.903096+02:00 Roamer-5437D4 Roamer RSSI -> -89 at 2021-07-16 09:52:18
2021-07-16T09:52:18.930983+02:00 Roamer-5437D4 Roamer RSSI -> -83 at 2021-07-16 09:52:18
2021-07-16T09:52:19.465451+02:00 Roamer-5437D4 Roamer RSSI -> -90 at 2021-07-16 09:52:19
2021-07-16T09:52:25+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disconnected due to excessive missing ACKs
2021-07-16T09:52:25+02:00 ax1 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
2021-07-16T09:52:25+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 34)
2021-07-16T09:52:25+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 4)
2021-07-16T09:52:29+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:52:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T09:52:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 3)
2021-07-16T09:52:31+02:00 ax2 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T09:52:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session BF50C3FB2EE7A4ED
2021-07-16T09:52:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T09:52:31+02:00 ax2 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T09:52:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:52:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:52:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:52:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:52:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:35+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:35+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:35+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:35+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:52:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:52:39+02:00 ax2 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4

... repeating retries for ~40s, until...

2021-07-16T09:53:19+02:00 ax2 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
2021-07-16T09:53:19+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:53:20+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authentication OK (open system)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-AUTHENTICATE.indication(24:a1:60:54:37:d4, OPEN_SYSTEM)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: association OK (aid 8)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 8)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-ASSOCIATE.indication(24:a1:60:54:37:d4)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: binding station to interface 'wlan2'
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: event 1 notification
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: start authentication
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.1X: unauthorizing port
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: sending 1/4 msg of 4-Way Handshake
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: received EAPOL-Key frame (2/4 Pairwise)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: sending 3/4 msg of 4-Way Handshake
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: received EAPOL-Key frame (4/4 Pairwise)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.1X: authorizing port
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session D687E1781612588F
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T09:53:21+02:00 ax1 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T09:53:21+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:53:21+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:08.502404+02:00 Roamer-5437D4 Roamer RSSI -> -87 at 2021-07-16 09:56:07
2021-07-16T09:56:08.585764+02:00 Roamer-5437D4 Roamer Echo disconnect at 2021-07-16 09:52:22
2021-07-16T09:56:08.603748+02:00 Roamer-5437D4 Roamer Echo ok at 2021-07-16 09:56:08
2021-07-16T09:56:09.551902+02:00 Roamer-5437D4 Roamer No ping at 2021-07-16 09:52:28
2021-07-16T09:56:09.558300+02:00 Roamer-5437D4 Roamer Ping ok at 2021-07-16 09:56:09
2021-07-16T09:56:12.213865+02:00 Roamer-5437D4 Roamer RSSI -> -92 at 2021-07-16 09:56:12

Due to the connection to AP 1 is very weak, it is dropped (as expected/wished), but connect to AP 2 again does not work:

2021-07-16T09:56:19.990328+02:00 Roamer-5437D4 Roamer RSSI -> -92 at 2021-07-16 09:56:19
2021-07-16T09:56:20.716446+02:00 Roamer-5437D4 Roamer RSSI -> -86 at 2021-07-16 09:56:20
2021-07-16T09:56:28+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disconnected due to excessive missing ACKs
2021-07-16T09:56:28+02:00 ax1 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
2021-07-16T09:56:28+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DISASSOCIATE.indication(24:a1:60:54:37:d4, 34)
2021-07-16T09:56:28+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 MLME: MLME-DELETEKEYS.request(24:a1:60:54:37:d4)
2021-07-16T09:56:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T09:56:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 6)
2021-07-16T09:56:31+02:00 ax2 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T09:56:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session 90BE97C4500ADD0F
2021-07-16T09:56:31+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T09:56:31+02:00 ax2 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T09:56:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:31+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:32+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:34+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:36+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:38+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:39+02:00 ax2 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
2021-07-16T09:56:39+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T09:56:40+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
2021-07-16T09:56:41+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T09:56:41+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 6)
2021-07-16T09:56:41+02:00 ax2 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T09:56:41+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session 928DA38871ADC3F0
2021-07-16T09:56:41+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T09:56:41+02:00 ax2 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T09:56:41+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:41+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:41+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:41+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:42+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:42+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:42+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:42+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T09:56:44+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:44+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:44+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:44+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:45+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:45+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:45+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:45+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:46+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:46+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:46+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:46+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:48+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:48+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:48+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T09:56:48+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T09:56:49+02:00 ax2 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
....
  • Another walk to AP 1 -> immediate connection.
  • Another walk to AP 2 -> back in the reconnect loop until finally, after 3.5 min magic happens: AP 2 connects:
2021-07-16T10:24:49+02:00 ax2 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
2021-07-16T10:24:49+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T10:24:50+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
2021-07-16T10:24:51+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T10:24:51+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 2)
2021-07-16T10:24:51+02:00 ax2 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T10:24:51+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session 9FED695DDFD9516F
2021-07-16T10:24:51+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T10:24:51+02:00 ax2 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T10:24:51+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:51+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T10:24:51+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:51+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T10:24:52+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:52+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T10:24:52+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:52+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:54+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:55+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:55+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:55+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:55+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:57+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:57+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:57+02:00 ax1 dnsmasq-dhcp[3348]: DHCPDISCOVER(br-lan) 24:a1:60:54:37:d4
2021-07-16T10:24:57+02:00 ax1 dnsmasq-dhcp[3348]: DHCPOFFER(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:24:59+02:00 ax2 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
2021-07-16T10:24:59+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disassociated
2021-07-16T10:25:00+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: deauthenticated due to inactivity (timer DEAUTH/REMOVE)
2021-07-16T10:25:01+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T10:25:01+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 2)
2021-07-16T10:25:01+02:00 ax2 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T10:25:01+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session D39FB07693605E49
2021-07-16T10:25:01+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T10:25:01+02:00 ax2 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T10:25:01+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:25:01+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T10:25:01+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T10:25:01+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T10:25:01.894453+02:00 Roamer-5437D4 Roamer Disconnect at 2021-07-16 10:21:30
2021-07-16T10:25:01.899916+02:00 Roamer-5437D4 Roamer Connect at 2021-07-16 10:25:01
2021-07-16T10:25:01.911294+02:00 Roamer-5437D4 Roamer RSSI -> -42 at 2021-07-16 10:25:01
2021-07-16T10:25:02.068027+02:00 Roamer-5437D4 Roamer Echo disconnect at 2021-07-16 10:17:19
2021-07-16T10:25:02.080761+02:00 Roamer-5437D4 Roamer Echo ok at 2021-07-16 10:25:02
2021-07-16T10:25:03.480361+02:00 Roamer-5437D4 Roamer No ping at 2021-07-16 10:21:25
2021-07-16T10:25:03.487365+02:00 Roamer-5437D4 Roamer Ping ok at 2021-07-16 10:25:03
2021-07-16T10:53:20.813430+02:00 Roamer-5437D4 Roamer RSSI -> -55 at 2021-07-16 10:53:20

but it is not stable. I see sporadic reconnects:

2021-07-16T11:11:51.545730+02:00 Roamer-5437D4 Roamer RSSI -> -40 at 2021-07-16 11:11:51
2021-07-16T11:30:02+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: disconnected due to excessive missing ACKs
2021-07-16T11:30:02+02:00 ax2 hostapd: wlan2: AP-STA-DISCONNECTED 24:a1:60:54:37:d4
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: authenticated
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.11: associated (aid 2)
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session D39FB07693605E49
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4
2021-07-16T11:30:04+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T11:30:04+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T11:30:04+02:00 ax1 dnsmasq-dhcp[3348]: DHCPREQUEST(br-lan) 192.168.1.179 24:a1:60:54:37:d4
2021-07-16T11:30:04+02:00 ax1 dnsmasq-dhcp[3348]: DHCPACK(br-lan) 192.168.1.179 24:a1:60:54:37:d4 Roamer-5437D4
2021-07-16T11:30:06.466075+02:00 Roamer-5437D4 Roamer RSSI -> 0 at 2021-07-16 11:30:02
2021-07-16T11:30:06.486225+02:00 Roamer-5437D4 Roamer RSSI -> -40 at 2021-07-16 11:30:06

I do not see any reason for the disconnects, not for the connect loops and not why connect to AP 2 finally succeeds. Any way to crank up log level?

The only difference I see between connects to AP 1 vs AP 2 is right before the respective EAPOL-4WAY-HS-COMPLETED messages. Could that be a hint?:

AP 1:

2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 IEEE 802.1X: authorizing port
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session 25DB6ABA0E4AA074
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T09:46:05+02:00 ax1 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4

AP 2: (missing: IEEE 802.1X: authorizing port)

2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: AP-STA-CONNECTED 24:a1:60:54:37:d4
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 RADIUS: starting accounting session D39FB07693605E49
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: STA 24:a1:60:54:37:d4 WPA: pairwise key handshake completed (RSN)
2021-07-16T11:30:04+02:00 ax2 hostapd: wlan2: EAPOL-4WAY-HS-COMPLETED 24:a1:60:54:37:d4

It may be worth it to try changing the ESP32's MAC address (to something random) whenever it losses connection/fails to ping.

If the issue is MAC learning/ARP related this should immediately allow DHCP access via ax2.

not as easy as I thought...

maybe you know this? I tried:

...

// for changing MAC
#include <esp_wifi.h>

uint8_t oldMac[6] = {0};
uint8_t newMac[6] = {0};
RTC_NOINIT_ATTR uint32_t macOffset;

...

setup() {

  ...

  esp_wifi_get_mac(WIFI_IF_STA, oldMac);
  for (size_t i = 0; i < sizeof(oldMac); i++) {
    newMac[i] = oldMac[i];
  }

  newMac[5] += ++macOffset;
  if (newMac[5] == oldMac[5]) {
    newMac[5]++;
  }
  esp_wifi_set_mac(WIFI_IF_STA, newMac);

  ...

  WiFi.begin(ESSID, PASS);

but MAC stays the same.

Does esp_wifi_set_mac(WIFI_IF_STA, newMac); return ESP_OK?

It seems that ESP32 requires esp_wifi_init() to be called before esp_wifi_set_mac(). Otherwise you'll get ESP_ERR_WIFI_NOT_INIT instead of ESP_OK when you call esp_wifi_set_mac().

  wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
  esp_wifi_init(&cfg);
  esp_wifi_set_mac(WIFI_IF_STA, newMac);

Source: https://www.mouser.com/pdfdocs/esp-idf.pdf (page 46 of doc / page 50 of PDF)

Sorry I don't have an ESP32 around to verify this right now, but it should work.

1 Like

good hint. Always check return codes :slight_smile:

I change the ESP32 MAC on restarts and reconnects are immediate all the time now.

1 Like

So this is likely the same address learning/ARP problem @LGA1150 wrote about.

FWIW: here is the ESP32 firmware source code: https://github.com/joba-1/Esp32RoamingTestForXiaomiAx3600

Does the issue happen on the stock firmware too?

I dont know. (How) can I reflash the original firmware? I never used it...

Anyways, there is DHCP communication going back and forth (discover->offer->request->ack)

So that means comms on ethernet level works from client<-WLAN->AP2<-LAN->AP1(aka DHCP-Srv).

Only IP seems problematic -> ARP issue?

Do DHCP OFFER/ACK packets reach your ESP32 successfully? Try packet capturing on your ESP32.
DHCP DISCOVER and REQUEST are broadcast frames, so they won't be affected by the address learning issue.