RM500Q-GL loading with different drivers on 2 identical machines

I have two identical machines running ubuntu 22.04, they were cloned from the same source. But I don’t know why they are loaded with different driver (cdc_mbim and qmi_wwan). However the machine loaded with qmi_wwan failed to register sim card and no 5G option.

“qmi_wwan”

mmcli -m 0

General | path: /org/freedesktop/ModemManager1/Modem/0
| device id: 513c9d8a61c5191985aa8067cf602e7270ca3f71

Hardware | manufacturer: Quectel
| model: RM500Q-GL
| firmware revision: RM500QGLABR13A02M4G
| supported: gsm-umts, lte
| current: gsm-umts, lte
| equipment id: 863305041810838

System | device: /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.1
| drivers: option, qmi_wwan
| plugin: quectel
| primary port: ttyUSB1
| ports: ttyUSB0 (qcdm), ttyUSB1 (at), ttyUSB2 (at), wwan0 (ignored)

Status | unlock retries: sim-pin (3), sim-puk (10), sim-pin2 (3), sim-puk2 (10)
| state: enabled
| power state: on
| signal quality: 0% (recent)

Modes | supported: allowed: 2g, 3g, 4g; preferred: none
| current: allowed: 2g, 3g, 4g; preferred: none

IP | supported: ipv4, ipv6, ipv4v6

3GPP | imei: 863305041810838
| registration: idle
| packet service state: detached

3GPP EPS | ue mode of operation: csps-2

SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0


cat /sys/kernel/debug/usb/devices
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=0800 Rev= 4.14
S: Manufacturer=Quectel
S: Product=RM500Q-GL
S: SerialNumber=2d1b3904
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E: Ad=88(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

“cdc_mbim”

mmcli -m 0

General | path: /org/freedesktop/ModemManager1/Modem/0
| device id: 0ce762fffdc1c77e68def2f092d5fd5e87154d18

Hardware | manufacturer: Quectel
| model: RM500Q-GL
| firmware revision: RM500QGLABR13A02M4G
| carrier config: ROW_Commercial
| carrier config revision: 0A010809
| h/w revision: RM500Q-GL
| supported: gsm-umts, lte, 5gnr, tds
| current: gsm-umts, lte, 5gnr, tds
| equipment id: 863305041869883

System | device: /sys/devices/pci0000:00/0000:00:1d.0/usb1/1-1/1-1.1
| drivers: option, cdc_mbim
| plugin: quectel
| primary port: cdc-wdm1
| ports: cdc-wdm1 (mbim), ttyUSB0 (qcdm), ttyUSB1 (at),
| ttyUSB2 (at), wwan0 (net)

Status | lock: sim-pin2
| unlock retries: sim-pin2 (3)
| state: connected
| power state: on
| access tech: lte, 5gnr
| signal quality: 30% (recent)

Modes | supported: allowed: 3g; preferred: none
| allowed: 4g; preferred: none
| allowed: 3g, 4g; preferred: 4g
| allowed: 3g, 4g; preferred: 3g
| allowed: 5g; preferred: none
| allowed: 4g, 5g; preferred: 5g
| allowed: 4g, 5g; preferred: 4g
| allowed: 3g, 5g; preferred: 5g
| allowed: 3g, 5g; preferred: 3g
| allowed: 3g, 4g, 5g; preferred: 5g
| allowed: 3g, 4g, 5g; preferred: 4g
| allowed: 3g, 4g, 5g; preferred: 3g
| current: allowed: 3g, 4g, 5g; preferred: 5g

Bands | supported: utran-1, utran-3, utran-4, utran-6, utran-5, utran-8,
| utran-2, eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7,
| eutran-8, eutran-12, eutran-13, eutran-14, eutran-17, eutran-18,
| eutran-19, eutran-20, eutran-25, eutran-26, eutran-28, eutran-29,
| eutran-30, eutran-32, eutran-34, eutran-38, eutran-39, eutran-40,
| eutran-41, eutran-42, eutran-43, eutran-46, eutran-48, eutran-66,
| eutran-71, utran-19, ngran-1, ngran-2, ngran-3, ngran-5, ngran-7,
| ngran-8, ngran-12, ngran-20, ngran-25, ngran-28, ngran-38, ngran-40,
| ngran-41, ngran-48, ngran-66, ngran-71, ngran-77, ngran-78, ngran-79
| current: utran-1, utran-3, utran-4, utran-6, utran-5, utran-8,
| utran-2, eutran-1, eutran-2, eutran-3, eutran-4, eutran-5, eutran-7,
| eutran-8, eutran-12, eutran-13, eutran-14, eutran-17, eutran-18,
| eutran-19, eutran-20, eutran-25, eutran-26, eutran-28, eutran-29,
| eutran-30, eutran-32, eutran-34, eutran-38, eutran-39, eutran-40,
| eutran-41, eutran-42, eutran-43, eutran-46, eutran-48, eutran-66,
| eutran-71, utran-19, ngran-1, ngran-2, ngran-3, ngran-5, ngran-7,
| ngran-8, ngran-12, ngran-20, ngran-25, ngran-28, ngran-38, ngran-40,
| ngran-41, ngran-48, ngran-66, ngran-71, ngran-77, ngran-78, ngran-79

IP | supported: ipv4, ipv6, ipv4v6

3GPP | imei: 863305041869883
| enabled locks: fixed-dialing
| operator id: 45400
| operator name: MORE Mobile
| registration: home
| packet service state: attached

3GPP EPS | ue mode of operation: csps-2
| initial bearer path: /org/freedesktop/ModemManager1/Bearer/0
| initial bearer ip type: ipv4v6

3GPP 5GNR | mico mode: unsupported
| drx cycle: unsupported

SIM | primary sim path: /org/freedesktop/ModemManager1/SIM/0
| sim slot paths: slot 1: /org/freedesktop/ModemManager1/SIM/0 (active)
| slot 2: none

Bearer | paths: /org/freedesktop/ModemManager1/Bearer/1


cat /sys/kernel/debug/usb/devices
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=480 MxCh= 0
D: Ver= 2.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=0800 Rev= 4.14
S: Manufacturer=Quectel
S: Product=RM500Q-GL
S: SerialNumber=112aed40
C:* #Ifs= 6 Cfg#= 1 Atr=a0 MxPwr=500mA
A: FirstIf#= 4 IfCount= 2 Cls=02(comm.) Sub=0e Prot=00
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=30 Driver=option
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=40 Driver=(none)
E: Ad=83(I) Atr=03(Int.) MxPS= 10 Ivl=32ms
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 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= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 1 Cls=02(comm.) Sub=0e Prot=00 Driver=cdc_mbim
E: Ad=88(I) Atr=03(Int.) MxPS= 64 Ivl=32ms
I: If#= 5 Alt= 0 #EPs= 0 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
I:* If#= 5 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim
E: Ad=8e(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=0f(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

AT+QCFG=“usbnet”,0
QMI mode /RMNET/ NDIS mode, it will use the qmi_wwan

AT+QCFG=“usbnet”,2
MBIM mode. for Linux it will use cdc_mbim

Thanks for your reply.

By the way, if RM500Q-GL is switched from QMI mode to MBIM mode, even if the machine and SIM card are the same, the signal quality displayed by ModemManager will drop by nearly half.

QMI mode
AT command

+CSQ: 25,99

OK

+QCSQ: "LTE",-63,-95,1,-12                                                      
                                                                                
OK                                                                              
                                                                                
+QENG: "servingcell","NOCONN"                                                   
+QENG: "LTE","FDD",454,00,545D70C,499,1400,3,5,5,6A3,-95,-12,-61,9,5,170,-      
+QENG: "NR5G-NSA",454,00,803,-97,14,-11,632352,78,7,1                           
                                                                                
OK

ModemManager debug log

<debug> [1727151119.933735] [/dev/cdc-wdm1] received generic response (translated)...
<<<<<< QMUX:
<<<<<<   length  = 40
<<<<<<   flags   = 0x80
<<<<<<   service = "nas"
<<<<<<   client  = 3
<<<<<< QMI:
<<<<<<   flags       = "response"
<<<<<<   transaction = 19
<<<<<<   tlv_length  = 28
<<<<<<   message     = "Get Signal Info" (0x004F)
<<<<<< TLV:
<<<<<<   type       = "Result" (0x02)
<<<<<<   length     = 4
<<<<<<   value      = 00:00:00:00
<<<<<<   translated = SUCCESS
<<<<<< TLV:
<<<<<<   type       = "LTE Signal Strength" (0x14)
<<<<<<   length     = 6
<<<<<<   value      = C1:F3:A0:FF:0E:00
<<<<<<   translated = [ rssi = '-63' rsrq = '-13' rsrp = '-96' snr = '14' ]
<<<<<< TLV:
<<<<<<   type       = "5G Signal Strength" (0x17)
<<<<<<   length     = 4
<<<<<<   value      = A2:FF:9B:00
<<<<<<   translated = [ rsrp = '-94' snr = '155' ]
<<<<<< TLV:
<<<<<<   type       = "5G Signal Strength Extended" (0x18)
<<<<<<   length     = 2
<<<<<<   value      = F5:FF
<<<<<<   translated = -11

<debug> [1727151119.943537] [modem0] RSSI (LTE): -63 dBm
<debug> [1727151119.953411] [modem0] RSRP (5G): -94 dBm
<debug> [1727151119.963416] [modem0] SNR (5G): 15 dB
<debug> [1727151119.973174] [modem0] RSRQ (5G): -11 dB
<debug> [1727151119.983556] [modem0] RSSI: -63 dBm --> 81%
<debug> [1727151119.993483] [modem0] signal quality updated (81)
<debug> [1727151120.003536] [modem0] periodic signal quality and access technology checks scheduled
<debug> [1727151120.867239] [/dev/cdc-wdm1] sent message...

MBIM mode
AT command

+CSQ: 25,99

OK
                                                                    
+QENG: "servingcell","NOCONN"                                                      
+QENG: "LTE","FDD",454,00,545D70C,499,1400,3,5,5,6A3,-95,-12,-62,10,6,150,-        
+QENG: "NR5G-NSA",454,00,809,-106,10,-12,726432,79,6,1   

OK

ModemManager debug log

<debug> [1727168511.479491] [/dev/cdc-wdm1] received message...
>>>>>> RAW:
>>>>>>   length = 120
>>>>>>   data   = 03:00:00:80:78:00:00:00:2B:00:00:00...

<debug> [1727168511.489711] [/dev/cdc-wdm1] received message (translated)...
>>>>>> Header:
>>>>>>   length      = 120
>>>>>>   type        = command-done (0x80000003)
>>>>>>   transaction = 43
>>>>>> Fragment header:
>>>>>>   total   = 1
>>>>>>   current = 0
>>>>>> Contents:
>>>>>>   status error = 'None' (0x00000000)
>>>>>>   service      = 'basic-connect' (a289cc33-bcbb-8b4f-b6b0-133ec2aae6df)
>>>>>>   cid          = 'signal-state' (0x0000000b)
>>>>>> Fields:
>>>>>>   Rssi = '99'
>>>>>>   ErrorRate = '99'
>>>>>>   SignalStrengthInterval = '5'
>>>>>>   RssiThreshold = '2'
>>>>>>   ErrorRateThreshold = '4294967295'
>>>>>>   RsrpSnr = '{
>>>>>>     [0] = {
>>>>>>           Rsrp = '63'
>>>>>>           Snr = '76'
>>>>>>           RsrpThreshold = '4294967295'
>>>>>>           SnrThreshold = '4294967295'
>>>>>>           SystemType = '5g-nsa'
>>>>>>     },
>>>>>>     [1] = {
>>>>>>           Rsrp = '69'
>>>>>>           Snr = '58'
>>>>>>           RsrpThreshold = '4294967295'
>>>>>>           SnrThreshold = '4294967295'
>>>>>>           SystemType = 'lte'
>>>>>>     },
>>>>>>   }'

<debug> [1727168511.500370] [modem0] processed MBIMEx v2.0 signal state response
<debug> [1727168511.510542] [modem0] signal state update: -88dBm --> 44%
<debug> [1727168511.521130] [modem0] signal quality updated (44)
<debug> [1727168511.531404] [modem0] periodic signal quality and access technology checks scheduled
<debug> [1727168512.401530] [/dev/cdc-wdm1] sent message...

I don’t know how the ModemManager measure the signal.
Just from the AT log, the signal is just medium level.

But I did a speed test on both modes, and actually the QMI mode (higher signal quality in MM) performed better. Is there any difference between using QMI mode and MBIM mode in ubuntu?

There are some similarities between the two, but the drivers and some principles are different. MBIM is mainly used for Windows PC.