Bug 8318 - Cannot use High-speed USB device - ehci_hcd says: "...config 9 has an invalid descriptor of length 0..."
Summary: Cannot use High-speed USB device - ehci_hcd says: "...config 9 has an invalid...
Status: REJECTED INVALID
Alias: None
Product: Drivers
Classification: Unclassified
Component: USB (show other bugs)
Hardware: i386 Linux
: P2 normal
Assignee: Alan Stern
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2007-04-10 12:12 UTC by Mads Lindstr
Modified: 2007-05-01 12:33 UTC (History)
1 user (show)

See Also:
Kernel Version: 2.6.20.6
Subsystem:
Regression: ---
Bisected commit-id:


Attachments
lsusb -v before insertion of USB Device.txt (15.19 KB, text/plain)
2007-04-10 12:14 UTC, Mads Lindstr
Details
lspci -v before insertion of USB Device (5.10 KB, text/plain)
2007-04-10 12:15 UTC, Mads Lindstr
Details
dmesg after insertion of USB Device (30.05 KB, text/plain)
2007-04-10 12:17 UTC, Mads Lindstr
Details
lsmod after insertion of USB Device (3.49 KB, text/plain)
2007-04-10 12:17 UTC, Mads Lindstr
Details
dmesg after rmmod_echi_hcd (30.02 KB, text/plain)
2007-04-10 12:18 UTC, Mads Lindstr
Details
dmesg after modprobe_echi_hcd (30.09 KB, text/plain)
2007-04-10 12:19 UTC, Mads Lindstr
Details
usbmon5t.txt (5.09 KB, text/plain)
2007-04-11 12:38 UTC, Mads Lindstr
Details
first dmesg.txt (30.16 KB, text/plain)
2007-04-11 12:39 UTC, Mads Lindstr
Details
first cat usb devices.txt (3.16 KB, text/plain)
2007-04-11 12:39 UTC, Mads Lindstr
Details
second dmesg.txt (29.98 KB, text/plain)
2007-04-11 12:40 UTC, Mads Lindstr
Details
second cat usb devices.txt (3.46 KB, text/plain)
2007-04-11 12:40 UTC, Mads Lindstr
Details

Description Mads Lindstr 2007-04-10 12:12:33 UTC
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
Comment 1 Mads Lindstr 2007-04-10 12:14:09 UTC
Created attachment 11118 [details]
lsusb -v before insertion of USB Device.txt
Comment 2 Mads Lindstr 2007-04-10 12:15:05 UTC
Created attachment 11119 [details]
lspci -v before insertion of USB Device
Comment 3 Mads Lindstr 2007-04-10 12:17:20 UTC
Created attachment 11120 [details]
dmesg after insertion of USB Device
Comment 4 Mads Lindstr 2007-04-10 12:17:47 UTC
Created attachment 11121 [details]
lsmod after insertion of USB Device
Comment 5 Mads Lindstr 2007-04-10 12:18:23 UTC
Created attachment 11122 [details]
dmesg after rmmod_echi_hcd
Comment 6 Mads Lindstr 2007-04-10 12:19:04 UTC
Created attachment 11123 [details]
dmesg after modprobe_echi_hcd
Comment 7 Anonymous Emailer 2007-04-10 12:28:36 UTC
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.

Comment 8 Alan Stern 2007-04-11 08:39:57 UTC
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.
Comment 9 Mads Lindstr 2007-04-11 12:37:30 UTC
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".
Comment 10 Mads Lindstr 2007-04-11 12:38:42 UTC
Created attachment 11127 [details]
usbmon5t.txt
Comment 11 Mads Lindstr 2007-04-11 12:39:21 UTC
Created attachment 11128 [details]
first dmesg.txt
Comment 12 Mads Lindstr 2007-04-11 12:39:50 UTC
Created attachment 11129 [details]
first cat usb devices.txt
Comment 13 Mads Lindstr 2007-04-11 12:40:17 UTC
Created attachment 11130 [details]
second dmesg.txt
Comment 14 Mads Lindstr 2007-04-11 12:40:36 UTC
Created attachment 11131 [details]
second cat usb devices.txt
Comment 15 Alan Stern 2007-04-11 13:04:29 UTC
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?
Comment 16 Mads Lindstr 2007-05-01 12:33:57 UTC
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

Note You need to log in before you can comment on or make changes to this bug.