.. /* * This file is part of the SavaPage project . * Copyright (c) 2026 Datraverse B.V. * Author: Rijk Ravestein. * * SPDX-FileCopyrightText: (c) 2020 Datraverse B.V. * SPDX-License-Identifier: CC-BY-SA-4.0 * * For more information, please contact Datraverse B.V. at this * address: info@datraverse.com */ .. _ch-printer: .. figure:: ../images/manual/savapage-logo-no-text-100px.png :width: 75px SavaPage as Printer ======================= .. admonition:: |ADMONITION_TABLE_OF_CONTENTS| - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` - :numref:`{number}. {name} ` .. _ch-printer-ipp-everywhere: IPP Everywhere and AirPrint --------------------------- .. contents:: :depth: 2 :local: .. _ch-printer-ipp-everywhere-intro: Introduction ~~~~~~~~~~~~ `IPP EverywhereTM `__ is a `PWG `__ standard that allows personal computers and mobile devices to find and print to networked (and USB) printers without using vendor-specific software (printer drivers). It is based on IPP/2.0 and `Zero-configuration networking `__ (Zeroconf) for automatic printer discovery on Internet Protocol (IP) networks. IPP Everywhere printers accept PWG Raster Format and JPEG (required) and PDF (recommended) print content. .. list-table:: IPP Everywhere and AirPrint :width: 100% :widths: 15 85 * - |image61| - The terms “Zeroconf” and “Bonjour” are often used interchangeably, although Zeroconf refers to the technology in general and Bonjour is the Apple branded implementation. |br| |br| - In analogy, the terms “IPP Everywhere” (Zeroconf printers) and “AirPrint” (Bonjour printers) are also used interchangeably. - *To advertise SavaPage as Zeroconf printer follow the steps described in the sections below.* SavaPage AirPrint is discussed for each platform separately: - :ref:`Printing from GNU/Linux ` - :ref:`Printing from macOS ` - :ref:`Printing from Chrome OS ` - :ref:`Printing from Android ` - :ref:`Printing from iOS and IPadOS ` - :ref:`Printing from Windows ` The IPP Printer attributes of SavaPage can be checked with the ``ipptool`` command as follows: .. code-block:: bash # install ipptool sudo apt install cups-ipp-utils # get printer attributes ipptool -tv ipps://savapage.local:8443/printers/airprint get-printer-attributes.test .. note:: The :ref:`Default Paper Size ` is used as ``media-default``. Step 1: Check Avahi configuration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To advertise SavaPage as Zeroconf printer, Avahi needs to be :ref:`installed ` on your GNU/Linux host. To service a broad range of devices, both IPv4 and IPv6 should be enabled in the avahi-daemon. This is normally the case, but you can check by editing the Avahi configuration file: ``sudo vi /etc/avahi/avahi-daemon.conf`` Make sure settings are as follows: .. code-block:: ini use-ipv4=yes use-ipv6=yes If you made changes to the configuration file, restart the daemon as follows: .. code-block:: bash sudo systemctl restart avahi-daemon.service Step 2: Create AirPrint Queue ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The URL path of :ref:`Reserved Queue ` called ``/airprint`` is available by default. You can create a new SavaPage Queue (see :ref:`Queues `) with another path if you like. It is important though to select |RST_BUTTON_STANDARD| or |RST_BUTTON_BASIC| for Authentication, since the queue must be *untrusted* to enforce either :ref:`IP Based Authentication ` or :ref:`Basic Authentication `. This is needed because AirPrint is inherently *unauthenticated*. .. important:: IP addresses from private networks are allowed by default. If you need to allow addresses from public networks, you must override the default setting by adding one or more CIDR sets containing allowed IP ranges (including those from private networks). See :ref:`Edit Queue `. Step 3: Create Avahi Service File ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Copy the ``/opt/savapage/server/examples/linux/avahi/savapage.service`` file to your personal home directory. ``savapage.service`` is an Avahi service file with annotations explaining how to adapt it to your own situation. Follow the ``$Customize$`` annotation to insert your settings. Copy your tailored service file to Avahi, with this command (assuming the source file resides in your home directory): ``sudo cp ~/savapage.service /etc/avahi/services`` Check if Avahi has published the SavaPage printer as intended by typing this command: ``avahi-browse -a -t`` Assuming your GNU/Linux host is called ``savapage`` and you named your Avahi print service ``SavaPage``, you should find entries in the output like this : .. code-block:: text + eth1 IPv6 SavaPage on savapage _ipps._tcp local + eth1 IPv4 SavaPage on savapage _ipps._tcp local + eth1 IPv6 SavaPage on savapage Internet Printer local + eth1 IPv4 SavaPage on savapage Internet Printer local To check if the SavaPage DNS printer can be found, use this command on a macOS or GNU/Linux workstation : ``ippfind _ipp._tcp _ipps._tcp`` [1]_ Assuming your GNU/Linux server host is called ``savapage`` in the Avahi service file, you should see these entries like this as output: :: ipp://savapage.local:8631/printers/airprint ipps://savapage.local:8632/printers/airprint .. [1] ``ippfind`` is part of ``cups-ipp-utils`` package. .. /* * Images */ .. |image61| image:: ../images/manual/ipp-everywhere-275x320.png :width: 80px