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