Mise en place d’un serveur d’impression AirPrint

Apple a lancé AirPrint, un système d’impression pour ses appareils mobiles fonctionnant sous iOS – soient les iPod touch, les iPhone et les iPad – ne nécessitant aucune configuration de la part de l’utilisateur. Il suffit juste de s’équiper d’une imprimante compatible – quelques modèles présents (environ une cinquantaine de modèles HP et Epson). Mais il est aussi possible de faire appel au monde du logiciel libre, car en mixant CUPS et Avahi, on peut transformer n’importe quelle imprimante en imprimante AirPrint !

Tout d’abord, il faut que CUPS soit en place et qu’au moins une imprimante soit configurée dessus. Si besoin, se référer à l’article suivant pour savoir comment faire.

Ajouter la ligne suivante dans le fichier « /etc/cups/cupsd.conf ». Dans mon cas j’ai mis cette ligne sous la directive « Listen ».
[generic]ServerAlias *[/generic]

Avec l’arrivée d’iOS 6, il faut ajouter deux nouveaux fichiers pour que le serveur AirPrint soit visible sur les iDevices.

  • /usr/share/cups/mime/airprint.types
    [generic]#
    # « $Id: $ »
    #
    # AirPrint type
    image/urf urf string(0,UNIRAST<00>)
    #
    # End of « $Id: $ ».
    #[/generic]
  • /usr/share/cups/mime/airprint.convs
    [generic]#
    # « $Id: $ »
    #
    # AirPrint
    # Updated list with minimal set 25 Sept
    image/urf application/pdf 100 pdftoraster
    #
    # End of « $Id: $ ».
    #[/generic]

Pour prendre en compte cet ajout, il faut redémarrer le service CUPS.
service cups restart

Attaquons la partie touchant le service Avahi. Nous allons récupérer un script en Python écrit par Timothy J Fontaine permettant de déclarer automatiquement nos imprimantes auprès d’Avahi.
cd /tmp
wget -O airprint-generate.py --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py
chmod +x airprint-generate.py
./airprint-generate.py -d /etc/avahi/services

Nous pouvons aller vérifier que des fichiers sont apparus dans « /etc/avahi/services/ ». Voici dans mon cas le contenu du dossier.
root@airprint:~# ls -l /etc/avahi/services/
total 4
-rw-r--r-- 1 root root 891 déc. 26 19:02 AirPrint-LexmarkE320.service

Si le répertoire n’est pas vide, alors nous pouvons redémarrer le service Avahi.
service avahi-daemon restart

Nous allons pouvoir passer au test, mais tout d’abord, vérifier d’être connecté sur le même réseau que votre serveur d’impression. Ensuite, il faut trouver un document à imprimer, iOS vous proposera les imprimantes partagées sur votre réseau.

AirPrint

Lien utile

Discussion sur le site Apple