Cinterion MV31-W modem support

Aleksander Morgado aleksander at aleksander.es
Thu Jul 29 13:48:50 UTC 2021


Hey,

> I have modified the plugin as suggested.
> There's some progress but no success yet.
>
> I have started Modem Manager, then executed (we're running on openwrt with no udev):
> mmcli --report-kernel-event="action=add,subsystem=wwan,name=wwan0mbim0"
>
> And then observed that Modem Manager tried talking to modem using QMI first and them MBIM but without success. The log is below.
>

Ok. I think you're the first ones I know of doing that testing :)

> Thanks,
> Tomasz
>
> root at OpenWrt:~# ls /dev/wwan*
> /dev/wwan0at0    /dev/wwan0mbim0
>
> [7442]: <debug> [base-manager] kernel event reported:
> [7442]: <debug> [base-manager]   action:    add
> [7442]: <debug> [base-manager]   subsystem: wwan
> [7442]: <debug> [base-manager]   name:      wwan0mbim0
> [7442]: <debug> [base-manager]   uid:       n/a
> [7442]: <debug> [wwan0mbim0] preloading contents and properties...
> [7442]: <debug> [wwan0mbim0] sysfs path: /sys/devices/platform/soc at 0/884057000000.pci/pci0002:57/0002:57:00.0/0002:58:00.0/mhi0/wwan/wwan0/wwan0mbim0
> [7442]: <debug> [wwan0mbim0] port contents loaded:
> [7442]: <debug> [wwan0mbim0]   bus: pci
> [7442]: <debug> [wwan0mbim0]   device: /sys/devices/platform/soc at 0/884057000000.pci/pci0002:57/0002:57:00.0
> [7442]: <debug> [wwan0mbim0]   subsystems: wwan, mhi, pci
> [7442]: <debug> [wwan0mbim0]   drivers: mhi-pci-generic, pcieport
> [7442]: <debug> [wwan0mbim0]   vendor: 177d
> [7442]: <debug> [wwan0mbim0]   product: a22d
> [7442]: <debug> [wwan0mbim0]   revision: 0002
> [7442]: <debug> [wwan0mbim0]   ID_VENDOR_ID: 0x177d
> [7442]: <debug> [wwan0mbim0]   ID_MODEL_ID: 0xa22d
> [7442]: <debug> [wwan0mbim0]   ID_REVISION: 0x0002
> [7442]: <debug> [wwan0mbim0] property added: ID_MM_CANDIDATE=1
> [7442]: <warn>  [wwan0mbim0] unknown match condition parameter: ATTR{type}
> [7442]: <warn>  [wwan0mbim0] unknown match condition parameter: ATTR{type}
> [7442]: <warn>  [wwan0mbim0] unknown match condition parameter: ATTR{type}
> [7442]: <warn>  [wwan0mbim0] unknown match condition parameter: ATTR{type}
> [7442]: <warn>  [wwan0mbim0] unknown match condition parameter: ATTR{type}
> [7442]: <warn>  [wwan0mbim0] invalid pattern in rule '*MBIM': Error while compiling regular expression *MBIM at char 0: nothing to repeat
> [7442]: <warn>  [wwan0mbim0] invalid pattern in rule '*QMI': Error while compiling regular expression *QMI at char 0: nothing to repeat
> [7442]: <warn>  [wwan0mbim0] invalid pattern in rule '*AT': Error while compiling regular expression *AT at char 0: nothing to repeat
> [7442]: <warn>  [wwan0mbim0] invalid pattern in rule '*QCDM': Error while compiling regular expression *QCDM at char 0: nothing to repeat
> [7442]: <warn>  [wwan0mbim0] invalid pattern in rule '*FIREHOSE': Error while compiling regular expression *FIREHOSE at char 0: nothing to repeat

Those warnings above show that the current available rules to flag
port type hints based on either type or name are failing badly when
using the limited built-in udev parser. I've opened this issue to
track it: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/410

> [7442]: <debug> [base-manager] adding port wwan0mbim0 at sysfs path: /sys/devices/platform/soc at 0/884057000000.pci/pci0002:57/0002:57:00.0/0002:58:00.0/mhi0/wwan/wwan0/wwan0mbim0
> [7442]: <debug> [filter] (wwan/wwan0mbim0) port allowed: wwan device
> [7442]: <debug> [base-manager] port wwan0mbim0 is first in device /sys/devices/platform/soc at 0/884057000000.pci/pci0002:57/0002:57:00.0
> [7442]: <debug> [plugin-manager] task 2: new support task for device: /sys/devices/platform/soc at 0/884057000000.pci/pci0002:57/0002:57:00.0
> [7442]: <debug> [plugin-manager] task 2: port grabbed: wwan0mbim0
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: new support task for port
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: deferred until min wait time elapsed
> [7442]: <debug> [plugin-manager] task 2: min wait time elapsed
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: found '3' plugins to try
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: will try with plugin 'quectel'
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: will try with plugin 'cinterion'
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: will try with plugin 'generic'
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: started
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: checking with plugin 'quectel'

Wait what, it should not attempt to try with the quectel plugin at
all. Can you share what specific changes you did? Did you by any
chance modify the quectel plugin to add the cinterion PCI vid as a
test?

> [7442]: <debug> [plugin/quectel] probes required for port wwan0mbim0: 'at, at-vendor, qcdm, qmi, mbim'
> [7442]: <debug> [wwan0mbim0/probe] launching port probing: 'at, at-vendor, qcdm, qmi, mbim'
> [7442]: <debug> [plugin-manager] task 2: extra probing time elapsed
> [7442]: <debug> [plugin-manager] task 2: still 1 running probes (1 active): wwan0mbim0
> [7442]: <debug> [wwan0mbim0/at] opening serial port...
> [7442]: <debug> [wwan0mbim0/at] device open count is 1 (open)
> [7442]: <debug> [wwan0mbim0/at] --> 'AT<CR><LF>'
> [7442]: <debug> [plugin-manager] task 2: min probing time elapsed
> [7442]: <debug> [plugin-manager] task 2: still 1 running probes (1 active): wwan0mbim0
> [7442]: <debug> [wwan0mbim0/at] --> 'AT<CR><LF>'
> [7442]: <debug> [wwan0mbim0/at] --> 'AT<CR><LF>'
> [7442]: <debug> [wwan0mbim0/probe] port is not AT-capable
> [7442]: <debug> [wwan0mbim0/probe] probing QCDM...
> [7442]: <debug> [wwan0mbim0/at] device open count is 0 (close)
> [7442]: <debug> [wwan0mbim0/at] closing serial port...
> [7442]: <debug> [wwan0mbim0/at] serial port closed
> [7442]: <debug> [wwan0mbim0/at] forced to close port
> [7442]: <debug> [wwan0mbim0/qcdm] opening serial port...
> [7442]: <debug> [wwan0mbim0/qcdm] device open count is 1 (open)
> [7442]: <debug> [wwan0mbim0/qcdm] --> 7e 00 78 f0 7e
> [7442]: <debug> [wwan0mbim0/qcdm] --> 7e 00 78 f0 7e
> [7442]: <debug> [wwan0mbim0/probe] port is not QCDM-capable
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: checking with plugin 'cinterion'
> [7442]: <debug> [plugin/cinterion] subsystem wwan match
> [7442]: <debug> [plugin/cinterion] port wwan0mbim0 matched pre filters
> [7442]: <debug> [plugin/cinterion] probes required for port wwan0mbim0: 'at, at-vendor, qmi, mbim'
> [7442]: <debug> [wwan0mbim0/probe] launching port probing: 'qmi, mbim'
> [7442]: <debug> [wwan0mbim0/qcdm] device open count is 0 (close)
> [7442]: <debug> [wwan0mbim0/qcdm] closing serial port...
> [7442]: <debug> [wwan0mbim0/qcdm] serial port closed
> [7442]: <debug> [wwan0mbim0/qcdm] forced to close port
> [7442]: <debug> [wwan0mbim0/probe] probing QMI...
> [7442]: <debug> [wwan0mbim0/qmi] Opening QMI device...
> [7442]: <debug> [wwan0mbim0/qmi] Checking if QMI device already opening...
> [7442]: <debug> [wwan0mbim0/qmi] Checking if QMI device already open...
> [7442]: <debug> [wwan0mbim0/qmi] Creating QMI device...
> [7442]: <debug> [wwan0mbim0/qmi] Opening device with flags: version-info, proxy...
> [7442]: [/dev/wwan0mbim0] Opening device with flags 'version-info, proxy'...
> [7442]: [/dev/wwan0mbim0] requested QMI mode but unexpected transport type found
> [7442]: [/dev/wwan0mbim0] created endpoint
> [7442]: cannot connect to proxy: Could not connect: Connection refused
> [7442]: spawning new qmi-proxy (try 1)...
> [7442]: [/dev/wwan0mbim0] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 30
> <<<<<<   data   = 01:1D:00:00:00:00:00:01:00:FF:12:00:01:0F:00:2F:64:65:76:2F:77:77:61:6E:30:6D:62:69:6D:30
> [7442]: [/dev/wwan0mbim0] Sent generic request (translated)...
> <<<<<< QMUX:
> <<<<<<   length  = 29
> <<<<<<   flags   = 0x00
> <<<<<<   service = "ctl"
> <<<<<<   client  = 0
> <<<<<< QMI:
> <<<<<<   flags       = "none"
> <<<<<<   transaction = 1
> <<<<<<   tlv_length  = 18
> <<<<<<   message     = "Internal Proxy Open" (0xFF00)
> <<<<<< TLV:
> <<<<<<   type       = "Device Path" (0x01)
> <<<<<<   length     = 15
> <<<<<<   value      = 2F:64:65:76:2F:77:77:61:6E:30:6D:62:69:6D:30
> <<<<<<   translated = /dev/wwan0mbim0
> [7442]: [/dev/wwan0mbim0] Received message...
> <<<<<< RAW:
> <<<<<<   length = 19
> <<<<<<   data   = 01:12:00:80:00:00:01:01:00:FF:07:00:02:04:00:00:00:00:00
> [7442]: [/dev/wwan0mbim0] Received generic response (translated)...
> <<<<<< QMUX:
> <<<<<<   length  = 18
> <<<<<<   flags   = 0x80
> <<<<<<   service = "ctl"
> <<<<<<   client  = 0
> <<<<<< QMI:
> <<<<<<   flags       = "response"
> <<<<<<   transaction = 1
> <<<<<<   tlv_length  = 7
> <<<<<<   message     = "Internal Proxy Open" (0xFF00)
> <<<<<< TLV:
> <<<<<<   type       = "Result" (0x02)
> <<<<<<   length     = 4
> <<<<<<   value      = 00:00:00:00
> <<<<<<   translated = SUCCESS
> [7442]: [/dev/wwan0mbim0] Checking version info (45 retries)...
> [7442]: [/dev/wwan0mbim0] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 12
> <<<<<<   data   = 01:0B:00:00:00:00:00:02:21:00:00:00
> [7442]: [/dev/wwan0mbim0] Sent generic request (translated)...
> <<<<<< QMUX:
> <<<<<<   length  = 11
> <<<<<<   flags   = 0x00
> <<<<<<   service = "ctl"
> <<<<<<   client  = 0
> <<<<<< QMI:
> <<<<<<   flags       = "none"
> <<<<<<   transaction = 2
> <<<<<<   tlv_length  = 0
> <<<<<<   message     = "Get Version Info" (0x0021)
> [7442]: transaction 0x2 aborted, but message is not abortable
> ...
> [7442]: <debug> [wwan0mbim0/qmi] QMI port open operation failed: Transaction timed out
> [7442]: <debug> [wwan0mbim0/probe] error checking QMI support: Transaction timed out
> [7442]: <debug> [wwan0mbim0/probe] port is not QMI-capable
> [7442]: <debug> [wwan0mbim0/probe] probing MBIM...
> [7442]: opening device...
> [7442]: cannot connect to proxy: Could not connect: Connection refused
> [7442]: spawning new mbim-proxy (try 1)...
> [7442]: [/dev/wwan0mbim0] Couldn't find descriptors file, possibly not using cdc_mbim
> [7442]: [/dev/wwan0mbim0] Fallback to default max control message size: 4096
> [7442]: [/dev/wwan0mbim0] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 92
> <<<<<<   data   = 03:00:00:00:5C:00:00:00:01:00:00:00:01:00:00:00:00:00:00:00:83:8C:F7:FB:8D:0D:4D:7F:87:1E:D7:1D:BE:FB:B3:9B:01:00:00:00:01:00:00:00:2C:00:00:00:0C:00:00:00:1E:00:00:00:2D:00:00:00:2F:00:64:00:65:00:76:00:2F:00:77:00:77:00:61:00:6E:00:30:00:6D:00:62:00:69:00:6D:00:30:00:00:00
> [7442]: [/dev/wwan0mbim0] Sent message (translated)...
> <<<<<< Header:
> <<<<<<   length      = 92
> <<<<<<   type        = command (0x00000003)
> <<<<<<   transaction = 1
> <<<<<< Fragment header:
> <<<<<<   total   = 1
> <<<<<<   current = 0
> <<<<<< Contents:
> <<<<<<   service = 'proxy-control' (838cf7fb-8d0d-4d7f-871e-d71dbefbb39b)
> <<<<<<   cid     = 'configuration' (0x00000001)
> <<<<<<   type    = 'set' (0x00000001)
> <<<<<< Fields:
> <<<<<<   DevicePath = '/dev/wwan0mbim0'
> <<<<<<   Timeout = '45'
> [7442]: proxy configuration failed: closed
> [7442]: <debug> [wwan0mbim0/probe] error checking MBIM support: Transaction timed out
> [7442]: <debug> [wwan0mbim0/probe] port is not MBIM-capable
> [7442]: [/dev/wwan0mbim0] channel destroyed
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: checking with plugin 'generic'
> [7442]: <debug> [plugin/generic] subsystem wwan match
> [7442]: <debug> [plugin/generic] port wwan0mbim0 matched pre filters
> [7442]: <debug> [plugin/generic] probes required for port wwan0mbim0: 'at, qcdm, qmi, mbim'
> [7442]: <debug> [wwan0mbim0/probe] port probing finished: no more probings needed
> [7442]: <debug> [plugin/generic] port wwan0mbim0 matched post filters
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: found best plugin for port (generic)
> [7442]: <debug> [plugin-manager] task 2,wwan0mbim0: finished in '107.328048' seconds
> [7442]: <debug> [plugin-manager] task 2: no more ports to probe
> [7442]: <debug> [plugin-manager] task 2: finished in '107.328514' seconds
> [7442]: <info>  [device /sys/devices/platform/soc at 0/884057000000.pci/pci0002:57/0002:57:00.0] creating modem with plugin 'generic' and '1' ports
> [7442]: <debug> [plugin/generic] subsystem wwan match
> [7442]: <warn>  [plugin/generic] could not grab port wwan0mbim0: Cannot add port 'wwan/wwan0mbim0', unhandled port type
> [7442]: <debug> [modem0] completely disposed
> [7442]: <warn>  [base-manager] couldn't create modem for device '/sys/devices/platform/soc at 0/884057000000.pci/pci0002:57/0002:57:00.0': Failed to find primary AT port
>

I assume here that maybe trying QMI first and then MBIM could have
caused some issues. Once we solve the port type hints, that problem
should go away.

Did you try to use mbimcli directly on the /dev/wwan0mbim0 port? Did that work?

-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list