Archer A7 - Cannot Select 5 Ghz Channel

Posting here in case anyone else is fighting this problem...

With the current stable release (23.05.x) of OpenWrt the 5 Ghz wifi channel cannot be changed from the default channel 36 with a width of 80 Mhz on my TP-Link Archer A7 router. Although selecting another channel can be done from LuCi, the router disables the 5 Ghz radio and the SSID disappears from scans. LuCi usually still shows the radio is enabled but it is not.

dmesg shows the following:

ath10k_pci 0000:00:00.0: pdev param 0 not supported by firmware

and later:

br-lan: port 2(phy0-ap0) entered disabled state

This problem exists with Openwrt 23.05.3 with kernel 5.15.150 and from what I've found on various sites, is a Linux kernel issue.

On my hardware this problem has been solved by loading the latest snapshot release with kernel 6.6.54.

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:
grafik
Remember to redact passwords, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/network
cat /etc/config/wireless
cat /etc/config/dhcp
cat /etc/config/firewall

This problem is solved with the snapshot and the new kernel. Posting only to save others hours of troubleshooting.

Yeah, is it -ct or not, etsi or not?

But it is worth checking the config for any errors or other issues that may be present.

Good point. Will post in a bit.

Have you set your country code? When no country is set it only works on the channels which are allowed everywhere, which is only the one low block of 80 MHz covering channels 36 - 48.

Looks like I posted too soon. After 3 days of running perfectly, this morning the problem occurred with the snapshot firmware installed and came back again after reboot. (The previously loaded stable release always failed immediately.)

The country code has been configured correctly and various versions of the ath10k firmware (988x, 988x-ct, & 988x-ct-full-htt) have had the same problem.

I've gone back to the stable release I was previously running to eliminate any new issues with the snapshot, and will gather and modify the files for upload today or tomorrow.

Since you dont provide config nobody can gues it is config mistake or genuine bug.

1 Like

This issue turns out to be phantom DFS radar detection issue that is specific to the Archer A7, not something I was looking for because a Netgear R7000 (DD-WRT) and R7800 (OpenWRT) in the same location have never detected radar when set to 5Ghz DFS channels. Ath10k-firmware-qca988x, ath10k-firmware-qca988x-ct, and ath10k-firmware-qca988x-ct-htt have the same problem. For some reason the snapshot firmware ran fine for 3 days.

It's a pretty simple dumb AP configuration and I expect to have to ultimately replace it with a Netgear R7800, but maybe one of you will notice something.

root@SC-AP:~# ubus call system board
{
	"kernel": "5.15.162",
	"hostname": "PS-AP",
	"system": "Qualcomm Atheros QCA956X ver 1 rev 0",
	"model": "TP-Link Archer A7 v5",
	"board_name": "tplink,archer-a7-v5",
	"rootfs_type": "squashfs",
	"release": {
		"distribution": "OpenWrt",
		"version": "23.05.4",
		"revision": "r24012-d8dd03c46f",
		"target": "ath79/generic",
		"description": "OpenWrt 23.05.4 r24012-d8dd03c46f"
	}
}

Network:

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option ula_prefix 'xxxx:xxxx:xxxx::/48'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0.1'

config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option ipaddr '10.0.0.100'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option gateway '10.0.0.1'
	list dns '10.0.0.120'

config device
	option name 'eth0.2'
	option macaddr 'xx:xx:xx:xx:xx:xx'

config switch
	option name 'switch0'
	option reset '1'
	option enable_vlan '1'

config switch_vlan
	option device 'switch0'
	option vlan '1'
	option ports '2 3 4 5 0t'

config switch_vlan
	option device 'switch0'
	option vlan '2'
	option ports '1 0t'

config device
	option type 'bridge'
	option name 'br-iot'
	option bridge_empty '1'

config interface 'iot'
	option proto 'static'
	option device 'br-iot'
	option ipaddr '10.0.2.100'
	option netmask '255.255.255.0'
	option gateway '10.0.0.1'
	list dns '8.8.8.8'

Wireless:

config wifi-device 'radio0'
	option type 'mac80211'
	option path 'pci0000:00/0000:00:00.0'
	option channel '100'
	option band '5g'
	option htmode 'VHT80'
	option cell_density '0'
	option country 'US'

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'Network5'
	option encryption 'sae-mixed'
	option key 'password'

config wifi-device 'radio1'
	option type 'mac80211'
	option path 'platform/ahb/18100000.wmac'
	option channel '1'
	option band '2g'
	option htmode 'HT20'
	option cell_density '0'

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'Network2.4-1'
	option encryption 'sae-mixed'
	option key 'password'

config wifi-iface 'wifinet2'
	option device 'radio1'
	option mode 'ap'
	option ssid 'network2.4-2'
	option encryption 'sae-mixed'
	option key 'password'
	option network 'lan'

config wifi-iface 'wifinet3'
	option device 'radio1'
	option mode 'ap'
	option ssid 'network2.4-3'
	option encryption 'sae-mixed'
	option key 'password'
	option network 'iot'

DHCP:

config dnsmasq
	option domainneeded '1'
	option localise_queries '1'
	option rebind_protection '1'
	option rebind_localhost '1'
	option local '/lan/'
	option domain 'lan'
	option expandhosts '1'
	option cachesize '1000'
	option readethers '1'
	option leasefile '/tmp/dhcp.leases'
	option resolvfile '/tmp/resolv.conf.d/resolv.conf.auto'
	option localservice '1'
	option ednspacket_max '1232'

config dhcp 'lan'
	option interface 'lan'
	option start '100'
	option limit '150'
	option leasetime '12h'
	option dhcpv4 'server'
	option dhcpv6 'server'
	option ra 'server'
	list ra_flags 'managed-config'
	list ra_flags 'other-config'
	option ignore '1'

config odhcpd 'odhcpd'
	option maindhcp '0'
	option leasefile '/tmp/hosts/odhcpd'
	option leasetrigger '/usr/sbin/odhcpd-update'
	option loglevel '4'

config host
	option name 'host1'
	list mac 'xx:xx:xx:xx:xx:xx'

(+other hosts with no IP)

config dhcp 'iot'
	option interface 'iot'
	option start '110'
	option limit '100'
	option leasetime '12h'

Firewall:

config defaults
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option synflood_protect '1'

config zone
	option name 'lan'
	option input 'ACCEPT'
	option output 'ACCEPT'
	option forward 'ACCEPT'
	list network 'lan'
	option masq '1'

config zone
	option name 'wan'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	option masq '1'
	option mtu_fix '1'

config forwarding
	option src 'lan'
	option dest 'wan'

config rule
	option name 'Allow-DHCP-Renew'
	option src 'wan'
	option proto 'udp'
	option dest_port '68'
	option target 'ACCEPT'
	option family 'ipv4'

config rule
	option name 'Allow-Ping'
	option src 'wan'
	option proto 'icmp'
	option icmp_type 'echo-request'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-IGMP'
	option src 'wan'
	option proto 'igmp'
	option family 'ipv4'
	option target 'ACCEPT'

config rule
	option name 'Allow-DHCPv6'
	option src 'wan'
	option proto 'udp'
	option dest_port '546'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-MLD'
	option src 'wan'
	option proto 'icmp'
	option src_ip 'fe80::/10'
	list icmp_type '130/0'
	list icmp_type '131/0'
	list icmp_type '132/0'
	list icmp_type '143/0'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Input'
	option src 'wan'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	list icmp_type 'router-solicitation'
	list icmp_type 'neighbour-solicitation'
	list icmp_type 'router-advertisement'
	list icmp_type 'neighbour-advertisement'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-ICMPv6-Forward'
	option src 'wan'
	option dest '*'
	option proto 'icmp'
	list icmp_type 'echo-request'
	list icmp_type 'echo-reply'
	list icmp_type 'destination-unreachable'
	list icmp_type 'packet-too-big'
	list icmp_type 'time-exceeded'
	list icmp_type 'bad-header'
	list icmp_type 'unknown-header-type'
	option limit '1000/sec'
	option family 'ipv6'
	option target 'ACCEPT'

config rule
	option name 'Allow-IPSec-ESP'
	option src 'wan'
	option dest 'lan'
	option proto 'esp'
	option target 'ACCEPT'

config rule
	option name 'Allow-ISAKMP'
	option src 'wan'
	option dest 'lan'
	option dest_port '500'
	option proto 'udp'
	option target 'ACCEPT'

config zone
	option name 'iot'
	option input 'REJECT'
	option output 'ACCEPT'
	option forward 'REJECT'
	list network 'iot'

config forwarding
	option src 'iot'
	option dest 'lan'

config rule
	option name 'iot-dhcp'
	list proto 'udp'
	option src 'iot'
	option dest_port '67-68'
	option target 'ACCEPT'

config rule
	option name 'iot-dns'
	option src 'iot'
	option dest_port '53'
	option target 'ACCEPT'

config rule
	option name 'iot-block_lan'
	option src 'iot'
	option dest 'lan'
	list dest_ip '10.0.0.0/24'
	option target 'REJECT'
	list proto 'all'

ath10k does not support fcc dfs

Yes, as you have already identified, channel 100 is indeed DFS in the US (and most places around the world, too).

Yeah, it is possible that there were erroneous hits. Alternatively, something in your environment could have changed with respect to real radar hits. Or another scenario is that the other devices didn't detect the hits and/or didn't shut down the radio as they were supposed to. It's hard to know for sure, but good that you've identified that this is a DFS related issue.

With that in mind, the easy solution is to change the channel to one that is outside the DFS range.

And circling back to your issue -- was it that you were unable to select the channels, or that the radio was shutting down seemingly unexpectedly?

I've been able to select the channel from LuCi, but the radio shuts down immediately most of the time when devices connect, sometimes within seconds. Since I moved all clients off the TP-Link it hasn't shut down so I'm guessing it's confusing legitimate client transmissions with radar. A couple of articles on DFS say that it can be difficult to engineer routers that can reliably tell the difference.

My old R7000 was running in the same location for over 5 years on channel 100 without a hitch, and my R7800 has been on channel 100 on and off for days without ever detecting radar. I've found a few reports online of people experiencing similar problems after replacing other routers with TP-Link products. Hopefully the R7800 will remain stable and I'll just add another to use as a dedicated AP.

What happens if you use a different channel that avoids the DFS range?

Non-DFS channels are polluted with routers Spectrum delivers with those channels preconfigured. They're probably not even in use by most people. I've been the only one using a DFS channel.

How dense is your immediate area? for example, do you live in an apartment building or other dense housing location? suburbs? etc? And what is the primary material of your home's construction?

I ask because, while it is true that the airwaves can be crowded, 5GHz signals drop off rapidly with distance and also with heavier construction materials (so brick/concrete/cinderblock/stucco/stone/plaster&lath will heavily attenuate 5GHz, whereas glass/drywall/wood will have less attenuation). That is to say that if you live in a brick house in the suburbs, 5GHz from your neighbors will probably not be a big problem. If you live in a dense apartment building with primarily wood framing and drywall, that crowded spectrum could be a real problem.

Signal strengths from the routers closest to me are almost the same as that from my Archer A7. For me an inexpensive used router is preferable to having to troubleshoot interference problems down the road.

Just for reference, can you share how close those routers are and through how many and what kind of walls (guessing where necessary)?

This has less to do with the home construction (wood frame) that it does the placement of my AP vs their routers. I've moved my AP to the center of my home away from my living room while my neighbors probably have theirs where the cable enters their homes.

You still haven’t said how far your neighbors are from you, but ultimately you may find that the performance compromise of somewhat crowded spectrum is still better than dfs related shutdowns.