CUPS driver list
The list of drivers that appears in the web interface is pretty long. Where do they come from?
When enumeration is requested by the web interface, or by running lpinfo -m, cupsd fires up cups-driverd(8) which appears to look for the following:
- PPD files in the filesystem
cause lpinfo -m to produce lines in the format lsb/tag/ppdname description
tag is a string corresponding to the directory searched (usr for /usr/share/ppd, local for /usr/share/local/ppd, ...)
- example:
lsb/usr/foo2zjs/Samsung-CLP-300.ppd.gz Samsung CLP-300 Foomatic/foo2qpdl (recommended)
- drivers
live in /usr/lib/cups/driver
when executed with an argument of list are expected to list all known PPD files
when executed with cat are expected to produce a PPD file
more details in the cups-driverd man page
cause lpinfo -m to produce output in the format driver:ppdname description
- example:
foomatic:HP-DeskJet_950C-pcl3.ppd HP DeskJet 950C Foomatic/pcl3
- ppdc source files
live in /usr/share/cups/drv
not mentioned in cups-driver man page; described in ppdcfile(5)
each file is converted into multiple PPD files by ppdc(1)
cause lpinfo -m to produce output in the format drv:///ppdcfile/ppdname description
- example:
drv:///hpijs.drv/hp-officejet_4200_series-hpijs.ppd HP Officejet 4200 series Foomatic/hpijs, hpijs 2.8.6b
Running cups-driverd by hand is quite illuminating:
/usr/lib/cups/daemon/cups-driverd list 1 0 requested-attributes=all > /dev/null | cat -v
A 'driver' may register itself with CUPS using multiple methods. So installing both foomatic-db-engine and foomatic-db (as they are called in Debian) may not be necessary.