On Tue, 16 May 2006, Ezequiel Valenzuela wrote:

> Hi.
> 
> I've been using Linux for a long time now (very actively for almost 10
> years now), and now I'm stuck with a configuration problem that
> hopefully should be possible to work around.
> 
> I have a Linksys WUSB54GP wireless network adapter. It works well
> under Windows, and even under Linux on my desktop PC (even using it as
> a USB 2.0 device). But on my laptop it's a different story. To cut a
> long story short (see
> http://bugzilla.kernel.org/show_bug.cgi?id=6374), I'm getting
> unexpected "USB disconnect" after a few hours (independently of how
> much the device was used) when using this device with the ehci-hcd
> module. Using the same device as a USB 1.1 device (uhci-hcd module)
> yields no problems, so now I'm trying to move on and use this device
> as a USB 1.1 one until hopefully some day everything starts working
> under ehci-hcd.

It would be interesting to know how Windows manages to make this work.  
Those disconnect events are caused by the hardware.  Maybe there's a bug 
in your EHCI hardware that Windows knows how to compensate for but Linux 
doesn't (because the manufacturer hasn't made it publicly available).

> I've made this device work by removing (rmmod) the ehci-hcd module. I've
> been doing all of this with gentoo's suspend2-sources-2.6.16-r4,
> gentoo-sources-2.6.14-
> r2; and also with vanilla kernels 2.6.16.16, 2.6.17_rc3 and 2.6.17_rc4.
> 
> This is an excerpt from /proc/bus/usb/devices:
> 
> T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
> 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.16-suspend2-r4 uhci_hcd
> S:  Product=UHCI Host Controller
> S:  SerialNumber=0000:00:10.0
> 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=255ms
> 
> T:  Bus=01 Lev=01 Prnt=01 Port=00 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=13b1 ProdID=0011 Rev= 0.04
> S:  Manufacturer=Cisco-Linksys
> S:  Product=Wireless-G ProtableUSB Adapter
> C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=300mA
> I:  If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff
> Driver=ndiswrapper
> E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> E:  Ad=01(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
> 
> As you see, the device is being used as a USB 1.1 one (Spd=12, Bus=01),
> but USB 2.0 capable (Ver=2.00, and I've also seen this device recognised
> as a USB 2.0 device on a previous configuration).

Be careful about the words you use.  The speed at which a USB device runs
is not the same thing as the USB version it supports.  In this case, your
device supports USB-2.0 (and it is recognized as a USB-2.0 device) even
though it is running at full speed (12 Mb/s).

> The question I have for the nice people here is: how do I force the
> kernel to use the uhci-hcd module instead of ehci-hcd *just for this
> device*, considering that I want to plug other USB 2.0 devices to the
> same machine? Is there any solution involving hotplug? (I think it's
> probably "too late" for hotplug to determine which host controller
> device to use). Can I edit some kernel source file (I haven't looked
> into that yet) to force the other host controller driver (uhci-hcd)
> instead of the automatically chosen one (ehci-hcd)?

Unforunately there isn't any good way to do this.  Although it is possible
to force a particular device to use a UHCI controller instead of the EHCI
controller, the code for it doesn't exist in the Linux kernel.

There is a bad way to do it -- by unbinding the ehci-hcd driver from a 
particular EHCI controller.  Then all devices attached to that controller 
will be forced to use the UHCI companion controller instead.  However you 
probably don't want to do this.  Especially not if you have only one EHCI 
controller in your computer; then it would be equivalent to unloading 
ehci-hcd.

> The ndiswrapper module is handling the device at a higher level,
> although I suspect this doesn't have much to do with the problem. I've
> seen identical behaviour showing when using the open source rt2570 and
> even rt2x00 projects' modules instead.
> 
> Hope someone can help me with this.

You're not the only person to ask for this feature.  Maybe I'll find time 
to implement it.

Alan Stern



-------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-users

Reply via email to