Most recent kernel where this bug did *NOT* occur: Don't know. But it do also occur for debian kernel 2.6.18-4. Distribution: Debian Etch Hardware Environment: Intel Pentium 4 ASRock 775VM8 motherboard lspci: 00:00.0 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.1 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.2 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.3 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.4 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:00.7 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge 00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge 00:0f.0 RAID bus controller: VIA Technologies, Inc. VIA VT6420 SATA RAID Controller (rev 80) 00:0f.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) 00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 81) 00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86) 00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South] 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 60) 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78) 01:00.0 VGA compatible controller: VIA Technologies, Inc. S3 Unichrome Pro VGA Adapter (rev 02) Problem Description: My external USB hard drive do not work as a high speed device. When I insert it, I get dmesg-error like "...config 9 has an invalid descriptor of length 0...". If I remove ehci_hcd (rmmod ehci_hcd) it starts working, but only at full speed (14 megabit/s). To clarify the problem I did: * lsusb -v >"lsusb_v before insertion of USB Device.txt" * lspci -v >"lspci_v before insertion of USB Device.txt" * Attach device * dmesg >"dmesg after insertion of USB Device.txt" * lsmod >"lsmod after insertion of USB Device.txt" * rmmod ehci_hcd * dmesg >"dmesg after rmmod_echi_hcd.txt" * modprobe ehci_hcd ** returns lots (> 30) blank lines * dmesg >"dmesg after modprobe_echi_hcd.txt" The created files are attached. Also my kernel's .config file is attached. I have also tested the external hard drive on a machine running MS windows. It worked fine, with transfer rates above 15 megabyte/s. However, it was not the same as the box running Linux, as this box is currently Linux-only. Steps to reproduce: * Make ehci_hcd is loaded * Insert USB device into (my) computer
Created attachment 11118 [details] lsusb -v before insertion of USB Device.txt
Created attachment 11119 [details] lspci -v before insertion of USB Device
Created attachment 11120 [details] dmesg after insertion of USB Device
Created attachment 11121 [details] lsmod after insertion of USB Device
Created attachment 11122 [details] dmesg after rmmod_echi_hcd
Created attachment 11123 [details] dmesg after modprobe_echi_hcd
Reply-To: akpm@linux-foundation.org On Tue, 10 Apr 2007 12:12:36 -0700 bugme-daemon@bugzilla.kernel.org wrote: > http://bugzilla.kernel.org/show_bug.cgi?id=8318 > > Summary: Cannot use High-speed USB device - ehci_hcd says: > "...config 9 has an invalid descriptor of length 0..." > Kernel Version: 2.6.20.6 > Status: NEW > Severity: normal > Owner: greg@kroah.com > Submitter: mads_lindstroem@yahoo.dk > > > Most recent kernel where this bug did *NOT* occur: > Don't know. But it do also occur for debian kernel 2.6.18-4. > > Distribution: > Debian Etch > > Hardware Environment: > Intel Pentium 4 > ASRock 775VM8 motherboard > > lspci: > 00:00.0 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge > 00:00.1 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge > 00:00.2 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge > 00:00.3 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge > 00:00.4 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge > 00:00.7 Host bridge: VIA Technologies, Inc. CN400/PM880 Host Bridge > 00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI Bridge > 00:0f.0 RAID bus controller: VIA Technologies, Inc. VIA VT6420 SATA RAID > Controller (rev 80) > 00:0f.1 IDE interface: VIA Technologies, Inc. > VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06) > 00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller > (rev 81) > 00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller > (rev 81) > 00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller > (rev 81) > 00:10.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller > (rev 81) > 00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86) > 00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge > [KT600/K8T800/K8T890 South] > 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 > AC97 Audio Controller (rev 60) > 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78) > 01:00.0 VGA compatible controller: VIA Technologies, Inc. S3 Unichrome Pro VGA > Adapter (rev 02) > > > Problem Description: > My external USB hard drive do not work as a high speed device. When I insert it, > I get dmesg-error like "...config 9 has an invalid descriptor of length 0...". > > If I remove ehci_hcd (rmmod ehci_hcd) it starts working, but only at full speed > (14 megabit/s). > > To clarify the problem I did: > > * lsusb -v >"lsusb_v before insertion of USB Device.txt" > * lspci -v >"lspci_v before insertion of USB Device.txt" > * Attach device > * dmesg >"dmesg after insertion of USB Device.txt" > * lsmod >"lsmod after insertion of USB Device.txt" > * rmmod ehci_hcd > * dmesg >"dmesg after rmmod_echi_hcd.txt" > * modprobe ehci_hcd > ** returns lots (> 30) blank lines > * dmesg >"dmesg after modprobe_echi_hcd.txt" > > The created files are attached. Also my kernel's .config file is attached. > > I have also tested the external hard drive on a machine running MS windows. It > worked fine, with transfer rates above 15 megabyte/s. However, it was not the > same as the box running Linux, as this box is currently Linux-only. > > > Steps to reproduce: > * Make ehci_hcd is loaded > * Insert USB device into (my) computer > > ------- You are receiving this mail because: ------- > You are on the CC list for the bug, or are watching someone who is.
Despite what happens under Windows, it looks like your device isn't working properly. To get more information, use the usbmon facility (see the instructions in the kernel source file Documentation/usb/usbmon.txt). Attach a usbmon trace showing what happens when you plug in the device.
I tried to follow the documentation in "Documentation/usb/usbmon.txt" and did: * mount -t debugfs none_debugs /sys/kernel/debug * modprobe usbmon * ls /sys/kernel/debug/usbmon: 1s 1t 2s 2t 3s 3t 4s 4t 5s 5t * Under the heading "2. Find which bus connects to the desired device", I ran into a bit of trouble. I was not supposed to do the action which triggers the problem before "4. Perform the desired operation on the USB bus". However, the action which triggers the problem is inserting the disc. And if I do not insert the disc, I cannot find the desired device. So I have the chicken and egg problem here... However, after trying different stuff, I did: * reboot computer * mount -t debugfs none_debugs /sys/kernel/debug * modprobe usbmon * cat /sys/kernel/debug/usbmon/5t >"usbmon5t.txt" * insert device * dmesg >"first dmesg.txt" * cat /proc/bus/usb/devices >"first cat usb devices.txt" ** Note that the device is located on bus 5 * rmmod ehci_hcd * modprobe ehci_hcd * dmesg >"second dmesg.txt" * cat /proc/bus/usb/devices >"second cat usb devices.txt" ** Note that the device is located on bus 5 You should notice that "first dmesg.txt" do not contain the "... invalid descriptor ..." line. The "second dmesg.txt" does. I tried the above procedure several times. And they always had the "... invalid descriptor ..." line in the "second dmesg.txt" file. They also had it in two out three of the "first dmesg.txt" files - but not the last one. I played alot with "rmmod ehci_hcd" and "modprobe ehci_hcd". And there were differences from time to time. For example, the manufacture name in dmesg would often be mispelled - but sometimes in different ways. Also when doing "modprobe ehci_hcd" the gnome-terminal would react differently. Sometimes I would see alot of blank lines, sometimes a few blank lines, sometimes none. Most (maybe all) of the time the mouse and keyboard -LEDs would also blink. Another thing is that when using ehci_hcd the external hard drive would be located on bus 5. However, after doing "rmmod ehci_hcd" the external hard drive would be located on bus 4. Is this OK? Actually there would be no bus 5, after doing "rmmod ehci_hcd".
Created attachment 11127 [details] usbmon5t.txt
Created attachment 11128 [details] first dmesg.txt
Created attachment 11129 [details] first cat usb devices.txt
Created attachment 11130 [details] second dmesg.txt
Created attachment 11131 [details] second cat usb devices.txt
Good work. It's quite clear from the usbmon log that the USB data is not being transferred correctly. Just possibly this could be caused by problems with the USB cable or the device, but it's much more likely to be a problem in the computer's high-speed (EHCI) USB controller hardware. The fact that the device works on a different computer tends to support this. Do you have any other high-speed devices you can try plugging in to that computer as a test?
Hi Again Firstly, I have found a way to turn this problem on and off. A long time ago I had, in my BIOS, set "CPU HOST FREQUENCY" down from 200 to 150 MHz. When I set it up again to 200 MHz, the USB devices works flawlessly. Notice, that I had not overclocked my CPU, I had under-clocked it. I had done it to alleviate some heat related issues. I would have thought only overclocking would create problems. Then again, under-clocking related issues are properly not tested as well - neither in the factory or in real life. Anyway, I had forgotten all about under-clocking the CPU, when I tried to use my USB device. I have tried another high-speed device - same problem, same solution. Before figuring out the "HOST FREQUENCY" solution I bought a PCI USB card. If the on-board stuff was broken, I thought buying a new card would solve the issue. But the PCI card behaves the same as the build-in USB. The device also uses via chips. Lastly, thank you very much for your help. And I am sorry to have taken up your time, on what do seem very likely to be a hardware and not a Linux-kernel problem. Greetings, Mads Lindstr