BLOG - Concept of Driverless Printing

ref: [.deb file for download]

ipp-usb [v0.9.14]
ipp-usb is written in Go, & provides HTTP library with needed functionality, but missing in C


external dependencies:
libusb for USB access [v1.0.23 installed]
libavahi-common [v0.7 installed]
libavahi-client for DNS-SD [v0.7 installed]
Running Avahi-daemon [v0.7 installed]

Driverless printing is targeted at client side printing & refers to ability of the client device to print
without having to install any static capability files or drivers (manufacturer or otherwise) on the client.

There exists a variety of methods for a client to submit a job to a printing system & print driverlessly:

  • Print directly from an application on the client.
  • Use AirPrint or IPP Everywhere printing.
  • Use a cloud service such as Google Cloud Print (GCP).
  • Send the job as an email attachment to a special address.
  • Web printing. The document is uploaded from a web browser via a web form style interface

Remember: CUPS can act as a client or server. In its server capacity it can emulate an IPP Everywhere or
Apple AirPrint printer. However, focus here is on CUPS as a client connecting to printer that offers
driverless printing functions.

IPP-over-USB: The Basics

Fortunately, driverless printing is not confined to network only but also works in exactly same way
via USB using the IPP-over-USB daemon, ipp-usb. ipp-usb serves for using the device via USB;
this is fully independent of whether there is also a network connection available between computer
& printer. The support situation regarding USB-only IPP printers has yet to be completely clarified.

Note that IPP-over-USB reserves the USB interface connection with the printer/scanner exclusively for itself
& communication with a printer/scanner device by software that does not operate using the IPP-over-USB
protocol becomes impossible while ipp-usb is running.

Only driverless print queues will work with IPP-over-USB.

Communicating with a USB connected scanner via classic SANE backends such as libsane-hpaio, sane-pixma
or sane-epson2 also becomes impossible with the ipp-usb daemon active and running.

An important idea underlying IPP-over-USB is having ability to expose the local USB-connected printer
only to localhost

----Example of driverless printer setup on Linux Mint using ipp-usb ------
HP printer = Color Laserjet Pro M454dn

linux mint blog- recommended changes to driverless USB printing

  • removed “ippusbxd v1.34” package in LM20 [existing USB printer package no longer supported]
    $ sudo apt purge ippusbxd

    • installed ipp-usb0.9.14+45.1amd64.deb

rebooted pc
switch on printer
launch printer app in system settings
add printer [suffix name of printer with ipp-usb to differentiate with existing printers]

tested printer OK