Users needed to test Wi-Fi stability on Linksys WRT3200ACM & WRT32X on OpenWrt 21.02

Hi,

I just installed the stable 21.02.0 release on a WRT32X. Run into the same issue. But unfortunately firmware 9.3.2.6 didn't help. Another strange issue is, that the OpenWrt web interface is no longer accessible after a while when enabling WIFI. Has somebody noticed the same issue?

It seems LuCI hangs after this issue:

[  394.811935] ieee80211 phy0: cmd 0x9122=UpdateEncryption timed out
[  394.818059] ieee80211 phy0: return code: 0x1122
[  394.822617] ieee80211 phy0: timeout: 0x1122
[  394.826819] wlan0: failed to remove key (0, e4:a4:71:6e:e7:81) from hardware (-5)
[  394.834386] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  414.846712] ieee80211 phy0: cmd 0x9111=SetNewStation timed out
[  414.852578] ieee80211 phy0: return code: 0x1111
[  414.857127] ieee80211 phy0: timeout: 0x1111
[  414.886941] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  434.900585] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  434.906447] ieee80211 phy0: return code: 0x001d
[  434.911005] ieee80211 phy0: timeout: 0x001d
[  434.915208] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  454.929608] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  454.935477] ieee80211 phy0: return code: 0x001d
[  454.940026] ieee80211 phy0: timeout: 0x001d
[  454.944238] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  474.945019] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  474.950882] ieee80211 phy0: return code: 0x001d
[  474.955442] ieee80211 phy0: timeout: 0x001d
[  477.863118] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  497.885602] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  497.891469] ieee80211 phy0: return code: 0x001d
[  497.896018] ieee80211 phy0: timeout: 0x001d
[  497.900227] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  517.912602] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  517.918470] ieee80211 phy0: return code: 0x001d
[  517.923019] ieee80211 phy0: timeout: 0x001d
[  517.927227] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  537.940260] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  537.946127] ieee80211 phy0: return code: 0x001d
[  537.950676] ieee80211 phy0: timeout: 0x001d
[  537.954960] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  557.967733] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  557.973600] ieee80211 phy0: return code: 0x001d
[  557.978149] ieee80211 phy0: timeout: 0x001d
[  557.982360] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  577.994621] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  578.000489] ieee80211 phy0: return code: 0x001d
[  578.005038] ieee80211 phy0: timeout: 0x001d
[  578.009247] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  598.022301] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  598.028168] ieee80211 phy0: return code: 0x001d
[  598.032717] ieee80211 phy0: timeout: 0x001d
[  598.040271] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  618.053242] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  618.059104] ieee80211 phy0: return code: 0x001d
[  618.063664] ieee80211 phy0: timeout: 0x001d
[  618.067866] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  638.080617] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  638.086482] ieee80211 phy0: return code: 0x001d
[  638.091041] ieee80211 phy0: timeout: 0x001d
[  638.095243] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  658.108087] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  658.113949] ieee80211 phy0: return code: 0x001d
[  658.118506] ieee80211 phy0: timeout: 0x001d
[  664.130347] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  684.143420] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  684.149288] ieee80211 phy0: return code: 0x001d
[  684.153837] ieee80211 phy0: timeout: 0x001d
[  684.158044] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  704.170771] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  704.176636] ieee80211 phy0: return code: 0x001d
[  704.181185] ieee80211 phy0: timeout: 0x001d
[  704.185393] ieee80211 phy0: MACREG_REG_INT_CODE: 0x0000
[  724.192174] ieee80211 phy0: cmd 0x801d=MEMAddrAccess timed out
[  724.198035] ieee80211 phy0: return code: 0x001d
[  724.202597] ieee80211 phy0: timeout: 0x001d
[  747.248224] ieee80211 phy1: cmd 0x9122=UpdateEncryption timed out
[  747.254354] ieee80211 phy1: return code: 0x1122
[  747.258902] ieee80211 phy1: timeout: 0x1122
[  747.263111] wlan1: failed to remove key (0, e4:a4:71:6e:e7:81) from hardware (-5)

Same issue with firmware 9.3.2.12.

I get this behavior when I enable wpa3 on one of the SSIDs. LuCI works fine with wpa2 at the moment.

Okay.

Tried WPA2 only. But run into the same issue.

Downgraded to 19.07.8 now, which works for me.

Just did a clean install of 21.02.0 and reconfigured from scratch. Will see if wifi is better or not in the next days. Do not have much hope, but with 19.07.08 stable config on the alternate partition + advanced reboot it will be a breeze to go back if any issue.

30+h uptime and did not have a wifi issue so far. Not sure if it's luck or a fix, but so far so good.

2 Likes

I installed 21.02.0 on my WRT32X over the weekend, and it's good so far. I don't run 2.4GHz and don't use WPA3 though.

My setup:

  1. Kernel 5.4.143
  2. Sysupgrade without keeping config (reconfigured from scratch after upgrade)
  3. Again, I only use 5GHz and WPA2-PSK, on 80MHz and 'auto' channel, although I limit it to 36 and 149. My config file:
/etc/config/wireless
config wifi-device 'radio0'
        option type 'mac80211'
        option channel 'auto'
        option hwmode '11a'
        option path 'soc/soc:pcie/pci0000:00/0000:00:01.0/0000:01:00.0'
        option htmode 'VHT80'
        option country 'US'
        option channels '36,149'
        option cell_density '0'

config wifi-iface 'default_radio0'
        option device 'radio0'
        option network 'lan'
        option mode 'ap'
        option ssid '#####'
        option encryption 'psk2'
        option macaddr '##:##:##:##:##:##'
        option key '#####'

config wifi-device 'radio1'
        option type 'mac80211'
        option channel '11'
        option hwmode '11g'
        option path 'soc/soc:pcie/pci0000:00/0000:00:02.0/0000:02:00.0'
        option htmode 'HT20'
        option disabled '1'
        option country 'US'

config wifi-iface 'default_radio1'
        option device 'radio1'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'none'
        option macaddr '##:##:##:##:##:##'

config wifi-device 'radio2'
        option type 'mac80211'
        option channel '34'
        option hwmode '11a'
        option path 'platform/soc/soc:internal-regs/f10d8000.sdhci/mmc_host/mmc0/mmc0:0001/mmc0:0001:1'
        option htmode 'VHT80'
        option disabled '1'

config wifi-iface 'default_radio2'
        option device 'radio2'
        option network 'lan'
        option mode 'ap'
        option ssid 'OpenWrt'
        option encryption 'none'

I finished setting up yesterday evening, and now about 24hrs later, I haven't seen any major issues. I have a mix of laptops with Marvell & Qualcomm chips, as well as an Android and an iPhone. I worked from home today and none of those devices had any drops.

One of my Google speakers wasn't playing music this morning and I had to restart it, but casting has always been tricky for me so I'm not ready to say the new OpenWrt caused the issue.

Just did a sysupgrade to 21.02 from 19.07.8 and started config from scratch. Can confirm that a Galaxy S10 loses internet connectivity after a certain period of time. Have reverted back to 19.08 for now in the hope it will get fixed. If not, will have to consider downgrading my WRT3200 to router/firewall only.

1 Like

noooo.. bummer :slightly_frowning_face:

I was hoping it would get ironed out, but alas; looks like I'll be on Davidc502's last build for a while longer

I keep checking back periodically to see if there has been a fix.. I'm not a developer or anything, but it would seem possible since it worked on the swconfig builds (DSA shouldn't be the reason but I've had issues with all of the newer builds and kind of gave up)

Can confirm - 21.02 fails on my WRT3200ACM, just like master does.

I specifically used the firmware built by the OpenWrt team, downloaded using the firmware selector, just in case my compiling from scratch approach was causing the issue.

Same issue with iPhone - connected to WiFi, but no traffic flows. Can’t even access OpenWrt web UI.

Might be time for me to switch over to my R7800.

2 Likes

I have the same problem with WRT1200AC, all workarounds posted here don't work. I had to revert to 19.07.
The problem is only on iPhones and with Samsung S20, all other devices seem to work just fine.

3 Likes

9+ days uptime on WRT1900ACS and wifi is normal. I did a fresh install of 21.02, config from scratch. FWIW I have the following packages: wireguard, vpr, sqm, adblock, and irqbalance (change 'enabled' from '0' to '1' in '/etc/config/irqbalance'.

I also added in luci > startup > local startup the following commands:

echo "0" >> /sys/kernel/debug/ieee80211/phy0/mwlwifi/tx_amsdu
echo "0" >> /sys/kernel/debug/ieee80211/phy1/mwlwifi/tx_amsdu
1 Like

What wifi devices are connecting to the router?

iPhones/iPads, Roku, Sonos, a few windows devices.

WiFi devices in my network:

  • Sony Xperia XZ2 Smartphone (Chip: Don't know the builtin WiFi chip)
  • Lenovo ThinkPad T460p running Windows 10 (Chip: Intel Dual Band Wireless-AC 8260)

All my other devices (Desktop PC, PS4, Smart-TV) in my network are connected via LAN cable. No issues here.

After enabling WiFi on the router the devices can successfully connect for a few minutes. Then they loses the connection. A side effect is that the WebUI from OpenWrt isn't longer accessible.

No issue with these WiFi devices on 19.07.

Is there way to support the OpenWrt developer with this issue? Testing bugfixes as example? Currently I don't revert back to 19.07.

Some question here, about the timeout issue:

[  394.811935] ieee80211 phy0: cmd 0x9122=UpdateEncryption timed out
[  394.818059] ieee80211 phy0: return code: 0x1122
[  394.822617] ieee80211 phy0: timeout: 0x1122

WiFi stops working at the above Kernel messages. Here I have a newbie question about the WiFi driver. The first message is printed at this lines in the driver:

static int pcie_wait_complete(struct mwl_priv *priv, unsigned short cmd)
{
	unsigned int curr_iteration = MAX_WAIT_FW_COMPLETE_ITERATIONS;
	unsigned short int_code = 0;

	do {
		int_code = le16_to_cpu(*((__le16 *)&priv->pcmd_buf[0]));
		usleep_range(1000, 2000);
	} while ((int_code != cmd) && (--curr_iteration) && !priv->rmmod);

	if (curr_iteration == 0) {
		wiphy_err(priv->hw->wiphy, "cmd 0x%04x=%s timed out\n",
			  cmd, mwl_fwcmd_get_cmd_string(cmd));
		wiphy_err(priv->hw->wiphy, "return code: 0x%04x\n", int_code);
		return -EIO;
	}

	if (priv->chip_type != MWL8997)
		usleep_range(3000, 5000);

	return 0;
}

Source

I don't understand, why there is a query for the command itself, not the result code form the WiFi chip and in the posted second line the FW command will be printed. IMHO this isn't the correct result code. It's the executed command itself.

Here are some result code defined in the driver:

/* Define general result code for each command */
#define HOSTCMD_RESULT_OK                       0x0000
/* General error */
#define HOSTCMD_RESULT_ERROR                    0x0001
/* Command is not valid */
#define HOSTCMD_RESULT_NOT_SUPPORT              0x0002
/* Command is pending (will be processed) */
#define HOSTCMD_RESULT_PENDING                  0x0003
/* System is busy (command ignored) */
#define HOSTCMD_RESULT_BUSY                     0x0004
/* Data buffer is not big enough */
#define HOSTCMD_RESULT_PARTIAL_DATA             0x0005

Source

I will change the code and add a IMHO "correct" (print the command results) command wait routine for this issue and print the real response (result) code from the chip.

EDIT:
Or shortened: Why doesn't check the driver the result code, when a command is send via PCIE?
Have I misunderstood something in the driver, or read over something?

2 Likes

My modification works. :grinning_face_with_smiling_eyes:

Please can somebody test/verify my modification too?

EDIT:
WiFi works now for me on WRT32-X. Without the lose of the connection. :grinning:

2 Likes

I'm building 21.02.0 with your commit as the mwlwifi package. Let's see how it goes on my WRT32X.

2 Likes

Most eyeballs probably to be had by a submitting PR upstream.

Completely agree. @krjdev please consider submitting a PR.

Yes. But I think it's better a few people can verify the patch. It works for me, but not sure if it fixes the other users issues.

I also didn't test WPA3 at this time.

It was only a test for getting the correct result. A side effect is, that it fixes the WiFi issue fro me, which was also on WPA2 present on my WRT-32X.