Raspberry Pi et ArchLinux – Installer un serveur d’impression avec CUPS et AirPrint

dcp_770cw

Je suis parti d’une configuration ArchLinux vierge. Donc certains paquets seront soit inutiles soit déjà installés chez vous si votre Raspberry est configuré depuis un certain temps.

Attention : j’ai fait de nombreux essais avec mon « ancien » Raspberry qui n’avait que 256Mo. Impossible d’imprimer une page de test. J’ai pris la carte SD et je l’ai mise dans un modèle avec 512Mo et hop impression du premier coup !

Le problème semble venir de ghostscript qui, sur le modèle 256Mo, n’a pas assez de mémoire pour préparer les fichiers à imprimer.

La fonctionnalité d’impression sans fil d’Apple va pouvoir être reproduite grâce à deux composants principaux :

  • Avahi qui permet de faire connaitre les services via le réseau
  • Cups pour les drivers d’impression

Pour information, chez moi mon imprimante est une Epson SX218 mais aucune raison que la votre ne puisse pas faire la même chose !

  1. Mettre à jour la distribution
    pacman -Suy
  2. Installer les scripts d’initialisation du système pour avoir le script rc.conf de base
    pacman -S initscripts
  3. Installer les paquets concernant CUPS et Avahi ainsi que certaines dépendances (430Mo à installer !). pycups permettra d’avoir une interface web pour configurer votre serveur d’impression
    pacman -Sy cups cups-pdf gutenprint pycups avahi python2
  4. Ajouter les services suivants aux daemons lancés au démarrage
    DAEMONS=(hwclock syslog-ng network netfs crond sshd cups cups-pdf avahi-daemon)
  5. Redémarrer le Raspberry et s’assurer que cups et avahi sont lancés
    ps -ef | grep avahi
    
    ps -ef | grep cups
  6. Il faut maintenant modifier la configuration de CUPS pour prendre en compte l’accès à notre serveur depuis n’importe quelle machine sur le réseau local. Chez moi le réseau local est avec des IP de type 192.168.1.X. Modifier le fichier /etc/cups/cupsd.conf
    # Restrict access to the server...
    
    <Location />
    
      Order allow,deny
    
      Allow 192.168.1.0/24
    
    </Location>
    
    # Restrict access to the admin pages...
    
    <Location /admin>
    
      Order allow,deny
    
      Allow 192.168.1.0/24
    
    </Location>
    
    
  7. Toujours dans le fichier /etc/cups/cupsd.conf, modifier la ligne suivante
    Listen localhost:631

    par

    Port 631
  8. Toujours dans le fichier /etc/cups/cupsd.conf, ajouter les lignes suivantes en début de fichier. ServerAlias est nécessaire pour la fonctionnalité AirPrint.
    # Log general information in error_log - change "warn" to "debug"
    
    # for troubleshooting...
    
    #LogLevel warn
    
    LogLevel debug
    
    ServerAlias *
    
    # Administrator user group...
    
    SystemGroup sys root
  9. Nous devons maintenant pouvoir accéder au serveur web intégré à CUPS tel que défini dans le fichier de configuration http://<ip_raspberry>:631cups-1
  10. Vous pouvez maintenant brancher votre imprimante sur le Raspberry Pi si ce n’est pas déjà fait
  11. Aller dans l’onglet d’administration (login et mot de passe root nécessaires)
  12. Cliquer sur « find new printer »

    cups-2

  13. Sélectionner l’imprimante que vous avez branchée. Chez moi, il s’agit d’une Epson Stylus SX218
  14. Modifier les informations si c’est nécessaire et sélectionner l’option « Share this printer »
  15. Choisir la marque et cliquer sur « continue »
  16. Choisir le modèle de l’imprimante et cliquer sur « Add printer »
  17. Régler vos paramètres par défaut d’impression et cliquer sur « set default options ». Chez moi par exemple j’ai modifié le paramètre de la taille du papier pour mettre par défaut du A4.
  18. Voilà ! Votre imprimante est installée. Si vous allez dans l’onglet « Printers » elle sera dans la liste.

    cups-3

  19. Vous pouvez dès à présent imprimer une page de test. Pour cela, il faut cliquer sur l’imprimante puis dans la liste déroulante « Maintenance » choisir « Print test page »

    cups-4

  20. Maintenant nous allons ajouter le support AirPrint à notre petite machine. Grâce à TJFontaine, via un script python tout va pouvoir se faire automatiquement et nous faciliter la tâche.Récupérer le script :
    wget --no-check-certificate https://raw.github.com/tjfontaine/airprint-generate/master/airprint-generate.py -O /root/airprint-generate.py && chmod 700 /root/airprint-generate.py
  21. Chez moi, le lancement du script donne l’erreur suivante :
    /usr/bin/env: python: No such file or directory

    J’ai donc édité le script et modifié la première ligne en remplacant python par python2

  22. Exécuter le script en lui passant comme paramètre le répertoire où installer le service pour avahi
    /root/airprint-generate.py -d /etc/avahi/services
  23. C’est installé ! Vous avez maintenant dans /etc/avahi/services, un fichier correspondant à votre imprimante :

    cups-5

  24. A partir d’un appareil iOS, en cliquant sur le bouton de partage, vous avez la ligne pour imprimer, vous choisissez l’imprimante que vous venez d’installer et vous validez.

    cups-6

  25. Si vous avez un appareil avec un iOS version 6.x cela risque de ne pas suffire. Le blog de mmornati explique ici comment faire.Avec l’utilisateur root toujours, lancer les 2 commandes suivantes :echo « image/urf urf (0,UNIRAST)" > /usr/share/cups/mime/apple.types

    echo « image/urf application/vnd.cups-postscript 66 pdftops" > /usr/share/cups/mime/local.convs

Chez moi j’ai pu imprimer depuis Mac OS en utilisant l’imprimante AirPrint. L’imprimante de base me renvoyant un message « Obtention du logiciel impossible ». Coté Windows, il faut ajouter une imprimante réseau accessible depuis une URL de type IPP.

A vous de jouer !

Vous aimerez aussi...