Difference between revisions of "CUPS/AirPrint"

From braindump
Jump to navigation Jump to search
Line 75: Line 75:
[[Image:MacOS-System_Preferences.png|link=|System Preferences]] <tt>--></tt> [[Image:MacOS-Print_and_Fax.png|link=|Print & Fax]]
[[Image:MacOS-System_Preferences.png|link=|System Preferences]] <tt>--></tt> [[Image:MacOS-Print_and_Fax.png|link=|Print & Fax]]


The first dialog is the empty <tt>Print & Fax</tt> one clicking on the plus <tt>[+]</tt> sign on the lower left side will open the setup dialog.
The first dialog should be empty


[[Image:01-AirPrint-MacOS-Print_Fax-Dialog-Empty.png|left|374px|link=|frame|Image 1: Empty <tt>Print & Fax</tt> dialog]] <br style="clear: both" />
[[Image:01-AirPrint-MacOS-Print_Fax-Dialog-Empty.png|left|374px|link=|frame|Image 1: Empty <tt>Print & Fax</tt> dialog]] <br style="clear: both" />

[[Image:02-AirPrint-MacOS-Add_Printer-Init.png|left|300px|link=|frame|Image 2: Initial <tt>Add Printer</tt> dialog]] <br style="clear: both" />

[[Image:03-AirPrint-MacOS-Add_Printer-Select.png|left|300px|link=|frame|Image 3: Selected and ready dialog for Adding Printer]] <br style="clear: both" />

[[Image:04-AirPrint-MacOS-Add_Printer-Confirmation.png|left|237px|link=|frame|Image 4: Confirmation dialog]] <br style="clear: both" />

[[Image:05-AirPrint-MacOS-Print_Fax-Dialog-Finished.png|left|374px|link=|frame|Image 5: Populated <tt>Print & Fax</tt> dialog]] <br style="clear: both" />


== References ==
== References ==

Revision as of 23:17, 19 May 2012

The other day I came across an article about AirPrint and wondered if I can share my printer over the WiFi network and print out over CUPS on an Ubuntu installation.

Prerequisuites

Server Side

Client Side (iDevice)

  • iPhone > 3GS, iPad, iPod touch > 3rd Genration
  • Wi-Fi Network

Client Side (MacOS X)

  • Host running MacOS X
  • Network connection

Configuration Server Side

CUPS

There is very little that needs to be done in CUPS to make this work the heavy lifting is on the Avahi side of things. But in order to print from an iDevice a few things need to be checked and if required change the configuration.

Printer is working

Before attempting to print from your iDevices it is probably wise to make sure the target printer is properly working locally over CUPS on the local machine. Configuration of the printer in CUPS is beyond the scope of this article tho.

Printer is shared

In order to print over the network the printer in question CUPS must share the printer. You can check this with your favorite webbrowser under http://localhost:631 or via lpotions command.

lpoptions -p <PrinterName> | grep --color printer-is-shared= 
auth-info-required=none [snip] printer-is-accepting-jobs=true printer-is-shared=true [snip]

The lpotions command is putting its whole output on a single line hence I suggest to use the --color option with grep to easily spot the value in question. Obviously the value should be set to true.

If the printer in question is not shared a quick lpadmin magic will correct that.

lpadmin -p <PrinterName> -o printer-is-shared=true

cupsd.conf

Most likely the /etc/cups/cupsd.conf needs a bit of massaging.

On Ubuntu some people report the following line has to be added:

ServerAlias *

It is also necessary to ensure host from the Wi-Fi network can print to the printer.

<Policy WiFi>
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes 
         Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications 
         Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job 
         Cancel-Job CUPS-Authenticate-Job CUPS-Get-Document>
    Order allow,deny
    Allow from 10.10.10.0/24
   </Limit>
</Policy>

Where Allow from should be the IP Address of your Wi-Fi network.

Avahi

Avahi requires a service file under /etc/avahi/services that is where the airprint-generate.py script comes into play. Run the script as root

sudo python airprint-generate.py

This will generate files called AirPrint-<PrinterName>.service. Copy these files to the Avahi services directory.

sudo cp AirPrint-<PrinterName>.service /etc/avahi/services

Avahi will pick up the new service on the fly without a restart.

Time to check if the configuration worked. On the same machine punch in the following command.

avahi-browse _universal._sub._ipp._tcp 
+  wlan0 IPv6 AirPrint <PrinterName> @ <hostname>             Internet Printer     local
+  wlan0 IPv4 AirPrint <PrinterName> @ <hostname>             Internet Printer     local

The IPv6 line will only show up if you have it enabled.

Configuration Client Side

iDevice

Only for debugging purposes install the free Bonjour Browser. Use it to see if your iDevice can see the Avahi print services.

To check the configuration go to say the Mail app open a message press the arrow button to show the options. Click on print and the printer should come up with the name specified in the Avahi service file.

MacOS X

To have better visibility into what is being advertised in the Bonjour protocol the Bonjour Browser is a very light weight application to help visualize the services advertised.

Adding a printer that is advertised via Bonjour / Avahi should be just a few clicks away. Navigate to the System Preferences and then click on Print & Fax

System Preferences --> Print & Fax

The first dialog is the empty Print & Fax one clicking on the plus [+] sign on the lower left side will open the setup dialog.

Image 1: Empty Print & Fax dialog


Image 2: Initial Add Printer dialog


Image 3: Selected and ready dialog for Adding Printer


Image 4: Confirmation dialog


Image 5: Populated Print & Fax dialog


References