WRT3200ACM partially broken on master

It seems for some reasons kmod-mwlwifi is not automatically included in a build for WRT3200ACM on current master branch. As a result, the image built does not have wireless support.

However, even after including kmod-mwlwifi in the build, the wireless hardware still cannot initialize, with these errors showing up in the system log (prior to including kmod-mwlwifi nothing related to wifi were present in the log at all).

Sat Aug 29 05:00:27 2020 kern.info kernel: [   12.835401] Loading modules backported from Linux version v5.8-0-gbcf876870b95
Sat Aug 29 05:00:27 2020 kern.info kernel: [   12.842669] Backport generated by backports.git v5.8-1-0-g79400d9e
Sat Aug 29 05:00:27 2020 kern.info kernel: [   12.904420] <<Marvell Mac80211 Wireless PCIE Network Driver version 10.3.8.0-20181210>>
Sat Aug 29 05:00:27 2020 kern.info kernel: [   12.912474] pci 0000:00:01.0: enabling device (0140 -> 0142)
Sat Aug 29 05:00:27 2020 kern.debug kernel: [   12.918266] ieee80211 phy0: priv->pcmd_buf = 30739d68  priv->pphys_cmd_buf = d8ab2f72
Sat Aug 29 05:00:27 2020 kern.warn kernel: [   12.918313] mwlwifi 0000:01:00.0: Direct firmware load for mwlwifi/88W8964.bin failed with error -2
Sat Aug 29 05:00:27 2020 kern.warn kernel: [   12.927412] mwlwifi 0000:01:00.0: Falling back to sysfs fallback for: mwlwifi/88W8964.bin
Sat Aug 29 05:00:27 2020 kern.err kernel: [   12.994752] ieee80211 phy0: cannot find firmware image <mwlwifi/88W8964.bin>
Sat Aug 29 05:00:27 2020 kern.err kernel: [   13.001840] ieee80211 phy0: firmware init fail
Sat Aug 29 05:00:27 2020 kern.err kernel: [   13.006314] ieee80211 phy0: fail to initialize firmware
Sat Aug 29 05:00:27 2020 kern.warn kernel: [   13.011610] mwlwifi: probe of 0000:01:00.0 failed with error -5
Sat Aug 29 05:00:27 2020 kern.info kernel: [   13.017632] pci 0000:00:02.0: enabling device (0140 -> 0142)
Sat Aug 29 05:00:27 2020 kern.debug kernel: [   13.023411] ieee80211 phy1: priv->pcmd_buf = 2fe17445  priv->pphys_cmd_buf = 80998fd5
Sat Aug 29 05:00:27 2020 kern.warn kernel: [   13.023434] mwlwifi 0000:02:00.0: Direct firmware load for mwlwifi/88W8964.bin failed with error -2
Sat Aug 29 05:00:27 2020 kern.warn kernel: [   13.032519] mwlwifi 0000:02:00.0: Falling back to sysfs fallback for: mwlwifi/88W8964.bin
Sat Aug 29 05:00:27 2020 kern.err kernel: [   13.044545] ieee80211 phy1: cannot find firmware image <mwlwifi/88W8964.bin>
Sat Aug 29 05:00:27 2020 kern.err kernel: [   13.051629] ieee80211 phy1: firmware init fail
Sat Aug 29 05:00:27 2020 kern.err kernel: [   13.056111] ieee80211 phy1: fail to initialize firmware
Sat Aug 29 05:00:27 2020 kern.warn kernel: [   13.061394] mwlwifi: probe of 0000:02:00.0 failed with error -5

Is wireless somehow broken on master for this device at the moment?

ls -las /lib/firmware/mwlwifi

show existence

mwlwifi and its firmware is definately present in the current (r14283-42d14ace3e) snapshot images, if you build it yourself, everything is possible and you need to check your build configuration (diffconfig).

$ wget https://downloads.openwrt.org/snapshots/targets/mvebu/cortexa9/openwrt-mvebu-cortexa9-linksys_wrt3200acm-squashfs-sysupgrade.bin
$ binwalk -e openwrt-mvebu-cortexa9-linksys_wrt3200acm-squashfs-sysupgrade.bin
$ cd _openwrt-mvebu-cortexa9-linksys_wrt3200acm-squashfs-sysupgrade.bin.extracted/sysupgrade-armada-385-linksys-rango/
$ binwalk -e root
$ find _root.extracted/squashfs-root/lib/firmware/ _root.extracted/squashfs-root/lib/modules/5.4.60/ -type f | sort
_root.extracted/squashfs-root/lib/firmware/mrvl/sd8887_uapsta.bin
_root.extracted/squashfs-root/lib/firmware/mrvl/sdsd8997_combo_v4.bin
_root.extracted/squashfs-root/lib/firmware/mwlwifi/88W8964.bin
_root.extracted/squashfs-root/lib/firmware/mwlwifi/88W8964.bin.Marvell_license.txt
_root.extracted/squashfs-root/lib/firmware/regulatory.db
[…]
_root.extracted/squashfs-root/lib/modules/5.4.60/cfg80211.ko
[…]
_root.extracted/squashfs-root/lib/modules/5.4.60/compat.ko
[…]
_root.extracted/squashfs-root/lib/modules/5.4.60/mac80211.ko
_root.extracted/squashfs-root/lib/modules/5.4.60/mwifiex.ko
_root.extracted/squashfs-root/lib/modules/5.4.60/mwifiex_sdio.ko
_root.extracted/squashfs-root/lib/modules/5.4.60/mwlwifi.ko
[…]

The file you mentioned is not there.
No such file or directory.

EDIT: There's only a regulatory.db. It's as if when using ImageBuilder, even after I did select the linksys_wrt3200acm profile, none of the packages associated to that profile (including the firmware package) are actually being included.

As per slh maybe try

./scripts/diffconfig.sh > diffconfig
cp diffconfig .config
make defconfig

check if the requisite bits are in place in menuconfig. I'm not seeing an issue.

By the way I'm using ImageBuilder to produce the image, not building from source. The full OpenWrt build system is still a bit difficult for me to use...

EDIT: I got it working now, by explicitly including the packages associated with the linksys_wrt3200acm profile which include the mwlwifi module, firmware and other stuffs.

As for default packages, actually I had to explicitly exclude dnsmasq (-dnsmasq) in order to install dnsmasq-full, as something in my configuration depended on it. Not sure if this exclusion/replacement could break anything, but the build commands I've been using for ImageBuilder were working without issues on 19.07.3.

On the other hand... it seems WPA3 is still problematic. Connecting an Android 10 device on a WPA2/WPA3 mixed mode access point (using WPA3) would eventually cause the entire router to stop working (first the wireless stops working then all network connections are cut).

The following errors can be found in the log:

[  275.710196] ieee80211 phy1: cmd 0x9122=UpdateEncryption timed out
[  275.716330] ieee80211 phy1: return code: 0x1122
[  275.720879] ieee80211 phy1: timeout: 0x1122
[  275.725087] wlan1: failed to remove key (0, 80:a5:89:c7:e9:53) from hardware (-5)
[  275.732747] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
[  295.734426] ieee80211 phy1: cmd 0x9111=SetNewStation timed out
[  295.740288] ieee80211 phy1: return code: 0x1111
[  295.744848] ieee80211 phy1: timeout: 0x1111
[  295.752663] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000
[  315.745685] ieee80211 phy1: cmd 0x801d=MEMAddrAccess timed out
[  315.751554] ieee80211 phy1: return code: 0x001d
[  315.756103] ieee80211 phy1: timeout: 0x001d
[  315.760317] ieee80211 phy1: MACREG_REG_INT_CODE: 0x0000

For now I have to keep my APs in WPA2 only mode...

1 Like

Mwlwifi and wpa3 is a no go due to broken PMF implementation.

2 Likes

Ouch! So that's a known issue...

It seems with master on this device Wifi is still very broken compared to stable. My guest wifi interface often fails to start because of "DEVICE_CLAIM_FAILED" errors. Putting the guest wifi interface to a bridge would keep that error away, but the guest AP itself is not working, and the bridge is being assigned with a totally random MAC address on every restart. Also when I change wireless settings, all Wifi adapters would stop working (can't be seen by device).

Right now the Wireless is broken, again... :frowning:

EDIT: Took me quite a while to bring wireless to a state that's working as intended, but personally I think this is still temporary. I wouldn't dare touching wireless configuration again for the time being...

Unless NXP (the new owner) picks up mwlwifi the drivers are dead in the water. Thank Marvell for that.

1 Like

I don't have my hopes up high, when it comes to development of whatever firmware or existing devices on the market for home grade equipment the support is bad. For example the C7's from tp-link. They keep rebranding the device and only bring out new firmware's for there v5 model while hardware wise they are the same. Linksys is disappointing aswell, they have high grade routers but don't get any updates, in the EU for the 1900acs v2 was 4/26/2018. I think any internet device should get firmware updates more often, just like mobile phones do nowadays.

Sad Sad.

As of the ImageBuilder on master snapshot on Sep 11, 2020 the issue with building using ImageBuilder is still not fixed.

The WRT3200ACM profile is still not pulling the necessary packages for wifi to operate... still need to manually, explcitly include them or wireless would be broken.

Is there any activities regarding mwlwifi, or the package management (regarding profiles and dependency checks)? The profiles were working on stable and would pull those profile-defined packages, though.

I had the same issue with
Linksys WRT 1200AC v2
OpenWrt 19.07.4, r11208-ce6496d796

Wifi locks up after the error and crashed the system if I try to restart the interface.
UpdateEncryption timed out

Encryption is set to "WPA2-PKS (strong security)
802.11w Management Frame Protection is Disabled.

1 Like

Has anyone found a workaround of the DEVICE_CLAIM_FAILED for guest interface? It reproduced every boot. However, if I restart the interface manually post boot it fixes the issue. So I do not think this is related to a driver issue, but somekind of startup timing/dependency issue.

I can simulate the manual restart with:

wifi down radio1 && wifi up radio1

but there must be a better way for this.

For your information:

I fixed the UpdateEncryption issue on my router WRT-32X. But the modification needs some testing. I released a pull request for the Marvell/NXP WiFi driver (mwlwifi).

Maybe it works also for WRT3200ACM too. :grinning:

The issue is discussed here.

Currently WiFi is stable on my router running 21.02.0 with the modified driver.