Anyone testing an MC7430 or other MDM9x30 based modem

Aleksander Morgado aleksander at aleksander.es
Tue Nov 24 06:31:08 PST 2015


On Tue, Nov 24, 2015 at 9:37 AM, Bjørn Mork <bjorn at mork.no> wrote:
>
> [moved from libqmi-devel since it is now completely irrelevant there]
>
> Bjørn Mork <bjorn at mork.no> writes:
>
> > So there is no reply to any of the 'open' messages. Which surprised me,
> > because I had already used one of my more hackish perl scripts to run
> > the Sierra specific 0x555b and 0x555c QMI_DMS commands over MBIM.  And
> > that was successful!
> >
> > I wonder if the main difference is patience?  I send a single MBIM OPEN
> > and then wait.  Trying to do that again is successful, and allows me to
> > use mbimcli just fine.  So the problem seems to be the aggressive
> > 'open'.
>
> I looked for obvious places to insert a reasonable delay between the
> OPENs, and was surprised to see that there already was a 5 second delay
> there.  But that obviously didn't work.  And the reason was simple:
>
> The OPEN processing use the same mbim_device_command() function as the
> other commands.  But at this point there is no self->priv->iochannel,
> which makes mbim_device_command() bail out *before* it applies the
> delay.  So the OPENs are sent back-to-back, which makes this modem fail.
>
> Reordering mbim_device_command() a bit fixes this for me (note the 3
> second delay between OPEN and OPEN_DONE):
>
>
> bjorn at nemi:/usr/local/src/git/libmbim$ src/mbimcli/mbimcli -v -d /dev/cdc-wdm1 --query-device-caps
> [24 Nov 2015, 09:28:05] [Debug] opening device...
> [24 Nov 2015, 09:28:05] [Debug] [/dev/cdc-wdm1] Queried max control message size: 4096
> [24 Nov 2015, 09:28:05] [Debug] [/dev/cdc-wdm1] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 16
> <<<<<<   data   = 01:00:00:00:10:00:00:00:01:00:00:00:00:10:00:00
>
> [24 Nov 2015, 09:28:05] [Debug] [/dev/cdc-wdm1] Sent message (translated)...
> <<<<<< Header:
> <<<<<<   length      = 16
> <<<<<<   type        = open (0x00000001)
> <<<<<<   transaction = 1
> <<<<<< Contents:
> <<<<<<   max_control_transfer = 4096
>
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Received message...
> >>>>>> RAW:
> >>>>>>   length = 16
> >>>>>>   data   = 01:00:00:80:10:00:00:00:01:00:00:00:00:00:00:00
>
> [24 Nov 2015, 09:28:08] [Debug] MBIM Device at '/dev/cdc-wdm1' ready
> [24 Nov 2015, 09:28:08] [Debug] Asynchronously querying device capabilities...
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 48
> <<<<<<   data   = 03:00:00:00:30:00:00:00:02:00:00:00:01:00:00:00:00:00:00:00:A2:89:CC:33:BC:BB:8B:4F:B6:B0:13:3E:C2:AA:E6:DF:01:00:00:00:00:00:00:00:00:00:00:00
>
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Sent message (translated)...
> <<<<<< Header:
> <<<<<<   length      = 48
> <<<<<<   type        = command (0x00000003)
> <<<<<<   transaction = 2
> <<<<<< Fragment header:
> <<<<<<   total   = 1
> <<<<<<   current = 0
> <<<<<< Contents:
> <<<<<<   service = 'basic-connect' (a289cc33-bcbb-8b4f-b6b0-133ec2aae6df)
> <<<<<<   cid     = 'device-caps' (0x00000001)
> <<<<<<   type    = 'query' (0x00000000)
>
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Received message...
> >>>>>> RAW:
> >>>>>>   length = 196
> >>>>>>   data   = 03:00:00:80:C4:00:00:00:02:00:00:00:01:00:00:00:00:00:00:00:A2:89:CC:33:BC:BB:8B:4F:B6:B0:13:3E:C2:AA:E6:DF:01:00:00:00:00:00:00:00:94:00:00:00:03:00:00:00:01:00:00:00:01:00:00:00:02:00:00:00:3C:00:00:00:03:00:00:00:11:00:00:00:08:00:00:00:00:00:00:00:00:00:00:00:40:00:00:00:1E:00:00:00:60:00:00:00:28:00:00:00:88:00:00:00:0C:00:00:00:33:00:35:00:39:00:30:00:37:00:32:00:30:00:36:00:30:00:30:00:30:00:35:00:35:00:36:00:34:00:00:00:53:00:57:00:49:00:39:00:58:00:33:00:30:00:43:00:5F:00:30:00:31:00:2E:00:30:00:38:00:2E:00:30:00:37:00:2E:00:30:00:30:00:4D:00:43:00:37:00:34:00:35:00:35:00
>
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Received message (translated)...
> >>>>>> Header:
> >>>>>>   length      = 196
> >>>>>>   type        = command-done (0x80000003)
> >>>>>>   transaction = 2
> >>>>>> Fragment header:
> >>>>>>   total   = 1
> >>>>>>   current = 0
> >>>>>> Contents:
> >>>>>>   status error = 'None' (0x00000000)
> >>>>>>   service      = 'basic-connect' (a289cc33-bcbb-8b4f-b6b0-133ec2aae6df)
> >>>>>>   cid          = 'device-caps' (0x00000001)
>
> [/dev/cdc-wdm1] Device capabilities retrieved:
>               Device type: 'remote'
>            Cellular class: 'gsm'
>               Voice class: 'no-voice'
>                 Sim class: 'removable'
>                Data class: 'umts, hsdpa, hsupa, lte'
>                  SMS caps: 'pdu-receive, pdu-send'
>                 Ctrl caps: 'reg-manual, multi-carrier'
>              Max sessions: '8'
>         Custom data class: 'unknown'
>                 Device ID: '359072060005564'
>             Firmware info: 'SWI9X30C_01.08.07.00'
>             Hardware info: 'MC7455'
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Sent message...
> <<<<<< RAW:
> <<<<<<   length = 12
> <<<<<<   data   = 02:00:00:00:0C:00:00:00:03:00:00:00
>
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Sent message (translated)...
> <<<<<< Header:
> <<<<<<   length      = 12
> <<<<<<   type        = close (0x00000002)
> <<<<<<   transaction = 3
>
> [24 Nov 2015, 09:28:08] [Debug] [/dev/cdc-wdm1] Received message...
> >>>>>> RAW:
> >>>>>>   length = 16
> >>>>>>   data   = 02:00:00:80:10:00:00:00:03:00:00:00:00:00:00:00
>
> [24 Nov 2015, 09:28:08] [Debug] Device closed
>
>
>
> Patch is attached.
>

Not sure I see this. The mbim_device_command() function for the OPEN
message is called in DEVICE_OPEN_CONTEXT_STEP_OPEN_MESSAGE, and that
is already after DEVICE_OPEN_CONTEXT_STEP_CREATE_IOCHANNEL, where we
create the self->priv->iochannel. What am I missing?

-- 
Aleksander
https://aleksander.es


More information about the libmbim-devel mailing list