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

Reply via email to