MC7710 CDC MBIM spec violation - no CDC Union!

Hello,

I have been trying to get hold of a MBIM firmware for the MC7710 for a while to be able to ensure full Linux support for it in v3.8, which will be the first Linux relase with a CDC MBIM driver. But unfortunately I have not yet received any such firmware.

Anyway, another MC7710 user got the firmware from an integrator (came on a device integrated in a laptop). The revision is
SWI9200X_03.05.19.04ap r5475 carmd-en-10527 2012/09/17 17:57:14

He sent me a dump of the USB descriptors and there was a big suerprise: Looks like the CDC Union is missing from the MBIM control interface:

Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber       12
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         2 Communications
      bInterfaceSubClass     14 
      bInterfaceProtocol      0 
      iInterface              0 
      CDC Header:
        bcdCDC               1.10
      UNRECOGNIZED CDC:  0c 24 1b 00 01 00 10 10 80 e0 0f 20
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               5

The CDC MBIM v1.0 specification clearly states in section “6.3 COMMUNICATION CLASS INTERFACE DESCRIPTORS”:

and table 6.3 follows up repeating these requirements.

So there is no doubt: This MC7710 firmware revision violates the CDC MBIM specification.

Now I guess that the reason this has not been discovered is that it is only tested against Windows 8, which of course ignores most of the USB-IF specification and use the additional Microsoft requirements instead (i.e. the Microsoft OS descriptors and the IAD).

But Linux cares!

FYI: I am the co-author of the cdc_mbim driver in Linux v3.8, expected to be released in February. This driver will refuse to load on a device with no CDC Union functional descriptor. But do not worry: There is still time to add a workaround, and I am more than willing to do that job. The main goal in Linux is to make devices working.

But I have a wish for Sierra Wireless:
Could you please fix this, IMHO serious, bug in your next firmware revisons and make sure updated firmwares are distributed to all major integrators (Sony, Lenovo, Fujitsu, Panasonic++)?

EDIT: I just got the firmware from my FAE, so no it’s on to fixing the workaround :slight_smile:

Hi,

The MBIM FW for the MC7710 is only meant to support Windows 8. Linux was not part of the scope. If Linux is required , a new feature request should be made through the account manager or FAE.

Thanks.

Well, it’s supported in Linux now anyway :slight_smile:

To be honest, I don’t care whether you fix your firmware bugs or not. I just pointed out an obvious and embarrassing violation of the MBIM specification, for which there is no real excuse. The bug demostrates that the firmware testing has not been good enough. You may claim that is because it is only meant to support Windows 8, but that is a bad excuse. It may happen to support Windows 8 right now, but that can change any time if Microsoft should decide to enforce this part of the MBIM specification.

And who knows which other, less obvious, bugs are hidden in a firmware which is based on the “this happend to work for me” testing model…

Anyway, I understand that there is no point in trying to report firmware bugs here, I’ll just make a note of them in the source code instead since you prefer the public shaming.

Bjørn