<div dir="ltr"><div><div><div>Hi,<br><br></div>I have a custom OS built in the buildroot framework and try to integrate Modem Manager to handle Quectel EG21[the same VID:PID as EC21] using QMI. I've followed Quectel instruction with patching option.c and qmi_wwan in the kernel, libqmi seems to work as expected. Unfortunately, when creating connection over mmcli it always uses ttyUSB2 as primary port, instead of cdc-wdm0 and expecting PPP to be onboard in order to obtain IP address.<br><br></div>I've spent a few days trying to figure out the root cause, here are my findings:<br></div>1. I can connect to network using qmicli, get IP address using udhcpc and ping DNS address<br><i>#  qmicli --device=/dev/cdc-wdm0 --device-open-proxy --wds-start-network="ip-type=4,apn=<a href="http://datamobile.ag">datamobile.ag</a>" --client-no-release-cid --device-open-qmi<br>[01 Jan 1970, 04:00:08] -Warning ** [/dev/cdc-wdm0] couldn't detect transport type of port: unexpected driver detected: qmi_wwan_q<br>[01 Jan 1970, 04:00:08] -Warning ** [/dev/cdc-wdm0] requested QMI mode but unexpected transport type found<br>[/dev/cdc-wdm0] Network started<br>        Packet data handle: '2263396000'<br>[/dev/cdc-wdm0] Client ID not released:<br>     Service: 'wds'<br>            CID: '5'<br>#  udhcpc -q -f -i wwan0<br>udhcpc: started, v1.32.0<br>udhcpc: sending discover<br>udhcpc: sending select for 100.76.170.231<br>udhcpc: lease of 100.76.170.231 obtained, lease time 7200<br>deleting routers<br>adding dns 8.8.8.8<br></i><div><i>adding dns 8.8.4.4<br></i></div><div><br></div><div>2. When using mmcli simple connect command, I can connect to network but get stuck on IP request - that's because I don't use PPP, here is the relevant debug log:<br></div><div><i></i></div><i>Jan  1 04:43:56 zubrOS ModemManager[342]: <debug> [000017037.002863] [modem0/bearer0] looking for best CID matching APN '<a href="http://datamobile.ag">datamobile.ag</a>' and PDP type 'ipv4'...<br>Jan  1 04:43:56 zubrOS ModemManager[342]: <debug> [000017037.003039] [modem0/bearer0] found exact context at CID 4<br>Jan  1 04:43:56 zubrOS ModemManager[342]: <debug> [000017037.003261] [modem0/ttyUSB2/at] device open count is 3 (open)<br>Jan  1 04:43:56 zubrOS ModemManager[342]: <debug> [000017037.003403] [modem0/bearer0] connection through a plain serial AT port: ttyUSB2<br>Jan  1 04:43:56 zubrOS ModemManager[342]: <debug> [000017037.003608] [modem0/ttyUSB2/at] device open count is 4 (open)<br>Jan  1 04:43:56 zubrOS ModemManager[342]: <debug> [000017037.003919] [modem0/ttyUSB2/at] device open count is 3 (close)<br>Jan  1 04:43:56 zubrOS ModemManager[342]: <debug> [000017037.004334] [modem0/ttyUSB2/at] --> 'ATD*99***4#<CR>'<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.059613] [modem0/ttyUSB2/at] <-- '<CR><LF>CONNECT 150000000<CR><LF>'<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.065783] [modem0/bearer0] setting flow control in ttyUSB2: rts-cts<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.068708] [modem0/ttyUSB2/at] enabling RTS/CTS flow control<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.069096] [modem0/ttyUSB2/at] port attributes not fully set<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.069307] [modem0/ttyUSB2/at] flow control settings updated to rts-cts<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.069642] [modem0/ttyUSB2/at] port now connected<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.070119] [modem0/bearer0] connected<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <debug> [000017037.071269] [modem0/bearer0] PPP is required for connection, will ignore disconnection reports<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <info>  [000017037.071682] [modem0] state changed (connecting -> connected)<br>Jan  1 04:43:57 zubrOS ModemManager[342]: <info>  [000017037.092887] [modem0] simple connect state (8/8): all done</i><br><div><i><br></i></div><div>3. I've checked lastest version 1.14.8  as well as 1.12.6, results are the same.<br></div><div>4. I've looked into the debug logs, looks like the problem is that for some reason Modem Manager tries to use cdc-wdm0 port as a AT command port - AT command check fails so it ignores cdc-wdm0 and fallbacks to ttyUSB2:<br><i>Jan  1 04:51:00 zubrOS ModemManager[342]: <debug> [000017460.859237] [filter]   cdc-wdm devices allowed:    yes<br>Jan  1 04:51:35 zubrOS kernel: [   54.178239] qmi_wwan_q 1-1:1.4: cdc-wdm0: USB WDM device<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.405464] [base-manager] adding port cdc-wdm0 at sysfs path: /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1/1-1:1.4/usbmisc/cdc-wdm0<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.420915] [cdc-wdm0] could not get vendor/product id<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.438657] [filter] (usbmisc/cdc-wdm0) port allowed: cdc-wdm device<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.447846] [base-manager] port cdc-wdm0 is first in device /sys/devices/soc0/soc/2100000.aips-bus/2184200.usb/ci_hdrc.1/usb1/1-1<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.452686] [cdc-wdm0] could not get vendor/product id<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.452926] [cdc-wdm0] could not get vendor/product id<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.453594] [plugin-manager] task 5: port grabbed: cdc-wdm0<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.453830] [plugin-manager] task 5,cdc-wdm0: new support task for port<br>Jan  1 04:51:35 zubrOS ModemManager[342]: <debug> [000017495.453969] [plugin-manager] task 5,cdc-wdm0: deferred until min wait time elapsed<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.097261] [plugin-manager] task 5,cdc-wdm0: found '2' plugins to try<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.097370] [plugin-manager] task 5,cdc-wdm0: will try with plugin 'quectel'<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.097474] [plugin-manager] task 5,cdc-wdm0: will try with plugin 'generic'<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.097620] [plugin-manager] task 5,cdc-wdm0: started<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.097735] [plugin-manager] task 5,cdc-wdm0: checking with plugin 'quectel'<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.097997] [plugin/quectel] probes required for port cdc-wdm0: 'at'<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.105918] [cdc-wdm0/probe] launching port probing: 'at'<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.180827] [cdc-wdm0/at] opening serial port...<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.182859] [cdc-wdm0/at] device open count is 1 (open)<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.184505] [cdc-wdm0/at] --> 'AT<CR><LF>'<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.316902] [plugin-manager] task 5: still 6 running probes (5 active): ttyUSB3, ttyUSB0, ttyUSB1, ttyUSB2, wwan0, cdc-wdm0<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.472725] [plugin-manager] task 5,cdc-wdm0: got suggested plugin (quectel)<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.472903] [plugin-manager] task 5: still 5 running probes (5 active): ttyUSB0, ttyUSB1, ttyUSB2, wwan0, cdc-wdm0<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.529726] [plugin-manager] task 5: still 4 running probes (4 active): ttyUSB0, ttyUSB1, ttyUSB2, cdc-wdm0<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.748822] [plugin-manager] task 5: still 3 running probes (3 active): ttyUSB0, ttyUSB1, cdc-wdm0<br>Jan  1 04:51:37 zubrOS ModemManager[342]: <debug> [000017497.967929] [plugin-manager] task 5: still 3 running probes (3 active): ttyUSB0, ttyUSB1, cdc-wdm0<br>Jan  1 04:51:39 zubrOS ModemManager[342]: <debug> [000017499.975497] [cdc-wdm0/at] --> 'AT<CR><LF>'<br>Jan  1 04:51:42 zubrOS ModemManager[342]: <debug> [000017502.972692] [cdc-wdm0/at] --> 'AT<CR><LF>'<br>Jan  1 04:51:44 zubrOS ModemManager[342]: <debug> [000017504.098907] [plugin-manager] task 5: still 2 running probes (2 active): ttyUSB0, cdc-wdm0<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.974499] [cdc-wdm0/probe] port is not AT-capable<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.975249] [plugin-manager] task 5,cdc-wdm0: found best plugin for port (quectel)<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.975721] [plugin-manager] task 5,cdc-wdm0: finished in '10.521877' seconds<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.976232] [plugin-manager] task 5,cdc-wdm0: best plugin matches device reported one: quectel<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.977365] [cdc-wdm0/at] device open count is 0 (close)<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.977820] [cdc-wdm0/at] closing serial port...<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.990382] [cdc-wdm0/at] serial port closed<br>Jan  1 04:51:45 zubrOS ModemManager[342]: <debug> [000017505.993552] [cdc-wdm0/at] forced to close port<br>Jan  1 04:51:47 zubrOS ModemManager[342]: <warn>  [000017507.074976] [plugin/quectel] could not grab port cdc-wdm0: Cannot add port 'usbmisc/cdc-wdm0', unsupported</i><br><br></div><div>That's the point where I stucked and ran out of ideas for further debugging. I expect there might be some udev rule missing for EG21 to make it work, something that would suggest Modem Manager to use cdc-wdm0 as QMI interface instead of AT.<br><br></div><div>Any ideas what is the problem I am facing here? I will appreciate any help.<br><br></div><div>Best Regards,<br></div><div>Rafał<br></div><div><i></i></div></div>