| ||||||||||||
QuickUSB driver for LinuxIntroductionThe 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 ] BugsThe 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
NotesThis was originally written as part of my PhD Infrared Camera system. It should be applicable for wider usage. DownloadDocumentsSome selected files, from the tarball: NavigationReturn to all programs, site home. | ||||||||||||
|