Exercise: Exploring Driverless Printer Attributes

The End of PPD Files

A hands-on exercise to explore how CUPS learns about a driverless printer’s capabilities directly, without using a traditional PPD file.
Author

Chuck Nelson

Published

November 16, 2025

1 Purpose

In the legacy printing model, CUPS relied on a static text file (a PPD) to know what a printer could do. In the modern, driverless model, this is no longer necessary. This exercise demonstrates the final, most important piece of the IPP Everywhere standard: how CUPS dynamically learns a printer’s capabilities (like paper sizes and quality settings) directly from the device itself.

2 What You’ll Accomplish

By the end of this exercise, you will be able to:

  • Use lpstat to confirm a printer is using a driverless model.
  • Use lpoptions to list the options advertised by a virtual IPP printer.
  • Explain the conceptual difference between a static PPD file and dynamic IPP attributes.

This exercise maps to the following program and course learning outcomes:

  • Course Learning Outcomes (CLOs):
    • 1. Identify hardware and basic network components: This exercise explores how software (CUPS) dynamically identifies the capabilities of a modern network peripheral.

This exercise develops the following skills, which align with the O*NET SOC Code 15-1232.00 for Computer User Support Specialists.

Learning Objective O*NET KSAs Technologies Used
Explore dynamically-provided printer attributes. Knowledge: Computers & Electronics, Telecommunications
Skills: Systems Analysis
IPP, lpoptions, lpstat

3 Prerequisites

This exercise requires a running Fedora 43 virtual machine where you have completed Exercise 10.2 and the ippeveprinter.service is active and running.

4 Step-by-Step Guide

4.1 Step 1: Confirm the Driverless Model

First, let’s ask CUPS how it is configured to handle our IPP-Persistent-Printer.

  1. Open a terminal.

  2. Run the following lpstat command to get a long-form status of the printer:

    lpstat -l -p IPP-Persistent-Printer
  3. Analyze the Output: Look at the line that begins Interface:. You will see a path to a script, but you will notice there is no mention of a PPD file. This is our first clue that CUPS is not using a legacy driver.

4.2 Step 2: List the Printer’s Options

If there’s no PPD file, how does CUPS know what paper sizes or quality options to offer? It asks the printer directly. We can see the results of that query using lpoptions.

  1. Run the command to list the options for IPP-Persistent-Printer:

    lpoptions -p IPP-Persistent-Printer -l
  2. Analyze the Output: You will see a list of all the configurable options for the printer, such as:

    • PageSize/Media Size: *A4 Letter ...
    • InputSlot/Media Source: *Default
    • cupsPrintQuality/Print Quality: *Normal High
    • And many more.

4.3 Step 3: Understanding the Concept

This is the core of driverless printing. The list of options you just saw was not read from a static configuration file on your computer.

When you created the queue with -m everywhere, CUPS queried the device at the URI (ipp://localhost:8631/...) and asked: “What can you do?”. The ippeveprinter service responded with a list of its capabilities (paper sizes, quality levels, etc.). CUPS then stored these dynamic attributes.

This means you no longer need to find and install a specific PPD file for every printer model. As long as the printer and the computer both speak the “IPP Everywhere” language, printing just works.

5 Reflect and Review

ImportantReflection: 3-2-1

Now that you have completed this exercise, reflect on your experience in your personal notes:

  • 3 printer options you saw in the lpoptions output.
  • 2 commands you used in this exercise.
  • 1 question you still have about how CUPS stores dynamic attributes.
TipCheck on Learning

Answer these questions in your notes to solidify your understanding:

  1. In a driverless setup, where does CUPS get the printer’s options (like PageSize) from?
  2. What command is used to list these options for a specific printer?
  3. Why was there no .ppd file listed in the output of the lpstat command for our IPP-Printer?
  4. What does the -m everywhere flag for lpadmin signify?
Back to top