#16318: IPP-Everywhere and AirPrint - Print support the XXIst century way
Reporter: pulkomandy | Owner: phoudoin
Type: enhancement | Status: new
Priority: normal | Milestone: Unscheduled
Component: Printing | Version: R1/beta2
Keywords: | Blocked By:
Blocking: | Platform: All
The printing user experience in Haiku is bad. Let's fix that! This ticket
is a starting point for better printing support. There are many things to
fix, but I wanted to gather the info in a single place at first.
Everything in Haiku is hot-plug. Connect anything to an USB port and it
will start working immediately. But printers must be added manually
through the printer preferences. This should not be the case.
There are 4 things to take care of:
- Network printers: should use mdns and dns-sd (aka Bonjour/Zeroconf) to
discover the printer automatically
- USB: already enumerated in the "transports" when adding a printer, but
should use the vendor/device ID to automatically configure the printer
with the correct driver
- Virtual printers: I think they should be added automatically. When the
PDF printer add-on is installed, make it available as a printer by
- Legacy parallel and serial port printers: the only case where specific
configuration should be needed. And we may consider ignoring it because no
one has these ports on their computers anymore anyway. I think it's ok if
the UI is a bit less friendly for these.
Until now Haiku has relied mainly on Gutenprint for printer-specific
drivers, and provided some generic drivers as well (PCL5, PCL6). However,
and mainly due to efforts from Apple to allow printing from an iPad, there
has since been a lot of work on driverless printing. The idea is that
printers now use a common language and need no specific driver: all
configuration can be discovered from the printer itself. This led to the
AirPrint standard and later IPP-Everywhere. A lot of modern printers can
be used in this way.
There are 3 steps to this:
- Discovery of a printer: see above, using USB enumeration or Zeroconf.
- Transport: IPP is used as a transport (and there is an IPP over USB but
I'm not exactly sure how that works). We already have an IPP transport so
we should be good to go
- Data format: these printers expect a raster image (no ps interpreter in
the printer). The standard formats are JPEG (but it's lossy) and pwg-
raster which is based on Cups raster format but simplified a bit
(specification: pwg-5102.4). We don't implement this yet. Printers may
aditionally implement AppleRaster / image/urf format but this one is not
documented. Mine also supports PCL3GUI which is a bitmap only variant of
PCL, apparently, but that's not part of the standard.
**Printer management and job control**
Our current printer preferences provides some very minimal job control and
no printer management. Things like checking ink cartridge presence and ink
levels, printer status, error messages from the printer, etc, should be
The IPP transport allows for this, including getting an icon for the
printer, localized error and status messages, and a lot more information.
It also provides the list of available paper formats and other things like
Ticket URL: <https://dev.haiku-os.org/ticket/16318>
The Haiku operating system.