Bug 6202

Summary: Cannot mount memorex thumbdrive under 2.6.16.
Product: Drivers Reporter: Todd M Roy (tmroy)
Component: USBAssignee: Matthew Dharm (mdharm-usb)
Status: REJECTED DOCUMENTED    
Severity: high CC: greg, stern
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.16-rc5 Subsystem:
Regression: --- Bisected commit-id:
Bug Depends on:    
Bug Blocks: 5089    

Description Todd M Roy 2006-03-09 12:57:58 UTC
Most recent kernel where this bug did not occur: 2.6.15
Distribution: Slackware

Hardware Environment: Dell Optiplex GX1
with secondary NEC usb 2.0 controller.

00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 02)
00:0d.0 USB Controller: NEC Corporation USB (rev 41)
00:0d.1 USB Controller: NEC Corporation USB (rev 41)
00:0d.2 USB Controller: NEC Corporation USB 2.0 (rev 02)
00:0f.0 PCI bridge: Digital Equipment Corporation DECchip 21152 (rev 03)
00:11.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 24)
01:00.0 VGA compatible controller: ATI Technologies Inc 3D Rage Pro AGP 1X/2X
(rev 5c)

Software Environment:
Problem Description:
thumbdrive will not mount, Note that external USB/IDE converter harddrive
will mount.

Steps to reproduce:

1, boot 2.6.16-rc5.


Notes:

I get this (typical message) from DMESG:
usb 1-1.1: USB disconnect, address 4
usb 1-1.1: new high speed USB device using ehci_hcd and address 5
usb 1-1.1: no configuration chosen from 1 choice
usb 1-1.1: USB disconnect, address 5
usb 1-1.1: new high speed USB device using ehci_hcd and address 6
usb 1-1.1: no configuration chosen from 1 choice
usb 1-1.1: USB disconnect, address 6
usb 1-1.1: new high speed USB device using ehci_hcd and address 7
usb 1-1.1: no configuration chosen from 1 choice
Comment 1 Greg Kroah-Hartman 2006-03-09 14:11:21 UTC
Alan probably wants to look at this too...
Comment 2 Alan Stern 2006-03-09 14:18:32 UTC
Can you provde the contents of /proc/bus/usb/devices under 2.6.15 (where the
thumbdrive works okay)?
Comment 3 Todd M Roy 2006-03-09 17:48:06 UTC
Yes I will do that.  Unfortunately, it occurred on my work machine so
It will have to wait until tomorrow.
Also, is it important that the thumbdrive is 1GB?
I plugged in a borrowed 256MB sandisk drive and it worked fine, btw.

-------
Can you provde the contents of /proc/bus/usb/devices under 2.6.15 (where the
thumbdrive works okay)?


Comment 4 Todd M Roy 2006-03-10 04:19:24 UTC
Here is /proc/bus/usb/devices on  2.6.15 with the usb/ide HD mounted and the
memorex 1gb thumbdrive.

Linux pcx6212 2.6.15 #63 PREEMPT Tue Jan 3 12:00:04 EST 2006 i686 unknown
unknown GNU/Linux
root [pcx6212] /proc/bus/usb
# cat devices

T:  Bus=02 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.10 Cls=09(hub  ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.15 uhci_hcd
S:  Product=UHCI Host Controller
S:  SerialNumber=0000:00:07.2
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=255ms

T:  Bus=02 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#=  2 Spd=1.5 MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=051d ProdID=0002 Rev= 1.06
S:  Manufacturer=APC
S:  Product=Back-UPS ES 350 FW:800.e5.D USB FW:e5
S:  SerialNumber=AB0340224343
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=03(HID  ) Sub=00 Prot=00 Driver=(none)
E:  Ad=81(I) Atr=03(Int.) MxPS=   6 Ivl=10ms

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh= 5
B:  Alloc=  0/800 us ( 0%), #Int=  1, #Iso=  0
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 2.06
S:  Manufacturer=Linux 2.6.15 ehci_hcd
S:  Product=EHCI Host Controller
S:  SerialNumber=0000:00:0d.2
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   2 Ivl=256ms

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  2 Spd=480 MxCh= 4
D:  Ver= 2.00 Cls=09(hub  ) Sub=00 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=050d ProdID=0234 Rev= 1.00
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   1 Ivl=256ms

T:  Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#=  4 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0d7d ProdID=1600 Rev= 1.00
S:  Manufacturer=
S:  Product=Memorex TD 2B
S:  SerialNumber=075308943003
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=83(I) Atr=03(Int.) MxPS=  64 Ivl=1ms

T:  Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#=  3 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=04b4 ProdID=6830 Rev= 0.01
S:  Manufacturer=Cypress Semiconductor
S:  Product=USB2.0 Storage Device
S:  SerialNumber=############
C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
root [pcx6212] /proc/bus/usb
#

Comment 5 Alan Stern 2006-03-10 08:03:02 UTC
It looks like the problem is caused by the hub you're plugging the thumbdrive
into.  Apparently it's reporting that it doesn't have an external power source,
so it's running off USB bus power.  That means it can only provide 100 mA of
current to each of its ports, and the thumbdrive says that it requires up to 200
mA to operate, as you can see in the /proc/bus/usb/devices file.

An easy way around the problem is to plug the thumbdrive directly into the
computer instead of into the hub.  Alternatively, if the hub really does have an
external power source that you have left disconnected, you could plug in the
hub's power supply.

There are two other possibilities.  One is that the hub really is receiving
external power but it's telling Linux that it isn't.  If this is the case, you
can find out by turning on USB verbose debugging in the kernel configuration
(CONFIG_USB_DEBUG) and rebuilding the USB drivers.  The kernel will then add a
message to the debugging log when it initializes the hub, saying whether the hub
is bus- or self-powered.  I don't think there's any way to fix the hub if it's
reporting wrong data, but you should be able to use the procedure mentioned
below to configure the thumbdrive.

The other possibility is that your hub really is bus-powered and it really can't
supply enough current for the thumbdrive's peak requirement.  In that case you
will have to configure the thumbdrive manually after plugging it in.  You can do
this by typing (as root):

   echo 1 >/sys/bus/usb/devices/1-1.1/bConfigurationValue

Then you will simply have to run the risk that the thumbdrive might not always
receive enough power from the hub to work properly.
Comment 6 Todd M Roy 2006-03-10 10:38:09 UTC
The big question is since the thumbdrive (and hub) work great under
2.6.15 but not 2.6.16rc5, what changed?  

No - the hub doesn't have an external power supply.

Regards,
  Todd
Comment 7 Todd M Roy 2006-03-10 10:44:22 UTC
The echo command worked.  Thanks.  I guess I should be shopping around for
a external power supply or a new usb-2.0 hub.
Comment 8 Alan Stern 2006-03-10 11:25:07 UTC
> The big question is since the thumbdrive (and hub) work great under
> 2.6.15 but not 2.6.16rc5, what changed?  

The code that checks for power budget violations was added to the kernel between
2.6.15 and 2.6.16.  Before that, the kernel would blindly install USB
configurations regardless of how much power they needed or how little could be
supplied by the upstream connection.

> No - the hub doesn't have an external power supply.

Odd, since its descriptor says that it does have an external power supply.  But
not unheard of; I have a hub that makes the same mistake plus some others.

> The echo command worked.  Thanks.  I guess I should be shopping around for
> a external power supply or a new usb-2.0 hub.

You don't really have to.  If you're happy with the way things are now, you can
just keep using the manual configuration command.  You can even write a udev
script to do it automatically whenever you plug in the thumbdrive.

Anyway, since we've established that the problem isn't a bug, you may as well
close out this bug report.