Im going to explain this all step by step because the solution the edidence points to just doesnt make sence.
hopefully you can spot what im missing.
Recently, i bought a Multi-slot USB card reader/writer.
Its internal and fints ionto the cd-rom drive bay.
It runs off USB. the cable runs though the insite of the computer, out a specially designed PCI slot cover with a hole in it
and into a USB slot at the back.
First boot the slot worked fine, but i had not configured the USB2 driver ehci_hcd to load by default.
so the device was working from USB 1.1 ohci_hcd.
the usb mass storage loads a different scsi lun for each slot in the reader (so you can use multiple cards at once)
everything worked perfect, but at slow usb1 speed.
so i modprobed the usb2 driver ehci_hcd.
The kernel repoerted that the devce had detached from usb1 and attacjhed to usb 2.
but then i get several errors in dmesg saying the device rejected address X, error -71, and read error/64 -71.
ALSO, in usb2, no /dev/sdX nodes are assigned, and the "ACTIVE" light, which is normally ON, and flashing dureing activity went dead. The power light remained on.
So i tried everything i could think of.
re-compiled kernel without PRE-EMPTIVE.
compiled several different kernel versions.
tried under MS windows, Same problem.
then as a last desperat act, i decided to try different usb slots.
one usb slot was too far for the cable to reach (i tabled down the usb cample inside the case to stop it restrictng airflow / hitting graphics card fan, which its close to.
so i had to use a USB extenstion cable, about 60cm long..
then suddenly, the device started working as USB2, i tested with file transfere's, and it was much much faster.
also KDEinfo center reported the device as EHCI.
i took the computer apart again, removed tape, and let extra cable through to reach the working USB slot.
then everything stoped working again. same error in dmesg.
i have now discovered that it was not the differant usb slot that fixed it. but the usb extenstion cable.
I only have 1 usb2 device, so imnot sure if its a buggy usb2 controller, or a buggy BIOS, or a buggy card reader.
but extending the cable with a usb cable extender, made for my mp3 player fixes everything. when i remove it, its broke again.
i cant work out WHY extending the cable fixes it !?
even without the cable, when it doesnt work, the kernel still manages to identify the device correctly with id codes and product names.
motherboard = Chaintech vnf3-250
chipset = nForce-3
relevand loaded modules
sg 27576 0
sd_mod 13208 0
usb_storage 25156 0
scsi_mod 99120 3 sg,sd_mod,usb_storage
usbhid 20612 0
ohci_hcd 16388 0
ehci_hcd 25288 0
usbcore 85496 5 usb_storage,usbhid,ohci_hcd,ehci_hcd
0000:00:02.0 USB Controller: nVidia Corporation CK8S USB Controller (rev a1)
0000:00:02.1 USB Controller: nVidia Corporation CK8S USB Controller (rev a1)
0000:00:02.2 USB Controller: nVidia Corporation nForce3 EHCI USB 2.0 Controller (rev a2)
the USB device is a "Trust CR-3300 Media Bay"
All this cable is doing, is maybe adding a sligh resistance, and a slight extra signal delay.
WHY does it fix my usb ????
Ohhh, and i ve also tried updating the bios, this didnt help.
adding the extension cabl makes usb2 work perfectly, removing instant stops usb 2 from working.
but under usb1, it works fine without the usb extension.
if anything, adding an extension cable should make thesignal worse right !?