Bug 12559
Summary: | Huawei E169 doesn't work as mass storage anymore | ||
---|---|---|---|
Product: | Drivers | Reporter: | kpalberg (kpalberg) |
Component: | USB | Assignee: | Greg Kroah-Hartman (greg) |
Status: | CLOSED INVALID | ||
Severity: | normal | CC: | linux, rjw |
Priority: | P1 | ||
Hardware: | All | ||
OS: | Linux | ||
Kernel Version: | 2.6.28.2 | Subsystem: | |
Regression: | Yes | Bisected commit-id: | |
Bug Depends on: | |||
Bug Blocks: | 11808 |
Description
kpalberg
2009-01-28 02:34:09 UTC
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. |