cups-driverd
Manage CUPS printer drivers dynamically
SYNOPSIS
cups-driverd [ -c device-id ] [ -d device-uri ] [ -f format ] [ -i mime-type ] [ -m mime-type ] [ -n copies ] [ -o option=value ] [ -t title ] [ -- ] [ job-id [ user name ] ]
PARAMETERS
-c device-id
Specifies IEEE-1284 device ID string of printer
-d device-uri
Specifies device URI (e.g., ipp://printer)
-f format
Output format (default: application/vnd.cups-postscript)
-i mime-type
Input MIME type of job data
-m mime-type
Output MIME type for printer
-n copies
Number of copies to print
-o name=value
Job-specific options (e.g., media=a4)
-t title
Job title string
--
End of options marker
DESCRIPTION
cups-driverd is a dynamic backend program for the CUPS printing system that enables driverless printing for printers supporting IPP Everywhere, AirPrint, or similar standards.
It queries the printer over IPP to fetch capabilities such as supported document formats, media sizes, resolutions, and finishing options. From this information, it generates an on-demand PPD file describing the printer, allowing CUPS to create queues without static driver packages.
Typically invoked automatically by CUPS schedulers like cups-browsed when discovering compatible printers. It acts as a filter, reading print jobs from stdin and converting them to printer-native formats like PDF, JPEG, or PWG raster, based on queried attributes.
This supports zero-configuration printing in modern Linux environments, reducing administrative overhead. It handles multiple copies, job options, and MIME type conversions dynamically.
CAVEATS
Primarily for internal CUPS use; manual runs require printer access.
Depends on network connectivity and printer IPP support.
May fail on non-driverless printers.
INVOCATION
Called by CUPS as scheme 'cups-driverd://' for dynamic PPD generation.
STANDARDS
Implements PWG IPP Everywhere (PWG 5100.13) and Apple AirPrint specs.
HISTORY
Introduced in CUPS 2.2.2 (2017) for IPP Everywhere/AirPrint support.
Enhanced in CUPS 2.3+ with better MIME handling and security.
SEE ALSO
cups(8), cups-browsed(8), ippfind(1), ppd(7)


