Buy Me Lunch Logo

usbtb - high performance USB printing in Mac OS X

Summary

usbtb is a high performance CUPS backendCUPS backend n. : A software plugin for CUPS, used for transfering filtered print job data from a host computer to a destination device. for USB printing in Mac OS X and Darwin. When used in combination with a printer-compatible CUPS-based printer driver, usbtb provides easy-to-use, high-performance printing. The installer for usbtb reduces administration burdens by automating the task of configuring, creating, and verifying new system printer queues.

Minimum Requirements

¹ (includes Jaguar, Panther, Tiger, etc...)

Download

End users should download the Mac OS X disk image, which includes an installer, an uninstaller, and documentation. The source code for usbtb is provided separately, but downloading the source code is not required for use.

Mac OS X disk image (universal for PPC and intel): usbtb-1.0.15.uni.dmg
Download size: 144 KB
MD5MD5 n. : an algorithm used to produce a fixed-length (128 bit) "message digest" for any arbitrarily long "message".(usbtb-1.0.15.uni.dmg)=160924c0133f58a50237315e279ea877
SHA-1SHA1 n. : a Secure Hash Algorithm used to produce a fixed-length (160 bit) "message digest" for any "message" smaller than 2^64 bits (2 ExaBytes).(usbtb-1.0.15.uni.dmg)=0b3c7a4a85c50f7fe759aafe6fdc20bbb586c320
Source code: usbtb-1.0.15-src.tar.bz2
Download size: 44 KB
SHA1(usbtb-1.0.15.src.tar.bz2)=0300d7f82302e75f356934213c1dd71c10cd6b5e
MD5(usbtb-1.0.15-src.tar.bz2)=c7e08c31b8a92a6ea7b68d49e722309c

Features

Performance
Up to 1.25x to 5x faster than the standard OS X USB backend.*
Compatibility
Universal binary for Mac OS X on PowerPC and Intel.
Compatible with Mac OS X versions 10.2 (Jaguar), 10.3 (Panther), 10.4 (Tiger) and later.
Compatible with all tested brands of USB-to-parallel converter cable.
Ink level reporting
For Epson and HP printers that support it, ink cartridge levels are reported periodically in the printer queue window during printing.
Enhanced error recovery
Explicit textual cues provided in the printer queue window walk the user through recovery from common error conditions such as out-of-paper.
Automatic printer queue creation
The usbtb installer will automatically match every available USB printer with a compatible CUPS driver (such as Gimp-Print), create a new system printer queue, and optionally verify the functionality of the new queue by printing a test page.

* Performance comparisons with the standard usb backend are based on independent third-party evaluation. Actual performance differences may vary, depending on the version of Mac OS X, the model of Mac, the "front-end" CUPS driver, and the model of USB printer.

Background

usbtb is a high performance CUPS backend for USB printing in Mac OS X and Darwin.

But what exactly is a "CUPS backend"? Reviewing a little history of printing on Mac OS X may help to understand the answer.

Beginning with Mac OS X version 10.2 (Jaguar) Apple re-architected the core OS X printing system, changing from a wholly proprietary model to a model based substantially on the open-source Common Unix Printing System (CUPS). This change proved wildly popular with Mac users who had needs to print to "legacy" printers because the move to a CUPS-based printing system provided almost instant compatibility with two open-source, CUPS-compatible printer drivers projects, Gimp-Print and HPIJS. With each of these projects providing drivers for many hundred unique printer models that on Mac OS X had mostly been orphaned by the respective printer vendor, Mac OS X users finally had a means to print to their printers of choice (or in many cases, necessity).

How is it possible that a group of loosely organized, mostly unpaid, mostly non-Mac developers could succeed in providing Mac OS X users with printing support where several multi-billion dollar companies had failed? Part of the answer stems from Apple's embrace of an open-source printing technology, CUPS, that greatly simplified the task of developing compatible printer drivers.

Most traditional printer drivers are "monolithic" in nature, meaning that the driver must accept page-description data from an input source, then convert these data into a format compatible with the printer, and finally transfer the formatted page data to the printer. In contrast to the traditional approach, a primary feature of the CUPS design is the separation of the data formatting from the data transfer. In the CUPS design, drivers are "modular"; the data formatting is performed by a module called a "filter" while the data transfer is performed by a separate module called a "backend". This design simplification exploits the fact that most modern data transfer technologies are standardized.

The Universal Serial Bus (USB) is currently the ubiquitous standard for implementing the data interface of a modern printing device. The USB standard requires that any printer providing a USB port must respond correctly to the standard USB printer commands it receives on that port. Thus, in the CUPS design, the data-transfer requirements of all USB printers can be served by a single, dedicated USB backend, which is typically included as part of the CUPS system. With the backend split from the driver, and typically provided for free, the driver developer can provide support for any USB printer by writing only a compatible filter to convert input data into the printer-specific data format. The filter developer need not write a single line of code for data transfer, significantly reducing the driver development cost.

Versatility is an added benefit of a modular design approach. A single backend can support any number of filters, while a filter can be used in combination with any backend. Thus, the same filter used with a USB backend for printing to the USB port can also be used for printing to a network port, provided there exits an appropriate network backend.

One critical aspect of this modular approach to driver design is the need for backend drivers to be very robust, efficient and reliable. usbtb has been designed to be all of these things, and more.

Acknowledgments

Nothing comes from nothing. This software makes extensive use of existing software library functions developed by others.

The printing group at Apple provided suggestions, support, testing, and inspiration.

The utility of this software is greatly enhanced by the existence of the Common Unix Printing System (CUPS), and the Gimp-Print driver project.

Matt Broughton provided helpful feature commentary, and performed some performance benchmarking and much rigorous beta testing.

Keith W. Rodgers performed helpful beta testing.