5GHz Low performance on TP-Link Archer C6 V2

Do you have to change any default setting to get these speeds? I'm using TP-Link Archer C7 v5 and I never got its 5GHz speed to exceed 100 Mbps. Been using since 21.02 IIRC, and 802.11ac has always been the same. Nothing in the LuCi settings jumps out to me as the cause for this limit, and the previous replies here implies you all getting 300Mbps after firmware updates is even more confusing to me. Should I be enabling some software or hadrware offloading somewhere?

Just today I learned about forcing 40MHz channel width for bgn and that resulted on my 2.4GHz reaching almost 100Mbps. I hope there's a similar small change to get my 5GHz in order.

Make it 80mhz in 5ghz band.

I checked it again and it's already 80MHz. AFAIR, it was always 80MHz by default. And there's literally zero 5GHz signals in the vicinity, so there's no crowding, let alone any interference.

Are you doing a speedtest or iperf? It looks like you maybe limited by the 100mbps speed of the lan port?

Doing a speed test, I'll not be able to do iperf anytime soon. But it's nothing to do with FE speeds, my router is all gigabit, and the upstream ISP interface is also gigabit (the service I'm supposed to get is 250Mbps). With a LAN connection, speed test easily goes above and beyond 100Mbps, so this is squarely a WiFi issue.

1 Like

I have the same problem:

root@OpenWrt:~$ cat /etc/config/wireless

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

config wifi-iface 'default_radio0'
	option device 'radio0'
	option network 'lan'
	option mode 'ap'
	option ssid 'Roy&Karin'
	option encryption 'sae-mixed'
	option key 'EngineeringPoyke'
	option wpa_disable_eapol_key_retries '1'

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

config wifi-iface 'default_radio1'
	option device 'radio1'
	option network 'lan'
	option mode 'ap'
	option ssid 'RoyAndKarin'
	option encryption 'sae-mixed'
	option key 'EngineeringPoyke'
	option wpa_disable_eapol_key_retries '1'
royash@Roys-MBP ~ % /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
     agrCtlRSSI: -35
     agrExtRSSI: 0
    agrCtlNoise: -92
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 780
        maxRate: 867
lastAssocStatus: 0
    802.11 auth: open
      link auth: wpa3-sae
          BSSID:
           SSID: Roy&Karin
            MCS: 9
  guardInterval: 800
            NSS: 2
        channel: 36,80

My ISP gives me 300 Mbps download and 30 Mbps upload.
In addition, when I choose in openwrt the frequency to be on auto mode, the network doesn't appear on my raspberry pi 4.

Is there any way to improve the download speed?

Another image during the test:

Enable offloading from firewall menu.

This is what I already did, it gave me 3-4 Mbps improvement, all the results are after I've enabled it.
My network config (without PPPoE username & password obviously)

root@OpenWrt:~$ cat /etc/config/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 'fdcb:da54:3188::/48'
	option packet_steering '1'

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 '192.168.1.1'
	option netmask '255.255.255.0'
	option ip6assign '60'
	list dns 'fdcb:da54:3188::1fe'

config interface 'wan'
	option device 'eth0.2'
	option proto 'pppoe'
	option username '_________'
	option password '_________'
	option ipv6 'auto'
	option peerdns '0'
	list dns '2606:4700:4700::1112'
	list dns '2606:4700:4700::1002'

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'

I've gotten around to doing iperf3 with my Linux laptop as client:

$ iperf3 -c openwrt     
Connecting to host openwrt, port 5201
[  5] local fdb4:dc8b:aa03:0:19f1:6a8a:1c9c:c191 port 47000 connected to fdb4:dc8b:aa03::1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  15.0 MBytes   126 Mbits/sec    0   1.05 MBytes       
[  5]   1.00-2.00   sec  10.0 MBytes  83.9 Mbits/sec   64    527 KBytes       
[  5]   2.00-3.00   sec  12.5 MBytes   105 Mbits/sec   48    387 KBytes       
[  5]   3.00-4.00   sec  22.5 MBytes   189 Mbits/sec    0    415 KBytes       
[  5]   4.00-5.00   sec  22.5 MBytes   189 Mbits/sec    7    309 KBytes       
[  5]   5.00-6.00   sec  23.8 MBytes   199 Mbits/sec    0    343 KBytes       
[  5]   6.00-7.00   sec  21.2 MBytes   178 Mbits/sec    0    362 KBytes       
[  5]   7.00-8.00   sec  23.8 MBytes   199 Mbits/sec   11    291 KBytes       
[  5]   8.00-9.00   sec  23.8 MBytes   199 Mbits/sec   20    236 KBytes       
[  5]   9.00-10.00  sec  25.0 MBytes   210 Mbits/sec    0    298 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   200 MBytes   168 Mbits/sec  150             sender
[  5]   0.00-10.01  sec   196 MBytes   165 Mbits/sec                  receiver

iperf Done.

Following is the config on my TP-Link Archer C7 v5:

# cat /etc/config/wireless

config wifi-device 'radio0'
        option type 'mac80211'
        option hwmode '11a'
        option path 'pci0000:00/0000:00:00.0'
        option htmode 'VHT80'
        option country 'AE'
        option cell_density '0'
        option channel 'auto'

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

config wifi-device 'radio1'
        option type 'mac80211'
        option hwmode '11g'
        option path 'platform/ahb/18100000.wmac'
        option country 'AE'
        option cell_density '0'
        option channel 'auto'
        option htmode 'HT40'

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

I have two more SSIDs (on each frequency) which I removed for abbreviation. I've confirmed that both iperf3 and public speed test make no difference regardless of its enablement status.

I also tried to do iperf3 with Hurricane Electric's public iperf server, but the results are very inconsistent.

Software offloading is also enabled, but I didn't notice any difference.

This is what I'm getting (over 5 GHz, 80 MHz):

% iperf3 -6 -c openwrt.local   
Connecting to host openwrt.local, port 5201
[  6] local fdcb:da54:3188:0:46d:46a8:e303:55d3 port 53022 connected to fdcb:da54:3188::1 port 5201
[ ID] Interval           Transfer     Bitrate
[  6]   0.00-1.00   sec  35.1 MBytes   294 Mbits/sec                  
[  6]   1.00-2.00   sec  34.9 MBytes   293 Mbits/sec                  
[  6]   2.00-3.00   sec  35.4 MBytes   297 Mbits/sec                  
[  6]   3.00-4.00   sec  35.6 MBytes   298 Mbits/sec                  
[  6]   4.00-5.00   sec  34.3 MBytes   288 Mbits/sec                  
[  6]   5.00-6.00   sec  35.1 MBytes   295 Mbits/sec                  
[  6]   6.00-7.00   sec  35.8 MBytes   301 Mbits/sec                  
[  6]   7.00-8.00   sec  29.7 MBytes   249 Mbits/sec                  
[  6]   8.00-9.00   sec  22.6 MBytes   189 Mbits/sec                  
[  6]   9.00-10.00  sec  33.4 MBytes   280 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  6]   0.00-10.00  sec   332 MBytes   279 Mbits/sec                  sender
[  6]   0.00-10.01  sec   332 MBytes   278 Mbits/sec                  receiver

Reverse:

iperf3 -6 -c openwrt.local -R 
Connecting to host openwrt.local, port 5201
Reverse mode, remote host openwrt.local is sending
[  6] local fdcb:da54:3188:0:46d:46a8:e303:55d3 port 53191 connected to fdcb:da54:3188::1 port 5201
[ ID] Interval           Transfer     Bitrate
[  6]   0.00-1.00   sec  17.4 MBytes   146 Mbits/sec                  
[  6]   1.00-2.00   sec  17.6 MBytes   148 Mbits/sec                  
[  6]   2.00-3.00   sec  17.6 MBytes   148 Mbits/sec                  
[  6]   3.00-4.00   sec  18.5 MBytes   155 Mbits/sec                  
[  6]   4.00-5.00   sec  18.1 MBytes   152 Mbits/sec                  
[  6]   5.00-6.00   sec  17.8 MBytes   150 Mbits/sec                  
[  6]   6.00-7.00   sec  17.7 MBytes   148 Mbits/sec                  
[  6]   7.00-8.00   sec  17.7 MBytes   148 Mbits/sec                  
[  6]   8.00-9.00   sec  18.0 MBytes   151 Mbits/sec                  
[  6]   9.00-10.00  sec  17.9 MBytes   151 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  6]   0.00-10.02  sec   179 MBytes   150 Mbits/sec    0             sender
[  6]   0.00-10.00  sec   178 MBytes   150 Mbits/sec                  receiver

On another forum post I read that iperf3 needs the -R flag to test download speed, otherwise it's uploading to the server. As per the manpages, it makes sense, so I reran with -R and performance is worse than upload:

$ iperf3 -c openwrt -R
Connecting to host openwrt, port 5201
Reverse mode, remote host openwrt is sending
[  5] local fdb4:dc8b:aa03:0:19f1:6a8a:1c9c:c191 port 42612 connected to fdb4:dc8b:aa03::1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  14.5 MBytes   122 Mbits/sec                  
[  5]   1.00-2.00   sec  15.3 MBytes   128 Mbits/sec                  
[  5]   2.00-3.00   sec  14.9 MBytes   125 Mbits/sec                  
[  5]   3.00-4.00   sec  14.5 MBytes   122 Mbits/sec                  
[  5]   4.00-5.00   sec  15.4 MBytes   129 Mbits/sec                  
[  5]   5.00-6.00   sec  15.1 MBytes   127 Mbits/sec                  
[  5]   6.00-7.00   sec  15.0 MBytes   126 Mbits/sec                  
[  5]   7.00-8.00   sec  15.1 MBytes   127 Mbits/sec                  
[  5]   8.00-9.00   sec  16.1 MBytes   135 Mbits/sec                  
[  5]   9.00-10.00  sec  16.3 MBytes   136 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.05  sec   153 MBytes   128 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   152 MBytes   128 Mbits/sec                  receiver

iperf Done.

Closer to the public speed testing services results that I get, which basically peaks at 100Mbps.

1 Like

On the same thread, it is mentioned 802.11n maxes out at PHY rate of 150 Mbps and, crucially, 100 Mbps of real world speed. That sounds exactly like the behavior I'm encountering, but I checked iw $DEV station dump on both my laptop and router, and both shows 80MHz and VHT-NSS 2, so—as far as I understand—both devices are using the ac and haven't fallen back n. Which is good news, but I'm no closer to figuring out why I'm not getting the expected throughput.

1 Like

It looks like you are using your router as the iperf server. That will eat up CPU and cause falsely low rates. Routers never generate network traffic from scratch.

Instead set up a wired computer to act as the iperf server, have the router as the in between, and then run the iperf client on your laptop. You should see full speed with the router acting like it is supposed to as the in between agent.

1 Like

I've done as you asked, to almost identical (to router as server) results for both upload and download:

$ iperf3 -c 10.0.228.223 -R
Connecting to host 10.0.228.223, port 5201
Reverse mode, remote host 10.0.228.223 is sending
[  5] local 192.168.1.163 port 51098 connected to 10.0.228.223 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  18.4 MBytes   154 Mbits/sec                  
[  5]   1.00-2.00   sec  18.2 MBytes   152 Mbits/sec                  
[  5]   2.00-3.00   sec  14.7 MBytes   124 Mbits/sec                  
[  5]   3.00-4.00   sec  14.7 MBytes   123 Mbits/sec                  
[  5]   4.00-5.00   sec  16.8 MBytes   141 Mbits/sec                  
[  5]   5.00-6.00   sec  18.5 MBytes   155 Mbits/sec                  
[  5]   6.00-7.00   sec  18.2 MBytes   152 Mbits/sec                  
[  5]   7.00-8.00   sec  17.8 MBytes   149 Mbits/sec                  
[  5]   8.00-9.00   sec  18.5 MBytes   155 Mbits/sec                  
[  5]   9.00-10.00  sec  17.1 MBytes   144 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   174 MBytes   146 Mbits/sec  176             sender
[  5]   0.00-10.00  sec   173 MBytes   145 Mbits/sec                  receiver

iperf Done.
$ iperf3 -c 10.0.228.223   
Connecting to host 10.0.228.223, port 5201
[  5] local 192.168.1.163 port 54884 connected to 10.0.228.223 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  26.8 MBytes   224 Mbits/sec    0   1.41 MBytes       
[  5]   1.00-2.00   sec  23.8 MBytes   199 Mbits/sec    0   2.19 MBytes       
[  5]   2.00-3.00   sec  25.0 MBytes   210 Mbits/sec    0   2.20 MBytes       
[  5]   3.00-4.00   sec  25.0 MBytes   210 Mbits/sec    0   2.20 MBytes       
[  5]   4.00-5.00   sec  25.0 MBytes   210 Mbits/sec    0   2.20 MBytes       
[  5]   5.00-6.00   sec  25.0 MBytes   210 Mbits/sec    0   2.20 MBytes       
[  5]   6.00-7.00   sec  23.8 MBytes   199 Mbits/sec    0   2.20 MBytes       
[  5]   7.00-8.00   sec  25.0 MBytes   210 Mbits/sec    0   2.20 MBytes       
[  5]   8.00-9.00   sec  26.2 MBytes   220 Mbits/sec    0   2.20 MBytes       
[  5]   9.00-10.00  sec  23.8 MBytes   199 Mbits/sec    0   2.20 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   249 MBytes   209 Mbits/sec    0             sender
[  5]   0.00-10.06  sec   247 MBytes   206 Mbits/sec                  receiver

iperf Done.

For the record, on wired connection, my real world speed goes beyond 200 Mbps (my service is for 250 Mbps).

Use two computers. One wired and one on WiFi. Run iperf3 on them, not on the router. C7 CPU is single core and is not powerful enough to run iperf3 internally.

That being said, if you use your C7 as combined router and AP (which is what common Joe calls "a router") you might be running out of CPU. I use my C7's as Access Points only and they are able to deliver around 400-500Mbit/sec in iperf3 "locally" (from WiFi to wired network), and that is with overclock from stock 720Mhz to 960Mhz and CPU pegged to 100%. Basically, stock C7 running OpenWRT will peg CPU to 100% just by moving packets from WiFi to Ethernet at 300Mbi/sec-ish, without routing.

The iperf in my last reply is as you and @ACwifidude asked me to do: iperf between wired and wireless device connected via the C7. And unlike your local iperf3 you mention, it's not going anywhere near 300 Mbps as you suggest. What settings do you have on your WiFi and how did you overclock?

Run iperf3 server on wired PC, connected to one of LAN ports on C7.
Run iperf3 client on iphone 7 or later and connect to C7 using 5GHz.

Configure OpenWRT for 80MHz channel, AC mode, WPA3.

If you cannot get at least 300Mbit/sec something is wrong.

Hi

Does these performance issues still exist on archer c6 v2 with latest stable openwrt?

Yes, but see that issue comment, based on that, I'm waiting to the next official version to try it out