MT7916 2x2 WiFi6 BW160 mPCIe card

This card can make BPI-R:grinning:64/R3 to have AX3000 dualband/AX7800 tri-band support and we can find upstream driver after kernel 5.18. :grinning:

AsiaRF mt7916 module

Mt7916 upstream driver

Anyone have any experience using this card on BPI-R64?

I guess on r64 we will fall into the current limit again like for mt7619. I recently got such card can try if it is recognized on my r64.

For r3 i need adapter for ngff as minipcie slot is usb only

I read here V1.1 was upgraded:

But I guess it is not enough, needs at least 3A. Guess only option for me is to bypass the current limiter. The main 3.3V supply has a current limiting function also.

Is there any chance this card gets fried by the extra 5V that is on the pcie connector?

Anyway it is available on backorder, so I guess it is out of stock.

On the 1.1 schematic i do not find the boosted power adjustment.

Got my AsiaRF MT7916.

Using 6.0 kernel (in BPI-R2 PRO) I got next results:

An impressive uplink speed (client >> ap):

(base) ➜  ~ iperf3 -c 10.0.1.1
Connecting to host 10.0.1.1, port 5201
[  5] local 10.0.1.26 port 42722 connected to 10.0.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  73.6 MBytes   617 Mbits/sec    0   2.67 MBytes       
[  5]   1.00-2.00   sec  66.2 MBytes   556 Mbits/sec    0   3.89 MBytes       
[  5]   2.00-3.00   sec  75.0 MBytes   629 Mbits/sec    0   3.89 MBytes       
[  5]   3.00-4.00   sec  97.5 MBytes   818 Mbits/sec    0   3.89 MBytes       
[  5]   4.00-5.00   sec   101 MBytes   849 Mbits/sec    0   3.89 MBytes       
[  5]   5.00-6.00   sec  98.8 MBytes   829 Mbits/sec    0   3.89 MBytes       
[  5]   6.00-7.00   sec   100 MBytes   839 Mbits/sec    0   3.89 MBytes       
[  5]   7.00-8.00   sec  96.2 MBytes   808 Mbits/sec    0   3.89 MBytes       
[  5]   8.00-9.00   sec  81.2 MBytes   682 Mbits/sec    0   3.89 MBytes       
[  5]   9.00-10.00  sec  87.5 MBytes   734 Mbits/sec    0   3.89 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   877 MBytes   736 Mbits/sec    0             sender
[  5]   0.00-10.01  sec   877 MBytes   735 Mbits/sec                  receiver

iperf Done.

And not very impressive :wink: downlink speed (ap >> client):

(base) ➜  ~ iperf3 -c 10.0.1.1 -R
Connecting to host 10.0.1.1, port 5201
Reverse mode, remote host 10.0.1.1 is sending
[  5] local 10.0.1.26 port 43122 connected to 10.0.1.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  18.7 MBytes   157 Mbits/sec                  
[  5]   1.00-2.00   sec  19.7 MBytes   165 Mbits/sec                  
[  5]   2.00-3.00   sec  20.2 MBytes   169 Mbits/sec                  
[  5]   3.00-4.00   sec  20.0 MBytes   168 Mbits/sec                  
[  5]   4.00-5.00   sec  18.9 MBytes   158 Mbits/sec                  
[  5]   5.00-6.00   sec  18.9 MBytes   159 Mbits/sec                  
[  5]   6.00-7.00   sec  18.8 MBytes   157 Mbits/sec                  
[  5]   7.00-8.00   sec  20.2 MBytes   170 Mbits/sec                  
[  5]   8.00-9.00   sec  19.5 MBytes   164 Mbits/sec                  
[  5]   9.00-10.00  sec  17.4 MBytes   146 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   204 MBytes   171 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   192 MBytes   161 Mbits/sec                  receiver

iperf Done.

Likely not yet a mature driver with not all hw features implemented:

Unlike mt7915 driver (for 5.10+ kernels) this one has no problems with client2client communication or dbdc reboot issue. like here

P.S. the card is configured for 5GHz VHT160 ax mode

P.P.S 2.4 GHz both upload and download speeds are: ~80+/-5 Mbps.

UPD:

Test in 0.5m distance (previous ~5m distance):

uplink:

(base) ➜  ~ iperf3 -c 10.0.1.1      
Connecting to host 10.0.1.1, port 5201
[  5] local 10.0.1.26 port 38048 connected to 10.0.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec   130 MBytes  1.09 Gbits/sec    0   3.43 MBytes       
[  5]   1.00-2.00   sec   156 MBytes  1.31 Gbits/sec    0   3.86 MBytes       
[  5]   2.00-3.00   sec   158 MBytes  1.32 Gbits/sec    0   3.86 MBytes       
[  5]   3.00-4.00   sec   144 MBytes  1.21 Gbits/sec    0   3.86 MBytes       
[  5]   4.00-5.00   sec   125 MBytes  1.05 Gbits/sec    0   3.86 MBytes       
[  5]   5.00-6.00   sec   136 MBytes  1.14 Gbits/sec    0   3.86 MBytes       
[  5]   6.00-7.00   sec   151 MBytes  1.27 Gbits/sec    0   3.86 MBytes       
[  5]   7.00-8.00   sec   152 MBytes  1.28 Gbits/sec    0   3.86 MBytes       
[  5]   8.00-9.00   sec   152 MBytes  1.28 Gbits/sec    0   4.12 MBytes       
[  5]   9.00-10.00  sec   154 MBytes  1.29 Gbits/sec    0   4.12 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  1.42 GBytes  1.22 Gbits/sec    0             sender
[  5]   0.00-10.01  sec  1.42 GBytes  1.22 Gbits/sec                  receiver

iperf Done.

downlink:

(base) ➜  ~ iperf3 -c 10.0.1.1 -R
Connecting to host 10.0.1.1, port 5201
Reverse mode, remote host 10.0.1.1 is sending
[  5] local 10.0.1.26 port 53034 connected to 10.0.1.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  17.9 MBytes   150 Mbits/sec                  
[  5]   1.00-2.00   sec  18.5 MBytes   156 Mbits/sec                  
[  5]   2.00-3.00   sec  18.0 MBytes   151 Mbits/sec                  
[  5]   3.00-4.00   sec  18.2 MBytes   153 Mbits/sec                  
[  5]   4.00-5.00   sec  18.3 MBytes   154 Mbits/sec                  
[  5]   5.00-6.00   sec  19.9 MBytes   167 Mbits/sec                  
[  5]   6.00-7.00   sec  20.3 MBytes   170 Mbits/sec                  
[  5]   7.00-8.00   sec  20.9 MBytes   175 Mbits/sec                  
[  5]   8.00-9.00   sec  19.7 MBytes   165 Mbits/sec                  
[  5]   9.00-10.00  sec  19.1 MBytes   161 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   202 MBytes   170 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   191 MBytes   160 Mbits/sec                  receiver

iperf Done.

This looks like tx limitation or antenna connection broken.

Do You mean not in the driver? Any ideas on how to check it? (mt7615: ~550 Mbps in both directions on the same SoC/OS)

Visually looks OK, but if so doesn’t it should affect both directions?

You can view rx/tx levels with iw tool. And you can compare with other card. If levels are similar this is not the rootcause (e.g eeprom setting).

Strange is that downlink (ap > client) gets smaller on shorter distance. Any conflicting ap from other people?

Have you tested other card in r2pro to make sure limitation is not on r2pro?

need to do some research on iw

It’s pretty much the same around 165Mbps from any device - and yes I have other APs from my neighbors but the selected channel is relatively free.

Previous was the mt7615, which showed 500-600 Mbps in both directions.

I found this using iwconfig:

bpi-r2pro ~ # iwconfig wlx000a5207f58d
wlx000a5207f58d  IEEE 802.11  Mode:Master  Tx-Power=23 dBm   
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

Iw dev/list shows the maximum allowed Tx-power. You can increase it with

iw dev wlan0 set txpower fixed 20

I thought there was a way to get the actual tx-power,but Found only iwconfig examples on quick search (and of course rx-power).

iw dev <ifname> station dump

You could also try to disable power_save

bpi-r2pro ~ # iw dev wlx000a5207f58d set txpower fixed 20      
command failed: Operation not supported (-95)

bpi-r2pro ~ # iw dev wlx000a5207f58d station dump
Station e0:cc:f8:84:c6:bc (on wlx000a5207f58d)
        inactive time:  1216 ms
        rx bytes:       42105
        rx packets:     411
        tx bytes:       48755
        tx packets:     232
        tx retries:     0
        tx failed:      0
        rx drop misc:   0
        signal:         -48 [-61, -48] dBm
        signal avg:     -47 [-60, -47] dBm
        tx bitrate:     720.6 MBit/s 80MHz HE-MCS 7 HE-NSS 2 HE-GI 0 HE-DCM 0
        tx duration:    2641756 us
        rx bitrate:     6.0 MBit/s
        rx duration:    134587 us
        airtime weight: 256
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            no
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        short slot time:yes
        connected time: 478 seconds
        associated at [boottime]:       3479.226s
        associated at:  1665903046551 ms
        current time:   1665903525165 ms

Also, I have 5 bars of signal strength for my current config.

I can do the same for mt7615 to compare results.

Client-side:

(base) ➜  ~ iw dev wlp5s0 station dump
Station 00:0a:52:07:f5:8d (on wlp5s0)
        inactive time:  0 ms
        rx bytes:       3576949
        rx packets:     37834
        tx bytes:       374838927
        tx packets:     6430
        tx retries:     767
        tx failed:      0
        beacon loss:    0
        beacon rx:      171
        rx drop misc:   13
        signal:         -50 [-56, -50] dBm
        signal avg:     -54 dBm
        beacon signal avg:      -51 dBm
        tx bitrate:     1088.7 MBit/s 160MHz HE-MCS 5 HE-NSS 2 HE-GI 1 HE-DCM 0
        tx duration:    0 us
        rx bitrate:     1729.6 MBit/s 160MHz HE-MCS 8 HE-NSS 2 HE-GI 0 HE-DCM 0
        rx duration:    0 us
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            no
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        short slot time:yes
        connected time: 19 seconds
        associated at [boottime]:       93009.923s
        associated at:  1665878789283 ms
        current time:   1665878807682 ms

On r2pro you have 80Mhz bandwidth

tx bitrate:     720.6 MBit/s 80MHz HE-MCS 7 HE-NSS 2 HE-GI 0 HE-DCM 0

And on client 160

tx bitrate:     1088.7 MBit/s 160MHz HE-MCS 5 HE-NSS 2 HE-GI 1 HE-DCM 0

That does not map together. HE-MCS and HE-GI are different…maybe there is a mode not supported by both

Strange is rx on r2pro with 6 mbit/s

My current r2pro bw:

tx bitrate:     1729.6 MBit/s 160MHz HE-MCS 8 HE-NSS 2 HE-GI 0 HE-DCM 0
tx duration:    11690255 us
rx bitrate:     1729.6 MBit/s 160MHz HE-MCS 8 HE-NSS 2 HE-GI 0 HE-DCM 0
rx duration:    2338735 us

Looks like it depends on the current wifi load.

P.S. The AP may change the channel by itself w/o any configuration in hostapd:

e.g. it has changed from ch100+_VTH160 to ch36+_VHT160 (which is more bury for most of the time)