WRT1900ACS v2: OpenWRT and WiFi instability fix

[Update: My changes were merged into master #351: https://github.com/kaloz/mwlwifi/pull/351]

I have recently bought a new router for my FTTH broadband here in Italy, the choice was obvious for me: the WRT1900ACSv2 was just perfect.

I have decided to throw the router my ISP (Fastweb) gave me in the bin for a number of reasons, the most important two being privacy and customizability.

The Linksys WRT1900ACSv2 supports OpenWrt which offers DNS-Over-HTTPS with custom DNS servers, OpenVPN support and the option to change every single setting one may wish; I quickly replaced the proprietary firmware on my new router with OpenWRT.

This is when things slipped a bit and didn’t go as planned. I started to experience frequent WiFi freezes where the network would disappear and the router would need to be restarted; this was especially a problem on the 5Ghz band. Unacceptable for a 200$ device.

The issue, as I found out later on, was caused by the WiFi driver (mwlwifi), driver with a known history of issues on open source firmwares.

The issue I experienced is clearly described here: https://github.com/kaloz/mwlwifi/issues/308

The root of the problem

I have reasons to believe the issue has to do with this commit e5e0700 which shortens the MAX_WAIT_FW_COMPLETE_ITERATIONS PCIe communication time and causes timeout issues. As I wrote here.

The fix is simple, either recompile the driver with commit e5e0700 reverted or downgrade to a version of the firmware which precedes that commit, I found version ec0adbf to be working extremely well. (Which btw is the same firmware version DD-WRT uses on the WRT1900ACSv2)

The downgrade process

cd /tmp

wget http://amedeobaragiola.me/repository/mwlwifi-firmware-88w8864_10.3.8.0-20180906-ec0adbf6-1_arm_cortex-a9_vfpv3.ipk

opkg install –force-downgrade mwlwifi-firmware-88w8864_10.3.8.0-20180906-ec0adbf6-1_arm_cortex-a9_vfpv3.ipk

reboot

The end