Huawei me906s-158
Bjørn Mork
bjorn at mork.no
Wed Mar 2 22:11:34 UTC 2016
Andreas Fett <andreas.fett at secunet.com> writes:
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 3
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 255 Vendor Specific Class
> bInterfaceSubClass 6
> bInterfaceProtocol 22
> iInterface 10 HUAWEI Mobile Connect - Network Card
> ** UNRECOGNIZED: 05 24 00 10 01
> ** UNRECOGNIZED: 06 24 1a 00 01 1f
> ** UNRECOGNIZED: 0d 24 0f 0c 0f 00 00 00 ea 05 03 00 01
> ** UNRECOGNIZED: 05 24 06 03 03
This is a Huawei vendor specific NCM function. It's the first time I've
seen Huawei use subclass 6, and it is not yet matched by the
huawei_cdc_ncm driver (in fact, neither is 4 or 5 - which probably
should be added as well).
Unfortunately there is no easy way to dynamically test this driver with
new devices, since it needs the '.driver_info' field. But you could try
this patch:
diff --git a/drivers/net/usb/huawei_cdc_ncm.c b/drivers/net/usb/huawei_cdc_ncm.c
index 2680a65cd5e4..9b452f83e44c 100644
--- a/drivers/net/usb/huawei_cdc_ncm.c
+++ b/drivers/net/usb/huawei_cdc_ncm.c
@@ -200,6 +200,9 @@ static const struct usb_device_id huawei_cdc_ncm_devs[] = {
{ USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x03, 0x16),
.driver_info = (unsigned long)&huawei_cdc_ncm_info,
},
+ { USB_VENDOR_AND_INTERFACE_INFO(0x12d1, 0xff, 0x06, 0x16),
+ .driver_info = (unsigned long)&huawei_cdc_ncm_info,
+ },
/* Terminating entry */
{
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 0
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 2 Communications
> bInterfaceSubClass 6 Ethernet Networking
> bInterfaceProtocol 0
> iInterface 16 CDC Ethernet Control Model (ECM)
This should work fine with the cdc_ether class driver. But I'm not sure
MM knows how to manage it? Neither do I :) I assume it is managed
using AT commands over serial functions.
> Interface Descriptor:
> bLength 9
> bDescriptorType 4
> bInterfaceNumber 0
> bAlternateSetting 0
> bNumEndpoints 1
> bInterfaceClass 2 Communications
> bInterfaceSubClass 14
> bInterfaceProtocol 0
This is MBIM and should in theory work by default, using the cdc_mbim
class driver. It has a standard management protocol wich MM knows how
to use. Definitely the best choice.
Unless.... There are problems with the MBIM implementation in a number
of newer Huawei devices. Don't know if this is one of them, but it
could be. I am very interested in sorting that out. This is the config
we want to use if at all possible.
What happens if you switch to cfg #3? Is the cdc_mbim driver loaded?
Will MM find an MBIM device? Can you connect it?
Bjørn
More information about the ModemManager-devel
mailing list