PAPPL, a framework for the development of IPP Everywhere printing applications

Michael R Sweet, the original author of the CUPS printing system and who after leaving Apple went on to develop the CUPS fork of the OpenPrinting project, recently announced the release of the new version of PAPPL 1.1, which is positioned as a new framework for developing CUPS printer applications based on the IPP Everywhere protocol and recommended as a replacement for traditional printer drivers.

Among the changes and improvements that stand out in this new version, we can find, for example, support for Windows 10 and Windows 11, as well as support for Wi-Fi configuration, among other things.


For those who are unfamiliar with the PAPPL framework, you should know that this was originally designed to support the LPrint printing system and Gutenprint drivers, but it can be used to implement support for any printer and driver for printing on desktop, server, and embedded systems.

PAPPL is expected to help accelerate the advancement of IPP Everywhere technology instead of classic drivers and simplify support for other IPP-based programs like AirPrint and Mopria.

PAPPL includes a built-in implementation of IPP Everywhere, which provides the means to access printers locally or on the network and process print requests.

IPP Everywhere operates in “driverless” mode and, unlike PPD drivers, does not require static configuration files. Interaction with printers is supported both directly through a local printer connection via USB, and access through a network using the AppSocket and JetDirect protocols. Data can be sent to the printer in JPEG, PNG, PWG Raster, Apple Raster and “raw” formats.

PAPPL can be built for POSIX compatible operating systems, including Linux, macOS, QNX, and VxWorks. The dependencies noted are Avahi 0.8 (for mDNS / DNS-SD support), CUPS 2.2, GNU TLS 3.0, JPEGLIB 9, LIBPNG 1.6, LIBPAM (for authentication) and ZLIB 1.1.

Building on PAPPL, the OpenPrinting project is developing a universal PostScript printer application that can work both with modern IPP-compliant printers (using PAPPL) that support PostScript and Ghostscript, as well as older printers for which PPD drivers are available (using cups- filters and libppd).

Main new features of PAPPL 1.1

In this new version of PAPPL 1.1 we can find that the ability to configure via Wi-Fi, in addition to that now we already have the support to be able to access a printer using the IPP-over-USB protocol (IPP-USB).

Another change that stands out from the new version is that search for suitable printer drivers has been implemented and that also the automatic addition of extended functions has been added.

It is also highlighted that added PAPPL_SOPTIONS_NO_TLS mode to disable TLS encryption, as well as buttons and commands to suspend and resume the printer were added and an option was implemented to enable compression.

Of the other changes that stand out in this new version:

  • The papplSystemSetAuthCallback API was added to support alternate authentication mechanisms.
  • Improved simultaneous management of multiple printers.
  • Added support for Windows 10 and 11 platforms.

Finally, for those who are interested in knowing more about it of this project, you can check the details In the following link.

It is also worth mentioning that the framework code is written in C and is distributed under the Apache 2.0 license with the exception that it allows linking to code under the GPLv2 and LGPLv2 licenses.

How to install PAPPL on Ubuntu and derivatives?

For those who are interested in being able to install this utility on their system, they can do so by following the instructions we share below.

The first thing they must do is open a terminal and in it they will type the following in order to install all the necessary dependencies:

sudo apt-get install build-essential libavahi-client-dev libcups2-dev 
libcupsimage2-dev libgnutls28-dev libjpeg-dev libpam-dev libpng-dev 
libusb-1.0-0-dev zlib1g-dev

Now we are going to download the latest stable version of PAPPL with:


Unzip and compile the source code with:


And we proceed to install with:

sudo make instal

Once this is done, they can consult the documentation so that you know the use of PAPPL in this link.

Add Comment