PrinterDriverAutoDownload

Revision 9 as of 2006-11-08 02:06:58

Clear message

Automatic download of printer drivers through the internet

Summary

The printer setup tool of Ubuntu 7.04 and later should automatically download LSB-packaged printer drivers from linuxprinting.org (will be the FSG OpenPrinting database then). This way we do not need to ship all drivers on the CDs, we are prepared for printers being launched after our release or being supported only by closed-source drivers which we are not allowed to distribute, driver updates, ...

Use cases

- User A has a not very common printer for which there are no drivers on the CDs, but drivers exist and are listed on linuxprinting.org - User B has a printer for which the manufacturer supplies a closed-source driver which Ubuntu cannot ship on the CDs - User C has a printer whose driver came out after the last release of Ubuntu came out.

Scope

All Ubuntu distributions, depending on implementation progress Feisty or Feisty+1.

Design

This is based on new functionality which I am currently adding to linuxprinting.org resp. FSG OpenPrinting. See the [https://wiki.ubuntu.com/PrinterDriverAutoDownload?action=AttachFile&do=view&target=FSGOpenPrintingPresentation.pdf attached presentation] ([https://wiki.ubuntu.com/PrinterDriverAutoDownload?action=AttachFile&do=view&target=FSGOpenPrintingPresentation.odp OOo 2.0]) and also

Principle

  • Add requirements for common printer driver interfaces to LSB 3.2: Driver/renderer (currently GhostScript interfaces IJS, CUPS raster, OpenPrinting Vector, FHS (File System Hierarchy) extension for printer drivers and PPDs.

  • Make use of other LSB standards, like packaging
  • Make distribution independent driver packages which work with every LSB-3.2-compliant distro
  • Attach these packages as downloadable files to the driver entries of the Foomatic database at linuxprinting.org (FSG OpenPrinting)

  • Make the access both human- and machine-readable
  • Provide an API for client software to access: List of all printers, drivers, driver packages, available/recommended drivers for a given printer (specified by device ID or Foomatic printer entry), driver free/non-free?, digital signatures, driver download
  • A printer setup tool could for example detect a printer, check local driver availability and in addition ask the FSG OpenPrinting database for available drivers for this printer. Then install the remote driver if there is no local driver is available or if the local driver is older (update).

Integrity/security/reliability issues

- IanJackson 7./9. 11. 2006 apropos of discussion in the BoFs on Sunday and Tuesday on the UDS in Mountain View.

It is not clear that automatically downloading software from a website like this, and running it as root, is a good idea. This is probably OK for ppd files (which are more like data) but driver programs (which convert raster data into a stream for the printer) run as root in the printing system, installing packages might accidentally break unrelated aspects of the system (or the whole system), and there are some worries about whether it's always reasonable for us to decide on our users' behalf to wholly trust the originators of these drivers.

Remark: Drivers will not run as root, as the CUPS filter chain is usually executed as a special user like "cupsys" or "lp". They also run in user space and never in kernel space (they are PS --> printer's language filters, so they have more the character of an application and not of a driver).

So, to be consistent with our efforts to ensure that post-release our systems are stable and secure, it would be sensible to arrange that these programmatic drivers should be blessed by Ubuntu itself. In which case it probably makes most sense to distribute them via our normal package distribution channels.

To still make use of driver packages from FSG OpenPrinting but provide Ubuntu-approved drivers one could suggest the following approach:

* A daily process checks whether there are new drivers at FSG OpenPrinting and adds them to a TODO list * QA people at Ubuntu test the driver by installing it and doing some tests (which do not require the printer, like printing into a file) * If all is fine, they make a Debian package of this driver and do perhaps small adaptations * The Debian package gets into the Ubuntu repositories * The printer setup tool in Ubuntu looks for into the Ubuntu repositories for driver auto downloads

The user can still on his own responsibility download drivers from FSG OpenPrinting and install them.

- Additional remarks

Some security considerations about printer drivers:

  • On all distros printer drivers do not run as root, but as the special users "cupsys" or "lp"
  • Printer drivers never run in kernel mode
  • Printer drivers are filters which generate the printer's native language from PostScript input

Every driver package should provide the following data:

  • Release version
  • Release date
  • Is it free or non-free?
  • Contact info to get support, report bugs, ...
  • Digital signature of the supplier (for example printer manufacturer)

The driver supplier should overtake responsibility (like support) for the driver he has issued.

Implementation

Implementation on the FSG OpenPrinting side will soon be started by Till Kamppeter

Implementation on the Ubuntu will start when all needed APIs and specs are published by FSG.

Printer setup tool in which implementation of this feature will be done principally is printerdrake.

Comments

The drivers do need to be on the cd, not all people have a broadband internet connection.

  • The most important drivers (HPLIP, GutenPrint, GhostScript built-in, ...) will continue to be on the CD, only less important drivers or drivers which cannot be shipped due to copyright reasons will be supplied via internet. The automatic internet download also serves for driver updates.