Latest tested working kernel version: 2.6.27.7 Earliest tested failing kernel version: 2.6.28.2 Distribution: Debian Etch Hardware Environment: x86 Software Environment: Problem Description: Huawei E169 HSDPA USB modem (ID 12d1:1001) also functions as a USB memory stick. It has a microsd memory card slot for this. This USB storage is no longer recognized. It also has a CD-ROM mass storage device for the windows drivers and this is not recognized either (doesn't matter). Both storages used to work. The following diff is what caused the regression and reversing it makes 2.6.28.2 work correctly: --- linux-2.6.27.7/drivers/usb/storage/initializers.c 2008-11-21 01:02:37.000000000 +0200 +++ linux-2.6.28.2/drivers/usb/storage/initializers.c 2009-01-25 02:42:07.000000000 +0200 @@ -95,11 +95,10 @@ { int result; - us->iobuf[0] = 0x1; result = usb_stor_control_msg(us, us->send_ctrl_pipe, USB_REQ_SET_FEATURE, USB_TYPE_STANDARD | USB_RECIP_DEVICE, - 0x01, 0x0, us->iobuf, 0x1, 1000); + 0x01, 0x0, NULL, 0x0, 1000); US_DEBUGP("usb_control_msg performing result is %d\n", result); return (result ? 0 : -1); } Steps to reproduce: Attach the stick.
Reply-To: akpm@linux-foundation.org (switched to email. Please respond via emailed reply-to-all, not via the bugzilla web interface). On Wed, 28 Jan 2009 02:34:10 -0800 (PST) bugme-daemon@bugzilla.kernel.org wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=12559 > > Summary: Huawei E169 doesn't work as mass storage anymore > Product: Drivers > Version: 2.5 > KernelVersion: 2.6.28.2 > Platform: All > OS/Version: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: USB > AssignedTo: greg@kroah.com > ReportedBy: kpalberg@gmail.com > > > Latest tested working kernel version: 2.6.27.7 > Earliest tested failing kernel version: 2.6.28.2 A regression. > Distribution: Debian Etch > Hardware Environment: x86 > Software Environment: > > Problem Description: > Huawei E169 HSDPA USB modem (ID 12d1:1001) also functions as a USB memory > stick. It has a microsd memory card slot for this. This USB storage is no > longer recognized. It also has a CD-ROM mass storage device for the windows > drivers and this is not recognized either (doesn't matter). > > Both storages used to work. The following diff is what caused the regression > and reversing it makes 2.6.28.2 work correctly: > > --- linux-2.6.27.7/drivers/usb/storage/initializers.c 2008-11-21 > 01:02:37.000000000 +0200 > +++ linux-2.6.28.2/drivers/usb/storage/initializers.c 2009-01-25 > 02:42:07.000000000 +0200 > @@ -95,11 +95,10 @@ > { > int result; > > - us->iobuf[0] = 0x1; > result = usb_stor_control_msg(us, us->send_ctrl_pipe, > USB_REQ_SET_FEATURE, > USB_TYPE_STANDARD | USB_RECIP_DEVICE, > - 0x01, 0x0, us->iobuf, 0x1, 1000); > + 0x01, 0x0, NULL, 0x0, 1000); > US_DEBUGP("usb_control_msg performing result is %d\n", result); > return (result ? 0 : -1); > } > > > Steps to reproduce: > Attach the stick. > Apparenty caused by commit 1460e5e44cc5ecad7704f63b10dcb3a59d0e008b Author: fangxiaozhi <huananhu@huawei.com> AuthorDate: Wed Oct 15 14:15:36 2008 +0800 Commit: Greg Kroah-Hartman <gregkh@suse.de> CommitDate: Wed Oct 22 10:05:28 2008 -0700 USB: support Huawei data card product IDs
On Monday 09 February 2009, kpalberg wrote: > On Wed, Feb 4, 2009 at 12:58 PM, Rafael J. Wysocki <rjw@sisk.pl> wrote: > > The following bug entry is on the current list of known regressions > > introduced between 2.6.27 and 2.6.28. Please verify if it still should > > be listed and let me know (either way). > > > > > > Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=12559 > > Subject : Huawei E169 doesn't work as mass storage anymore > > Submitter : kpalberg <kpalberg@gmail.com> > > Date : 2009-01-28 02:34 (8 days old) > > Yes, it should be listed. The problem still exists in 2.6.28.4.
On Tuesday 24 February 2009, Greg KH wrote: > On Mon, Feb 23, 2009 at 11:00:52PM +0100, Rafael J. Wysocki wrote: > > Bug-Entry : http://bugzilla.kernel.org/show_bug.cgi?id=12559 > > Subject : Huawei E169 doesn't work as mass storage anymore > > Submitter : kpalberg <kpalberg@gmail.com> > > Date : 2009-01-28 02:34 (27 days old) > > I'm pretty sure this has been tracked down to a buggy firmware in the > device itself, and the company (Huawei) is working on updating it to > solve the issue. > > This is backed up by the fact that Huawei submitted the patch that is > said to have broken this device :)
I have E220 and E176 devices here for testing. E220 and E176 have the same device ID (0x1003). Both have virtual mass-storage CD-ROM with Windows software. But E176 has additional microSD card slot that acts as mass-storage disk. The usb_stor_huawei_e220_init() function does a bad thing: it disables the mass-storage on Huawei devices. The old one was buggy so it did nothing with newer devices - and that's why the microSD slot worked. The patched ("new") function (introduced in 2.6.28) is fixed and works on all devices, disabling everything mass-storage. I think that the entire usb_stor_huawei_e220_init() function in initializers.c and all Huawei entries from unusual_devs.h should be removed. At least for E220 and E176, it does not do any good thing. The "option" module works fine without this "initialization"! Also I don't think that we should hide the virtual CD-ROM on kernel level. It's already hidden by HAL. And AFAIK, it can be overwritten with data that can be useful even in Linux.