We're currently trying to upgrade the libusb DLL and SYS files for Windows, so as to fulfill the long-standing feature request that TI-Connect + TILP II, and TINCLS + TILP II, become usable side by side.
Status:
TI-Connect and TILP II on the one side, and TINCLS and TILP II on the other side, can be made to both work on a given computer without having to uninstall either - in fact, they do so on my father's computer running native Win7 x64
(but I seldom have access to said computer - and in fact, at the time of this writing, it's not here anymore)
For now, it's a manual process (for which I'll try to streamline my rough notes - I think that there are two ways of achieving the effect), but it's certainly going to be possible to automate it into the installer. I need to integrate the updated INF + CAT definitions kindly generated by the INF wizard provided by the newest versions of libusb-win32, and probably add several lines to the TILP II installer. Maybe more changes currently unforeseen, we'll see.
On a side note: for a while (seemingly before I became the maintainer, two years ago), TILP has been (or should have been, because the InnoSetup installer script doesn't reference the modified binary anymore) shipping with an unmodified libusb0.sys binary. As a consequence, TILP II 1.15, and a number of earlier builds, don't work well with Nspires - and testing on the native Win7 x64 computer seems to show that it's worse than on my virtualized XP (where it was more tolerable). Nobody reported it, which shows that people using TILP for interacting with Nspires on Windows are few
Technical details: the reason why a modified binary needs to be shipped, is that the Nspire's USB controller / stack somehow doesn't like the thorough reset procedure sent to it by libusb under Windows. TINCLS sends only the first half of it, and the Nspire is fine with that; but libusb sends the full reset, and after receiving that, something is wrong with the calculator's USB state. It needs to be unplugged and plugged back in...
Romain described the problem in
http://sourceforge.net/mailarchive/forum.php?thread_name=473B0743.7020705%40lievin.net&forum_name=libusb-win32-devel / [url=]http://svn.tilp.info/cgi-bin/viewvc.cgi/*checkout*/libticables/trunk/src/win32/usb/libusb-win32.html?rev=4162[/url] (can't find a way to make the forum accept this URL, sorry). The corresponding diff is the following:
Code: --- src/driver/reset_device.c.orig 2007-03-20 05:33:29.000000000 -0500
+++ src/driver/reset_device.c 2009-05-07 10:41:28.331560796 -0500
@@ -32,14 +32,14 @@
{
DEBUG_ERROR("reset_device(): IOCTL_INTERNAL_USB_RESET_PORT failed: "
"status: 0x%x", status);
- }
- status = call_usbd(dev, NULL, IOCTL_INTERNAL_USB_CYCLE_PORT, timeout);
+ status = call_usbd(dev, NULL, IOCTL_INTERNAL_USB_CYCLE_PORT, timeout);
- if(!NT_SUCCESS(status))
- {
- DEBUG_ERROR("reset_device(): IOCTL_INTERNAL_USB_CYCLE_PORT failed: "
- "status: 0x%x", status);
+ if(!NT_SUCCESS(status))
+ {
+ DEBUG_ERROR("reset_device(): IOCTL_INTERNAL_USB_CYCLE_PORT failed: "
+ "status: 0x%x", status);
+ }
}
return status;
Since it was not integrated at the time, we need to somehow get this patch upstream, under this form or another