Hi, >> Problem is related to TI's hand-helds (TI84+ & Titanium >> graphing calculators). It only appears with Titanium under Linux >> although TI84+ and Titanium have (almost) the same USB descriptors. No >> troubles with my own Win32 WDM driver for both hand-helds. >> >> Problem appears both with lib-usb and with my 'tiusb' >> kernel module. The test program can run once from lib-usb. Transfer is >> OK. >> When the testing program exits, libusb takes some time to release my >> USB device and displays the following error message: >> << >> usb 1-1: lt-test_ticable timed out on ep0out len=0/0 >> usb 1-1: lt-test_ticable timed out on ep0out len=0/0 >> >> >> After that, libusb is not able to get device descriptor on #2: >> << >> ticables-INFO: found <TI-84 Plus Silver Edition> on #1, version >> <1.10> >> ticables-INFO: found <> on #2, version <3.00> >> >> >> I have to unplug/plug the cable to get communication work again. >> >> Problem is quite similar with kernel module except that timeout appears >> at module removal and the error message is: >> << >> usb 1-1: rmmod timed out on ep0out len=0/0 >> usb 1-1: rmmod timed out on ep0out len=0/0 >> >> >> >> Patching the Titanium USB descriptors (by patching the hand-held >> firmware) to make them identical to TI84+ does not solve the problem. An >> issue might be related to Titanium which support remote wake-up. >> Eliminated. >> >> The testing program simply opens device, set configuration, claims >> interface, resets pipes (clear halt) and closes device. >> >> By enabling usb_snoop as well as usb_mon, I was able to get the >> following logs: >> - devio.1 & devio.2 (usb_snoop on 1:TI84+ and 2:Titanium) >> => Titanium returns "lt-test_ticable timed out on ep0out len=0/0" >> - usbmon.1 & usbmon.2 (usb_mon on 1:TI84+ and 2:Titanium) >> => Titanium returns "error -104 (ECONNRESET)" >> >> Please note that problem exists on my machine (Linux 2.6.18 AthlonXP) >> with >> OHCI and UHCI hubs as well as on my laptop (Linux 2.6.18-SMP 64-bits on >> Turion 64x2, Debian distro). Bug is fully reproductible. >> >> Source code provided: >> - link_slv.c: libusb support program >> - tiusb.c: kernel module >> >> You will find enclosed within the mail all of the information requested >> by >> the usb-linux.org FAQ on the latest kernel (2.6.18.2). >> >> Any ideas about this 'bug'? Is it related to kernel or bad hand-held >> hardware? > > It is a bug in the Titanium firmware. In the logs for both handhelds you > can see where the kernel sends a Set-Interface request after your driver > releases the interface. (The kernel does this automatically so that the > interface will be back in its original condition when the next driver > binds to it.) Both devices return an error, which is a perfectly legal > response. > > However the Titanium then crashes. It doesn't respond to the Clear-Halt > commands sent by the kernel after the Set-Interface fails, whereas the > TI84+ acknowledges them correctly. Since it has crashed, your driver is > unable to reconnect and you have to reset the device by unplugging it. > >> In the meanwhile, I'm about to add some dbg_printf in my kernel to trace >> the source of this error -104. > > The source of the errors is the Titanium failure to respond to the > kernel's Clear-Halt requests.
ok :-( > > Alan Stern > > Thank you very much, Romain. ------------------------------------------------------------------------- SF.net email is sponsored by: A Better Job is Waiting for You - Find it Now. Check out Slashdot's new job board. Browse through tons of technical jobs posted by companies looking to hire people just like you. http://jobs.slashdot.org/ _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel