RichardNeill.org

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

  • To install, simply: make && sudo make install
  • This is Free Software released under the GNU GPL v2+. Please feel free to take it, modify it, package it etc.
  • Author: Michael Brown, now maintained by Richard Neill, with contributions from Sergey Esenov and Dan Lynch. Do ask if you would like further information and assistance.

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.