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