QMI via MBIM for "FCC Authentication" fix

Collin McMillan cmc at nd.edu
Sat Jul 25 16:16:30 PDT 2015


The output is:

AT!UDUSBCOMP=?

0  - reserved                                     NOT SUPPORTED
1  - DM   AT                                      SUPPORTED

I do not know why the value is 6, when only 1 and 0 are listed as options.

On Sat, Jul 25, 2015 at 12:35 PM, Markus Gothe <nietzsche at lysator.liu.se>
wrote:

> And what does "AT!UDUSBCOMP=?" gives you?
>
> //M
>
> Den 25 jul 2015 3:21 fm skrev Collin McMillan <cmc at nd.edu>:
> >
> > I power cycled and then changed the configuration to 1 again.  Then I
> ran lsusb -v (output below), and then ran the AT commands:
> >
> >
> AT
>
> >
>
>
> >
> OK
>
> >
> AT!ENTERCND="A710"
>
> >
>
>
> >
> OK
>
> >
> AT!UDUSBCOMP?
>
> >
>
>
> > !UDUSBCOMP:
> 6
>
> >
> > OK
> >
> > And below, here is the output of lsusb -v just after I changed the
> configuration.
> >
> > Bus 001 Device 002: ID 1199:901f Sierra Wireless, Inc.
> > Device Descriptor:
> >   bLength                18
> >   bDescriptorType         1
> >   bcdUSB               2.00
> >   bDeviceClass            0 (Defined at Interface level)
> >   bDeviceSubClass         0
> >   bDeviceProtocol         0
> >   bMaxPacketSize0        64
> >   idVendor           0x1199 Sierra Wireless, Inc.
> >   idProduct          0x901f
> >   bcdDevice            0.06
> >   iManufacturer           1
> >   iProduct                2
> >   iSerial                 3
> >   bNumConfigurations      1
> >   Configuration Descriptor:
> >     bLength                 9
> >     bDescriptorType         2
> >     wTotalLength          160
> >     bNumInterfaces          4
> >     bConfigurationValue     1
> >     iConfiguration          0
> >     bmAttributes         0xe0
> >       Self Powered
> >       Remote Wakeup
> >     MaxPower              500mA
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        0
> >       bAlternateSetting       0
> >       bNumEndpoints           2
> >       bInterfaceClass       255 Vendor Specific Class
> >       bInterfaceSubClass    255 Vendor Specific Subclass
> >       bInterfaceProtocol    255 Vendor Specific Protocol
> >       iInterface              0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x81  EP 1 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x01  EP 1 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        2
> >       bAlternateSetting       0
> >       bNumEndpoints           3
> >       bInterfaceClass       255 Vendor Specific Class
> >       bInterfaceSubClass      0
> >       bInterfaceProtocol      0
> >       iInterface              0
> >       ** UNRECOGNIZED:  05 24 00 10 01
> >       ** UNRECOGNIZED:  05 24 01 00 00
> >       ** UNRECOGNIZED:  04 24 02 02
> >       ** UNRECOGNIZED:  05 24 06 00 00
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x83  EP 3 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x000c  1x 12 bytes
> >         bInterval               9
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x82  EP 2 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x02  EP 2 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        3
> >       bAlternateSetting       0
> >       bNumEndpoints           3
> >       bInterfaceClass       255 Vendor Specific Class
> >       bInterfaceSubClass      0
> >       bInterfaceProtocol      0
> >       iInterface              0
> >       ** UNRECOGNIZED:  05 24 00 10 01
> >       ** UNRECOGNIZED:  05 24 01 00 00
> >       ** UNRECOGNIZED:  04 24 02 02
> >       ** UNRECOGNIZED:  05 24 06 00 00
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x85  EP 5 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x000c  1x 12 bytes
> >         bInterval               9
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x84  EP 4 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x03  EP 3 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >     Interface Descriptor:
> >       bLength                 9
> >       bDescriptorType         4
> >       bInterfaceNumber        8
> >       bAlternateSetting       0
> >       bNumEndpoints           3
> >       bInterfaceClass       255 Vendor Specific Class
> >       bInterfaceSubClass    255 Vendor Specific Subclass
> >       bInterfaceProtocol    255 Vendor Specific Protocol
> >       iInterface              0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x87  EP 7 IN
> >         bmAttributes            3
> >           Transfer Type            Interrupt
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x000a  1x 10 bytes
> >         bInterval               9
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x86  EP 6 IN
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >       Endpoint Descriptor:
> >         bLength                 7
> >         bDescriptorType         5
> >         bEndpointAddress     0x04  EP 4 OUT
> >         bmAttributes            2
> >           Transfer Type            Bulk
> >           Synch Type               None
> >           Usage Type               Data
> >         wMaxPacketSize     0x0200  1x 512 bytes
> >         bInterval               0
> >
> >
> >
> > On Fri, Jul 24, 2015 at 7:25 PM, Markus Gothe <nietzsche at lysator.liu.se>
> wrote:
> >>
> >> Please after switching it send an ‘lsusb -v’ of the device.
> >> Either you are in 'QMI-mode’ or you are not.
> >>
> >> It is not a tristate…
> >> However try doing the ‘A710’-trick and then 'AT!UDUSBCOMP?'
> >>
> >> //M
> >>
> >> On 25 Jul 2015, at 00:55 , Collin McMillan <cmc at nd.edu> wrote:
> >>
> >>> Hi Folks,
> >>>
> >>> I am poking around with a new Sierra Wireless EM7355 in a Lenovo
> T440p.  I've had two big problems getting it to work, one being easily
> solvable (https://bugs.freedesktop.org/show_bug.cgi?id=91351).
> >>>
> >>> The other problem is the "FCC Authentication" trick discussed here:
> >>> https://bugzilla.kernel.org/show_bug.cgi?id=92101
> >>>
> >>> That trick doesn't work on my modem because the EM7355 apparently
> doesn't support a QMI interface.  It starts up in MBIM mode.  I can switch
> it to QMI mode by setting bConfiguationValue in /sys/bus/usb/devices/1-10
> to 1.  The device reattaches with the proper ttyUSB devices.  I can connect
> to ttyUSB2 with minicom and issue AT commands.  The password A701 even lets
> me change the maintenance settings just fine.  However, no QMI commands are
> possible.  Just for example:
> >>>
> >>> =============================================
> >>> # qmicli -d /dev/cdc-wdm0 --dms-get-capabilities --verbose
> >>> [24 Jul 2015, 18:33:31] [Debug] [/dev/cdc-wdm0] Opening device with
> flags 'none'...
> >>> [24 Jul 2015, 18:33:31] [Debug] QMI Device at '/dev/cdc-wdm0' ready
> >>> [24 Jul 2015, 18:33:31] [Debug] [/dev/cdc-wdm0] Assuming service 'dms'
> is supported...
> >>> [24 Jul 2015, 18:33:31] [Debug] [/dev/cdc-wdm0] Allocating new client
> ID...
> >>> [24 Jul 2015, 18:33:31] [Debug] [/dev/cdc-wdm0] Sent message...
> >>> <<<<<< RAW:
> >>> <<<<<<   length = 16
> >>> <<<<<<   data   = 01:0F:00:00:00:00:00:01:22:00:04:00:01:01:00:02
> >>>
> >>> [24 Jul 2015, 18:33:31] [Debug] [/dev/cdc-wdm0] Sent message
> (translated)...
> >>> <<<<<< QMUX:
> >>> <<<<<<   length  = 15
> >>> <<<<<<   flags   = 0x00
> >>> <<<<<<   service = "ctl"
> >>> <<<<<<   client  = 0
> >>> <<<<<< QMI:
> >>> <<<<<<   flags       = "none"
> >>> <<<<<<   transaction = 1
> >>> <<<<<<   tlv_length  = 4
> >>> <<<<<<   message     = "Allocate CID" (0x0022)
> >>> <<<<<< TLV:
> >>> <<<<<<   type       = "Service" (0x01)
> >>> <<<<<<   length     = 1
> >>> <<<<<<   value      = 02
> >>> <<<<<<   translated = dms
> >>>
> >>> error: couldn't create client for the 'dms' service: CID allocation
> failed in the CTL client: Transaction timed out
> >>> =============================================
> >>>
> >>> In addition, ModemManager reports:
> >>> ....
> >>> ModemManager[2839]: <debug> [1437767847.000186] [mm-port-probe.c:435]
> port_qmi_open_ready(): (usbmisc/cdc-wdm0) error checking QMI support:
> 'Transaction timed out'
> >>> ModemManager[2839]: <debug> [1437767847.000226] [mm-port-probe.c:290]
> mm_port_probe_set_result_qmi(): (usbmisc/cdc-wdm0) port is not QMI-capable
> >>> ....
> >>>
> >>> I have also read reports of some of these modems not supporting QMI,
> only MBIM.  I do have the latest firmware from Sierra.
> >>>
> >>> SO, I am now trying to get the QMI over MBIM procedure going, which is
> rumored to exist. :-)
> >>>
> http://lists.freedesktop.org/archives/modemmanager-devel/2015-July/002087.html
> >>>
> >>> Apparently it is straight forward once you know what to do -- just
> send a QMI message to MBIM service d1a30bc2-f97a-6e43-bf65-c7e24fb0f0d3.  I
> can verify that my modem has this service with:
> >>> mbimcli -d /dev/cdc-wdm0 --query-device-services
> >>>
> >>> This is where I am stuck.  I suppose this is not possible with
> mbimcli, so I am trying to write a utility using libmbim to send the QMI
> FCC auth command through MBIM.  Once I figure that out I am looking at
> adding that functionality to mbimcli.
> >>>
> >>> Would anyone on the list have a few more clues?  Specifically, do I
> need to create the QMI command to wrap in libqmi first, or can it be done
> manually?  Is there a simplified/minimized API usage example somewhere for
> sending MBIM commands?  If not, mbimcli's code will do. :-)
> >>>
> >>> Thanks in advance!
> >>>
> >>> Collin
> >>>
> >>> _______________________________________________
> >>> libmbim-devel mailing list
> >>> libmbim-devel at lists.freedesktop.org
> >>> http://lists.freedesktop.org/mailman/listinfo/libmbim-devel
> >>
> >>
> >> //Markus - The panama-hat hacker
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/libmbim-devel/attachments/20150725/e6b6511f/attachment-0001.html>


More information about the libmbim-devel mailing list