OpenWrt support for Linksys MX4200

I was led to believe that regulatory stuff was all handled by wireless-regdb. Given how these Ofcom changes predate these devices, I'm curious how I can make channels 144+ available for use on country code GB.

The radios that I want to use channel 149 on were at the time exclusively being used for a WDS link between the two devices, one the upstream router that provides internet and the other in a disconnected building where running ethernet is not an option. I have since moved over to a batman-adv setup as I'm going to introduce a third one soon.

The weirdness that was being experienced was the WDS link just dropping out, even if only for a second or so but enough to cause packet loss over the link. This was only happening when the radios were set to country code US - to be sure, I set all radios to US to avoid any other issues from mismatched radio country codes.

Ultimately I want the freedom to use the channels I'm legally allowed to use without having to put together hacky configs.

1 Like

wireless-regdb is still needed for the kernel to enforce regulatory compliance, older devices (like those based on ath10k) relied solely on userland to manage regulatory settings. As for why the regdb.bin doesn't reflect predated regulations for GB can't really say. Just what Qualcomm published.

I'd recommend sticking with the US regulatory domain, as it tends to work properly across most setups. The limits in channels 149-165 are primarily about power output, capped at 200mW, which is far beyond what these devices are even capable of (28mW on 5ghz)

On MX4200/4300, especially in WDS/mesh setups, it’s best to stick with channel 161. This is the same setup I use in my 7 node setup using 802.11s with no issues.

config wifi-device 'radio2'
	option type 'mac80211'
	option path 'platform/soc@0/c000000.wifi+2'
	option band '5g'
	option country 'US'
	option htmode 'HE80'
	option channel '161'
	option cell_density '0'
1 Like

Why channel 161?

I have a 3-node mesh setup using AgustinLorenzo's latest release (7/14), which is based on your NSS fork. I'm using channel 132@80MHz for the mesh backhaul, but I'm also having issues with random disconnects on my laptop using an Intel AX211 wireless chip. It could be happening to other devices, but the disconnnects are temporary and really only noticeable by me by occasional drops during Teams calls.

This PC is, however, connected to the parent node at all times, with a strong signal on channel 44@40MHz, so it may have nothing to do with the backhaul. It appears to be switching to a child node, despite the signal being pretty poor. I just figured I'd ask.

I also just enabled "Multi to unicast" today, so maybe that will make a difference but may also have exactly nothing to do with anything.

1 Like

I'll try setting the country codes to US again. Is there a global country code setting I need to check for as well? I ask because I was told previously that the likely reason for the dropping out was because of mismatched country codes somewhere.

100-144 are DFS channels in most regions and are subject to radar detection, which can cause interruptions if radar activity is detected, so best to stick to non-DFS if you don't have too many neighboring APs broadcasting on same channels.

It’s possible your client is overly sensitive and switching between access points unnecessarily. Lowering the TX power makes clients less likely to jump to weaker nodes. I have mine set between 15-18db for all APs and fast transition enabled and Teams has been pretty stable for me.

As long as you have US set for all 3 radios in your /etc/config/wireless. That should be it.

1 Like

Well, immediately the connection seems more stable than it was last time I tried using the US country code. Only difference since then is I'm not running it with a batman mesh as opposed to WDS so I'm inclined to suggest that it may have just been WDS being unreliable.

I'll see how things go and revert if need be.

1 Like

WDS is broken in some NSS lineages:


1 :yellow_square: Requires NSS FW 11.4
2 :no_entry: Not available on platform
3 :cross_mark: Not available in NSS FW (11.4–12.5)
4 :warning: Broken in ath11k driver

Note on IPQ50xx:
Although the IPQ50xx family has NSS offloading capabilities, its architecture is substantially different from IPQ807x/IPQ60xx and requires additional patching. Most of my NSS patches for IPQ50xx have been blind guesswork (I do not own any), and thus far unsuccessful. If anyone with one of these devices gets NSS working, feel free to open a PR.

In fairness, I didn't say anything about using NSS.

nope, you didnt. i thought AL's build used NSS. sorry.

As far as I'm aware it does.

When I use the firmware-builder openwrt website to build MX4300, I cannot add any NEW packages. I'm trying to add "strace and adb" packages and get this error. Any ideas why it errors out?

Error: Impossible package selection
STDERR
Generate local signing keys...
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
read EC key
writing EC key
WARNING: opening /builder/packages/packages.adb: No such file or directory
Package list missing or not up-to-date, generating it.

Building package index...
ERROR: unable to select packages:
  strace (no such package):
    required by: world[strace]

EDIT: On 24.10.2, I could add the packages and flashes fine. I guess the SNAPSHOT builds are NOT happy with adding new pacakges because of kernel issues or something else?!?

Now sure what happened but I'm using the official build 24.10.1 on my MX4300, this morning the wifi stopped working and the router went into a boot loop slow blue led blinking → fast blue blinking → solid blue for a few seconds and repeats.

Tried setting a static IP on my PC but still no luck. Can't access the router.

During those loops I'm unable to get an IP when using network cable to the LAN or when trying to connect to the Wi-Fi. I tried the 3 reboots to change partition but that didn't work either.

I tried using the reset button which turned the led to red but got the same boot loop after reboot.

I don't have serial connection but was wondering if there is a way to factory reset or force flash somehow.

Any ideas?

According to OEM documentation for the MX4300’s LED behavior:

LED Behavior Meaning
Slow blinking blue Starting up (bootloader phase)
Fast blinking blue Plug-n-Play setup or firmware loading
Solid blue Connected to the internet (online)
Solid purple Ready for initial setup
Solid yellow/orange Weak mesh/backhaul signal
Solid red No internet from modem

Indicates the device’s bootloader is cycling between partitions without fully handing off to a working OpenWrt system. Resolution may require using a recovery mechanism to install a known-working OpenWrt recovery image, then flashing a proper snapshot sysupgrade to correct any corrupted firmware or partition mismatch.

Someone else may have more intimate knowledge and advice for this issue.

You have to HOLD the RESET button for about 10 - 15 seconds until the light on the router turns red, fades, and then flashes bright red. I reset it few times already but never got into a bootloop on 14.10.2 or the SNAPSHOT branch.

I enabled 802.11r Fast Transition (Roaming) on both RADIO0 and RADIO1 on my MESH (RADIO2) setup and use the following setting. But, I don’t see the stations switch when you move away from the node. Any ideas whether I need any other setting to make it work seamlessly?

uci set wireless.default_radio0.ieee80211r='1'
uci set wireless.default_radio0.mobility_domain='2323'
uci set wireless.default_radio0.ft_over_ds='0'
uci set wireless.default_radio0.ft_psk_generate_local='1'

uci set wireless.default_radio1.ieee80211r='1'
uci set wireless.default_radio1.mobility_domain='2323'
uci set wireless.default_radio1.ft_over_ds='0'
uci set wireless.default_radio1.ft_psk_generate_local='1'

In addition to your settings, I have these and it’s working fine.

1 Like

Thank you. Where do you see these settings? I don’t have it on mine.

Btw, did you set this on radio0 and radio1?

I have installed only “wpad-basic-mbedtls”. Do I need the full “wpad” or “wpad-mbedtls” package?

Maybe you need wpad module with full featured IEEE 802.1x/WPA/EAP/RADIUS support.

I use this in my builds.

There are too many packages and wpad seems smaller than some others, like wpad-mesh-mbedtls or wpad-mbedtls. Very confusing, to say the least!

Since I use MESH, maybe I need wpad-mesh-openssl?

First see what module is installed on your build.