EC25 connection manager qmi not working

hello

i connected an ec25 module to a custom board, configured kernel according to instructions. the serial ports ttyUSB0-3, wwan0 and cdc-wdm0 devices are created.
when running quectel-CM, i get the followin output, can you help ?

[01-01_00:07:12:629] Quectel_QConnectManager_Linux_V1.5.5
[01-01_00:07:12:630] Find /sys/bus/usb/devices/1-1 idVendor=0x2c7c idProduct=0x125
[01-01_00:07:12:631] Auto find qmichannel = /dev/cdc-wdm0
[01-01_00:07:12:631] Auto find usbnet_adapter = wwan0
[01-01_00:07:12:631] Modem works in QMI mode
[01-01_00:07:12:637] cdc_wdm_fd = 7
[01-01_00:07:13:638] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_00:07:19:640] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:20:640] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
^C^C[01-01_00:07:27:480] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:32:485] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:37:490] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:42:495] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:47:500] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:52:505] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:57:510] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_00:07:57:510] QMIType 2 has no clientID
[01-01_00:07:57:510] requestBaseBandVersion err = -22
[01-01_00:07:57:510] QMIType 26 has no clientID
[01-01_00:07:57:510] requestSetEthMode err = -22
[01-01_00:07:57:511] QMIType 2 has no clientID
[01-01_00:07:57:511] requestGetSIMStatus err = -22
[01-01_00:07:57:511] requestSetProfile[1] internet.pelephone.net.il///0
[01-01_00:07:57:511] QMIType 1 has no clientID
[01-01_00:07:57:511] requestSetProfile err = -22
[01-01_00:07:57:511] QMIType 1 has no clientID
[01-01_00:07:57:511] requestGetProfile err = -22
[01-01_00:07:57:511] QMIType 3 has no clientID
[01-01_00:07:57:511] requestRegistrationState2 err = -22
[01-01_00:07:57:511] ifconfig wwan0 down

Dear Ronj,
Thanks for your inquiry in Quectel forum.
Could you help to check what is the Linux kernel version that you used ? And double check whether you follow up the following user guide correctly.
Quectel_WCDMA&LTE_Linux_USB_Driver_User_Guide_V1.8.pdf (1.1 MB)

The following is the right test log, please double check it. Thanks!


I got the same problem.
I had already modify kernel by Quectel_WCDMA&LTE_Linux_USB_Driver_User_Guide_V1.8.pdf

dmesg got the normal message ttyUSB0~3 cdc-wdm wwan0…

but quectel-CM got the same fail result

If you meet the same issue, please help to confirm the following information:
1)the driver have installed successful and confirm follow up the user guide;
2)you can try to add the APN parameters to have a try again;
3)whether the module AT command response normally, if yes, please make sure whether the module attach the network successful, and must check the return value of command AT+QCFG=“usbnet”;
4)please confirm the Linux kernel version.

dmesg about ttyUSB0~3/cdc-wdm0/wwan0

usb 1-1.4: New USB device found, idVendor=2c7c, idProduct=0125
usb 1-1.4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 1-1.4: Product: Android
usb 1-1.4: Manufacturer: Android
option 1-1.4:1.0: GSM modem (1-port) converter detected
usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB0
option 1-1.4:1.1: GSM modem (1-port) converter detected
usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB1
option 1-1.4:1.2: GSM modem (1-port) converter detected
usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB2
option 1-1.4:1.3: GSM modem (1-port) converter detected
usb 1-1.4: GSM modem (1-port) converter now attached to ttyUSB3
qmi_wwan 1-1.4:1.4: cdc-wdm0: USB WDM device
qmi_wwan 1-1.4:1.4: Quectel EC25&EC21&EG91&EG95&EG06&EP06&EM06&BG96&AG35 work on RawIP mode
qmi_wwan 1-1.4:1.4 wwan0: register ‘qmi_wwan’ at usb-1e6a1000.ehci-1.4, WWAN/QMI device, 0a:d5:3e:a5:d2:c7

=========================================================
[# /sys/bus/usb/drivers]$ ls
asix cdc_ncm option usbfs
ax88179_178a cdc_subset qcserial usbhid
cdc_ether cdc_wdm qmi_wwan usbserial
cdc_mbim hub usb usbserial_generic

Linux version 4.9.0

AT comman is ok, because pppd can work in normal, but quectel-CM

I tried to use “quectel-CM &” or “quectel-CM -s internet &”, but both fail.
[#/]$ quectel-CM -s internet &
[#/]$ [01-01_20:54:57:370] Quectel_QConnectManager_Linux_V1.5.5
[01-01_20:54:57:380] Find /sys/bus/usb/devices/1-1.4 idVendor=0x2c7c idProduct=0x125
[01-01_20:54:57:380] Auto find qmichannel = /dev/cdc-wdm0
[01-01_20:54:57:380] Auto find usbnet_adapter = wwan0
[01-01_20:54:57:380] Modem works in QMI mode
[01-01_20:54:57:410] cdc_wdm_fd = 7
[01-01_20:54:58:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:04:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:05:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:11:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:12:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:18:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:19:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:25:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:26:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:32:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:33:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:39:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:40:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:46:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:47:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout
[01-01_20:55:53:390] QmiWwanSendQMI poll=0, revents = 0x0, errno: 2 (No such file or directory)
[01-01_20:55:54:390] QmiThreadSendQMITimeout pthread_cond_timeout_np timeout

I got a question, while driver load successfully, ifconfig wwan0 will down or up?
because my wwan0 is down
[# /]$ ifconfig
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

[# /]$ ifconfig -a
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

wwan0 Link encap:Ethernet HWaddr 0A:D5:3E:A5:D2:C7
BROADCAST NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

test at command
AT+QCFG=“usbnet”
+QCFG: “usbnet”,0

OK

the solution for me was changing drain_on_open to “false” in cdc_wdm driver

ronj thanks for your information.
in my cdc-wdm.c
wdm_probe() // is already false
{

rv = wdm_create(intf, ep, maxcom, &wdm_manage_power, false);
}
usb_cdc_wdm_register() // this place is true, I will try to change this value to test
{
rv = wdm_create(intf, ep, bufsize, manage_power, true);
}

Thanks ronj
This mothod can work for me.
But I got another issue, busybox can get ip address . I will try to fix it.

Dear Chance,
Please click the following driver sample code of Linux version 4.9.0. And use it to have a try. Thanks!
https://cnquectel-my.sharepoint.com/:u:/g/personal/asean-fae_quectel_com/EYa59Aip1B9Nhsq5MmfpkwEBNlow478Pd6ng04A6O21dGA?e=22aXkk

Hi Kyson
Thanks for your support.
The dirvers sample code also work in normal. Thanks~

Glad to hear that, you can go on your test. Thanks!

@ronj : thanks! worked for me with an EG25 on linux-4.9.0

modified   drivers/usb/class/cdc-wdm.c
@@ -1038,7 +1038,9 @@ struct usb_driver *usb_cdc_wdm_register(struct usb_interface *intf,
 {
 	int rv = -EINVAL;
 
-	rv = wdm_create(intf, ep, bufsize, manage_power, true);
+	// hack for Quectel EG25-G:
+	// from https://forums.quectel.com/t/ec25-connection-manager-qmi-not-working/3251/5
+	rv = wdm_create(intf, ep, bufsize, manage_power, false);
 	if (rv < 0)
 		goto err;