My continuing USB saga

Lennart Sorensen lsorense-1wCw9BSqJbv44Nm34jS7GywD8/FfD2ys at public.gmane.org
Tue Mar 28 13:52:20 UTC 2006


On Tue, Mar 28, 2006 at 01:14:22AM -0500, Walter Dnes wrote:
>   I've now gotten to the point where I can get...
>   - either all my USB devices to run (would you believe "crawl") at USB
>     1.1.  And "mount -t auto" works.
> 
>   - or I can get my USB 2 devices to run at blazing USB2 speed, but USB1
>     devices flake out.  And "mount -t auto" doesn't work on, even on
>     USB2 devices.  But at least I can set up udev rules to mount specific
>     devices, and I know that my backup drives will always be reiserfs and
>     my SD cards (camera) will always be FAT16.
> 
>   My older computer (1999 Dell PIII) was strictly USB 1.1.  ehci_ocd
> would die when I tried loading it, and only ohci_ocd would work.  All my
> USB devices ran ("crawled" might be more accurate) according to spec.
> Even "mount -t auto" worked OK for USB filesystems (SD card and external
> hard drives).

Well a USB 1.1 controller won't do anything with ehci, since that is
only for 2.0.

>   I got a hunch that this might be a clue to my problems on my newer
> machine.  With only ehci_hcd (with or without root hub translation) some
> of my older USB devices would not work at all.  With *BOTH* ohci_ocd and
> ehci_ocd built into the kernel, the older USB devices were a bit flakey.
> "mount -t auto" would die, but "mount -t reiserfs" (or whatever) would
> work OK for the SD card.  The external hard drive refused to work.
> Mount commands failed with the complaint that /dev/sdb1 was not a block
> device (or sometimes did not exist).  It's *SUPPOSED* to be USB2, but
> the connecter looks like a USB1.1 connector.  Unlike the shirt-pocket
> drives, the big external USB has its own power supply, so power should
> not be an issue.

You are supposed to have both a usb 1 and a usb 2 driver loaded to
handle both types of devices.  Otherwise if you only load a usb 1
driver, then all your devices run at the slower speed.

There are also usb controllers that are defective.  Some of the first
usb 2 controllers had a few issues as far as I remember.  There are also
cases where the BIOS's usb legacy emulation for mouse/keyboard breaks
the usb controller setup, although I know there has been some work on
fixing that in recent 2.6 kernels.  Disabling the usb legacy often helps
on those systems, assuming you have a ps/2 keyboard so that you can
still talk to the boot loader.

>   Since I do have 2 USB2 shirt-pocket drives (off-site backup, one of
> them is always in my safety-deposit box), I don't want to go back to
> ohci-only.  After testing various combinations, I settled on building
> ohci_hcd into the kernel, and making ehci_ocd a module.  So now...
> 
>   - all my USB stuff runs fine under ohci_hcd, except for the fact that
>     USB2 stuff runs a lot slower.
> 
>   - after "modprobe ehci_hcd", my USB2 drives run at USB2 speed, but
>     USB1.1 peripherals are either flakey or non-functional and
>     "mount -t auto" no longer works.
> 
>   - after I "rmmod ehci_hcd" things work as before under ohci_hcd.  I
>     have to run "udevstart" if I want to use a device name that I've set
>     up with /etc/udev/rules.d/10-local.rules
> 
>   Anybody have any ideas on getting ohci_hcd and ehci_hcd to co-exist
> and/or force my USB1 peripherals to use ohci_hcd?  Here's a few listings
> of /proc/bus/usb/devices
> 
> External drive under ehci_hcd; does not work.
> 
> T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=480 MxCh=10
> B:  Alloc=  0/800 us ( 0%), #Int=  0, #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-gentoo-r1 ehci_hcd
> S:  Product=EHCI Host Controller
> S:  SerialNumber=0000:00:02.1
> 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=02 Cnt=01 Dev#= 20 Spd=480 MxCh= 0
> D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> P:  Vendor=03e0 ProdID=6830 Rev= 0.01
> S:  Manufacturer=PI-036
> S:  Product=1394/USB2.0 COMBO Drive
> S:  SerialNumber=000000007254
> 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
> 
> 
> 
> Works under ohci_ocd.
> 
> T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh=10
> 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-gentoo-r1 ohci_hcd
> S:  Product=OHCI Host Controller
> S:  SerialNumber=0000:00:02.0
> C:* #Ifs= 1 Cfg#= 1 Atr=e0 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=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#=  2 Spd=12  MxCh= 0
> D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
> P:  Vendor=03e0 ProdID=6830 Rev= 0.01
> S:  Manufacturer=PI-036
> S:  Product=1394/USB2.0 COMBO Drive
> S:  SerialNumber=000000007254
> 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=  64 Ivl=0ms
> E:  Ad=88(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms

Well make sure both ehci and ohci/uhci (chipset dependant) are loaded
before any of the device drivers for usb are loaded.  That is host
things should work.  If they don't there is either a kernel bug, a bios
bug, or a hardware bug.

Len Sorensen
--
The Toronto Linux Users Group.      Meetings: http://tlug.ss.org
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://tlug.ss.org/subscribe.shtml





More information about the Legacy mailing list