Serveur d’impression sur Raspberry Pi : ajouter AirPrint à CUPS sous Arch Linux ARM

Pour imprimer des documents depuis une machine Apple tournant sous iOS comme par exemple un iPad ou un iPhone sur une imprimante partagée via un serveur d’impression CUPS installé sur un Raspberry Pi, il suffit de quelques opérations simples qui ne prennent que quelques minutes.

Couverture d'une publication américaine de la fin des années trente destinée aux pharmaciens représentant un serveur coiffé d'un calot portant un plateau sur lequel sont posés, en équilibre précaire, une coupe de glace et deux grands verre contenant une boisson rafraîchissante. Un insecte qui pourrait être un bourdon butine une fleur épinglée à la boutonnière de sa veste, ce qui semble grandement inquiéter le jeune homme, qui craint de se faire piquer.

« Ce serveur ne manque pas d’air, mais il est loin de faire bonne impression ! » Source : Library of Congress.

Pour le faire, j’ai été aidé, entre autres ressources, par ce billet publié sur le blog Raspberry Pi Home Server.

Qu’est-ce qu’AirPrint ?

AirPrint est une fonction des systèmes d’exploitation conçus par Apple qui permet d’imprimer au travers d’un réseau sans-fil (WiFi) sur des imprimantes compatibles avec AirPrint ou sur des imprimantes non-compatibles via une machine tournant sous Microsoft Windows, Linux ou Apple OS X. AirPrint ne nécessite pas de pilotes propres à l’imprimante utilisée. Comme AirPrint se connecte à l’imprimante uniquement via un réseau WiFi, il requiert un routeur WiFi (ce que sont aujourd’hui la plupart des box ADSL chez les principaux fournisseurs d’accès à l’internet).

AirPrint permet donc d’imprimer sans-fil depuis un iPad, un iPhone récent, un iPod Touch ou encore un Mac tournant sous OS X. Normalement, il faut une imprimante compatible avec AirPrint, mais si l’on en a pas, on peut déguiser à l’intention de ces appareils utilisant AirPrint et connectés au réseau local en WiFi une imprimante ajoutée à un serveur CUPS en imprimante compatible avec AirPrint, en configurant une annonce de service correspondante dans Avahi.

Prérequis pour ajouter le support d’AirPrint à CUPS

L’installation décrite ici a été réalisée dans les conditions suivantes :

L’impression depuis iOS a été testée avec succès avec une tablette iPad tournant sous iOS 7.

Ajout du support d’AirPrint à CUPS

Avant de commencer, il faut s’assurer que deux éléments sont installés sur la carte Raspberry Pi :

  • Le démon Avahi (installer les paquets avahi et nss-mdns).
  • Le module CUPS de python (sous Arch Linux, il faut installer le paquet pycups).

Si ce n’est pas le cas, on les installe avec les droits d’administrateur (en tant que root ou via la commande sudo) :

# pacman -Sy avahi nss-mdns pycups

On complète la configuration de CUPS en ajoutant deux fichiers dans /usr/share/cups/mime/ :

# echo "image/urf urf string(0,UNIRAST<00>)" > /usr/share/cups/mime/airprint.types
# echo "image/urf application/pdf 100 pdftoraster" > /usr/share/cups/mime/airprint.convs

et on redémarre CUPS :

# systemctl restart cups

On peut ensuite télécharger un script en python qui va se charger de créer le déguisement de CUPS en AirPrint avec la complicité d’Avahi :

# wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py

Ce script produit pour chaque imprimante ajoutée à CUPS un fichier AirPrint[…].service. Il faut ensuite placer ces fichiers dans /etc/avahi/services :

# cp AirPrint*.service /etc/avahi/services/

Pour finir, on redémarre le démon Avahi puis le serveur CUPS :

# systemctl restart avahi-daemon cups

Normalement, les périphériques Apple qui sont compatibles AirPrint doivent désormais prendre les imprimantes ajoutées dans CUPS pour des imprimantes compatibles AirPrint et y envoyer des impressions.

Une réflexion sur « Serveur d’impression sur Raspberry Pi : ajouter AirPrint à CUPS sous Arch Linux ARM »

  1. Ping : Transformer un Raspberry Pi en serveur d’impression | Carnet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.