Huawei E3276 problem

Bjørn Mork bjorn at mork.no
Thu Feb 14 08:13:58 PST 2013


Fred Lefévère-Laoide <fred at lefevere-laoide.net> writes:

> here it is before switching (disabled in usb_modeswitch.conf)
[..]
>   idVendor           0x12d1 Huawei Technologies Co., Ltd.
>   idProduct          0x1446 E1552/E1800/E173 (HSPA modem)

Did you use the default usb_modeswitch config to switch out of this
mode, or a message snooped from Windows or something else?

FWIW, I believe the Linux default is

  55534243123456780000000000000011062000000100000000000000000000

while Windows might be using

  55534243000000000000000000000011060000000100000000000000000000

> Bus 001 Device 017: ID 12d1:142d Huawei Technologies Co., Ltd.
> Device Descriptor:
>   bLength                18
>   bDescriptorType         1
>   bcdUSB               2.00
>   bDeviceClass            0 (Defined at Interface level)
>   bDeviceSubClass         0
>   bDeviceProtocol         0
>   bMaxPacketSize0        64
>   idVendor           0x12d1 Huawei Technologies Co., Ltd.
>   idProduct          0x142d
>   bcdDevice            1.00
>   iManufacturer           3
>   iProduct                2
>   iSerial                 1
>   bNumConfigurations      1
>   Configuration Descriptor:
>     bLength                 9
>     bDescriptorType         2
>     wTotalLength           55
>     bNumInterfaces          2
>     bConfigurationValue     1
>     iConfiguration          0
>     bmAttributes         0x80
>       (Bus Powered)
>     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        1
>       bAlternateSetting       0
>       bNumEndpoints           2
>       bInterfaceClass         8 Mass Storage
>       bInterfaceSubClass      6 SCSI
>       bInterfaceProtocol     80 Bulk-Only
>       iInterface              0
>       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

This does not look like any usable mode at all.  Only two interfaces,
where one is mass storage and the other only has two endpoints.  That is
most certainly not cdc_ncm.  It is likely a serial function, but not
necessarily something usable as a modem.

I find it surprising if this is the default mode.  Do you have access to
a Windows system you can test this with?  What devices and product IDs
show up there?

What about the other device mode you mentioned (12d1:1401)?  Is that
also as limited as this one?

>> for each of these modes?
>>
>>> lsmod tells me that option and usbwwan are loaded
>>> ttyUSB0 is created but I didn't manage to talk to it (tried minicom
>>> and cat/echo)
>>>
>>> Could you share your cdc_ncm driver for the rPi ?
>> The cdc_ncm changes are in Linux v3.8.
> Raspberry is still in 3.6 ...

No problem.  The necessary patch is backported to 3.6 stable:

bjorn at nemi:/usr/local/src/git/linux$ git log v3.6..stable/linux-3.6.y -- drivers/net/usb/cdc_ncm.c
commit be59563528b8b8668ab3c6cf5ec5091937bf9f2a
Author: Bjørn Mork <bjorn at mork.no>
Date:   Tue Nov 13 03:19:43 2012 +0000

    net: cdc_ncm: add Huawei devices
    
    [ Upstream commit bbc8d9228ea8e37ce29fa96150d10b85a2c7be60 ]
    
    A number of Huawei 3G and LTE modems implement a CDC NCM function,
    including the necessary functional descriptors, but using a non
    standard interface layout and class/subclass/protocol codes.
    
    These devices can be handled by this driver with only a minor
    change to the probing logic, allowing a single combined control
    and data interface.  This works because the devices
    - include a CDC Union descriptor labelling the combined
      interface as both master and slave, and
    - have an alternate setting #1 for the bulk endpoints on the
      combined interface.
    
    The 3G/LTE network connection is managed by vendor specific AT
    commands on a serial function in the same composite device.
    Handling the managment function is out of the scope of this
    driver.  It will be handled by an appropriate USB serial
    driver.
    
    Reported-and-Tested-by: Olof Ermis <olof.ermis at gmail.com>
    Reported-and-Tested-by: Tommy Cheng <tommy7765 at yahoo.com>
    Signed-off-by: Bjørn Mork <bjorn at mork.no>
    Signed-off-by: David S. Miller <davem at davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh at linuxfoundation.org>


But this will not work with the device config above.  You need 3
endpoints and some CDC functional descriptors for that.


Bjørn


More information about the libqmi-devel mailing list