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