Automatic download of printer drivers through the internet

Summary

Printer drivers are continually being created or updated - especially as new printers can come out at any time between distribution releases. It is not reasonable to expect all distributions to be completely up to date all of the time, yet users expect to be able to use a brand new printer straight away.

Rationale

Many printers do not get set up automatically straight away due to their drivers not being shipped with the distribution. Giving easy access to drivers from an external source will widen the scope of printers which will 'just work' a lot.

Use cases

Scope

All Linux distributions, depending on implementation progress starting with Ubuntu Intrepid.

Design

The automatic download will be triggered by the auto-detection and/or manual selection of a printer by the hal-cups-utils or by using the add-printer wizard of system-config-printer. In any case functions of system-config-printer will try to assign a locally installed driver to the printer and set up a CUPS queue. In the case that these functions do not find an appropriate driver, a DBUS request will be sent telling that a piece of hardware was found for which there is no driver. The call is accompanied by identity information about the printer (IEEE-1284 device ID, if not available make and model).

A driver manager, in our case Jockey, will catch the DBUS call and query the OpenPrinting database via its web query API to get answered back which drivers are available for the printer. It can be no driver, one or several. Then descriptions (and if needed also license text) of the drivers are presented to the user in a GUI, containing the info in the gray boxes at the top of a driver entry page on the OpenPrinting web site. The user selects the driver, accepts the license (if needed for the driver), and if he agrees with the download and installation of the driver he clicks "OK" or "Next" and the driver gets downloaded and installed. After that, or if the user cancels or if no driver was found, the driver manager closes and returns a success or failure, in success case also which driver was loaded, via DBUS.

Now system-config-printer gets triggered to go on, so that the queue gets set up or the setup gets aborted if the printer is unsupported or the user did not like the available driver.

The driver packages are distribution-independent LSB-based RPMs. To fulfill security and quality standards of the distributions we will apply the following

Binary printer driver packages and also PPD files (for PostScript printers) will be hosted on the OpenPrinting web site. Binary packages will be available as distribution-independent LSB-3.2-based packages. The packages will be automatically alienized to also have .debs (the LSB DDK takes care that the maintainer scripts work with both RPM and DEB). Then the package directories get indexed for apt-get, yum, and urpmi (so that most common distros can manage and auto-update them with their package managers) and the index files get signed to protect against faked packages. Also PostScript PPD files (which cannot be managed with package managers) get signed. In addition, printer manufacturers and driver developers who upload have to follow strict quality, integrity, compatibility, and security guidelines (like for example issuing security updates).

Some driver packages are already available for testing work, but they are not yet indexed.

Description of the printer driver download service at OpenPrinting

Note: This service is completely independent from Ubuntu and is provided to all distributions and also to end users.

These features are already implemented:

These feature will be added:

For more details see:

Driver download by Ubuntu

In Ubuntu the driver download will get performed by the driver management tool Jockey. See "Design" section above.

Implementation

Web API for database queries and packaging method for distribution-independent binary packages are already implemented. system-config-printer already contains a facility to auto-download pure PPD files (for PostScript printers). Also infrastructure for driver lookup is already in system-config-printer.

As the actual query and download will be done by Jockey, Jockey will use code from system-config-printer as a base to start the query implementation in Jockey.

Next steps of the implementation are the setup of the package repositories and the automatic alienization, indexing, signing and Foomatic-entry generating infrastructure on the OpenPrinting server. One Google Summer of Code student and a volunteer are doing work on the server.

-- CategorySpec

PrinterDriverAutoDownload (last edited 2008-08-06 16:35:34 by localhost)