My continuing USB saga

Walter Dnes waltdnes-SLHPyeZ9y/tg9hUCZPvPmw at public.gmane.org
Tue Mar 28 06:14:22 UTC 2006


  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).

  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.

  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


-- 
Walter Dnes <waltdnes-SLHPyeZ9y/tg9hUCZPvPmw at public.gmane.org> In linux /sbin/init is Job #1
My musings on technology and security at http://tech_sec.blog.ca
--
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