Cinterion MV31-W modem support

Aleksander Morgado aleksander at aleksander.es
Fri Jul 30 10:18:46 UTC 2021


Hey,

> The change I made is for cinterion plugin only:
> diff --git a/plugins/cinterion/mm-plugin-cinterion.c b/plugins/cinterion/mm-plugin-cinterion.c
> index 48fbb1ac..fe97f900 100644
> --- a/plugins/cinterion/mm-plugin-cinterion.c
> +++ b/plugins/cinterion/mm-plugin-cinterion.c
> @@ -181,9 +181,9 @@ grab_port (MMPlugin *self,
>  G_MODULE_EXPORT MMPlugin *
>  mm_plugin_create (void)
>  {
> -    static const gchar *subsystems[] = { "tty", "net", "usbmisc", NULL };
> +    static const gchar *subsystems[] = { "tty", "net", "usbmisc", "wwan", NULL };
>      static const gchar *vendor_strings[] = { "cinterion", "siemens", NULL };
> -    static const guint16 vendor_ids[] = { 0x1e2d, 0x0681, 0 };
> +    static const guint16 vendor_ids[] = { 0x1e2d, 0x0681, 0x1269, 0 };
>      static const MMAsyncMethod custom_init = {
>          .async  = G_CALLBACK (cinterion_custom_init),
>          .finish = G_CALLBACK (cinterion_custom_init_finish),
>
> The quectel plugins does not whitelist the 0x1269:
> [...]
> [5328]: <debug> [plugin-manager] loaded plugin 'quectel' from '/usr/lib/ModemManager/libmm-plugin-quect el.so'
> [5328]: <debug> [filter] registered plugin whitelist vendor id: 2c7c
> [5328]: <debug> [filter] registered plugin whitelist vendor id: 1eac
> [5328]: <debug> [plugin-manager] loaded plugin 'pantech' from '/usr/lib/ModemManager/libmm-plugin-pante ch.so'
> [...]
> [5328]: <debug> [plugin-manager] task 10,wwan0mbim0: found '3' plugins to try
> [5328]: <debug> [plugin-manager] task 10,wwan0mbim0: will try with plugin 'quectel'
> [5328]: <debug> [plugin-manager] task 10,wwan0mbim0: will try with plugin 'cinterion'
> [5328]: <debug> [plugin-manager] task 10,wwan0mbim0: will try with plugin 'generic'
> [...]
> So it's weird it matches the MV31-W modem

Yes, this is very very weird, and something we'll need to fix at some
point. I'll try to see if I can find a reason for that.

>
> I also tried using the mbimcli directly but it does not work as well:
> root at OpenWrt:~# mbimcli --query-device-caps -d /dev/wwan0mbim0 -v
> [30 Jul 2021, 06:19:33] [Debug] opening device...
> [30 Jul 2021, 06:19:34] [Debug] [/dev/wwan0mbim0] Couldn't query maximum message size: IOCTL_WDM_MAX_COMMAND failed: Not a tty
> [30 Jul 2021, 06:19:34] [Debug] [/dev/wwan0mbim0] Couldn't find descriptors file, possibly not using cdc_mbim
> [30 Jul 2021, 06:19:34] [Debug] [/dev/wwan0mbim0] Fallback to default max control message size: 4096
> [30 Jul 2021, 06:19:34] [Debug] [/dev/wwan0mbim0] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 16
> <<<<<<   data   = 01:00:00:00:10:00:00:00:01:00:00:00:00:10:00:00
>
> [30 Jul 2021, 06:19:34] [Debug] [/dev/wwan0mbim0] Sent message (translated)...
> <<<<<< Header:
> <<<<<<   length      = 16
> <<<<<<   type        = open (0x00000001)
> <<<<<<   transaction = 1
> <<<<<< Contents:
> <<<<<<   max control transfer = 4096
> [...]
> [30 Jul 2021, 06:19:59] [Debug] [/dev/wwan0mbim0] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 16
> <<<<<<   data   = 01:00:00:00:10:00:00:00:06:00:00:00:00:10:00:00
>
> [30 Jul 2021, 06:19:59] [Debug] [/dev/wwan0mbim0] Sent message (translated)...
> <<<<<< Header:
> <<<<<<   length      = 16
> <<<<<<   type        = open (0x00000001)
> <<<<<<   transaction = 6
> <<<<<< Contents:
> <<<<<<   max control transfer = 4096
>
> [30 Jul 2021, 06:20:04] [Debug] open operation timed out: closed
> error: couldn't open the MbimDevice: Operation timed out: device is closed
>
> Not sure if something interesting can be spotted here:
> root at OpenWrt:~# grep "" /sys/kernel/debug/mhi/mhi0/*
> /sys/kernel/debug/mhi/mhi0/channels:LOOPBACK(0) state: 0x0 brstmode: 0x2 pollcfg: 0x0 type: 0x1 event ring: 0 base: 0x0 len: 0x0 rp: 0x0 wp: 0x0 local rp: 0x0000000000000000 local wp: 0x0000000000000000 db: 0x0x0000000000000000
> /sys/kernel/debug/mhi/mhi0/channels:LOOPBACK(1) state: 0x0 brstmode: 0x2 pollcfg: 0x0 type: 0x2 event ring: 0 base: 0x0 len: 0x0 rp: 0x0 wp: 0x0 local rp: 0x0000000000000000 local wp: 0x0000000000000000 db: 0x0x0000000000000000
> /sys/kernel/debug/mhi/mhi0/channels:MBIM(12) state: 0x0 brstmode: 0x0 pollcfg: 0x0 type: 0x1 event ring: 0 base: 0x0 len: 0x0 rp: 0x0 wp: 0x0 local rp: 0x00000000298af610 local wp: 0x00000000298af610 db: 0x0x0000000074e4e060
> /sys/kernel/debug/mhi/mhi0/channels:MBIM(13) state: 0x0 brstmode: 0x0 pollcfg: 0x0 type: 0x2 event ring: 0 base: 0x0 len: 0x0 rp: 0x0 wp: 0x0 local rp: 0x00000000680319b8 local wp: 0x00000000680319b8 db: 0x0x00000000730183f0
> /sys/kernel/debug/mhi/mhi0/channels:DUN(32) state: 0x0 brstmode: 0x2 pollcfg: 0x0 type: 0x1 event ring: 0 base: 0x0 len: 0x0 rp: 0x0 wp: 0x0 local rp: 0x0000000000000000 local wp: 0x0000000000000000 db: 0x0x0000000000000000
> /sys/kernel/debug/mhi/mhi0/channels:DUN(33) state: 0x0 brstmode: 0x2 pollcfg: 0x0 type: 0x2 event ring: 0 base: 0x0 len: 0x0 rp: 0x0 wp: 0x0 local rp: 0x0000000000000000 local wp: 0x0000000000000000 db: 0x0x0000000000000000
> /sys/kernel/debug/mhi/mhi0/channels:IP_HW0_MBIM(100) state: 0x3 brstmode: 0x3 pollcfg: 0x0 type: 0x1 event ring: 2 base: 0x7d018000 len: 0x2000 rp: 0x1007d018000 wp: 0x7d018000 local rp: 0x0000000076b3677a local wp: 0x0000000076b3677a db: 0x0x0000000000000000
> /sys/kernel/debug/mhi/mhi0/channels:IP_HW0_MBIM(101) state: 0x3 brstmode: 0x3 pollcfg: 0x0 type: 0x2 event ring: 3 base: 0x7d01c000 len: 0x2000 rp: 0x1007d01c000 wp: 0x7d01c000 local rp: 0x0000000034401564 local wp: 0x0000000034401564 db: 0x0x0000000000000000
> /sys/kernel/debug/mhi/mhi0/device_wake:Wake count: 0
> /sys/kernel/debug/mhi/mhi0/device_wake:Usage: echo get/put > device_wake to vote/unvote for M0
> /sys/kernel/debug/mhi/mhi0/devices:mhi0: type: Controller dev_wake: 0
> /sys/kernel/debug/mhi/mhi0/devices:LOOPBACK: type: Transfer dev_wake: 0 channels: 0(UL)/1(DL)
> /sys/kernel/debug/mhi/mhi0/devices:MBIM: type: Transfer dev_wake: 0 channels: 12(UL)/13(DL)
> /sys/kernel/debug/mhi/mhi0/devices:DUN: type: Transfer dev_wake: 0 channels: 32(UL)/33(DL)
> /sys/kernel/debug/mhi/mhi0/devices:IP_HW0_MBIM: type: Transfer dev_wake: 0 channels: 100(UL)/101(DL)
> /sys/kernel/debug/mhi/mhi0/events:Index: 0 intmod count: 0 time: 0 base: 0x7d002000 len: 0x1000 rp: 0x7d002180 wp: 0x7d002170 local rp: 0x000000003c6b2158 db: 0x0x000000007d002160
> /sys/kernel/debug/mhi/mhi0/events:Index: 1 intmod count: 0 time: 5 base: 0x7d004000 len: 0x1000 rp: 0x7d004000 wp: 0x7d004ff0 local rp: 0x00000000157b4460 db: 0x0x000000007d004ff0
> /sys/kernel/debug/mhi/mhi0/events:Index: 2 intmod count: 0 time: 1 base: 0x7d008000 len: 0x4000 rp: 0x7d008000 wp: 0x7d00bff0 local rp: 0x0000000035452f1e db: 0x0x000000007d00bff0
> /sys/kernel/debug/mhi/mhi0/events:Index: 3 intmod count: 0 time: 1 base: 0x7d010000 len: 0x4000 rp: 0x7d010000 wp: 0x7d013ff0 local rp: 0x000000006057ed08 db: 0x0x000000007d013ff0
> /sys/kernel/debug/mhi/mhi0/states:PM state: M3 Device: Active MHI state: M3 EE: MISSION MODE wake: false
> /sys/kernel/debug/mhi/mhi0/states:M0: 2 M2: 0 M3: 2 device wake: 0 pending packets: 0
> /sys/kernel/debug/mhi/mhi0/timeout_ms:20000 ms
>

Maybe @Loic Poulain can spot something?

Anyway, before attempting to make it work with ModemManager, try to
make it work with mbimcli only first, that should be the first step.

-- 
Aleksander
https://aleksander.es


More information about the ModemManager-devel mailing list