On Fri, 7 Aug 2009, Cory Xie wrote: > Hi experts, > > I'm working on a customized USB stack in a RTOS. I got a weird USB hub > problem and puzzled me for a month. > The hub is using a cascaded two layer TI TUSB2046B hub chips, which > is said to have been used in the USB.org golden tree. > The hub in question (745580 DIOHUB USB 3/3) can be found at: > http://contra-brno.cz/html/Download/usb.pdf > > The weird problem I encountered is described below: > > When I attach two devices (a mouse and a keyboard) to the 2nd layer > ports as below: > > UHCI root hub -->TI hub layer 1 > |->port 1 > |->port 2 > |->port 3 > |->port 4 (internal) --->TI hub > layer 2 > > |->port 1--->mouse > > |->port 2--->keyboar > > |->port 3 > > |->port 4 (internal) > > And then trying to issue port reset to the two devices periodically, > with an interval about 500ms(or less); the port reset in effect will > simulate > device disconnection and connection events. Normally, when the reset > returns OK, we can anticipate a reset change to be reported soon, and > we can proceed to handle the case just as a real device connection > process. But after doing the test for some time, when one of the port > reset > returns OK (for example, port 1 for the mouse), there is no "port > reset change" to be followed for that port reset. And when another > port reset is > issued to another port (for example, port 2 for the keyboard), the > reset itself will return with STALL. And then, this hub seems > "completely dead"! > > At this time, if I switch (do not power off) the whole TI hub to > Windows, the Windows is also not able to work with the hub > (Unrecognized devices!) > That is to say, the whole hub is not usable for any OS (I think even > Linux can not make it back too, because it *seems* completely dead). > The only > way to make the hub back to life is to power off the hub and then > power on it again (it is a self powered hub). > > Some times, even the above reset passed, there may be another issue, > that Get Port Status will not work. After the URB is submitted, the > URB > can never return. And in this case, it still seems the hub is dead as above. > > Still some times, the Get Device Descriptor for the connected devices > will also never return, and the hub seems also dead as above. > > Does anyone out there has any similar problem with any hub? I am > tearing my hair out! > > Can anyone point me for a direction on what aspects to check for this > kind of problem? We suspect our timing for the operation may not > accurate, but that > is really hard to tell which part to check for this kind of issue, so > your suggestions are highly appreciated. Maybe the problem isn't in your program but rather in the hub. You should test your program with a different type of hub. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html