How to set QMI mode by default?

Hi,

How to set QMI mode by default?

root@picv6-1:~# qmi-network /dev/cdc-wdm0 start
Profile at ‘/etc/qmi-network.conf’ not found…
Checking data format with 'qmicli -d /dev/cdc-wdm0 --wda-get-data-format '…
error: couldn’t open the QmiDevice: Cannot automatically select QMI/MBIM mode: driver qmi_wwan_q
Device link layer protocol not retrieved: WDA unsupported
Starting network with 'qmicli -d /dev/cdc-wdm0 --wds-start-network= --client-no-release-cid '…
error: couldn’t open the QmiDevice: Cannot automatically select QMI/MBIM mode: driver qmi_wwan_q
error: network start failed, client not allocated

regards
KK

1 Like

Please show the output of cat /sys/kernel/debug/usb/devices

Which Quectel modem are you using now?
For almost all the opensource program, such as libqmi and ModemManager, it does not suppot the Quectel qmi_wwan_q. Please just try the qmi_wwan, the intree driver.

Yes we are using qmi_wwan intree driver

root@picv6-1:~# zcat /proc/config.gz | grep QMI
CONFIG_USB_NET_QMI_WWAN=y

root@picv6-1:~# cat /sys/kernel/debug/usb/devices

T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
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.19
S: Manufacturer=Linux 4.19.94-g5a23bc00e0 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.1.auto
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=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 6 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=030e Rev= 3.18
S: Manufacturer=Quectel
S: Product=Quectel EM05-G
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff 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=00 Driver=option
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_q
E: Ad=89(I) Atr=03(Int.) MxPS= 8 Ivl=32ms
E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

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.19
S: Manufacturer=Linux 4.19.94-g5a23bc00e0 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.1.auto
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=03 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=480 MxCh= 1
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.19
S: Manufacturer=Linux 4.19.94-g5a23bc00e0 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.2.auto
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=04 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.19
S: Manufacturer=Linux 4.19.94-g5a23bc00e0 xhci-hcd
S: Product=xHCI Host Controller
S: SerialNumber=xhci-hcd.2.auto
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

Use standard drivers, QMI or MBIM.

qmicli -p -d /dev/cdc-wdm0 --wds-get-profile-list=3gpp

(perhaps add “sudo”)

Using standard driver won’t work, because with standard driver (qmi_wwan.ko) my modem EM05 is not getting registered, whereas with quectel provided driver qmi_wwan_q.ko it works.

[ 154.507694] qmi_wwan_q 1-1:1.4: cdc-wdm0: USB WDM device
[ 154.519444] qmi_wwan_q 1-1:1.4: Quectel Quectel EM05-G work on RawIP mode
[ 154.529753] qmi_wwan_q 1-1:1.4: rx_urb_size = 1520
[ 154.537290] qmi_wwan_q 1-1:1.4 wwan0: register ‘qmi_wwan_q’ at usb-xhci-hcd.1.auto-1, WWAN/QMI Raw IP device, 0a:da:8b:a5:8b:3e

There is a similar unanswered thread where the user is facing the same problem.
Cannot select between MBIM and QMI - Technical Subjects - Quectel Forums

Regards
KK

Same issue

root@picv6-1:~# qmicli -p -d /dev/cdc-wdm0 --wds-get-profile-list=3gpp
error: couldn’t open the QmiDevice: Cannot automatically select QMI/MBIM mode: driver qmi_wwan_q

regards
KK

You are using the Quectel patched drivers?
“qmi_wwan_q” → “q” at the end, I think, shows it?

Can you tell which Linux kernel you are trying to use? On which board?

Kernel version 4.19.94, on TI Sitara AM437x based board.

Manually add it to the option driver (using echo vid pid … new_id) and switch it to MBIM.
MBIM driver will pick it up by Class and SubClass and not by vid:pid.

It is about completely different modem and it is answered.

@kk2mkk
Please apply it.

diff --git a/drivers/net/usb/qmi_wwan.c b/drivers/net/usb/qmi_wwan.c
index 72a55b6b4211..aeaea6b36714 100644
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -1263,6 +1263,7 @@ static const struct usb_device_id products[] = {
        {QMI_QUIRK_SET_DTR(0x2c7c, 0x0121, 4)}, /* Quectel EC21 Mini PCIe */
        {QMI_QUIRK_SET_DTR(0x2c7c, 0x0191, 4)}, /* Quectel EG91 */
        {QMI_FIXED_INTF(0x2c7c, 0x0296, 4)},    /* Quectel BG96 */
+       {QMI_FIXED_INTF(0x2c7c, 0x030e, 4)},    /* Quectel EM05-G */

        /* 4. Gobi 1000 devices */
        {QMI_GOBI1K_DEVICE(0x05c6, 0x9212)},    /* Acer Gobi Modem Device */

@Bean.Wang-Q
I have the patch in place and thats the reason i have the driver binding messages in dmessages, am I right?

root@picv6-1:~# [98290.224683] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[98290.414721] usb 1-1: New USB device found, idVendor=2c7c, idProduct=030e, bcdDevice= 3.18
[98290.423453] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[98290.431546] usb 1-1: Product: Quectel EM05-G
[98290.436707] usb 1-1: Manufacturer: Quectel
[98290.604335] option 1-1:1.0: GSM modem (1-port) converter detected
[98290.612386] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[98290.622606] option 1-1:1.1: GSM modem (1-port) converter detected
[98290.631539] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[98290.641291] option 1-1:1.2: GSM modem (1-port) converter detected
[98290.649886] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[98290.659778] option 1-1:1.3: GSM modem (1-port) converter detected
[98290.668556] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3
[98290.733819] qmi_wwan_q 1-1:1.4: cdc-wdm0: USB WDM device
[98290.745536] qmi_wwan_q 1-1:1.4: Quectel Quectel EM05-G work on RawIP mode
[98290.758189] qmi_wwan_q 1-1:1.4: rx_urb_size = 1520
[98290.768903] qmi_wwan_q 1-1:1.4 wwan0: register ‘qmi_wwan_q’ at usb-xhci-hcd.1.auto-1, WWAN/QMI Raw IP device, 02:22:bf:59:65:f9

regards
KK

@kk2mkk
Please use the qmi_wwan.c but not the qmi_wwan_q.c if you would like to try the quectel-CM.

The patch is for you to try qmi_wwan with the EM05-G.

Hi Wang,

Thanks for the information applying the patch to qmi_wwan.c file alone solved the issue, i did the changes a week ago but since the forum site was down i couldn’t revert.

After applying the patch, dmesg log:

[ 8630.011473] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[ 8630.201769] usb 1-1: New USB device found, idVendor=2c7c, idProduct=030e, bcdDevice= 3.18

[ 8630.210619] usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[ 8630.218660] usb 1-1: Product: Quectel EM05-G
[ 8630.223755] usb 1-1: Manufacturer: Quectel
root@picv6-1:/home/sdk/kernel-4.19.x# [ 8630.391274] option 1-1:1.0: GSM modem (1-port) converter detected
[ 8630.399387] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB0
[ 8630.409736] option 1-1:1.1: GSM modem (1-port) converter detected
[ 8630.418337] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB1
[ 8630.427923] option 1-1:1.2: GSM modem (1-port) converter detected
[ 8630.436556] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB2
[ 8630.446645] option 1-1:1.3: GSM modem (1-port) converter detected
[ 8630.455171] usb 1-1: GSM modem (1-port) converter now attached to ttyUSB3
[ 8630.520634] qmi_wwan 1-1:1.4: cdc-wdm0: USB WDM device
[ 8630.533770] qmi_wwan 1-1:1.4 wwan0: register ‘qmi_wwan’ at usb-xhci-hcd.1.auto-1, WWAN/QMI device, 86:12:0a:29:a6:bc

Quectel command utilities o/p after applying the patch

root@picv6-1:/home/sdk/kernel-4.19.x# qmi-network /dev/cdc-wdm0 start
Profile at ‘/etc/qmi-network.conf’ not found…
Checking data format with 'qmicli -d /dev/cdc-wdm0 --wda-get-data-format '…
Device link layer protocol retrieved: raw-ip
Getting expected data format with ‘qmicli -d /dev/cdc-wdm0 --get-expected-data-format’…
Expected link layer protocol retrieved: 802-3
Updating kernel link layer protocol with ‘qmicli -d /dev/cdc-wdm0 --set-expected-data-format=raw-ip’…
Kernel link layer protocol updated
Starting network with 'qmicli -d /dev/cdc-wdm0 --wds-start-network= --client-no-release-cid '…
Saving state at /tmp/qmi-network-state-cdc-wdm0… (CID: 6)
Saving state at /tmp/qmi-network-state-cdc-wdm0… (PDH: 2261731792)
Network started successfully

Regards,
KK