Sierra Wireless vendor specific DMS messages

Markus Gothe nietzsche at lysator.liu.se
Wed Jul 1 11:44:46 PDT 2015


Oh never mind my first rant on AT-commands...

Yes afaik I know we have had at least one user getting stuck with MBIM-only on Sierra here on the list.

You should follow up with this guy.

//M

Den 1 jul 2015 8:36 em skrev Markus Gothe <nietzsche at lysator.liu.se>:
>
> The vendor specific one is interesting... Might be AT-commands with encapsulation like Huawei does it.
>
> Is it necessary tied with DMS?
> Maybe an upgrade path for fw???
>
> Which version of the SDK is this from? I was looking for USSD-support in an old version of their SDK.
>
> //M
>
> Den 1 jul 2015 10:10 fm skrev Bjørn Mork <bjorn at mork.no>:
> >
> > Hello, 
> >
> > recently there has been a few reports of Sierra modems being 
> > automatically configured for "MBIM only" by Windows8.  Some Sierra 
> > Windows application probably makes this change to avoid presenting a 
> > mess of unsupported functions in Windows, under the assumption that a 
> > module installed in a Windows computer will not be moved to any other 
> > OS.  Which probably is true in almost all cases. 
> >
> > But this does cause serious problems for users who only temporarily 
> > plugged the module into a Windows PC, but intend to use the QMI or AT 
> > functions of the modem.  AFAIK, the only documented way to change the 
> > USB composition setting is vendor specific AT commands.  And the AT 
> > command interface is completely disabled by Windows. 
> >
> > Recently I happend to notice the addition of a couple of new functions 
> > in the DMS part of the Sierra SDK: 
> >         SLQSSwiGetUSBComp() 
> >         SLQSSwiSetUSBComp() 
> >
> > These functions send two vendor specific DMS messages to the modem: 
> > 0x555b and 0x555c. 
> >
> > Trying out 0x555b (get) on my MC7710 without any input was an immediate 
> > success.  It returned two TLVs matching the USB composition output from 
> > the AT command interface: 
> >   0x10: current USB composition (1 byte) 
> >   0x11: (sorted?) array of supported USB compositions (1 byte length 
> >            prefix, 1 byte elements). 
> >
> > This is the sample run using one of my old perl scripts, as I still find 
> > that easiest when testing out new and unknown messages.  But I trust you 
> > are able to decode it.  There is a hexdump of the full QMI messages too, 
> > as you can see: 
> >
> > sending to /dev/cdc-wdm1: 
> > 01 0c 00 00 02 01 00 02 00 5b 55 00 00 
> > => QMUX Header: 
> > =>   len:    0x000c 
> > =>   sender: 0x00 
> > =>   svc:    0x02 
> > =>   cid:    0x01 
> >
> > => QMI Header: 
> > =>   Flags:  0x00 
> > =>   TXN:    0x0002 
> > =>   Cmd:    0x555b 
> > =>   Size:   0x0000 
> > reading from /dev/cdc-wdm1 
> > [Tue Jun 30 18:05:30 2015] read 45 bytes from /dev/cdc-wdm1 
> > 01 2c 00 80 02 01 02 02 00 5b 55 20 00 02 04 00 00 00 00 00 10 01 00 13 11 12 00 11 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 
> > <= QMUX Header: 
> > <=   len:    0x002c 
> > <=   sender: 0x80 
> > <=   svc:    0x02 
> > <=   cid:    0x01 
> >
> > <= QMI Header: 
> > <=   Flags:  0x02 
> > <=   TXN:    0x0002 
> > <=   Cmd:    0x555b 
> > <=   Size:   0x0020 
> > <= [0x02] ( 4) 00 00 00 00      SUCCESS - QMI_ERR_NONE 
> > <= [0x10] ( 1) 13       . 
> > <= [0x11] (18) 11 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16    .................. 
> > got match! 
> >
> >
> > This is matching the AT interface output, but missing the descriptions 
> > and the list of unsupported settings.  I don't know if those are 
> > statically defined or available via some other QMI command: 
> >
> >
> > at!udusbcomp? 
> > !UDUSBCOMP: 19 
> >
> > OK 
> > at!udusbcomp=? 
> > 0  - HIP  DM    NMEA  AT    MDM1  MDM2  MDM3  MS  NOT SUPPORTED 
> > 1  - HIP  DM    NMEA  AT    MDM1  MS              NOT SUPPORTED 
> > 2  - HIP  DM    NMEA  AT    NIC1  MS              NOT SUPPORTED 
> > 3  - HIP  DM    NMEA  AT    MDM1  NIC1  MS        NOT SUPPORTED 
> > 4  - HIP  DM    NMEA  AT    NIC1  NIC2  NIC3  MS  NOT SUPPORTED 
> > 5  - HIP  DM    NMEA  AT    ECM1  MS              NOT SUPPORTED 
> > 6  - DM   NMEA  AT    QMI                         SUPPORTED 
> > 7  - DM   NMEA  AT    RMNET1 RMNET2 RMNET3        SUPPORTED 
> > 8  - DM   NMEA  AT    MBIM                        SUPPORTED 
> > 9  - MBIM                                         SUPPORTED 
> > 10 - NMEA MBIM                                    SUPPORTED 
> > 11 - DM   MBIM                                    SUPPORTED 
> > 12 - DM   NMEA  MBIM                              SUPPORTED 
> > 13 - Config1: comp6    Config2: comp8             SUPPORTED 
> > 14 - Config1: comp6    Config2: comp9             SUPPORTED 
> > 15 - Config1: comp6    Config2: comp10            SUPPORTED 
> > 16 - Config1: comp6    Config2: comp11            SUPPORTED 
> > 17 - Config1: comp6    Config2: comp12            SUPPORTED 
> > 18 - Config1: comp7    Config2: comp8             SUPPORTED 
> > 19 - Config1: comp7    Config2: comp9             SUPPORTED 
> > 20 - Config1: comp7    Config2: comp10            SUPPORTED 
> > 21 - Config1: comp7    Config2: comp11            SUPPORTED 
> > 22 - Config1: comp7    Config2: comp12            SUPPORTED 
> >
> >
> > OK 
> >
> >
> > Onto testing the 0x555c (set) message.  Guessing based on the above data 
> > format and the most common TLV numbering, that the required input TLV is 
> >   0x01: new USB composition (1 byte) 
> >
> > was an immediate success: 
> >
> > sending to /dev/cdc-wdm1: 
> > 01 10 00 00 02 04 00 02 00 5c 55 04 00 01 01 00 0e 
> > => QMUX Header: 
> > =>   len:    0x0010 
> > =>   sender: 0x00 
> > =>   svc:    0x02 
> > =>   cid:    0x04 
> >
> > => QMI Header: 
> > =>   Flags:  0x00 
> > =>   TXN:    0x0002 
> > =>   Cmd:    0x555c 
> > =>   Size:   0x0004 
> > => [0x01] ( 1) 0e       . 
> > reading from /dev/cdc-wdm1 
> > [Tue Jun 30 18:14:38 2015] read 20 bytes from /dev/cdc-wdm1 
> > 01 13 00 80 02 04 02 02 00 5c 55 07 00 02 04 00 00 00 00 00 
> > <= QMUX Header: 
> > <=   len:    0x0013 
> > <=   sender: 0x80 
> > <=   svc:    0x02 
> > <=   cid:    0x04 
> >
> > <= QMI Header: 
> > <=   Flags:  0x02 
> > <=   TXN:    0x0002 
> > <=   Cmd:    0x555c 
> > <=   Size:   0x0007 
> > <= [0x02] ( 4) 00 00 00 00      SUCCESS - QMI_ERR_NONE 
> > got match! 
> >
> >
> > So, that's also a success, and the new setting can be immediately 
> > verified in the AT command interface: 
> >
> > at!udusbcomp? 
> > !UDUSBCOMP: 14 
> >
> >
> >
> > Given that there are currently multiple reports of users facing the 
> > "MBIM only" problem, on modules like MC7710 and MC7354, I believe it 
> > would be great to provide some way for them to use this information to 
> > reset their modules back to some sane setting.  But as usual, I don't 
> > see that I am going to find enough time to implement it.  So I send this 
> > preliminary test info now, along with a completely untested patch for 
> > qmi-service-dms.json, in the hope that someone else can use it.  Maybe 
> > there even are developers on this list with the same problem? 
> >
> > Now, what I've presented is a QMI solution and the problem is that the 
> > modem presents only an MBIM function.  Luckily there are most likely two 
> > ways to overcome that: 
> > 1) Sierra modems are known to probe the control protocol and will 
> >     happily speak QMI if that is the first protocol the hear after 
> >     reset, even in MBIM mode 
> > 2) As I have mentioned earlier: Qualcomm based MBIM devices often have 
> >     a vendor specific MBIM services allowing them to tunnel QMI inside 
> >     MBIM 
> >
> > I have verified manually that the latter solution works with my MC7710. 
> > You can request a QMI DMS client ID via the MBIM QMI service, and the 
> > Sierra vendor specific messages are available. 
> >
> > This is probably more relevant for the libmbim list, but just for 
> > completeness: The UUID of the MBIM QMI service is 
> > 'd1a30bc2-f97a-6e43-bf65-c7e24fb0f0d3'.  There is only one CID (1), 
> > supporting set only. It takes any valid QMI packet as payload and 
> > returns the QMI response packet in the MBIM return payload (aka 
> > 'InformationBuffer').  So it is in effect only a standard MBIM header 
> > prepended to QMI. 
> >
> > I believe support for this MBIM vendor sepcific service would be 
> > generally extremely useful, but I've not yet been able to make up my 
> > mind how it should be modelled within the libqmi/libmbim framework.. 
> >
> >
> >
> > Bjørn 
> >
> > From 56783ed522323a3ced13402aea9acd59e20fc227 Mon Sep 17 00:00:00 2001 
> > From: =?UTF-8?q?Bj=C3=B8rn=20Mork?= <bjorn at mork.no> 
> > Date: Wed, 1 Jul 2015 10:09:59 +0200 
> > Subject: [PATCH] dms: add vendor specific USB composition messages 
> > MIME-Version: 1.0 
> > Content-Type: text/plain; charset=UTF-8 
> > Content-Transfer-Encoding: 8bit 
> >
> > Signed-off-by: Bjørn Mork <bjorn at mork.no> 
> > --- 
> > data/qmi-service-dms.json | 35 +++++++++++++++++++++++++++++++++++ 
> > 1 file changed, 35 insertions(+) 
> >
> > diff --git a/data/qmi-service-dms.json b/data/qmi-service-dms.json 
> > index 706c41a..250cbdf 100644 
> > --- a/data/qmi-service-dms.json 
> > +++ b/data/qmi-service-dms.json 
> > @@ -1188,6 +1188,41 @@ 
> >                       "prerequisites"      : [ { "common-ref" : "Success" } ] } ] }, 
> >
> >    // ********************************************************************************* 
> > +  {  "name"    : "Get USB Composition", 
> > +     "type"    : "Message", 
> > +     "service" : "DMS", 
> > +     "id"      : "0x555B", 
> > +     "version" : "1.0", 
> > +     "output"  : [ { "common-ref" : "Operation Result" }, 
> > +                   { "name"          : "Composition", 
> > +                     "id"            : "0x10", 
> > +                     "mandatory"     : "yes", 
> > +                     "type"          : "TLV", 
> > +                     "format"        : "guint8", 
> > +                     "prerequisites" : [ { "common-ref" : "Success" } ] }, 
> > +                   { "name"               : "Supported", 
> > +                     "id"                 : "0x11", 
> > +                     "mandatory"          : "no", 
> > +                     "type"               : "TLV", 
> > +                     "format"             : "array", 
> > +                     "size-prefix-format" : "guint8", 
> > +                     "array-element"      : { "format" : "guint8" }, 
> > +                     "prerequisites"      : [ { "common-ref" : "Success" } ] } ] }, 
> > + 
> > +  // ********************************************************************************* 
> > +  {  "name"    : "Set USB Composition", 
> > +     "type"    : "Message", 
> > +     "service" : "DMS", 
> > +     "id"      : "0x555C", 
> > +     "version" : "1.0", 
> > +     "input"   : [ { "name"          : "Composition", 
> > +                     "id"            : "0x01", 
> > +                     "mandatory"     : "yes", 
> > +                     "type"          : "TLV", 
> > +                     "format"        : "guint8" } ], 
> > +     "output"  : [ { "common-ref" : "Operation Result" } ] }, 
> > + 
> > +  // ********************************************************************************* 
> >    {  "name"    : "Set FCC Authentication", 
> >       "type"    : "Message", 
> >       "service" : "DMS", 
> > -- 
> > 2.1.4 
> >
> > _______________________________________________
> > libqmi-devel mailing list
> > libqmi-devel at lists.freedesktop.org
> > http://lists.freedesktop.org/mailman/listinfo/libqmi-devel
> _______________________________________________
> libqmi-devel mailing list
> libqmi-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/libqmi-devel


More information about the libqmi-devel mailing list