Overall slow 2.4 GHz WiFi on OpenWrt devices

Hi there. I got myself a new, more modern device to replace my aging TP-Link WDR3600. I was always dissatisfied with the 2.4 GHz performance of the WDR3600, but blamed it on the old hardware or on the bunch of esp8266 power sockets connected over 2.4 GHz.

Most of the time I can barely get 10 Mbit/s downstream on 2.4 GHz.

So I got myself a Netgear R7800, but even with this one I have the same slow 2.4 GHz wifi, varying from < 10 Mbit/s to ~38 Mbit/s max.5 GHz on the other hand pushes way over 300 Mbit/s, so this is fine.

I tried 3 different clients (two Android phones with Snapdragon 810 and 855 and a Thinkpad X250 with Intel wifi).

As a result, I reverted back to the original firmware and this is getting me over 90 Mbit/s on 2.4 GHz.

I even tried to put the r7800 into the basement where there is practically no wifi noise, without success. Trying non CT Firmware/Driver doesn't help.

To complete my test, I put OpenWrt on a spare Linksys WRT1200AC, with the SAME BEHAVIOR.

Now I have 3 different devices with (most of the time) sub 20 Mbit/s 2.4 GHz (even forcing 40 MHz channels doesn't help much.).

If I get one client connected with higer RX/TX modes:

Last Test on my Snapdragon 855 Phone:
216.0 Mbit/s, 40 MHz, MCS 13
240.0 Mbit/s, 40 MHz, MCS 13

I get 25,5 Mbit/s Down and 21 Mbit/s Up...

Why is that?

FYI: All are dumb AP's behind a router. No NAT, no SQM, no Firewall, nothing. For all of my tests, only 1 client was connected to the AP's.

which firmwares are you testing?
is All of them ath79 build?
Ath79 build gives worst wireless performance in 2.4ghz.

you should just use 20mhz channel width on 2.4ghz wifi imo.
if you want faster speeds use 5ghz.

WDR3600 has ath79 target, R7800 hast ipq806x and WRT1200AC has mvebu target. I also switched around stable and trunk, tried CT/nonCT firmware/drivers for the R7800 and the newer precompiled mwlwifi for the WRT1200AC.

It's more or less the same on alle targets at around 10-30 MBit/s.

But why is 2.4 GHz so borked on all platforms? I don't want to place another AP around the house to get more 5 GHz coverage (I already have one per floor), I just want to have a solid 2.4 GHz on the edge corners.

I mean, factory firmware on R7800 can push more than 90 Mbit/s over 2.4 GHz.

20mhz? or 40mhz?

It doesn't let you change that. You can only choose: Up to 800 Mbps, Up to 347 Mbps and Up to 54 Mbps.

image

i can select on mine.

But this is OpenWrt not factory firmware. I was talking about Netgear firmware which reaches over 90 Mbit on 2.4 GHz.

stock firmware probably is using 40mhz on 2.4 wifi
check using a wifi scanner app.

20mhz channel width will look like this.


or this

a 40mhz channel will be double the width.

I've got a 500 Mbit cable connection which is rocksolid.

Let's take HT40 out and just focus on HT20. Channel 11 has no other wifi around, so I'll stick to that.

On setting: "Up to 347 Mbps" Netgear firmware it's still using HT20 but reaching a solid 45-50 Mbit/s.

Whereas OpenWrt 19.07.2 delivers me very unstable downstream of anything from sub 10 Mbit/s to barely 20 Mbit/s BUT Upstream is often over 30 Mbit/s.

Even if I keep both devices at the exact same spot (0,5m distance), speed may differ greatly from test to test.

Last one was: 15 Mbit/s down,44,4 Mbit/s up... 9,7 down 37 up the one before. Upstream is often reaching acceptable speeds whereas downstream is all over the place. And it's the same for every one of the 3 AP's.

1 Like

is this the same device?
try using openwrt 18.06

on my tplink atheros i am still using 18.06.4

Yep, same device. Still talking about Netgear R7800. Just tried Netgear firmware again pushing around 100 Mbits down on 2.4 Ghz HT20. Even 2 rooms away I can get ~35 Mbit where OpenWrt barely delivers 3-5 Mbit/s.

Post your settings for the following:

uname -a

cat /etc/config/wireless

Take a look here and see if it’s helpful:

Make sure software flow offloading is turn on in your firewall. Post your results for hardwired versus 5ghz / 80Mhz wide channel for speedtest.net and fast.com.

Firewall service is disabled, this device is a dumb access point. So no NAT. 5 GHz works fine with over 300 Mbit/s down. 2.4 GHz fails to deliver useful speeds.

In a nutshell: This is my R7800 performance when installed in the living room and clients connected, measured from the bedroom about 2-3 meters away with a single wall inbetween.

1 Like

I did another two iperf tests earlier today between a mac book air and an openwrt r7500v2 2.4 GHz, HT20, channel 6, tx power 30dbm on the AP (I think OSX forces tx power at 20dbm but I can't get it to tell me at the moment).

Both iperf results gave me 100+ mbps down.

EDIT a third iperf test just now

nmba [30] $ !505
iperf -c XX.XX.XX.XX -t60 -i10
------------------------------------------------------------
Client connecting to XX.XX.XX.XX, TCP port 5001
TCP window size:  129 KByte (default)
------------------------------------------------------------
[  4] local XX.XX.45.128 port 58270 connected with XX.XX.XX.XX port 5001
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec   133 MBytes   112 Mbits/sec
[  4] 10.0-20.0 sec   138 MBytes   116 Mbits/sec
[  4] 20.0-30.0 sec  93.8 MBytes  78.6 Mbits/sec
[  4] 30.0-40.0 sec   137 MBytes   115 Mbits/sec
[  4] 40.0-50.0 sec   140 MBytes   117 Mbits/sec
[  4] 50.0-60.0 sec   140 MBytes   117 Mbits/sec
[  4]  0.0-60.0 sec   782 MBytes   109 Mbits/sec
nmba [31] $ /System/Library/PrivateFrameworks/Apple80211.framework/Versions/Current/Resources/airport -I
     agrCtlRSSI: -58
     agrExtRSSI: 0
    agrCtlNoise: -96
    agrExtNoise: 0
          state: running
        op mode: station 
     lastTxRate: 144
        maxRate: 144
lastAssocStatus: 0
    802.11 auth: open
      link auth: unknown
          BSSID: X:8:5c
           SSID: SSIDX24
            MCS: 0
        channel: 6

The mac book air is more than twice the distance from the AP than ubuntu client I mentioned in the other thread (the ubuntu client tx-power is 15 dbm) and there are two walls obstructing the mac client from the AP.

To help rule out "tx power" issues (either client or AP related), from your openwrt r7800 AP please post the output of:

(please take care to redact any information you are uncomfortable posting, like mac address, ip address, etc from the outputs below)

cat /etc/openwrt_release
iw reg get
iw dev
cat /sys/kernel/debug/ieee80211/phy1/ath10k/fw_stats
cat /sys/kernel/debug/ieee80211/phy1/ath10k/firmware_info

you may have to try a few times to get output from cat ath10k/fw_stats

For comparison, redacted output from my AP here.

Note I am running a "snapshot" build and there may be updates in it (related to ath10k and openwrt's mac80211 implementation) that are not in the openwrt builds you are trying.

Can you compare the tx power you see (both client and AP - the "iw dev" output will tell you on *nix systems) between openwrt and the firmware that give you faster results? (appologies, i don't know how to get this via stock).

Tested right now from my Thinkpad X250 with Intel 7265 AC 2x2 Card. You can see the R7800 blinking in the background. Now even the latency is going mad...

cat /etc/openwrt_release
DISTRIB_ID='OpenWrt'
DISTRIB_RELEASE='19.07.2'
DISTRIB_REVISION='r10947-65030d81f3'
DISTRIB_TARGET='ipq806x/generic'
DISTRIB_ARCH='arm_cortex-a15_neon-vfpv4'
DISTRIB_DESCRIPTION='OpenWrt 19.07.2 r10947-65030d81f3'
DISTRIB_TAINTS=''
iw reg get
global
country DE: DFS-ETSI
        (2400 - 2483 @ 40), (N/A, 20), (N/A)
        (5150 - 5250 @ 80), (N/A, 23), (N/A), NO-OUTDOOR, AUTO-BW
        (5250 - 5350 @ 80), (N/A, 20), (0 ms), NO-OUTDOOR, DFS, AUTO-BW
        (5470 - 5725 @ 160), (N/A, 26), (0 ms), DFS
        (5725 - 5875 @ 80), (N/A, 13), (N/A)
        (57000 - 66000 @ 2160), (N/A, 40), (N/A)

phy#1
country US: DFS-FCC
        (2402 - 2472 @ 40), (N/A, 30), (N/A)
        (5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
        (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
        (5490 - 5730 @ 160), (N/A, 23), (0 ms), DFS
        (5735 - 5835 @ 80), (N/A, 30), (N/A)
        (57240 - 71000 @ 2160), (N/A, 40), (N/A)

phy#0
country US: DFS-FCC
        (2402 - 2472 @ 40), (N/A, 30), (N/A)
        (5170 - 5250 @ 80), (N/A, 23), (N/A), AUTO-BW
        (5250 - 5330 @ 80), (N/A, 23), (0 ms), DFS, AUTO-BW
        (5490 - 5730 @ 160), (N/A, 23), (0 ms), DFS
        (5735 - 5835 @ 80), (N/A, 30), (N/A)
        (57240 - 71000 @ 2160), (N/A, 40), (N/A)
iw dev
phy#1
        Interface wlan1-2
                ifindex 15
                wdev 0x100000004
                addr X
                ssid wifi-tor-2-4
                type AP
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
        Interface wlan1-1
                ifindex 14
                wdev 0x100000003
                addr X
                ssid wifi-gast-2-4
                type AP
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
        Interface wlan1
                ifindex 12
                wdev 0x100000002
                addr X
                ssid wifi-2-4
                type AP
                channel 1 (2412 MHz), width: 20 MHz, center1: 2412 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       5700    0       0       0       0       817569          5700
phy#0
        Interface wlan0-2
                ifindex 16
                wdev 0x4
                addr X
                ssid wifi-tor-5
                type AP
                channel 36 (5180 MHz), width: 40 MHz, center1: 5190 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
        Interface wlan0-1
                ifindex 13
                wdev 0x3
                addr X
                ssid wifi-gast-5
                type AP
                channel 36 (5180 MHz), width: 40 MHz, center1: 5190 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       0       0       0       0       0       0               0
        Interface wlan0
                ifindex 11
                wdev 0x2
                addr X
                ssid wifi-5
                type AP
                channel 36 (5180 MHz), width: 40 MHz, center1: 5190 MHz
                txpower 20.00 dBm
                multicast TXQ:
                        qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                        0       0       5296    0       0       0       0       758910          5296
cat /sys/kernel/debug/ieee80211/phy1/ath10k/fw_stats

             ath10k PDEV stats
             =================

           Channel noise floor        -96
              Channel TX power         40
                TX frame count 3118731680
                RX frame count 2905982108
                RX clear count 3148916642
                   Cycle count 3408251501
               PHY error count       4587
                 RTS bad count      32217
                RTS good count     204542
                 FCS bad count      65535
               No beacon count          0
                 MIB int count          0


          ath10k PDEV TX stats
             =================

            HTT cookies queued     176731
             HTT cookies disp.     351716
                   MSDU queued     203377
                   MPDU queued     203377
                 MSDUs dropped       1172
                  Local enqued      27635
                   Local freed      27634
                     HW queued     276838
                  PPDUs reaped     276836
                 Num underruns          0
                 PPDUs cleaned          0
                  MPDUs requed      74645
             Excessive retries      73198
                       HW rate          1
           Sched self triggers          0
     Dropped due to SW retries       1019
       Illegal rate phy errors          0
        Pdev continuous xretry          0
                    TX timeout          0
                   PDEV resets         11
                  PHY underrun          0
  MPDU is more than txop limit          0
                     HW paused         35
                   Seqs posted     276316
          Seqs failed queueing          0
                Seqs completed     276314
                Seqs restarted        469
                MU Seqs posted          0
              MPDUs SW flushed          0
             MPDUs HW filtered       1670
               MPDUs truncated      32417
          MPDUs receive no ACK      40834
                 MPDUs expired        274

          ath10k PDEV RX stats
             =================

         Mid PPDU route change          0
       Tot. number of statuses        265
        Extra frags on rings 0     499452
        Extra frags on rings 1          0
        Extra frags on rings 2         18
        Extra frags on rings 3         44
        MSDUs delivered to HTT     474295
        MPDUs delivered to HTT     474294
      MSDUs delivered to stack      16489
      MPDUs delivered to stack      16489
               Oversized AMSUs          0
                    PHY errors          0
              PHY errors drops       4279
   MPDU errors (FCS, MIC, ENC)      52606
         Num Rx Timeout errors          0
        Num Rx Overflow errors          0
                     DRAM Free      74712
                     IRAM Free      23220
                     SRAM Free      14440

             ath10k VDEV stats (3)
             =================

                       vdev id 0
               ppdu aggr count 2310
                    ppdu noack 72811
                   mpdu queued 3662
            ppdu nonaggr count 238306
              mpdu sw requeued 74365
            mpdu success retry 37403
         mpdu success multitry 13940
               mpdu fail retry 1391

                       vdev id 1
               ppdu aggr count 0
                    ppdu noack 199
                   mpdu queued 0
            ppdu nonaggr count 276
              mpdu sw requeued 145
            mpdu success retry 25
         mpdu success multitry 9
               mpdu fail retry 205

                       vdev id 2
               ppdu aggr count 0
                    ppdu noack 188
                   mpdu queued 0
            ppdu nonaggr count 266
              mpdu sw requeued 135
            mpdu success retry 20
         mpdu success multitry 6
               mpdu fail retry 194


             ath10k PEER stats (7)
             =================

              Peer MAC address X
                     Peer RSSI 0
                  Peer TX rate 11000
                  Peer RX rate 0
              Peer RX duration 0
                       Peer PN 0

              Peer MAC address X
                     Peer RSSI 0
                  Peer TX rate 0
                  Peer RX rate 0
              Peer RX duration 0
                       Peer PN 0

              Peer MAC address X
                     Peer RSSI 0
                  Peer TX rate 0
                  Peer RX rate 0
              Peer RX duration 0
                       Peer PN 0

              Peer MAC address X
                     Peer RSSI 35
                  Peer TX rate 72000
                  Peer RX rate 58000
              Peer RX duration 0
                       Peer PN 0

              Peer MAC address X
                     Peer RSSI 52
                  Peer TX rate 24000
                  Peer RX rate 57000
              Peer RX duration 0
                       Peer PN 0

              Peer MAC address X
                     Peer RSSI 35
                  Peer TX rate 36000
                  Peer RX rate 48000
              Peer RX duration 0
                       Peer PN 0

              Peer MAC address 3X
                     Peer RSSI 55
                  Peer TX rate 6000
                  Peer RX rate 26000
              Peer RX duration 0
                       Peer PN 0
cat /sys/kernel/debug/ieee80211/phy1/ath10k/firmware_info
directory: ath10k/QCA9984/hw1.0
firmware:  firmware-5.bin
fwcfg:     fwcfg-pci-0001:01:00.0.txt
bus:       0001:01:00.0
features:  mfp,peer-flow-ctrl,txstatus-noack,wmi-10.x-CT,ratemask-CT,regdump-CT,txrate-CT,flush-all-CT,pingpong-CT,ch-regs-CT,nop-CT,set-special-CT,tx-rc-CT,cust-stats-CT,txrate2-CT,beacon-cb-CT,wmi-block-ack-CT,wmi-bcn-rc-CT
version:   10.4b-ct-9984-fW-012-17ba98334
hw_rev:    9984
board:     board-2.bin
1 Like

So it looks like openwrt is setting the AP txpower to 20 dbm (under phy#1, "iw dev" output). That is the correct setting for a place like Germany. However, it is less than what I have (30 dbm, the max allowable by law in my region) which may be a contributing factor to why I can do better than you (for the moment).

The test result in your prior post is odd (especially a ping result of 115 ms). Just to be sure, please confirm you are testing from your client (say the Thinkpad X250) above to your openwrt AP. Testing from your client through your AP to a server outside your home network, even if you have a "fast" isp connection, is not helpful at the moment. For testing the client to AP 2.4 GHz wifi download speed in mbps, use a tool like "iperf -c ap.ip.address" from the client that connects to an "iperf -s" instance running on the openwrt AP. (apologies if you are already doing this... just your results above look like your testing to an external internet speed check website and not your AP).

ping from my client to my AP looks like:

(p382.mkl) [89] $ ping ap.ip.address
PING ap.ip.address (ap.ip.address) 56(84) bytes of data.
64 bytes from ap.ip.address: icmp_seq=1 ttl=64 time=1.95 ms
64 bytes from ap.ip.address: icmp_seq=2 ttl=64 time=2.18 ms
64 bytes from ap.ip.address: icmp_seq=3 ttl=64 time=1.46 ms

Lastly, you get faster "results" with the same client using a stock firmware than you do with openwrt on 2.4 GHz wifi. To rule out the possibility that the stock firmware is setting the txpower too high for a region like Germany (say making it 30 dbm like mine instead of the proper 20 dbm for Germany) you have to check what it is on the stock firmware. I can't help with that tho.