Last update:
0 Preliminary
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.Moreover, these drivers have been developed independantly of Texas Instruments. We are not affiliated with TI. We didn't receive ANY help from TI.
I Informations
This is the third link cable designed by Texas Instruments. This cable is faster than any other currently available. It can reach a maximum rate of 5.6 KBytes/s.
This link cable is based on a CY7C64013 microcontroller (µC) from Cypress Semiconductors. Cypress is well known for its USB devices (mouse, hubs, ...).
This device is a Full-Speed (FS, 12Mbit/s) device, USB1.1 compliant, under a proprietary class. It does not fit into any existing class (HID, printer, ...). Thus, it requires a specific device driver.
Although the TI GraphLink USB is primarily sold for use with Macintosh & PC, it can be used on any architecture that supports USB !
The device uses 'Bulk' mode for data transfers. There are two bulk endpoints (IN & OUT) and one control endpoint (mandatory).
Transfers are achieved by packets. The endpoints advertise a maximum packet size of 32 bytes.
Identity card of the device: click here.
Example of transfer with TiLP/GTK+ under Linux:
![]()
II History
I (JB) bought a Macintosh in August 2001. As I needed to be able to upload some things on my calc, I bought the SilverLink.III LinuxThe first step was to find out how the cable worked, then write a Linux driver. I found out how the cable worked, but failed to write a working driver. Yay, yay, I should have read the docs first :) As I had little time and was not really in the mood for such things, I handed over the development of the driver to Romain, who finally wrote it in another way.
In the same time, Romain developed the Windows drivers, which was kind of a pain. He got nice, working drivers on the most popular Windows versions at that time. And a good knowledge of the SilervLink.
Then came the Mac OS X version of TiLP, which of course needed yet another driver for the SilverLink. This was in fact quite easy to do, as it could be done entirely in userland, which is far easiest to write and debug.
To be honest, the same could be achieved under Linux using the libusb, so I wrote a libusb support and integrated it to the libticables.
We decided to implement a probing & fallback support into the libticables, so that you could use either the libusb userland driver or the kernel driver under Linux.
At that time, drivers are nearly 100% functionnal. However, there are some problems sometimes, such as lock-ups. These problems were encountered on the 3 platforms we support. Basically, a USB read can return sucessfully with no data, this is one problem, the other being that we sometimes ended up locking the cable.
These problems are now fixed.
So far, we support 7 platforms with these drivers :
Please note that there are 2 different drivers for Windows, depending on your version. There's one driver for Windows 98/Me & 2000, and another one for Windows Me & 2000/XPXP/ME/2000. They both use the same API, however. (tiglusb.dll)
- Windows (all versions) : kernel land driver
- Linux (2.2, 2.4, 2.5) : kernel land and userland drivers
- Mac OS X : userland driver
- FreeBSD, NetBSD, OpenBSD, Darwin (userland driver) : the libusb is portable on these operating systems, however as of now nobody tested the driver on these platforms.
The driver (kernel space) is no longer in beta stage and has been included in the Linux kernel (2.4.20 & 2.5.3).
But, the libusb (libticables built-in) is also a good method and works reliably too (user space).
Summary:
The driver is based on the dabusb.c (and scanner.c too) driver, which is considered as the example when writing USB device drivers. Since Texas Instruments does not support Linux, JB has written a driver for the Linux kernel.Download:This driver is written and maintained by Julien BLACHE <jb@jblache.org> and Romain LIEVIN <roms@lpg.ticalc.org>.
Latest release (v1.06):Installation:
- source code : for use with kernel 2.4.x & 2.5.x. only (has been merged into 2.4.20 & 2.5.3 kernels)
- 2.4.x kernels:Tests & Problems:
- 2.5.x kernels:Included within. Uncompress your kernel, type 'make xconfig', go into the char devices section and set TIGL.- others:
Your 2.4.x kernel must have USB support compiled in or as a module. You'll also need the sources of the running kernel, and these sources must be configured.
Uncompress the archive, cd to the "tiusb_dev" directory and run "make" then "make install".
This will build and install the module.
To load the module, either use insmod or modprobe the usual way, or run "make load".
To unload the module, use rmmod the usual way, or run "make unload".
This driver has been successfully tested on Intel (Linux/i686) and PowerPC architectures.IV Win32
There are now 2 drivers:
- a '98-DDK' driver for Windows 98/Me & 2000 (crashes XP).
- a 'XP-DDK' driver for Windows Me & 2000/XP (98 not supported).
Summary:
At the moment when the driver has been written, TI had not yet released anything supporting the TIGL USB under Win32. Now, TI has released the TI-Connect software which supports this link cable. Nevertheless, this driver is useful because the TI's driver is not documented and this driver allows people to use the TIGL USB with TiLP or some other programs.Download:Note that all calculators can be used with this driver. It means that your old calculator, which is no longer supported by the TI-Connect software, is usable with TiLP and this driver.
This driver has been successfully tested with TiLP and FastLink on the following platforms: Windows 98(SE)/Me & 2000/XP.
It will not work on Windows NT4 (no USB support) and may not work on Windows 95 (limited USB support), too.
Important : if you want to install the new driver (v2.x) and you have previously installed the old one (v1.x), you will have to remove the following file: C:\Windows\System32\TiglUsb.dll. Else, TiLP will crash !Installation:Latest release (v2.2): for TiLP > v5.13 (works under Windows XP).
- full source code : requires MSVC 5.0 mini and the Windows NT and/or XP DDK.
- installation disk 98 : files needed to install the driver (98/Me & 2000).
- installation disk XP : files needed to install the driver (Me & 2000/XP).
On Windows(R) 98/Me:Problems:Plug the device. The "Add New Hardware Wizard" dialog box will appear, stating, "This wizard searches for new drivers for: [your deviceName as programmed into your board's hardware]."
Click the Next button. On the next screen, hit the radio button labeled "Search for the best driver for your device (Recommended)." Click the Next button. In the next screen, specify your installation source floppy or directory. Then click the Next button. The next screen should indicate that Windows is ready to install the driver. You should see the full source path to BulkUsb.inf under the label "Location of Driver." Click the Next button. You will see the "Building Driver Information Database" message box. If the installation and loading of the driver have succeeded, you will see the final wizard box that states, "Windows has finished installing the software that your new hardware device requires." Click the Finish button. If the final "Add New Hardware Wizard" box indicates any error or the OS says you must reboot to finish installation of this device, something has gone wrong. Check your .inf file, Install directory, or driver code, follow the instructions in the "Simulating a First-time Install" section later in this document, and start over.Next, you should see this (Windows Me):
![]()
On Windows(R) 2000/XP:
When plugging the cable, the usual "Found New Hardware Wizard" will appear. Select the radio button labeled "Search a suitable driver for your device", and click "Next".
In the next screen, specify your installation source floppy or directory, and then click the Next button. The next screen should indicate that Windows 2000 is ready to install the driver. Near the middle of the box, you should see the full source path to BulkUsb.inf. Click the Next button. You'll briefly see a "Copying files" message box, then once again the "Found New Hardware Wizard" box, displaying the subheading, "Hardware Install: The hardware installation is complete." Click the Finish button.
You should now have a copy of TiglUsb.sys in your \System32\Drivers directory, a TiglUsb.inf in your \Winnt\Inf directory, and a newly created TiglUsb.pnf file, which is a precompiled setup info file that Windows 2000 creates. If the final "Add New Hardware Wizard" box indicates any error or the OS says you must reboot to finish installation of this device, something went wrong.
Check your .inf file, Install directory, or driver code, follow the instructions in the "Simulating a First-Time Install" section later in this document, and start over.Next, you should see this (Windows XP):
![]()
I noticed my TIGL-USB link cable does not work when my 'HP DeskJet 840C USB' is plugged (2 connector hub integrated on the motherboard). So, you should connect only your TIGL-USB link cable on the first port (root hub) the first time and remove other devices. I believe (but I am unsure) this is recommended by some manufacturers.License:
This package is Copyright (c) 2001-2002, Romain Liévin. All right reserved.This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.I have specifically bought the SilverLink for developing this driver. The SilverLink is not very cheap but this is the price to pay for freedom. Thus, I would like that any program which use this driver includes at least: author informations and a link on the homepage (http://lpg.ticalc.org/prj_usb/) of this package (for updates).
V Mac OS-X
The driver (userspace, libticables built-in) is considered stable.
Summary:
The driver uses the IOKit USB access facilities. As it works in userspace, this driver is embedded in the libticables.Download:
This driver is written and maintained by Julien BLACHE <jb@jblache.org> only, as part of the TiLP for Mac OS X porting effort.
TiLP for Mac OS X websiteInstallation:
See the link above.Tests & Problems:
This driver can be used on Mac OS X >= 10.1.2. At the moment, when no calc is connected to the cable the software trying to use the cable can hang for a certain amount of time. This is to be fixed soon. (next TiLP for Mac OS X release, scheduled soon after Apple releases Mac OS X 10.2)
IV Developers: how to use the Linux/Windows/Mac OS-X driver ?
You have 3 solutions:---
- directly talk with the device driver (through nodes under Linux, through TiglUsb library under Windows)
- use the libticables (a general purpose library) which provides support for all link cables (hardware & virtual). I strongly encourage this way because the link cable and/or the driver have a quirk.
- integrate the code into your own software. We'd like to remember you that these drivers are released under the LGPL when they are embedded in the libticables (libusb support, IOKit support under Mac OS X, kernel modules support code under Linux and Windows), and under the GPL when they are not (Linux kernel module, Windows drivers ?). As Free Software developers, we always encourage code reuse, but, please, respect these licenses and our work, or we're gonna kick your ass.
![]()
![]()
![]()
![]()
![]()
© Romain Liévin, <roms@lpg.ticalc.org>
Julien Blache <jb@jblache.org>