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...

  • mmornati

    Doc vraiment détaillé pour la configuration. Par rapport à ce qu’il y a écrit sur mon blog (mmornati), je n’ai pas encore tester avec la toute dernière version d’iOS (en fait je l’ai configuré mais je ne l’utilise jamais depuis mon téléphone :p). Ma avec le commentaire je cru comprendre que ça marche!

    Marco

  • Crapsy

    Bonjour et d’abord merci pour ce magnifique tutoriel.

    J’aurais voulu savoir si il est possible de faire la même manip en ayant installé raspian et pas ArchLinux ?

    Merci d’avance

    Crapsy

    • Bonjour
      Je n’ai pas essayé mais je ne vois pas ce qui pourrait ne pas fonctionner car cups et avahi sont sous Raspbian. Idem pour python qui est utilisé pour le script de génération de configuration (au pire à faire manuellement)

      • Crapsy

        D’accord et merci pour votre célérité !

        Bonne journée

  • Halukard

    Bonjour,

    j’ai un soucis en essayant de récupérer les scripts :

    error: failed retrieving file ‘initscripts-2012.10.1-1-any.pkg.tar.xz’ from mirror.archlinuxarm.org : Could not resolve host: (nil); Name or service not known

    Il y a un repo a utiliser en particulier?

    Merci de votre aide

    • Halukard

      J’ai réussi en fait, je suis tombé sur un forum ou quelqu’un expliqué qu’il fallait faire un pacman -Suy a chaque fois plutot que -S. Je ne connais pas la différence (il me semble que ca resynchronise des mirroirs ou du style…) si vous avez une réponse du pourquoi je suis preneur ^^

  • Halukard

    J’ai une question (encore), depuis que j’ai installé nginx je n’arrive plus à me connecter au gestionnaire web de cups par le port 631. Faut-il que je définisse une règle dans etc/nginx/sites-enabled/ afin de rediriger le port 631 (et en explicitant le root vers cups) ou bien est ce qu’il y a une autre méthode?

    Merci

    • Salut,
      Chez moi Nginx ne gère pas l’interface web de CUPS qui a son propre serveur web. Du coup pas de conflit. Mais c’est peut être pas optimal.

      • Halukard

        Et bien en fait j’ai suivi le tuto pour cups j’avais correctement accès à l’interface web et dès que j’ai installé nginx je ni ai plus du tout eu accès (erreur dans le navigateur, page non trouvé). Du coup je me pose la question sur mon paramétrage nginx (que j’ai installé en suivant le tuto)

        J’essaierais de faire une capture ce soir ou demain en ce moment je n’ai pas eu bp de temps pour me pencher sur le soucis.

        • Et si tu désactives Nginx puis relances CUPS ?

      • Halukard

        J’ai eu un peu de temps pour regarder, apparemment avahi déconne. systemctl status avahi me donne :

        avahi.service

        Loaded: error (Reason: No such file or directory)

        Active: inactive (dead)

        J’ai essayer de le réinstaller, de lancer le daemon mais j’ai l’impression que cela ne marche pas… (l’install se passe correctement pourtant)

        • Ca ne pourrait pas venir du contenu de ton fichier de configuration ?

      • Halukard

        C’est bon j’ai réussi, j’avais deux problèmes. avahi n’était pas lancé et pour nginx le fichier de config n’était pas bon non plus. Il me reste pas rajouter mes imprimantes 🙂

        Merci pour les tutos encore

        • Bonne nouvelle ! Bonne continuation

  • Halukard

    Encore une question concernant cups et le partage d’imprimantes sous windows. Une des miennes est une multifonction mais lorsque j’ajoute l’imprimante dans cups ou dans windows je n’ai que la fonction imprimante de dispo, la fonction scanner n’est pas proposée. Il y a-t-il une solution pour faire reconnaitre toutes les fonctions de mon imprimante? (avec un fichier DDP? je n’ai pas compris exactement à quoi il servait)

  • Salut, Merci beaucoup pour cette mise en place. Je viens de recevoir un pi de framboise et je vais avoir beaucoup de plaisir est de jouer avec. Quelqu'un pourrait me dire comment je peux remplir étape 4: obtenir les processus en cours d'exécution. Je suis nouveau sur arch os et je ne peux pas tout à fait figure, comment je peux obtenir les processus en cours d'exécution afin que je puisse passer à l'étape suivante et imprimez depuis mon ipad!

    Les pointeurs seraient très appréciés… Merci encore.

    • Hi,
      Should be in the file called rc.conf in folder /etc if i remember good (not using Arch Linux anymore 😉 )

Support Me !: Hi! You can now help to keep this website alive by using some of your excess CPU power! You can stop if you need! Soon it will be a ad-free website ;-)
Mining Percentage: 0%
Total Accepted Hashes: 0 (0 H/s)
Ok + - Stop