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
Alan probably wants to look at this too...
Can you provde the contents of /proc/bus/usb/devices under 2.6.15 (where the thumbdrive works okay)?
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)?
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 #
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.
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
The echo command worked. Thanks. I guess I should be shopping around for a external power supply or a new usb-2.0 hub.
> 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.