QuickUSB driver for Linux

Introduction

The Bitwise Systems QuickUSB device is a USB 2.0 interface which implements a fast 16-bit parallel port capable of a sustained 12-20 MB/s (chipset-dependent) with handshaking, 3x general purpose 8-bit I/O ports, I2C, and 2x RS-232 ports.

It is supplied with a binary blob, rather than a proper GPL'd Linux kernel driver, so we wrote one. The driver is hotplug-capable (it won't segfault even if the device is unplugged while in use), and creates standard /dev/ nodes, /dev/qu0g{a-e} for the general purpose ports, and /dev/qu0hd for the high-speed data port (in master mode). The high-speed data port may also be accessed as /dev/ttyUSB0 (in slave mode). A small C-program, setquickusb, handles the ioctls for the GPIO port-direction masks.

The driver has also been used at XFEL at DESY, and they enhanced it to include a scatter-gather function to aiding the transfer of many MB of data at a time. The driver works under recent 3.x kernels (tested with 3.5 and 3.8); it can also be built under 2.4/2.6.

The VID and PID are 0fbb:0001. Our module identifies (in dmesg) as "QuickUSB QUSB2 Module v2.11rc7 (FIFO Handshake)".

[Consider also alternatives, such as the Uncomplicated Universal Usb board ]

Bugs

The QUSB has 2x RS-232 ports, I2C and SPI, but this driver doesn't support them (it would be relatively straightforward to add them).

The default power-on direction of the GPIO ports can only be changed by dynamically patching the firmware; this requires the Windows tool.

There is no way to clear the QUSB's internal FIFO to start from a known empty position! Furthermore, the minimum block-size that can be transferred is 64 bytes. This means that there is an uncertainty of 64 bytes in the position within the data-stream.

Installation

Notes

This was originally written as part of my PhD Infrared Camera system. It should be applicable for wider usage.
Please ignore references to "ircam" (the IR-camera system).

Download

quickusb.tgz
GIT repository

Documents

Some selected files, from the tarball:
README.txt

Navigation

Return to all programs, site home.