EC25 modem qmi driver only partially working

Hey there,

We are evaluating the Quectel EC25 LTE module using the “Quectel EC25-E-TE-A” module on the “Quectel UMTS&LTE EVB KIT” Evaluation Kit.
Our host runs android 11, kernel 5.10.72.

output of dmesg after plugging in the module:

[ 1061.185931] usb 2-1.2: new high-speed USB device number 7 using ci_hdrc
[ 1061.310165] usb 2-1.2: New USB device found, idVendor=2c7c, idProduct=0125, bcdDevice= 3.18
[ 1061.319618] usb 2-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 1061.327759] usb 2-1.2: Product: EC25-E
[ 1061.332298] usb 2-1.2: Manufacturer: Quectel
[ 1061.337410] usb 2-1.2: SerialNumber: 0123456789ABCDEF
[ 1061.348793] qmi_wwan_q 2-1.2:1.4: cdc-wdm0: USB WDM device
[ 1061.355118] qmi_wwan_q 2-1.2:1.4: Quectel EC25&EC21&EG91&EG95&EG06&EP06&EM06&EG12&EP12&EM12&EG16&EG18&BG96&AG35 work on RawIP mode
[ 1061.369315] qmi_wwan_q 2-1.2:1.4: rx_urb_size = 1520
[ 1061.381089] qmi_wwan_q 2-1.2:1.4 wwan0: register ‘qmi_wwan_q’ at usb-ci_hdrc.1-1.2, WWAN/QMI device, 0a:37:21:c0:e2:59

There is not more output regarding the module.

relevant output of cat /sys/kernel/debug/usb/devices:

T: Bus=02 Lev=02 Prnt=04 Port=01 Cnt=02 Dev#= 7 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
P: Vendor=2c7c ProdID=0125 Rev= 3.18
S: Manufacturer=Quectel
S: Product=EC25-E
S: SerialNumber=0123456789ABCDEF
C:* #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
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=(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=(none)
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=(none)
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

neither the described /dev/wwanX nor /dev/cdc-wdmX are created, so no communication is possible with the module.

In the linux kernel, the requested qmi_wwan_q.c is pasted into the corresponding directory, also the makefile was correctly modified.

Is there anything I have overlooked or another reason why the two needed devices are not created?

Thanks in advance and best regards
Julian

It is android. And please try


diff --git a/system/core/init/devices.cpp b/system/core/init/devices.cpp
--- a/system/core/init/devices.cpp
+++ b/system/core/init/devices.cpp
@@ -407,6 +407,8 @@ void DeviceHandler::HandleDeviceEvent(const Uevent& uevent) {
             int device_id = uevent.minor % 128 + 1;
             devpath = StringPrintf("/dev/bus/usb/%03d/%03d", bus_id, device_id);
         }
+    } else if (uevent.subsystem == "usbmisc" && !uevent.device_name.empty()) {
+        devpath = "/dev/" + uevent.device_name;
     } else if (StartsWith(uevent.subsystem, "usb")) {
         // ignore other USB events
         return;