This is ftdi245io. It allows several FTDI devices to be interfaced to from Linux It is somewhat hard-coded for our application; modifications will probably be necessary, but should be trivial. Based on libftdi, at http://www.intra2net.com/de/produkte/opensource/ftdi CONTENTS: LICENSE.txt - this is released under the GNU GPL README.txt - this readme. Makefile - for compilation. man/ ftdi245io.1 - the man page. Also try invoking with -h, for greatest detail. src/ ftdi245io.h - the actual code itself. ftdi245io.c ftdi245io.bashcompletion - bash completion scriptlet. ftdi245io_check - trivial wrapper around "ftdi245io --check" libftdi/ These are all downloadable from the web, and GPL. libftdi-0.18/ - The FTDI libraries from http://www.intra2net.com/de/produkte/opensource/ftdi/ ftdi-eeprom-0.3/ - Optional: for reading (and writing) the eeprom on an FTDI device www/ - release version for upload to website (autogenerated by Makefile) USB NOTES: This all uses (userspace) libusb, rather than a kernel driver. By default, the FTDI devices get claimed by the ftdi_sio driver, as /dev/ttyUSBX, BUT the libusb can explicity dissociate a specific device from that driver on demand. There is no longer any need to blacklist or otherwise break the "usbserial" and "ftdi_sio" modules. [reboot, run ftdi245io_check, then dmesg and check for "ftdi_sio ttyUSB0: FTDI USB Serial Device converter now disconnected from ttyUSB0"] For each specific USB device, we can get the manufacturer's description, serial number, vendor id (VID) and product id (PID) by running lsusb -vvv If using several ftdi245 devices, we need to have a hub which contains multiple "transaction translators". Many cheaper USB hubs contain only 1, which means that all of the connected FTDI245 devices must share a single 12 Mbps of bandwidth. With a 4-TT hub, each FTDI245 can have 12 Mbps of bandwidth (up to the 480 Mbps total provided by USB2). In the USB device info, a hub with a single TT (bad) will have bDeviceProtocol == 0x01 , whereas a hub with multiple TTs (good) will have bDeviceProtocol == 0x02 . After plugging in the devices, allow the bus up to 5 seconds to stabilise/enumerate/settle. If weird things happen, it is usually a symptom of insufficient power / excess current-draw. If multiple similar devices are present, there is NO NEED for a udev rule to be included. The serial number of the DLP module is recognised. [This also means that you need to recompile it for your own modules, after changing PORTA_SERIAL in ftdi245io.h]