From 50863b4fe8600ebf4b1a06aaaacae62b8cb5359b06721369e68efab459520766 Mon Sep 17 00:00:00 2001 From: Olav Reinert Date: Wed, 24 Feb 2016 16:46:56 +0000 Subject: [PATCH] Accepting request 361247 from home:jsmeix:branches:Printing Inserted a new section 2. CAVEATS in README.SUSE about possible limitations of AirPrint support via CUPS. OBS-URL: https://build.opensuse.org/request/show/361247 OBS-URL: https://build.opensuse.org/package/show/Printing/cups-airprint?expand=0&rev=5 --- README.SUSE | 117 ++++++++++++++++++++++++++++++++---------- cups-airprint.changes | 6 +++ cups-airprint.spec | 12 +++-- 3 files changed, 104 insertions(+), 31 deletions(-) diff --git a/README.SUSE b/README.SUSE index d9a1938..6699525 100644 --- a/README.SUSE +++ b/README.SUSE @@ -1,31 +1,90 @@ + 1. INTRODUCTION --------------- AirPrint is an Apple technology that helps you create full-quality printed output from iOS or OS X devices without the need to download or install -drivers. +drivers. -AirPrint works by combining two open-source technologies: +Some printers support AirPrint natively; for those you don't need CUPS +AirPrint support. For any other printer, if it can be printed to via CUPS +on openSUSE, this package provides the additional tools and configuration +files needed to add CUPS AirPrint support for basic printing tasks from +iOS or OS X devices. For limitations see the "caveats" section below. + +CUPS AirPrint support works by combining three open-source technologies: -mDNS/DNS-SD (a.k.a. Bonjour, or ZeroConf) for printer discovery, and - -CUPS (actually, the IPP protocol) for sending print jobs. + -CUPS for receiving print jobs that are sent from iOS or OS X devices + via the IPP protocol, and + -cups-filters + Linux printer drivers for converting the printing data + in a print job (PDF or URF) into the native data format of the + particular printer device that finally produces the printout. On openSUSE Linux, the standard mDNS implementation is called Avahi. +This package is about the first item: + -discovery of CUPS printers on iOS or OS X devices via mDNS/DNS-SD -2. PREREQUISITES +The CUPS AirPrint support that is provided by this package generates +and publishes appropriate DNS-SD records for CUPS printers +so that iOS and OS X devices can use them. + + +2. CAVEATS +---------- + +In general: CUPS + Linux printer drivers != AirPrint. + +Sharing CUPS printers (i.e. sharing printers with Linux printer drivers) +via appropriate DNS-SD records so that iOS and OS X devices can use them +often works but may also fail in spectacular and frustrating ways, which +is the reason why there is no native AirPrint support in CUPS. + +In general basic printing tasks from iOS or OS X devices should work +like printing emails or web pages to standard Letter or A4 media. + +But as soon as one goes beyond basic printing tasks things may fall apart. +Some examples what may not work when using CUPS as an AirPrint server: + -Ready media (that's how one gets to pick media sizes on iOS) + -Proper media selection, scaling, and rotation + -Printer status ("out of paper", etc.) + -Duplex printing with some printers + -Color/grayscale mode + -Copies + +Some of these deficiencies would require major changes to CUPS and its +driver architecture to fix, others require driver and (in some cases) +printer firmware updates to correct. + +For reference see the "How to enable AirPrint in CUPS" mail thread +on the "CUPS user discussion list" in October 2015, +in particular see + http://cups.org/pipermail/cups/2015-October/027192.html + http://cups.org/pipermail/cups/2015-October/027196.html + http://cups.org/pipermail/cups/2015-October/027201.html + + +3. PREREQUISITES ---------------- -All printers for which you want to add AirPrint support must first be set up to -accept print jobs via CUPS. Only shared CUPS printers will be offered for -access via AirPrint. +All printers for which you want to add CUPS AirPrint support must first +be set up to accept print jobs via CUPS. Only shared CUPS printers will +be offered for access via AirPrint. + +At least some iOS apps send the URF format when printing via AirPrint so that +the matching urftopdf filter that is provided in cups-filters >= 1.0.25 is +required to convert URF into PDF (PDF is the current standard printing data +format which can be further converted into the printer's native data format). +Because cups-filters cannot be reasonably well used with traditional +CUPS <= 1.5.4 also a modern CUPS >= 1.6 is in practice required. In the following instructions it is assumed (and recommended) that the CUPS and Avahi servers are running on the same host, and that the default configuration of Avahi is used. It is also assumed that the (Apple) client devices and the -CUPS/Avahi host are on the same subnet (see 5.2). +CUPS/Avahi host are on the same subnet (see 6.2). -3. AUTOMATIC CONFIGURATION +4. AUTOMATIC CONFIGURATION -------------------------- By installing this package, some setup steps are automatically taken care of: @@ -34,24 +93,24 @@ By installing this package, some setup steps are automatically taken care of: -Some extra MIME configuration files for CUPS are added: - /usr/share/cups/mime/apple.types - /usr/share/cups/mime/local.convs + /usr/share/cups/mime/apple.types + /usr/share/cups/mime/local.convs -A tool for generating mDNS service profiles for CUPS printers is installed: - /usr/sbin/airprint-generate.py + /usr/sbin/airprint-generate.py -4. MANUAL CONFIGURATION +5. MANUAL CONFIGURATION ----------------------- The following manual configuration steps must be carried out after installing this package: -4.1 CUPS configuration +5.1 CUPS configuration -A "ServerAlias" configuration entry must be added to /etc/cups/cupsd.conf. You +A "ServerAlias" configuration entry must be added to /etc/cups/cupsd.conf. You can do it by running the command cupsctl "ServerAlias=$HOST.local" @@ -64,14 +123,15 @@ Next, enable printer sharing if it isn't enabled already: cupsctl --share-printers -Make sure each individual printer you wish to access via AirPrint is also shared. +Make sure each individual printer you wish to access via AirPrint is also +shared. Finally, restart CUPS: systemctl restart cups -4.2 Avahi configuration +5.2 Avahi configuration Generate Avahi service definitions for your CUPS printers: @@ -83,13 +143,16 @@ generates profiles for. If you see no output at all, check the CUPS settings. Make sure that the Avahi service is running. -4.3 Firewall +5.3 Firewall + +In general regarding firewall protection see + https://en.opensuse.org/SDB:CUPS_and_SANE_Firewall_settings If there is a firewall between the CUPS/Avahi host and your Apple devices, the relevant service ports must be opened: - -port 631 (ipp) - -port 5353 (mdns) + -port 631 (ipp) + -port 5353 (mdns) If you are using SuSEfirewall2, you can run "yast firewall" to open the ports. Under "Allowed Services" you need to allow the "Zeroconf/Bonjour Multicast DNS" @@ -102,10 +165,10 @@ If you want to edit /etc/sysconfig/SuSEfirewall2 manually, you need to add FW_CONFIGURATIONS_EXT="avahi" -5. REMARKS +6. REMARKS ---------- -5.1 CUPS internal mDNS responder +6.1 CUPS internal mDNS responder With CUPS version 1.4 an internal mDNS responder was added for announcing printers on the local network. Unfortunately, the printer records it sends are @@ -115,7 +178,7 @@ The workaround is to publish duplicate printer records specifically tailored for AirPrint, which is what this package is for. -5.2 Local subnet only +6.2 Local subnet only These instructions only work if your Apple devices are on the same subnet as the CUPS/Avahi server. It is possible to make AirPrint work across subnets, but @@ -126,7 +189,9 @@ package. [2] http://pig.made-it.com/cups-dns-sd.html#7041 -5.3 Trademarks +6.3 Trademarks + +AirPrint, Bonjour, and OS X are trademarks of Apple Inc., registered +in the U.S. and other countries, see + http://www.apple.com/legal/intellectual-property/trademark/appletmlist.html -AirPrint and OS X are trademarks of Apple Inc., registered in the U.S. and -other countries. diff --git a/cups-airprint.changes b/cups-airprint.changes index 15ba63f..e032dd1 100644 --- a/cups-airprint.changes +++ b/cups-airprint.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Tue Feb 23 11:03:57 CET 2016 - jsmeix@suse.de + +- Inserted a new section "2. CAVEATS" in README.SUSE + about possible limitations of AirPrint support via CUPS. + ------------------------------------------------------------------- Mon Feb 22 09:47:54 CET 2016 - jsmeix@suse.de diff --git a/cups-airprint.spec b/cups-airprint.spec index 5be013a..ff8705f 100644 --- a/cups-airprint.spec +++ b/cups-airprint.spec @@ -19,7 +19,7 @@ Name: cups-airprint Version: 1.0 Release: 0 -Summary: Airprint for CUPS printers +Summary: AirPrint for CUPS printers License: MIT Group: Hardware/Printing Url: https://github.com/tjfontaine/airprint-generate @@ -51,10 +51,12 @@ AirPrint is an Apple technology that helps you create full-quality printed output from iOS or OS X devices without the need to download or install drivers. -Some printers support AirPrint natively; for those you don't need this package. -For any other printer, if it can be printed to via CUPS on openSUSE, this -package provides the additional tools and configuration files needed to add -AirPrint support. +Some printers support AirPrint natively; for those you don't need CUPS +AirPrint support. For any other printer, if it can be printed to via CUPS +on openSUSE, this package provides the additional tools and configuration +files needed to add CUPS AirPrint support for basic printing tasks from +iOS or OS X devices. For limitations see the "caveats" section in: + %{_docdir}/%{name}/README.SUSE Some post-install configuration changes have to be performed manually to make AirPrint work; please follow the instructions in: