Hi! I have a strange problem with Huawei BM325 mobile WiMAX modem which has a so-called ZeroCD feature. It works ok under Windows: * at first it shows up as transparent SCSI bulk-only USB mass storage with vid:pid = 12d1:3809. * after the driver is installed, it issues SCSI REZERO command, which turns device into something completely different with vid:pid = 12d1:3808. Excerpt from usbsnoop log: -- URB_FUNCTION_SELECT_CONFIGURATION: ConfigurationDescriptor = 0x881a4948 (configure) ConfigurationDescriptor : bLength = 9 ConfigurationDescriptor : bDescriptorType = 0x00000002 ConfigurationDescriptor : wTotalLength = 0x00000053 ConfigurationDescriptor : bNumInterfaces = 0x00000002 ConfigurationDescriptor : bConfigurationValue = 0x00000001 ConfigurationDescriptor : iConfiguration = 0x00000000 ConfigurationDescriptor : bmAttributes = 0x00000080 ConfigurationDescriptor : MaxPower = 0x000000fa ConfigurationHandle = 0x881fcc58 Interface[0]: Length = 56 Interface[0]: InterfaceNumber = 0 Interface[0]: AlternateSetting = 0 Interface[0]: Class = 0x00000002 Interface[0]: SubClass = 0x00000006 Interface[0]: Protocol = 0x00000000 Interface[0]: InterfaceHandle = 0x8819c578 Interface[0]: NumberOfPipes = 2 Interface[0]: Pipes[0] : MaximumPacketSize = 0x00000100 Interface[0]: Pipes[0] : EndpointAddress = 0x00000081 Interface[0]: Pipes[0] : Interval = 0x00000000 Interface[0]: Pipes[0] : PipeType = 0x00000002 (UsbdPipeTypeBulk) Interface[0]: Pipes[0] : PipeHandle = 0x8819c594 Interface[0]: Pipes[0] : MaxTransferSize = 0x00001000 Interface[0]: Pipes[0] : PipeFlags = 0x00000000 Interface[0]: Pipes[1] : MaximumPacketSize = 0x00000100 Interface[0]: Pipes[1] : EndpointAddress = 0x00000001 Interface[0]: Pipes[1] : Interval = 0x00000000 Interface[0]: Pipes[1] : PipeType = 0x00000002 (UsbdPipeTypeBulk) Interface[0]: Pipes[1] : PipeHandle = 0x8819c5b4 Interface[0]: Pipes[1] : MaxTransferSize = 0x00001000 Interface[0]: Pipes[1] : PipeFlags = 0x00000000 Interface[1]: Length = 56 Interface[1]: InterfaceNumber = 1 Interface[1]: AlternateSetting = 0 Interface[1]: Class = 0x0000000a Interface[1]: SubClass = 0x00000000 Interface[1]: Protocol = 0x00000000 Interface[1]: InterfaceHandle = 0x88211610 Interface[1]: NumberOfPipes = 2 Interface[1]: Pipes[0] : MaximumPacketSize = 0x00000100 Interface[1]: Pipes[0] : EndpointAddress = 0x00000081 Interface[1]: Pipes[0] : Interval = 0x00000000 Interface[1]: Pipes[0] : PipeType = 0x00000002 (UsbdPipeTypeBulk) Interface[1]: Pipes[0] : PipeHandle = 0x8821162c Interface[1]: Pipes[0] : MaxTransferSize = 0x00001000 Interface[1]: Pipes[0] : PipeFlags = 0x00000000 Interface[1]: Pipes[1] : MaximumPacketSize = 0x00000100 Interface[1]: Pipes[1] : EndpointAddress = 0x00000001 Interface[1]: Pipes[1] : Interval = 0x00000000 Interface[1]: Pipes[1] : PipeType = 0x00000002 (UsbdPipeTypeBulk) Interface[1]: Pipes[1] : PipeHandle = 0x8821164c Interface[1]: Pipes[1] : MaxTransferSize = 0x00001000 Interface[1]: Pipes[1] : PipeFlags = 0x00000000 Looks like a CDC device. The problem is that it doesn't work in Linux. :( When I plug the device it only shows up as mass storage but with vid:pid = 12d1:3808. It doesn't work good as mass storage. I've not been able to get any data from it. When I issue SCSI REZERO (using usb_modeswitch), it replugs itself but it still is the same mass storage with vid:pid = 12d1:3808. I've tested several computers and kernels including vanilla 2.6.33-rc8, 2.6.32 from Debian and 2.4.20 in my router. I don't know how can this be possible. Can anybody help me to track down this issue? Attached lsusb output, logs from usbsnoop (Windows) and usbmon (Linux, only device enumeration). I'll be happy to provide any additional information. -- Alexander
Attachment:
logs.tgz
Description: application/compressed-tar
Attachment:
signature.asc
Description: PGP signature