Divested-WRT: No-nonsense hardened builds for Linksys WRT series

Yep, I still use two of these as my sole access points. They work well enough for my needs.

is it a DFS channel in your configured region? DFS handling is broken.

Hi, hoping someone here can help me with this issue. Long story short, the June Divested-build works fine. When upgrading to any build newer than that I get the issue described in the post under. Clients can nslookup google.com and 1.1.1.1 successfully, but ping 1.1.1.1 or google.com give a request timed out.
Thanks and sorry for the noise.

@SkewedZeppelin

I found you have compiled Kernel 6.12.49, but when I compiled, it still keep 6.12.47.

The 2nd trouble is that after I compiled under debian, the advanced-reboot, cannot change to another partition, and cannot apk add someApp, and apk update/upgrade work, but no list from internet. Thank you for fixing these tiny but strange trouble.

I should use your compiled firmware for WRT1900ACS v1, but your size cannot let dnscrypt-proxy2 works because no more size to save /usr/sbin, so I have to remove everything which is not focusing wrt1900acs model. yes, that is the reason.

What is the size of your sysupgrade.bin from your buildroot? Did you add the patch for Kernel 6.12.49? Maybe your resulting build is too large?

Dnscrypt-proxy2 can easily fit in the pre-compiled Divested core build sysupgrade.bin. If you are running low on space, you can always use extroot.

use extroot is not good for me, bcz USB-SSD is very hot after using. and I dislike this way because of easy touch by accident.

and 1st compile for latest 6.12.49:

after git pull, then ./scripts/feeds update -a ./scripts/feeds install -a,

debian@debian13:~/snapshot/openwrt$ git am patches/20162.patch
fatal: previous rebase directory .git/rebase-apply still exists but mbox given.
debian@debian13:~/snapshot/openwrt$ make nconfig
Sorry, I did not know your steps in detail.

What I have is still 6.12.47

is 17MB which install dnscrypt-proxy2 is impossible.

I prefer to compile small size, bcz after dp2 using, I donot need dnsmasq-full. Thank you.

should I overwrite all contents from unziped linux-6.12.49.tar.xz to home/snapshot/openwrt/target/linux ? then git am some patches ?

That’s a question for @anon80358587 . The patch for 6.12.49 failed, so you are still compiling against 16.12.47.

I suspect it’s a result of an incomplete rebase. Try running git status to see if it indicates that a rebase is in progress, you may need to either complete or abort it.

To abort use git rebase --abort. To continue a failed rebase use git rebase --continue

Now see if the 6.12.49 patch succeeds.

Before running a new build be sure to issue a git pull --rebase=true

1 Like

Sorry for my very late reply
 I’m in Eastern Europe at the moment, and tried channel 36 (which apparently is the only channel in this region not subjected to DFS requirements per this link). I keep getting fluctuations in the PHY rate between 866Mbit/s (VHT-MCS 9) all the way down to 468Mbit/s (VHT-MCS 5). I’m fortunate to have a symmetric 500Mbit/s connection and these variations don’t bother me much in everyday browsing responsiveness, but I’d like to know if anyone else is seeing this

TIA

is that on the supplicant itself eg. via wavemon?
because the value shown on the router itself (eg. via luci) will go up and down as supplicant activity varies.

Values that vary are the ones shown in the Network - Wireless - Associated Stations section. I don’t know what the supplicant does, are you saying this might be normal behaviour? Would you mind pointing to a more detailed description of what I should be looking for?

Many thanks,

@anon80358587 I found your builds recently. They seem really solid. Kudos!

I have one question I am hoping you can help: I cannot seem to be able to mount usb storage. Block-mount fails with error 127. Am I missing something or the builds are not designed to work with external usb storage?

Thanks in advance.

I noticed this same issue with wrt1900ac v1 (mamba). The root partition for Divested-WRT is only ~15MiB!

Meanwhile, vanilla OpenWrt for the same target has ~24.4MiB. I had to switch back because 15MiB was not enough to install many packages.

OpenWrt 24.10.4: /proc/mtd
# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00100000 00020000 "u-boot"
mtd1: 00040000 00020000 "u_env"
mtd2: 00040000 00020000 "s_env"
mtd3: 00100000 00020000 "devinfo"
mtd4: 02800000 00020000 "kernel1"
mtd5: 02400000 00020000 "rootfs1"
mtd6: 02800000 00020000 "kernel2"
mtd7: 02400000 00020000 "ubi"
mtd8: 02600000 00020000 "syscfg"
mtd9: 00780000 00020000 "unused_area"
mtd10: 00008000 00008000 "spi0.0"
OpenWrt 24.10.4: ubinfo -d 0
# ubinfo -d 0 

ubi0
Volumes count:                           2
Logical eraseblock size:                 126976 bytes, 124.0 KiB
Total amount of logical eraseblocks:     288 (36569088 bytes, 34.8 MiB)
Amount of available logical eraseblocks: 0 (0 bytes)
Maximum count of volumes                 128
Count of bad physical eraseblocks:       0
Count of reserved physical eraseblocks:  20
Current maximum erase counter value:     4
Minimum input/output unit size:          2048 bytes
Character device major/minor:            246:0
Present volumes:                         0, 1
OpenWrt 24.10.4: df -h
# df -h 
Filesystem                Size      Used Available Use% Mounted on
/dev/root                 3.5M      3.5M         0 100% /rom
tmpfs                   120.7M      1.5M    119.3M   1% /tmp
/dev/ubi0_1              24.4M     18.4M      4.8M  79% /overlay
overlayfs:/overlay       24.4M     18.4M      4.8M  79% /
ubi1:syscfg              30.7M   1000.0K     28.1M   3% /tmp/syscfg
tmpfs                   512.0K         0    512.0K   0% /dev

Hi,

I have a Linksys WRT32X router with the Divested build installed (version from divested.dev/unofficial-openwrt-builds/mvebu-linksys/20251024-00/).

Problem:
The router is connected to my laptop via Ethernet cable (for management). I'm trying to configure the router in WiFi STA (client) mode to connect to another router that has internet access. The WiFi connection is established correctly — the router connects to the main router's network and receives an IP address.

However, the problem occurs when I try to open any website from my laptop through the router (e.g., google.com). The router freezes, the LuCI web interface becomes unresponsive, and a forced restart is the only solution.

Details:

  • Router model: Linksys WRT32X
  • OpenWRT version: snapshot (Divested build from 24.10.2025)
  • WiFi connection type: 2.4GHz / 5GHz (tested both)
  • DHCP on LAN: disabled (router gets IP from main router)
  • WAN (WiFi STA): enabled, connected

Questions:
Is this a known issue in OpenWRT snapshot, 24.10 and 23.05 on mvebu? Does the Divested build include fixes for this type of freezing? Should I downgrade to version 22.xx, or is there another solution?

Thank you for your help!

Additional Information - Comparison with MT76 Driver Issues:

I noticed that the MT76 driver https://github.com/openwrt/mt76 (MediaTek WiFi chipset driver for OpenWrt) had very similar stability issues in the past, particularly with data transmission problems when switching between different network configurations. The MT76 project maintained detailed issue tracking and eventually resolved all the critical bugs through continuous development and community testing.

What I'm experiencing with the WRT32X in STA mode seems related to similar data transmission issues — specifically when the router switches between Ethernet (LAN interface) and WiFi client (STA) connections after IP configuration changes (e.g., from 192.168.1.0/24 to 192.168.2.0/24 or receiving DHCP from the upstream router).

The problem appears to manifest as:

Data stalling between the Ethernet LAN port and the WiFi STA interface

Kernel/driver-level packet loss or routing table corruption

Complete system freeze requiring hard restart

The MT76 project successfully resolved similar issues through targeted driver patches and kernel backport fixes. It seems the Marvell wireless drivers used by the WRT32X (mwlwifi on mvebu) might need similar attention and debugging.

Is there any OpenWRT version (stable, snapshot, or custom build) that works reliably on WRT32X with WiFi client mode enabled?

I’m a former Divested user on a WRT3200, which is now relegated to backup router duty using stock openwrt. I just updated it to 24.10.4, reset to defaults, and connected the 2.4g wifi to my home system wifi. No issues getting to external sites via ethernet or the 5g wifi. I changed nothing in the config except scanning and connecting the 2.4g as wlan, then configuring the 5g for access. Cheers. lasker

Hey Lasker,

In my case the router stops working as soon as I change its address after connecting as a WiFi client. For example, if I set it to 192.168.2.1/24, the web interface at 192.168.2.1 fails to load any data, even though SSH access to the router still works.

Have you seen something similar on your setup?

logs
Sat Nov  8 10:57:13 2025 authpriv.info dropbear[5240]: Child connection from 192.168.2.144:58660
Sat Nov  8 10:57:15 2025 authpriv.notice dropbear[5240]: Auth succeeded with blank password for 'root' from 192.168.2.144:58660
Sat Nov  8 10:57:23 2025 daemon.warn odhcpd[2559]: No default route present, overriding ra_lifetime to 0!
Sat Nov  8 10:57:30 2025 daemon.err collectd[3036]: Sleeping only 2s because the next interval is 3761737.114 seconds in the past!
Sat Nov  8 10:57:31 2025 daemon.err collectd[3036]: rrdtool plugin: rrd_update_r failed: /tmp/rrd/OpenWrt/cpu-0/percent-user.rrd: opening '/tmp/rrd/OpenWrt/cpu-0/percent-user.rrd': No such file or directory
Sat Nov  8 10:57:31 2025 daemon.err collectd[3036]: rrdtool plugin: rrd_update_r failed: /tmp/rrd/OpenWrt/cpu-0/percent-softirq.rrd: opening '/tmp/rrd/OpenWrt/cpu-0/percent-softirq.rrd': No such file or directory
Sat Nov  8 10:57:31 2025 daemon.err collectd[3036]: rrdtool plugin: rrd_update_r failed: /tmp/rrd/OpenWrt/cpu-1/percent-system.rrd: opening '/tmp/rrd/OpenWrt/cpu-1/percent-system.rrd': No such file or directory
Sat Nov  8 10:57:43 2025 daemon.notice wpa_supplicant[2224]: phy1-sta0: CTRL-EVENT-BEACON-LOSS
Sat Nov  8 10:57:46 2025 daemon.notice netifd: Network device 'phy1-sta0' link is down
Sat Nov  8 10:57:46 2025 daemon.notice netifd: Interface 'wwan' has link connectivity loss
Sat Nov  8 10:57:46 2025 daemon.notice netifd: wwan (4669): udhcpc: received SIGTERM
Sat Nov  8 10:57:46 2025 daemon.notice netifd: wwan (4669): udhcpc: unicasting a release of 192.168.1.224 to 192.168.1.1
Sat Nov  8 10:57:46 2025 daemon.notice netifd: wwan (4669): udhcpc: sending release
Sat Nov  8 10:57:46 2025 daemon.notice netifd: wwan (4669): udhcpc: entering released state
Sat Nov  8 10:57:46 2025 daemon.notice netifd: wwan (4669): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "wwan" } (Permission denied)
Sat Nov  8 10:57:46 2025 daemon.notice netifd: Interface 'wwan' is now down
Sat Nov  8 10:58:06 2025 kern.err kernel: [   91.751874] ieee80211 phy1: cmd 0x9122=UpdateEncryption timed out
Sat Nov  8 10:58:06 2025 kern.err kernel: [   91.758006] ieee80211 phy1: return code: 0x1122
Sat Nov  8 10:58:06 2025 kern.err kernel: [   91.762566] ieee80211 phy1: timeout: 0x1122
Sat Nov  8 10:58:06 2025 kern.err kernel: [   91.766768] phy1-sta0: failed to remove key (0, 24:f5:a2:8e:29:63) from hardware (-5)
Sat Nov  8 10:58:06 2025 kern.debug kernel: [   91.774700] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
Sat Nov  8 10:58:13 2025 daemon.err uhttpd[2737]: [info] luci: accepted login on / for root from 192.168.2.144
Sat Nov  8 10:58:26 2025 kern.err kernel: [  111.825466] ieee80211 phy1: cmd 0x9111=SetNewStation timed out
Sat Nov  8 10:58:26 2025 kern.err kernel: [  111.831345] ieee80211 phy1: return code: 0x1111
Sat Nov  8 10:58:26 2025 kern.err kernel: [  111.835895] ieee80211 phy1: timeout: 0x1111
Sat Nov  8 10:58:26 2025 kern.debug kernel: [  111.840221] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000

Additional logs: router freezes after setting 192.168.2.1 and enabling 2.4GHz Wi-Fi client.

eth 192.168.2.1 and Wi-Fi Client 2.4GHz logs
[24 paĆș 2025, 13:12:13 UTC] daemon.info: dnsmasq[1]: using only locally-known addresses for bind
[24 paĆș 2025, 13:12:13 UTC] daemon.info: dnsmasq[1]: using only locally-known addresses for lan
[24 paĆș 2025, 13:12:13 UTC] user.notice: firewall: Reloading firewall due to ifup of wwan (phy1-sta0)
[24 paĆș 2025, 13:12:14 UTC] daemon.warn: odhcpd[3267]: No default route present, setting ra_lifetime to 0!
[24 paĆș 2025, 13:12:23 UTC] authpriv.info: dropbear[7869]: Child connection from 192.168.2.144:58879
[24 paĆș 2025, 13:12:25 UTC] authpriv.notice: dropbear[7869]: Auth succeeded with blank password for 'root' from 192.168.2.144:58879
[24 paĆș 2025, 13:13:58 UTC] daemon.notice: wpa_supplicant[3079]: phy1-sta0: CTRL-EVENT-BEACON-LOSS
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: Network device 'phy1-sta0' link is down
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: Interface 'wwan' has link connectivity loss
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: wwan (7592): udhcpc: received SIGTERM
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: wwan (7592): udhcpc: unicasting a release of 192.168.1.224 to 192.168.1.1
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: wwan (7592): udhcpc: sending release
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: wwan (7592): udhcpc: entering released state
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: wwan (7592): Command failed: ubus call network.interface notify_proto { "action": 0, "link-up": false, "keep": false, "interface": "wwan" } (Permission denied)
[24 paĆș 2025, 13:14:01 UTC] daemon.notice: netifd: Interface 'wwan' is now down
[24 paĆș 2025, 13:14:21 UTC] kern.err: [  584.694871] ieee80211 phy1: cmd 0x9122=UpdateEncryption timed out
[24 paĆș 2025, 13:14:21 UTC] kern.err: [  584.701043] ieee80211 phy1: return code: 0x1122
[24 paĆș 2025, 13:14:21 UTC] kern.err: [  584.705613] ieee80211 phy1: timeout: 0x1122
[24 paĆș 2025, 13:14:21 UTC] kern.err: [  584.709815] phy1-sta0: failed to remove key (0, 24:f5:a2:8e:29:63) from hardware (-5)
[24 paĆș 2025, 13:14:21 UTC] kern.debug: [  584.717764] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
[24 paĆș 2025, 13:14:41 UTC] kern.err: [  604.750890] ieee80211 phy1: cmd 0x9111=SetNewStation timed out
[24 paĆș 2025, 13:14:41 UTC] kern.err: [  604.756779] ieee80211 phy1: return code: 0x1111
[24 paĆș 2025, 13:14:41 UTC] kern.err: [  604.761332] ieee80211 phy1: timeout: 0x1111
[24 paĆș 2025, 13:14:41 UTC] kern.debug: [  604.765881] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
[24 paĆș 2025, 13:15:01 UTC] kern.err: [  624.768868] ieee80211 phy1: cmd 0x801c=80211RadioControl timed out
[24 paĆș 2025, 13:15:01 UTC] kern.err: [  624.775099] ieee80211 phy1: return code: 0x001c
[24 paĆș 2025, 13:15:01 UTC] kern.err: [  624.779654] ieee80211 phy1: timeout: 0x001c
[24 paĆș 2025, 13:15:01 UTC] kern.debug: [  624.783862] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
[24 paĆș 2025, 13:15:21 UTC] kern.err: [  644.800870] ieee80211 phy1: cmd 0x8115=SetEDCAParams timed out
[24 paĆș 2025, 13:15:21 UTC] kern.err: [  644.806753] ieee80211 phy1: return code: 0x0115
[24 paĆș 2025, 13:15:21 UTC] kern.err: [  644.811305] ieee80211 phy1: timeout: 0x0115
[24 paĆș 2025, 13:15:21 UTC] kern.debug: [  644.815521] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
dmesg
[  452.469956] phy1-sta0: authenticate with 24:f5:a2:8e:29:63 (local address=60:38:e0:c9:a5:f1)
[  452.478451] phy1-sta0: send auth to 24:f5:a2:8e:29:63 (try 1/3)
[  452.530549] phy1-sta0: authenticate with 24:f5:a2:8e:29:63 (local address=60:38:e0:c9:a5:f1)
[  452.539051] phy1-sta0: send auth to 24:f5:a2:8e:29:63 (try 1/3)
[  452.571693] phy1-sta0: authenticated
[  452.584900] phy1-sta0: associate with 24:f5:a2:8e:29:63 (try 1/3)
[  452.593761] phy1-sta0: RX AssocResp from 24:f5:a2:8e:29:63 (capab=0x431 status=0 aid=2)
[  452.696934] ieee80211 phy1: change: 0x2
[  452.696951] phy1-sta0: associated
[  584.694871] ieee80211 phy1: cmd 0x9122=UpdateEncryption timed out
[  584.701043] ieee80211 phy1: return code: 0x1122
[  584.705613] ieee80211 phy1: timeout: 0x1122
[  584.709815] phy1-sta0: failed to remove key (0, 24:f5:a2:8e:29:63) from hardware (-5)
[  584.717764] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
[  604.750890] ieee80211 phy1: cmd 0x9111=SetNewStation timed out
[  604.756779] ieee80211 phy1: return code: 0x1111
[  604.761332] ieee80211 phy1: timeout: 0x1111
[  604.765881] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000

I just updated to the latest version of divested but after adding openvpn-openssl I no longer have luci-app-openvpn available to install.

I updated to the latest version (wrt3200acm). Wifi still works but I cannot reach the web interface at all now. Either from PC or the phone. Firefox cannot connect. Does anyone have an idea how to repair it? Switching it of and on didn’t work either. Thanks!