I'm seeing issues in this thread that I have also experienced. Here is my attempt to offer solutions that worked for me.
Quick Verification Commands (Run on Router via SSH)
# 1. Check RAM and Swap Status
free -m
# 2. Check 2.4GHz Channel Width (should be 20MHz for IoT stability)
iw dev ra0 info | grep -E "channel|width"
# 3. Check for 2.4GHz Extender Deauth Loops
logread | grep -E "deauth|ap_peer_auth|SKIP" | tail -n 20
# 4. Check VLAN Bridge Setup
bridge vlan show
# 5. Check AdGuard Home Rate Limit
grep "rate_limit:" /etc/AdGuardHome/config.yaml
# Remember to commit and reload when making changes
uci commit wireless
wifi reload
Router Crash / Watchdog Reboot - failed to allocate -1 bytes, UI freezes, no crash dump. Silent RAM starvation; 0KB swap; procd watchdog timeout (31s).
- Check
dmesg or logread for repetitive ap_peer_auth_req_at_idle_action... SKIP or deauth messages.
- Identify the satellite's 2.4GHz client MAC and block it on the main router's 2.4GHz AP interface so it stops hammering the driver:
iwpriv ra0 set ACLAddEntry="B2:19:21:06:76:F0"
iwpriv ra0 set AccessPolicy=2 # Policy 2 = Deny list (Block specified MACs)
Swapfile should not be needed, but my experience says otherwise:
STORAGE_MOUNT="/tmp/mountd/disk1_part1"
if [ -d "$STORAGE_MOUNT" ]; then
dd if=/dev/zero of="$STORAGE_MOUNT/swapfile" bs=1M count=512
chmod 600 "$STORAGE_MOUNT/swapfile"
mkswap "$STORAGE_MOUNT/swapfile"
swapon "$STORAGE_MOUNT/swapfile"
fi
# Ensure swap activates persistently on boot via /etc/rc.local
if ! grep -q "swapon" /etc/rc.local; then
sed -i -e '$i \
# Ensure swapfile activates on boot\
if [ -f "'"$STORAGE_MOUNT"'/swapfile" ] && ! grep -q "'"$STORAGE_MOUNT"'/swapfile" /proc/swaps; then\
swapon "'"$STORAGE_MOUNT"'/swapfile"\
fi\
' /etc/rc.local
fi
If you do not have external storage, install zram-swap for compressed in-RAM swap:
opkg update
opkg install zram-swap
/etc/init.d/zram start
/etc/init.d/zram enable
Android / Samsung "Wrong Password" - Phone rejects nearest AP; stuck on weak AP (-70 dBm)
PMF / WPA3-SAE mismatch across bands/nodes under same SSID; PMKID failure
- WPA2/WPA3 Mixed, PMF Optional (
ieee80211w='1') or PMF Disabled (ieee80211w='0'), 802.11k enabled (ieee80211k='1'), 802.11v enabled (bss_transition='1').
edit: I was wrong about disable PMF on WPA3. i assume optional would still work for WPA2/WPA3 mixed (not confirmed as i have devices that do not support WPA3 so i don't enable it anywhere
# Enable standard 802.11k/v roaming and harmonized PMF on main radios
uci set wireless.wifi2g.ieee80211w='1'
uci set wireless.wifi2g.ieee80211k='1'
uci set wireless.wifi2g.bss_transition='1'
uci set wireless.wifi5g.ieee80211w='1'
uci set wireless.wifi5g.ieee80211k='1'
uci set wireless.wifi5g.bss_transition='1'
IoT / Govee / Tuya Disconnects - Smart home lights blink; Alexa unresponsive. 40MHz width on 2.4GHz; PMF enabled; extender 2.4G deauth loop. Lock the 2.4GHz Radio to 20MHz and WPA2-PSK (PMF Off). Legacy smart home devices (ESP8266/ESP32, smart plugs, lights) do not support PMF or WPA3.
- WPA2-PSK Only, PMF Disabled (ieee80211w='0'), Channel Width: 20MHz Only.
# Force 2.4GHz radio to 20MHz channel width
uci set wireless.mt798111.htmode='HT20'
uci set wireless.mt798111.bw='20'
# Ensure PMF is disabled on the IoT interface
uci set wireless.iot2g.ieee80211w='0'
uci set wireless.iot2g.encryption='psk2'
5GHz Clamped to 80MHz on Wire - 160MHz main router drops to 80MHz on satellite. EasyMesh wireless backhaul profile constraints & DFS fallback. Force 160MHz Channel Width on Main Radios. (I am using wireless backhaul and I am not running this config on my setup)
# On MT7986 / MT7981 / Qualcomm Wi-Fi 7:
uci set wireless.mt798112.bw='160'
uci set wireless.mt798112.htmode='HE160' # Or 'EHT160' / 'EHT320' on Wi-Fi 7
# if only wired backhaul identify and disable the hidden wireless mesh backhaul
uci set wireless.bbss5g.disabled='1'
IoT / Guest No Internet on Mesh - Mesh satellites drop IoT/Guest; main LAN works. Software bridges (br-iot) lack 802.1Q tags over EasyMesh backhaul. Convert your router to native OpenWrt Distributed Switch Architecture (DSA) VLAN filtering. This allows IoT traffic (VLAN 10) and Guest traffic (VLAN 20) to traverse physical Ethernet trunks (eth1:t) and managed switches directly to any AP.
Intermittent Smart Home "No Internet" - Devices drop offline after reboot; AdGuard logs REFUSED. AdGuard Home rate limit (rate_limit: 20) triggered during query bursts
Disable or Raise the AdGuard Home Rate Limit
Edit /etc/AdGuardHome/config.yaml (or via UI at Settings -> DNS Configuration -> Rate Limit):
dns:
rate_limit: 0 # 0 disables the rate limit entirely on trusted local LAN
Configure AdGuard Home's upstream DNS configuration so that reverse lookups and local subnets are forwarded directly to dnsmasq (127.0.0.1:53 or the configured dnsmasq port):
upstream_dns:
- "[/8.168.192.in-addr.arpa/]127.0.0.1:53"
- "[/lan/]127.0.0.1:53"
- "[/local/]127.0.0.1:53"
/etc/init.d/adguardhome restart