Electrical-Forenics Home ray@RayFranco.com                       601.529.7473
   © Dr. Ray Franco, PhD, PE  -  208 Fairways Dr., Vicksburg, MS 39183

Update on 2026-04-02

Printer Acronyms:

History of Printers Drivers

When personal computers were first introduced, there was a serial RS232 port and a parallel port for connecting peripheral such as printers. The printers were black and white. ASCII Characters were sent over these ports to the printer. The character font was fixed, and one line of characters was printed at a time. With the introduction of dot matrix printers, you could change the font and print graphics. This was done by special codes sent to the printer. These were the predecessors to printer Page Description Languages (PDLs).

Modern PDLs describe the object's geometric and color space rather than the actual bits that make up the object [1]. An object can be a character,a shape (line, circle, arc) or image. The printer then decides how to render the object on the page.

The problem with PDL's is that there are lot of them, and the majority of them were developed by manufacturers and are proprietary. Wikipedia list 45 notable PDL's and only one of them, the Portable Document Format (PDF), is an open standard [2]. Two popular PDLsare PostScript (PS) and the Printer Command Language (PCL). PS was developed by Adobe, and PCL by Heward Packard (HP).

Another problem with PDL's is that the printer manufacturer had to supply software drivers so that computers could use their PDL. The software drivers were more than text files. They contained complied binary code. The software drivers were different for different operating systems (Windows, macOS, Linux), and the code had to be complied for different computer architects (Intel, Motorola, IBM PowerPC).

In 2010, Apple introduced AirPrint with 12 compatible HP printers [3]. These were the first driverless printers. The driver or Page Description Lanuage (PDL) was in the printer and not the client.

Driverless Printing consist of two parts:

  1. The printer and client are part of zero configuration network that included service discovery. The client send out a multicast dns command requesting that all devices on the lan advertise their services (e.g. network printing).
  2. The client and printer communicate over the Internet Printing Protocol (ipp).

Zero Configuration

Zero-configuration networking is a set of technologies that automatically creates a usable computer networked when computers and/or network perpherals such as printers are interconnected. Zero-configuration networks can:

  1. Assign link-local IP addresses, 169.253.0.0/16, when an Dynamic Host Configuration Protocol (DHCP) server is not available. This is only used as a last resort, when a DHCP server is not available.
  2. Assign "local" domain names to host and perpherals. For host, this is the host_name followed by the top level domain name "local" (.local). For perpherals, this is usually the manufacturer name and mac address followed by ".local".
  3. Convert local domain names into IP addresses. This is usually accomplished by each host keeping a copy of local domain names to IP addresses in memory. This can also be accomplished by a local Domain Name Server (DNS). However, zero configuration networks extend the normal DNS, to include the services advertised (e.g. network printing).

The Multicast Domain Name Server (mDNS) protocol is used to translate local domain names to IP addresses. It uses IPv4 address 224.0.0.251 or IPv6 address ff02::fb and port 5353 UDP.

The Domain Name Server Service Discovery (dns-sd) protocol is used to discover advertized services.

Apples Bonjour is an implementation of both mDNS and dns-sd.

Linux's Avahi-deamon also implements both protocols. It is installed by default on most linux distirbutions. However, for trobleshooting, you will need avahi-browse, and it's usally not installed by default. To install avahi-browse:

sudo apt install avahi-utils

Firewall Requirements

Zero Configuration uses mDNS which requires that port 5353 UPD be open.

References

  1. Wikipedia - Zero-configuration networking
  2. Zeroconf.org - Zero Configuration Networking (Zeroconf)
  3. Wikipedia - Multicast DNS
  4. Wikipedia - DNS Service Discovery
  5. Wikipedia - Bonjour (software)
  6. Wikipedia - Avahi (Software)
  7. Debian Wiki - Avahi
  8. https://avahi.org/
  9. ArchLinux - Avahi
  10. DeepWiki Avahi
  11. Avahi - Static Services and Hosts

Driverless Printers

IPP is implemented using the Hypertext Trasnfer Protocol (HTTP).

Apple's iPad was the first tablet computer. The iPad had an Arm processor (architecture), and software could only be loaded on it via Apple's App Store. A major complaint was that you could not print from it. In 2010, Apple introduced AirPrint with 12 compatible HP printers [3]. These were the first driverless printers.

Driverless printers are Internet printers that do not require a print driver. The following describes how driverless printer work [4]:

There are currently four driverless printer standards. They only differ in which PDLs are supported [5].

To meet one of driverless printer standards, the printer does not have to natively implement all of the PDLs in the standard. it just has to implement the failback PDL. That is, a printer could implement one of the raster PLDs and meet the standard.

According to Debian, this is intentional because the raster formats are simpler and require less printer resources than the higher-level language PLDs [6]. If a driverless printer does not natively implement application/pdf, the client will convert a text file to a raster format and send it to printer [7].

With the fallback PDLs being raster, are we not back to near where we started from? That is, are we sacrificing print quality for speed and the convenience of driverless printers? Furthermore, there does not appear to be a way of determining what PDLs the printer native supports without having access to the printer! It is not given in printer specification sheets nor manuals. If you have access to a printer, you can interrogate it with the Linux command [8][9]:

avahi-browse -rt _ipp._tcp

To install avahi-browse:

sudo apt install avahi-utils

The following reformatted output (added line breaks) is from my 2017 HP Pro 6970 All-in-One printer:

=  eth0 IPV4 HP OfficeJet Pro 6970 [DEF7B5F]
txt = [
 "Scan=T"
 "Duplex=T"
 "Color=T"
 "UUID=05c59c15-18f5-5a0e-e211-577d77a158ab"
 "Fax=T"
 "rfo=ipp/faxout"
 "TLS=1.2"
 "mopria-certified=1.3"
 "note="
 "adminurl=http://HPEC8EB5DE7B5F.local./#hId-pgAirPrint"
 "mac=ec:8e:b5:de:7b:60"
 "priority=20"
 "usb_MDL=OfficeJet Pro 6970"
 "usb_MFG=HP"
 "product=(HP OfficeJet Pro 6970)"
 "ty=HP OfficeJet Pro 6970"
    "URF=CP1,MT1-2-8-9-10-11,PQ3-4-5,RS300-600,SRGB24,OB9,OFU0,W8-16,DEVW8-16,DEVRGB24-48,ADOBERGB24-48,DM3,FN3,IS1,V1.4"
 "kind=document,envelope,photo,postcard"
 "PaperMax=legal-A4"
 "rp=ipp/print"
 "pdl=application/vnd.hp-PCL,image/jpeg,application/PCLm,image/urf,image/pwg-raster"
 "qtotal=1"
 "txtvers=1"
]

The first highlighted line shows that it is Mopria certified. The second highlighted line indicates that it is an AirPrint printer. The third highlighted line shows the PDLs that that the printer supports.

pwg is the Open Printing - printing working group (pwg).

Planned Additions:

Apple Products support Wi-Fi Direct features except that have chosen to rebrand it to AirDrop and AirPlay What is Wi-Fi Direct and how do you use it on Android? . I need to investigate this, as I know AirDrop and AirPlay use Bluetooth to establish the connection.

Printing from your Mobile Phone

Apple's AirPrint
 
Apple's AirPrint is a driverless printing protocol. It was introduced in 2010. It is an extension of the Internet Printing Protocol. It was developed for Apple's IOS and MAC OS. In most Linux distributions, Airport support should be automatic with the default printing subsystem since version 1.4.6 CUPS severs.

For AirPrint on Linux, you probably need the install the package cups-browsed to read Apple's Bonjour.

Linux CUPS does not require a print driver to print to AirPrint or IPP Everywhere printers.

After the client discovers the printer, it sends a

mDNS

Multicast DNS (mDNS) sends queries and responds to the multicast address 224.0.0.251, UDP Port 5353 [1].

The local network is assumed to be trusted [2]. A firewall should permit multicast traffic on port 5353.

Debian does not install avahi-utils by default.

  1. avahi-browse
  2. avahi-publish
  3. avahi-resolve
  4. avahi-set-host-name

References

  1. DeepWiki Avahi
  2. Debian Wiki - Avahi
  3. https://avahi.org/
  4. ArchLinux - Avahi
  5. Wikipedia - AvahA (Software)
  6. Avahi - Static Services and Hosts

Fedora

On my Apple Macbook Air M2 runing Fedora Asahi Remix 43, I had to do the following to get driverless printers to work:

sudo systemctl enable cups-browsed.service

In /etc/cup-browsed.conf, find (around line 41) and change the followin line:
 
BrowseRemoteProtocols none
 
to
 
BrowseRemoteProtocols dnssd
 

sudo reboot

IPP Everywhere

Set Up Linux Clients Using the Command Line Interface (CLI)

To the best of my knowledge, the following works on all Linux distributions:

  1. Find the driverless printer with:
     
    ippfind
     
    The output should look similar to:
     
    ipp://HPEC8EB5DE7B5F.local:631/ipp/print
     
    Note, "EC:8E:B5:DE:7B:5F" is the Hardware IPv4 address of the printer (802.3 wired). If the "ippfind" command does not return anything, disconnect from your VPN.
     
  2. Copy the "ipp://..." line to the clipboard.

  3. Make sure you are in the lpadmin group, and use the command line to add the printer:
     
    lpadmin -p make_up_a_printer_name -L specify_a_location -E -v ipp://HPEC8EB5DE7B5F.local:631/ipp/print -m everywhere
     
    For the parameter after the -v, I pasted the contents of clipboard. If the printer has a static IPv4 address, you can and should substitute the IPv4 address for "HPEC8EB5DE7B5F.local". That is:
     
    lpadmin -p HP-6978 -L Sun-Room -E -v ipp://192.168.1.72:631/ipp/print -m everywhere
     
    where 192.168.1.72 is the static IPv4 address of the wireless printer.
     
  4. After the driverless printer is installed, if you have duplicate entries for it. In /etc/cup-browsed.conf, find (around line 41) and change the followin line:
     
    BrowseRemoteProtocols dnssd
     
    to
     
    BrowseRemoteProtocols none
     

     
  5. After the driverless printer is installed, you can re-enable your VPN. If it does not work, see below.

If you are using a VPN such as Nordvpn, you must whitelist the subnet the driveless printer is on or turn the option lan-discovery on. The latter works better, but eventually you will probably get the message: "No suitable destination host found by cups-browsed" in the clients cups web interface (http://localhost:631). To reliably connect to the driverless printer, you will need to assign the driverless printer a static IPv4 address and substitute the IPv4 address in the Add Printer command. This bypasses all the discovery protocols (avahi, mDNS, dnssd, etc.) used to convert hostnames into IP addresses.

If you make a mistake setting up your driverless printer, you can delete the printer with:

lpadmin -x the_printer_name_you_made_up

Set Up Linux Clients Using the CUPS Web Interface

The instructions below are for my HP 6978 All-in-One printer (2017).

To make changes to cups, you must be a member of the lpadmin (line printer administration) group. To add a user to lpadmin group:

sudo gpasswd -a user_name lpadmin

If you added a user to the lpadmin group, you must reboot for it to take effect.

If you intend to use a Virtual Private Network (VPN), assign your driverless printer a static IPv4 address.

If you are currently running a VPN with autoconnect enabled, disable it and reboot.

Run the ippfind command:

ippfind

The output should look similar to:

ipp://HPEC8EB5DE7B5F.local:631/ipp/print

In my case, EC:8E:B5:DE:7B:5F, is the MAC Address of my driverless printer.

Copy the output to the clipboard.

Open the local cups web interface. That is, enter the following into the address bar of a web browser:

http://localhost:631

If this is the first time, you have used the client's cups web interface, you will get a warning page. Hit the "Accept the Risk and Continue" button.

Hit the Administation Tap. If prompted for a user_name and password, enter the user_name and password that you logged into the client with.

Hit the Add Printer button.

ipp_add_printer.png

Ignore the "Discovered Network Printers". Under "Other Network Printers", select the radio button "Internet Printing Protocol (ipps)". Hit "Continue".

ipp_connection_1.png

In the "Connection" dialog box, past the results of the ippfind command.

ipp_connection_2.png

If the driverless printer has a static IPv4 address, substitute the IPv4 address in place of "host_name.local".

After you have entered the connection into the dialog box, hit "Continue".

ipp_printer_name.png

The "Name", "Description", and "Location" fields can be anything you chose. However, if you leave the "Location" field blank, it defaults to "Local", which is misleading. After filling in the fields, hit "Continue".

ipp_printer_make.png

For the printer "Make" (manufacturer), it does not matter what you select. It is the next parameter that matters. I generally select "Generic" and "Continue" - Do Not Hit the "Add Printer" button .

ipp_model_everywhere.png

For the "Model", select IPP Everywhere. Now hit the "Add Printer" button.

ipp_printer_defaults.png

Select the default options for the printer and hit the "Set Default Options" button.

If you have duplicate entries for the Driverless Printer, to hide old entry, in /etc/cup-browsed.conf find (around line 41) and change the following line:
 
BrowseRemoteProtocols dnssd
 
to
 
BrowseRemoteProtocols none
 
This is matches cups-browsed.conf in Fedora.

Print a test page

You can now reconnect to your VPN and/or re-enable VPN autoconnect.

Wi-Fi Direct Printing
 
Wi-Fi Direct printing allows your Wi-Fi cable device i.e.smart phone, tablets or computer to make a Wireless connection directly to a printer with using a wireless router or access point. All Microsoft Windows 10 and 11 suport Wi-Direct printing. All Linux-based platforms support Wi-Fi Direct. Apple devices, such as the iPhone and iPad do NOT support WiFi Direct. They use AirPrint, AirDrop and AirPlay.

Google's Cloud Printing
 
Built into Android devices is Google Cloud Printing. It allows you to print files from any device anywhere - whether you are on the same Wi-Fi network as the printer or not.

ePrint
 
ePrint is a secure cloud based service that lets you print from anywhere using an email account and active internet connection. Setting this up varies from manufacture to manufacturer. It works by assigning an email address to the printer. HP's ePrint work by installing HP Smart on you phone via Apple App Store or Google Play or on your computer via Microsoft or Mac App Store. For Linux there is EPrints which is free from https://www.eprints.org/uk/.

References:

  1. Page Description Language (PDL) - WhatIs.com
  2. Page Description Language - Wikipedia
  3. Apple's AirPrint - Wikipedia
  4. Workflow of Driverless Printers
  5. Driverless Printing Standards - OpenPrinting
  6. CUPS Driverless Printing: PDLs for Driverless Printing - Debian Wiki
  7. CUPS Driverless Printing: PPD Generator - Debian Wiki
  8. CUPS Driverless Printing Miscellaneous - Debian Wiki
  9. CUPS AirPrint: Browsing an AirPrint Bonjour Broadcast - Debian Wiki
  10.  
  11. Wikipedia CUPS
  12. https:/www.cups.org
  13. Dell 1760n - Rpi Forum
  14. CUPSAirPrint - Debian Wiki
  15. Printer Command Language (Wikipedia)
  16. Avahi - Debian Wiki
  17. What is Wi-Fi Direct - Digitaltrends
  18. What is Wi-Fi Direct and Its Benifits - HP
  19. Brothers Print Drivers
  20. HP-PCL vs Adobe Postscript
  21. DNS Service Discovery (DNS-SD)
  22. question: what's the image/urf #4888
  23. OpenPrinting CUPS Filters - cups-browsed - Debian Package
  24. OpenPrinting CUPS
  25. Apple's image/URF
  26. CUPSNewArchitecture - Debiabn Wiki
  27. Adobe Embedded Print Engine FAQ
  28. Adobe PDF, PostScript (PS) and Embedded PS (EPS) -Ohio State University
  29. What is Network Discovery? Everything You Need to Know
  30. Driverless Printing Standards And their PDLS
  31. Gentoo.org - Printing/Standards
  32. Wikipedia - List of printing protocols
  33. What is: AirPrint and How it Works
  34. Microsoft Build 2026 - What is IPP?
  35. How to Set Up CUPS with IPP Everywhere on Ubuntu
  36. AirPrinting across networks

Brother's Inkjet MFCj4335DW Printer

References