RM500Q-GL download speed issue

Hello,
I’m working on a mt7621 board with RM500Q-GL module with openwrt version, 17.01 and kernel 4.4.198.
I got the qmi_wwan_q driver from the link below -

https://forums.quectel.com/t/rm500q-linux-drivers/11876

The qmi_wwan_q driver version is V1.2.1 and that of QConnectManager is V1.6.1.

ISSUE:
I’m unable to get the 5G download speed more than 100-110 Mbps.
The upload speed is about 100Mbps. When checked on phone, the 5G download speed is about 800Mbps.

1) What is the cause of download speed getting limited to 110Mbps? and How can I increase it to about 800Mbps?

The device is getting connected on 5G (NSA) and is in QMI mode as can be seen from the AT commands shown below.
But from the logs, I can see that the device is registered as RMNET/USB device instead of WWAN/QMI device.

[  238.600722] qmi_wwan_q 2-1:1.4 wwan0: register 'qmi_wwan_q' at usb-1e1c0000.usb-1, RMNET/USB device, 26:5c:b5:e7:46:d3

2) How do i set it back to WWAN/QMI device?

Also, setting qmap_mode to 0 doesn’t up the interface without qmap mode.

insmod qmi_wwan_q.ko qmap_mode=0

Below is the output for usb devices as well as lsusb -t.

cat /sys/kernel/debug/usb/devices 

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=5000 MxCh= 1
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 3.00 Cls=09(hub  ) Sub=00 Prot=03 MxPS= 9 #Cfgs=  1
P:  Vendor=1d6b ProdID=0003 Rev= 4.04
S:  Manufacturer=Linux 4.4.198 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=1e1c0000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms

T:  Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=5000 MxCh= 0
D:  Ver= 3.20 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 9 #Cfgs=  1
P:  Vendor=2c7c ProdID=0800 Rev= 4.14
S:  Manufacturer=Quectel
S:  Product=RM500Q-GL
S:  SerialNumber=85e399e2
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=896mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E:  Ad=81(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=83(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=85(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=84(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=03(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E:  Ad=87(I) Atr=03(Int.) MxPS=  10 Ivl=32ms
E:  Ad=86(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=04(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan_q
E:  Ad=88(I) Atr=03(Int.) MxPS=   8 Ivl=32ms
E:  Ad=8e(I) Atr=02(Bulk) MxPS=1024 Ivl=0ms
E:  Ad=0f(O) Atr=02(Bulk) MxPS=1024 Ivl=0ms

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480  MxCh= 2
B:  Alloc=  0/800 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=1d6b ProdID=0002 Rev= 4.04
S:  Manufacturer=Linux 4.4.198 xhci-hcd
S:  Product=xHCI Host Controller
S:  SerialNumber=1e1c0000.usb
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   4 Ivl=256ms
lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/1p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=option, 5000M
    |__ Port 1: Dev 2, If 1, Class=Vendor Specific Class, Driver=option, 5000M
    |__ Port 1: Dev 2, If 2, Class=Vendor Specific Class, Driver=option, 5000M
    |__ Port 1: Dev 2, If 3, Class=Vendor Specific Class, Driver=option, 5000M
    |__ Port 1: Dev 2, If 4, Class=Vendor Specific Class, Driver=qmi_wwan_q, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-mtk/2p, 480M

Below are the logs for insmod -

insmod qmi_wwan_q.ko

[  238.562782] qmi_wwan_q 2-1:1.4: cdc-wdm0: USB WDM device
[  238.574453] qmi_wwan_q 2-1:1.4: Quectel RM500Q-GL work on RawIP mode
[  238.588092] qmi_wwan_q 2-1:1.4: rx_urb_size = 31744
[  238.600722] qmi_wwan_q 2-1:1.4 wwan0: register 'qmi_wwan_q' at usb-1e1c0000.usb-1, RMNET/USB device, 26:5c:b5:e7:46:d3
[  238.626013] net wwan0: qmap_register_device wwan0_1
[  238.630083] IPv6: ADDRCONF(NETDEV_UP): wwan0_1: link is not ready
[  238.648496] usbcore: registered new interface driver qmi_wwan_q
[  238.676590] IPv6: ADDRCONF(NETDEV_UP): wwan0: link is not ready

Below are the logs quectel-CM tool -

./quectel-CM &
[         main.c-0847: 06-04_03:59:58:025] QConnectManager_Linux_V1.6.1
[       device.c-0293: 06-04_03:59:58:045] Find /sys/bus/usb/devices/2-1 idVendor=0x2c7c idProduct=0x800, bus=0x002, dev=0x002
[       device.c-0377: 06-04_03:59:58:049] Auto find qmichannel = /dev/cdc-wdm0
[       device.c-0378: 06-04_03:59:58:050] Auto find usbnet_adapter = wwan0
[       device.c-0573: 06-04_03:59:58:052] netcard driver = qmi_wwan_q, driver version = V1.2.1
[qmap_bridge_mode.c-0322: 06-04_03:59:58:060] qmap_mode = 1, qmap_version = 9, qmap_size = 31744, muxid = 0x81, qmap_netcard = wwan0_1
[         main.c-0667: 06-04_03:59:58:061] Modem works in QMI mode
[    QmiWwanCM.c-0341: 06-04_03:59:58:083] cdc_wdm_fd = 7
[    QmiWwanCM.c-0177: 06-04_03:59:58:440] Get clientWDS = 15
[    QmiWwanCM.c-0178: 06-04_03:59:58:472] Get clientDMS = 1
[    QmiWwanCM.c-0179: 06-04_03:59:58:505] Get clientNAS = 4
[    QmiWwanCM.c-0183: 06-04_03:59:58:536] Get clientUIM = 1
[    QmiWwanCM.c-0184: 06-04_03:59:58:568] Get clientWDA = 1
[    QMIThread.c-2183: 06-04_03:59:58:600] requestBaseBandVersion RM500QGLABR11A06M4G
[    QMIThread.c[ 2480.442447] net wwan0: ul_data_aggregation_max_datagrams=11, ul_data_aggregation_max_size=4096, dl_minimum_padding=0
-0752: 06-04_03:59:58:632] qmap_settings.rx_urb_size = 31744
[    QMIThread.c-0761: 06-04_03:59:58:633] qmap_settings.ul_data_aggregation_max_datagrams  = 11
[    QMIThread.c-0767: 06-04_03:59:58:633] qmap_settings.ul_data_aggregation_max_size       = 4096
[    QMIThread.c-0773: 06-04_03:59:58:634] qmap_settings.dl_minimum_padding                 = 0
[    QMIThread.c-0968: 06-04_03:59:58:760] requestGetSIMStatus SIMStatus: SIM_READY
[    QMIThread.c-2063: 06-04_03:59:58:792] requestGetProfile[1] airtelgprs.com///0/IPV4
[    QMIThread.c-1634: 06-04_03:59:58:824] requestRegistrationState2 MCC: 404, MNC: 45, PS: Attached, DataCap: 5G_NSA
[    QMIThread.c-1769: 06-04_03:59:58:856] requestQueryDataCall IPv4ConnectionStatus: DISCONNECTED
[       udhcpc.c-0034: 06-04_03:59:58:865] ifconfig wwan0 down
[       udhcpc.c-0034: 06-04_03:59:58:878] ifconfig wwan0_1 0.0.0.0
[       udhcpc.c-0034: 06-04_03:59:58:888] ifconfig wwan0_1 down
[    QMIThread.c-1815: 06-04_03:59:58:920] requestSetupDataCall WdsConnectionIPv4Handle: 0xfaa330c0
[ 2480.857293] net wwan0: link_state 0x0 -> 0x1
[       udhcpc.c-0034: 06-04_03:59:59:058] ifconfig wwan0 up
[       udhcpc.c-0034: 06-04_03:59:59:070] ifconfig wwan0_1 up
[       udhcpc.c-0159: 06-04_03:59:59:100] busybox udhcpc -f -n -q -t 5 -i wwan0_1
udhcpc: started, v1.25.1
udhcpc: sending discover
udhcpc: sending select for 10.14.9.116
udhcpc: lease of 10.14.9.116 obtained, lease time 7200
[       udhcpc.c-0169: 06-04_03:59:59:493] udhcpc: ifconfig wwan0_1 10.14.9.116 netmask 255.255.255.248 broadcast +
[       udhcpc.c-0169: 06-04_03:59:59:507] udhcpc: setting default routers: 10.14.9.117

I get IP on wwan0_1

wwan0     Link encap:Ethernet  HWaddr 26:5C:B5:E7:46:D3  
          inet6 addr: fe80::245c:b5ff:fee7:46d3/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:632 (632.0 B)  TX bytes:672 (672.0 B)

wwan0_1   Link encap:Ethernet  HWaddr 26:5C:B5:E7:46:D3  
          inet addr:10.14.9.116  Mask:255.255.255.248
          inet6 addr: fe80::245c:b5ff:fee7:46d3/64 Scope:Link
          UP RUNNING NOARP  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:640 (640.0 B)  TX bytes:672 (672.0 B)
Port /dev/ttyUSB2                                                            
                                                                             
Press CTRL-A Z for help on special keys                                      
                                                                             
at                                                                           
OK
ATI
Quectel
RM500Q-GL
Revision: RM500QGLABR11A06M4G

OK                                                                           
at+cops?                                                                     
+COPS: 0,0,"IND airtel airtel",13                                            
                                                                             
OK                                                          
AT+QNWPREFCFG= "mode_pref"                                  
+QNWPREFCFG: "mode_pref",AUTO                               
                                                            
OK                                                          
at+qcfg="usbnet"                                            

+QCFG: "usbnet",0

OK
AT+QENG="servingcell"
+QENG: "servingcell","NOCONN"
+QENG: "LTE","FDD",404,45,2C0830C,340,1301,3,5,5,2042,-80,-10,-51,14,13,-90,-
+QENG:"NR5G-NSA",404,45,20,-80,16,-11,627936,78,12,1

OK
at+cgdcont?
+CGDCONT: 1,"IP","airtelgprs.com","0.0.0.0",0,0,0,0,,,,,,,,,"",,,,0
+CGDCONT: 2,"IPV4V6","ims","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0,,,,,,,,,"",,,,0
+CGDCONT: 3,"IPV4V6","sos","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,1,,,,,,,,,"",,,,0
+CGDCONT: 4,"IPV4V6","airtelgprs.com","0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0",0,0,0,0,,,,,,,,,"",,,,0

OK

Also, What i observed is, I’m unable to get NR5G-NSA and SCC in AT+QNWINFO and AT+QNWINFO as shown below. It shows only LTE information.

Whereas, in AT+COPS? and AT+QENG=“servingcell”, it shows NR5G-NSA.

Any clue as to why this happens?

AT+QNWINFO

+QNWINFO: "FDD LTE","40445","LTE BAND 3",1301

OK

AT+QCAINFO

+QCAINFO: "PCC",1301,100,"LTE BAND 3",1,340,-75,-9,-46,8

OK

AT+QENG="servingcell"

+QENG: "servingcell","NOCONN"

+QENG: "LTE","FDD",404,45,2C0830C,340,1301,3,5,5,2042,-80,-8,-52,15,10,40,-

+QENG:"NR5G-NSA",404,45,20,-80,16,-11,627936,78,12,1

OK

AT+COPS?

+COPS: 0,0,"IND airtel airtel",13

OK