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