Why are wifi uploads so slow?

No matter what i try, uploads are always less than half of the download speed. Sometimes not even a quarter of download speed. Tested with iperf3. I don’t have this issue using a mt7922 on a mini pc with crap antennas.

I have tried this:

Linux:

  • Openwrt, more than one version.
  • Frank’s Debian kernel and image. 6.11 and 6.12

Cards:

  • BE14
  • MT7925e
  • Qualcomm QCNCM865

Antennas:

  • Patch antennas
  • Antennas that came with the BE14 card
  • etc.

Wifi6 and 7, etc.

Am i missing something?

am using the latest snapshot from mainline openwrt. speed and performance are acceptable. testing has been done using wcn6850 as client wifi card. here are some logs:

root@OpenWrt:~# ubus call system board
{
        "kernel": "6.6.54",
        "hostname": "OpenWrt",
        "system": "ARMv8 Processor rev 0",
        "model": "Bananapi BPI-R4",
        "board_name": "bananapi,bpi-r4",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "SNAPSHOT",
                "revision": "r27712-a544b9252b",
                "target": "mediatek/filogic",
                "description": "OpenWrt SNAPSHOT r27712-a544b9252b"
        }
}
root@OpenWrt:~#
root@OpenWrt:~# lspci
0000:00:00.0 PCI bridge: MEDIATEK Corp. Device 7988 (rev 01)
0000:01:00.0 Network controller: MEDIATEK Corp. Device 7990
0001:00:00.0 PCI bridge: MEDIATEK Corp. Device 7988 (rev 01)
0001:01:00.0 Network controller: MEDIATEK Corp. Device 7991
0003:00:00.0 PCI bridge: MEDIATEK Corp. Device 7988 (rev 01)
0003:01:00.0 Unassigned class [ff00]: Qualcomm Technologies, Inc Device 0308
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~# cat /etc/config/wireless

config wifi-device 'radio2'
        option type 'mac80211'
        option path 'soc/11300000.pcie/pci0000:00/0000:00:00.0/0000:01:00.0+2'
        option band '6g'
        option channel '5'
        option htmode 'EHT320'
        option country 'US'
        option cell_density '3'
        option he_bss_color '8'

config wifi-iface 'default_radio2'
        option device 'radio2'
        option network 'lan'
        option mode 'ap'
        option ssid 'Bebo6G'
        option encryption 'sae'
        option key 'password'
        option ifname 'wlan2'
        option ieee80211k '1'
        option ocv '0'
root@OpenWrt:~# iw wlan2 info
Interface wlan2
        ifindex 13
        wdev 0x200000001
        addr 6e:7a:67:bf:5a:78
        ssid Bebo6G
        type AP
        wiphy 2
        channel 5 (5975 MHz), width: 320 MHz, center1: 6105 MHz
        txpower 24.00 dBm
        multicast TXQ:
                qsz-byt qsz-pkt flows   drops   marks   overlmt hashcol tx-bytes        tx-packets
                0       0       2868    0       0       0       0       276974          2909

root@OpenWrt:~# iw dev wlan2 station dump
Station 26:1e:ea:8d:f9:65 (on wlan2)
        inactive time:  10 ms
        rx bytes:       389022740
        rx packets:     576991
        tx bytes:       644936786
        tx packets:     772654
        tx retries:     28743
        tx failed:      28760
        rx drop misc:   6
        signal:         -40 [-45, -47, -42] dBm
        signal avg:     -42 [-48, -45, -46] dBm
        tx bitrate:     1729.6 MBit/s 160MHz HE-MCS 8 HE-NSS 2 HE-GI 0 HE-DCM 0
        tx duration:    27327144980 us
        rx bitrate:     1921.5 MBit/s 160MHz HE-MCS 9 HE-NSS 2 HE-GI 0 HE-DCM 0
        rx duration:    25801987588 us
        last ack signal:-48 dBm
        avg ack signal: -45 dBm
        airtime weight: 256
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            yes
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        short slot time:yes
        connected time: 31519 seconds
        associated at [boottime]:       619.329s
        associated at:  1728985108925 ms
        current time:   1729016628517 ms
Station 04:7b:cb:b2:2d:28 (on wlan2)
        inactive time:  10 ms
        rx bytes:       18483829
        rx packets:     175528
        tx bytes:       333749892
        tx packets:     446739
        tx retries:     2565
        tx failed:      2565
        rx drop misc:   0
        signal:         -44 [-48, -47, -51] dBm
        signal avg:     -44 [-48, -47, -50] dBm
        tx bitrate:     2401.9 MBit/s 160MHz HE-MCS 11 HE-NSS 2 HE-GI 0 HE-DCM 0
        tx duration:    2100095316 us
        rx bitrate:     2161.3 MBit/s 160MHz HE-MCS 10 HE-NSS 2 HE-GI 0 HE-DCM 0
        rx duration:    16687483 us
        last ack signal:-44 dBm
        avg ack signal: -44 dBm
        airtime weight: 256
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            yes
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        short slot time:yes
        connected time: 25332 seconds
        associated at [boottime]:       6807.005s
        associated at:  1728991296601 ms
        current time:   1729016628517 ms
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~#
root@OpenWrt:~# iperf3 -c 192.168.1.233
Connecting to host 192.168.1.233, port 5201
[  5] local 192.168.1.1 port 44918 connected to 192.168.1.233 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   160 MBytes  1.34 Gbits/sec    0   2.05 MBytes
[  5]   1.00-2.00   sec   157 MBytes  1.32 Gbits/sec    0   2.05 MBytes
[  5]   2.00-3.00   sec   166 MBytes  1.40 Gbits/sec    0   2.05 MBytes
[  5]   3.00-4.00   sec   176 MBytes  1.48 Gbits/sec    0   2.05 MBytes
[  5]   4.00-5.00   sec   175 MBytes  1.47 Gbits/sec    0   2.05 MBytes
[  5]   5.00-6.00   sec   167 MBytes  1.40 Gbits/sec    0   2.05 MBytes
[  5]   6.00-7.00   sec   172 MBytes  1.44 Gbits/sec    0   2.05 MBytes
[  5]   7.00-8.00   sec   175 MBytes  1.47 Gbits/sec    0   2.05 MBytes
[  5]   8.00-9.00   sec   169 MBytes  1.42 Gbits/sec    0   2.05 MBytes
[  5]   9.00-10.00  sec   176 MBytes  1.48 Gbits/sec    0   2.05 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.66 GBytes  1.42 Gbits/sec    0             sender
[  5]   0.00-10.00  sec  1.65 GBytes  1.42 Gbits/sec                  receiver

iperf Done.
root@OpenWrt:~# iperf3 -c 192.168.1.233 -R
Connecting to host 192.168.1.233, port 5201
Reverse mode, remote host 192.168.1.233 is sending
[  5] local 192.168.1.1 port 52510 connected to 192.168.1.233 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   166 MBytes  1.39 Gbits/sec
[  5]   1.00-2.00   sec   171 MBytes  1.44 Gbits/sec
[  5]   2.00-3.00   sec   172 MBytes  1.44 Gbits/sec
[  5]   3.00-4.00   sec   173 MBytes  1.45 Gbits/sec
[  5]   4.00-5.00   sec   174 MBytes  1.46 Gbits/sec
[  5]   5.00-6.00   sec   176 MBytes  1.48 Gbits/sec
[  5]   6.00-7.00   sec   172 MBytes  1.44 Gbits/sec
[  5]   7.00-8.00   sec   174 MBytes  1.46 Gbits/sec
[  5]   8.00-9.00   sec   175 MBytes  1.47 Gbits/sec
[  5]   9.00-10.00  sec   177 MBytes  1.48 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  1.70 GBytes  1.46 Gbits/sec                  sender
[  5]   0.00-10.00  sec  1.69 GBytes  1.45 Gbits/sec                  receiver

iperf Done.

Thanks for the report. Nice speeds. What card in the R4? Is that a BE14 or a qualcomm one?

BE14, Qualcomm card is 5g modem (RM520-EU) from quectel

root@OpenWrt:~# lspci -nnk
0000:00:00.0 PCI bridge [0604]: MEDIATEK Corp. Device [14c3:7988] (rev 01)
        Kernel driver in use: pcieport
lspci: Unable to load libkmod resources: error -2
0000:01:00.0 Network controller [0280]: MEDIATEK Corp. Device [14c3:7990]
        Subsystem: MEDIATEK Corp. Device [14c3:6639]
        Kernel driver in use: mt7996e
0001:00:00.0 PCI bridge [0604]: MEDIATEK Corp. Device [14c3:7988] (rev 01)
        Kernel driver in use: pcieport
0001:01:00.0 Network controller [0280]: MEDIATEK Corp. Device [14c3:7991]
        Subsystem: MEDIATEK Corp. Device [14c3:6639]
        Kernel driver in use: mt7996e_hif
0003:00:00.0 PCI bridge [0604]: MEDIATEK Corp. Device [14c3:7988] (rev 01)
        Kernel driver in use: pcieport
0003:01:00.0 Unassigned class [ff00]: Qualcomm Technologies, Inc Device [17cb:0308]
        Subsystem: Qualcomm Technologies, Inc Device [17cb:5201]
        Kernel driver in use: mhi_q