On 7/7/06, Alan Stern <[EMAIL PROTECTED]> wrote:
>  On Thu, 6 Jul 2006, Vlado Handziski wrote:
>
> > Hi Alan,
> >
> > one side question with respect to the -EPROTO handling code. We are
> > using libusb  to power control ports on a hub that is chained behind
> > another hub (we discussed this several months ago on the list). We are
> > experiencing similar problems like Christopher since we are
> > intervening behind the back of the driver from userspace. After ten
> > -EPROTO events (because of the Interrupt URBs I presume) the hub
> > driver starts a self-healing procedure repowering the whole tree,
> > eventually powering the port on the hub that we want to keep off.
> >
> > I wanted to ask if the new autosuspend/remote wakeup code that you
> > have proposed, will in any way change this unfortunate behavior? Will
> > there be a way for the user to control this using sysfs, achieving
> > port power control on chained hubs without a re-power because of the
> > -EPROTO events?
>
> The autosuspend changes will not affect this behavior.  Or rather, they
> will affect it somewhat but not in a useful way.
>
> However you can already accomplish what you want.  Your problem is that
> you have hub B plugged into port P of hub A, which is plugged into the
> computer, right?  So when you turn off power to port P, the hub driver
> doesn't like it.
>
> What you need to do is unbind the hub driver from hub B before turning off
> its power.  You do that as follows:
>
>         echo -n PATHNAME >/sys/bus/usb/drivers/hub/unbind
>
> where PATHNAME is the name of the hub interface for hub B, typically
> something like "2-3.4:1.0" -- you'll see it in the
> /sys/bus/usb/drivers/hub directory before doing the unbind.
>
> After you turn the port power back on, the system should automatically
> bind the hub driver back to hub B.  If it doesn't you'll probably want to
> bind it back yourself.  As you might guess, you do that by:
>
>         echo -n PATHNAME >/sys/bus/usb/drivers/hub/bind
>
> If you prefer, it's possible to write a program using libusb to do the
> unbind and bind operations.  That is, I think the current version of
> libusb provides those features; I haven't actually checked.  You certainly
> can do them using usbfs directly without libusb.

Thanks a lot for the tip! It works great! Our setup was developed
before 2.6.13, so the new bind/unbind capability went below my radar.

Vlado

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
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to