I have an Asus RT-AX52. What I want to do is to use it to connect to a WPA2-EAP network and bridge that to some devices that only connect to personal networks.
This is not the first time I've done it; in fact, I have an older router that does this exact thing and it works just fine. I've tried copying the configuration directly and it just fails on the new one.
Here is the last thing I tried (from a blank slate):
Replace the default wpad-basic with wpad (tried both mbedtls and openssl)
Changed the lan IP to a different subnet, though that shouldn't be necessary since the enterprise network allocates public IPs. I mostly did this to make sure it works with simple psk authentication on a different network (it does).
Connect one of the radios to the desired network and made sure to put it in the same network with the lan (configuration below).
I've also tried messing with the channel, authentication (even though this exact auth works on the older router), tried both the 2.4 and 5GHz radios, randomizing and even hard coding a different MAC.
The result is that it just doesn't connect. My wwan interface says no carrier and the wireless network just says not associated. The exact same thing but with a psk network works, so it must be the authentication in my mind.
Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button (red circle; this works best in the 'Markdown' composer view in the blue oval):
Remember to redact passwords, VPN keys, MAC addresses and any public IP addresses you may have:
(The wireless configuration differs from what I shared in the initial post; I had the wrong version in my clipboard at that time. I tried many many configurations anyway...)
Interesting, didn't know about logread. I changed network to just wwan and restarted. Looks like there are errors parsing the identity and password, not sure what that's about, since they are the same ones I use everywhere (including the working router). They username is shaped like username@domain.cctld and the password just contains letters, digits and ascii symbols.
Relevant lines in my estimation:
Thu Jan 15 23:59:20 2026 daemon.notice netifd: Interface 'wwan' is enabled
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 14: failed to parse identity '<identity>'.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 14: failed to parse identity '<identity>'.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 15: failed to parse password.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 15: failed to parse password '<password>'.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 16: failed to parse network block.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Failed to read or parse configuration '/var/run/wpa-supplicant-phy1-sta0.conf'.
Full log:
Thu Jan 15 23:59:19 2026 daemon.notice wpa_supplicant[2182]: Set MLD config: [ ]
Thu Jan 15 23:59:19 2026 daemon.notice hostapd: Set MLD config: [ ]
Thu Jan 15 23:59:19 2026 daemon.notice hostapd: Reload all interfaces
Thu Jan 15 23:59:19 2026 daemon.notice netifd: Interface 'wwan' is disabled
Thu Jan 15 23:59:19 2026 daemon.notice netifd: Interface 'wwan' is enabled
Thu Jan 15 23:59:19 2026 daemon.notice netifd: radio1 (9877): wifi-scripts: Starting
Thu Jan 15 23:59:19 2026 daemon.notice netifd: radio1 (9877): command failed: Not supported (-95)
Thu Jan 15 23:59:19 2026 daemon.notice wpa_supplicant[2182]: Set new config for phy phy1
Thu Jan 15 23:59:19 2026 daemon.notice wpa_supplicant[2182]: Update configuration for interface phy1-sta0
Thu Jan 15 23:59:19 2026 kern.debug kernel: [ 1773.757523] {natflow}:natflow_netdev_event(): catch NETDEV_UNREGISTER event for dev=phy1-sta0
Thu Jan 15 23:59:20 2026 daemon.notice netifd: Interface 'wwan' is disabled
Thu Jan 15 23:59:20 2026 daemon.notice hostapd: Set new config for phy phy1:
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: Set new config for phy phy1
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9877): wifi-scripts: Configuring 'phy1' txantenna: 4294967295, rxantenna: 4294967295 distance: 0
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9877): wifi-scripts: password is not present in the schema
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9877): wifi-scripts: Preparing interface: phy1-sta0 with MAC: 72:33:0c:47:d1:99
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9894): wifi-scripts: Tearing down phy1
Thu Jan 15 23:59:20 2026 daemon.notice hostapd: Set new config for phy phy1:
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: Set new config for phy phy1
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: Remove interface phy1-sta0
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9896): wifi-scripts: Starting
Thu Jan 15 23:59:20 2026 daemon.notice hostapd: Set new config for phy phy1:
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: Set new config for phy phy1
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: Set new config for phy phy1
Thu Jan 15 23:59:20 2026 daemon.notice hostapd: Set new config for phy phy1:
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: Set new config for phy phy1
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9896): wifi-scripts: Configuring 'phy1' txantenna: 4294967295, rxantenna: 4294967295 distance: 0
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9896): wifi-scripts: password is not present in the schema
Thu Jan 15 23:59:20 2026 daemon.notice netifd: radio1 (9896): wifi-scripts: Preparing interface: phy1-sta0 with MAC: ca:67:73:40:0e:d7
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: Start pending MLD interfaces
Thu Jan 15 23:59:20 2026 kern.debug kernel: [ 1774.473773] {natflow}:natflow_netdev_event(): remove NETIF_F_GRO for dev=phy1-sta0
Thu Jan 15 23:59:20 2026 kern.debug kernel: [ 1774.473773]
Thu Jan 15 23:59:20 2026 kern.debug kernel: [ 1774.482865] {natflow}:natflow_netdev_event(): catch NETDEV_UP event for dev=phy1-sta0(tso=0,0,hw_csum=0,0), add ingress hook
Thu Jan 15 23:59:20 2026 daemon.notice netifd: Interface 'wwan' is enabled
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 14: failed to parse identity '<identity>'.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 14: failed to parse identity '<identity>'.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 15: failed to parse password.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 15: failed to parse password '<password>'.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Line 16: failed to parse network block.
Thu Jan 15 23:59:20 2026 daemon.err wpa_supplicant[2182]: Failed to read or parse configuration '/var/run/wpa-supplicant-phy1-sta0.conf'.
Thu Jan 15 23:59:20 2026 daemon.notice wpa_supplicant[2182]: : CTRL-EVENT-DSCP-POLICY clear_all
Also when you do get it working, be sure to add option ca_cert '/etc/ssl/cert.pem' to verify the network's certificate (if it is not publicly signed, obtain the CA file from the network's administration and copy it to your router). This will protect you from being attacked by an imposter AP.
I don't think that's true. The working one uses EAP-MSCHAPv2, and in LuCi it doesn't even let you select 'MSCHAPv2' when using peap... I did try it though, it doesn't work, and LuCi shows this configuration as invalid.
Note the lack of quotes around the identity and password. I added them in myself and started wpa_supplicant directly: wpa_supplicant -iphy1-sta0 -c/var/run/wpa-supplicant-phy1-sta0.conf, it works perfectly now.
I'm guessing it's a farily recent bug, which would make sense considering my other router runs an older openwrt. I'm not sure which program generates this file, but I guess starting wpa_supplicant manually is a workable solution for now. I'll try to figure out what the actual problem is though. Someone more knowledgeable might want to look into it.
In /lib/netifd/hostapd.sh around line 1500 there is: append network_data "password=\"$password\"" "$N$T"
and somewhat before that, similar code for identity.
The two versions that I looked at (24.10.4 and 25.12.0-rc2) were adding double quotes as shown.
Mine is the same actually, it seems to add the quotes properly. In the meantime I've set up my own little service to start wpa_supplicant with a custom config, but the autogenerated one still looks the same as it did, no quotes.
I'm very unfamiliar with openwrt internals; is there anything that touches the file after it's generated? Running that function manually to see what it does would be helpful as well, but I'm not sure how to do that.