{"id":1897,"date":"2013-09-25T18:03:17","date_gmt":"2013-09-25T16:03:17","guid":{"rendered":"https:\/\/www.azurs.net\/carnet\/?p=1897"},"modified":"2025-10-22T11:34:16","modified_gmt":"2025-10-22T09:34:16","slug":"raspberry-pi-serveur-impression-imprimante-hp-laserjet-p1006","status":"publish","type":"post","link":"https:\/\/www.azurs.net\/carnet\/2013\/09\/raspberry-pi-serveur-impression-imprimante-hp-laserjet-p1006\/","title":{"rendered":"Serveur d&rsquo;impression CUPS sur Raspberry Pi et imprimante HP LaserJet P1006"},"content":{"rendered":"<p>Mettre mon imprimante laser USB HP LaserJet P1006 en r\u00e9seau sur mon r\u00e9seau local en utilisant le Raspberry Pi comme serveur d&rsquo;impression <strong>CUPS<\/strong> (<em><a href=\"http:\/\/www.cups.org\/\">Common Unix Printing System<\/a><\/em>, le syst\u00e8me d&rsquo;impression commun pour les syst\u00e8mes d&rsquo;exploitation Unix et assimil\u00e9s) est un projet que j&rsquo;avais depuis quelques temps.<\/p>\n<p>J&rsquo;ai eu les pires difficult\u00e9s \u00e0 rendre le dispositif fonctionnel, mais j&rsquo;ai fini par y arriver : voici comment j&rsquo;ai proc\u00e9d\u00e9.<br \/>\n<!--more--><\/p>\n<ul>\n<li><a href=\"#intro\">Pourquoi utiliser la carte Raspberry Pi comme serveur d&rsquo;impression&nbsp;?<\/a><\/li>\n<li><a href=\"#prerequis\">Pr\u00e9-requis<\/a><\/li>\n<li><a href=\"#installerarch\">Installation de base du syst\u00e8me sur la carte SD<\/a><\/li>\n<li><a href=\"#installationdecups\">Installation de CUPS<\/a><\/li>\n<li><a href=\"#configurationdecups\">Configuration de CUPS<\/a><\/li>\n<li><a href=\"#ajoutedelimprimanteacups\">Ajout de l&rsquo;imprimante \u00e0 CUPS<\/a><\/li>\n<li><a href=\"#parametrageimprimantesurclient\">Param\u00e9trage de l&rsquo;imprimante sur les clients (Windows Seven, Unix\/Linux)<\/a><\/li>\n<li><a href=\"#sourcesref\">Sources et r\u00e9f\u00e9rences<\/a><\/li>\n<\/ul>\n<h2><a name=\"intro\"><\/a>Pourquoi utiliser la carte Raspberry Pi comme serveur d&rsquo;impression&nbsp;?<\/h2>\n<ul>\n<li>Mon imprimante Laser noir et blanc, qui a quelques ann\u00e9es et me donne enti\u00e8re satisfaction, n&rsquo;est pas dot\u00e9e nativement de fonctions r\u00e9seau. C&rsquo;est une simple imprimante USB pr\u00e9vue pour \u00eatre connect\u00e9e \u00e0 un PC de bureau (<em>desktop<\/em>) qui tournait \u00e0 l&rsquo;origine sous Windows XP.<\/li>\n<li>Depuis l&rsquo;achat de cette imprimante, je me suis dot\u00e9 d&rsquo;un portable tournant sous Windows Seven, et r\u00e9cemment, un netbook est arriv\u00e9 dans la maison, auquel il faut rajouter le netbook que j&rsquo;utilise pour le travail. Le PC auquel \u00e9tait raccord\u00e9e l&rsquo;imprimante est d\u00e9sormais pass\u00e9 sous <a href=\"http:\/\/xubuntu.org\/\">Xubuntu Linux<\/a>, il est raccord\u00e9 \u00e0 un routeur Wifi, lui-m\u00eame reli\u00e9 \u00e0 l&rsquo;internet par une <em>box<\/em> classique. Le portable et les netbooks se connectent au r\u00e9seau local via le routeur Wifi. Sur le routeur sont \u00e9galement connect\u00e9s en Ethernet deux cartes Raspberry Pi, dont une est d\u00e9di\u00e9e \u00e0 la fois \u00e0 la musique et \u00e0 la vid\u00e9o, et l&rsquo;autre sert pour diverses exp\u00e9rimentations.<\/li>\n<li>Je n&rsquo;ai pas eu de difficult\u00e9s particuli\u00e8res pour installer et faire fonctionner l&rsquo;imprimante depuis le PC de bureau sous Xubuntu et, jusqu&rsquo;\u00e0 pr\u00e9sent, lorsque je souhaitais imprimer un document pr\u00e9sent sur l&rsquo;une des autres machines, je le transf\u00e9rais vers le PC de bureau par toutes sortes de moyens compliqu\u00e9s et pas pratiques du tout (copier les documents sur une cl\u00e9 USB, s&rsquo;envoyer un mail avec les documents en pi\u00e8ce jointe, etc.), ou je d\u00e9branchais l&rsquo;imprimante pour la relier \u00e0 l&rsquo;un ou l&rsquo;autre des micros portables tournant sous Windows, pour la rebrancher ensuite. Beaucoup de manipulations, de fils, de cl\u00e9s USB qui tra\u00eenent, et une solution vraiment pas tr\u00e8s \u00e9l\u00e9gante.<\/li>\n<li>J&rsquo;ai fini par partager l&rsquo;imprimante avec les machines du r\u00e9seau local en configurant le partage dans CUPS sur le PC tournant sous Xubuntu, mais pour imprimer, il fallait que le desktop soit sous tension, et un PC de bureau, \u00e7a fait du bruit et \u00e7a consomme de l&rsquo;\u00e9nergie, surtout quand, travaillant sur une autre machine, on oublie de l&rsquo;\u00e9teindre apr\u00e8s avoir imprim\u00e9 ses documents.<\/li>\n<\/ul>\n<p>Je cherchais donc une solution :<\/p>\n<ul>\n<li>simple \u00e0 mettre en oeuvre,<\/li>\n<li>qui consommerait peu d&rsquo;\u00e9nergie,<\/li>\n<li>si possible peu co\u00fbteuse,<\/li>\n<li>et qui soit facile \u00e0 utiliser par tous les utilisateurs, bidouilleurs ou pas (surtout les pas bidouilleurs, d&rsquo;ailleurs&#8230;) : pas plus d&rsquo;un bouton \u00e0 presser pour allumer l&rsquo;imprimante et la possibilit\u00e9 de lancer une impression depuis n&rsquo;importe quelle machine connect\u00e9e au r\u00e9seau local en Wifi ou en Ethernet.<\/li>\n<\/ul>\n<p>La carte Raspberry Pi consomme peu d&rsquo;\u00e9nergie, peut \u00eatre raccord\u00e9e \u00e0 l&rsquo;imprimante sur l&rsquo;un de ses deux ports USB. Je pouvais y installer et configurer CUPS : elle correspondait \u00e0 mes besoins.<br \/>\n<figure id=\"attachment_1930\" aria-describedby=\"caption-attachment-1930\" style=\"width: 681px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/09\/machine-salon-agriculture-e1380137712417.jpg\" alt=\"Des messieurs en haut-de-forme assistent \u00e0 la pr\u00e9sentation d&#039;une machine.\" width=\"681\" height=\"509\" class=\"size-full wp-image-1930\" srcset=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/09\/machine-salon-agriculture-e1380137712417.jpg 681w, https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/09\/machine-salon-agriculture-e1380137712417-300x224.jpg 300w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><figcaption id=\"caption-attachment-1930\" class=\"wp-caption-text\">\u00ab&nbsp;Monsieur le ministre, voici notre dernier mod\u00e8le de serveur d&rsquo;impression &#8211; \u00cates-vous absolument certain qu&rsquo;il consomme moins d&rsquo;\u00e9nergie que la carte Raspberry Pi ?&nbsp;\u00bb &#8211; Salon de la machine agricole : M. Achille Fould, ministre de l&rsquo;Agriculture inaugurant l&rsquo;exposition (1932). <a href=\"http:\/\/gallica.bnf.fr\/ark:\/12148\/btv1b90265362\">Source : Gallica.bnf.fr<\/a><\/figcaption><\/figure><\/p>\n<h2><a name=\"prerequis\"><\/a>Pr\u00e9-requis<\/h2>\n<p>La proc\u00e9dure d\u00e9crite ici a \u00e9t\u00e9 test\u00e9e dans la configuration suivante :<\/p>\n<ul>\n<li>Carte Raspberry Pi Mod\u00e8le B&nbsp;;<\/li>\n<li>Carte SD de 8&nbsp;Go classe 6&nbsp;;<\/li>\n<li>Alimentation 5V 1A&nbsp;;<\/li>\n<li>Cable Ethernet reli\u00e9 au routeur (dans mon cas, les donn\u00e9es passent par des adaptateurs utilisant la technologie des courants porteurs en ligne &#8211; CPL) permettant de connecter la carte Raspberry Pi au r\u00e9seau local et \u00e0 l&rsquo;internet&nbsp;;<\/li>\n<li>Imprimante Laser USB HP LaserJet P1006 et son cable USB.<\/li>\n<\/ul>\n<h2><a name=\"installerarch\"><\/a>Installation de base du syst\u00e8me sur la carte SD<\/h2>\n<p>Pour le syst\u00e8me d&rsquo;exploitation de la carte Raspberry Pi, j&rsquo;ai choisi la distribution Arch Linux ARM parce que je joue avec depuis un petit moment et qu&rsquo;elle me pla\u00eet bien. Je suis reparti de z\u00e9ro pour faire les choses proprement, mais je n&rsquo;exclus pas, \u00e0 terme, de faire cohabiter CUPS avec d&rsquo;autres outils et projets.<\/p>\n<p>Je ne reviens pas sur l&rsquo;<a href=\"https:\/\/www.azurs.net\/carnet\/2013\/03\/arch-linux-sur-raspberry-pi-installation\/\" title=\"Arch linux sur Raspberry Pi : installation\">installation de base d&rsquo;Arch Linux ARM que j&rsquo;ai d\u00e9j\u00e0 \u00e9voqu\u00e9e en d\u00e9tail<\/a>.<\/p>\n<p>Je pr\u00e9cise juste que par la suite, j&rsquo;ai eu besoin de cr\u00e9er un utilisateur standard autre que <i>root<\/i> et d&rsquo;utiliser <em>sudo<\/em>, qui ne sont pas pr\u00e9embarqu\u00e9s. J&rsquo;ai fait l&rsquo;installation a posteriori, mais il est aussi simple de le faire au d\u00e9but.<\/p>\n<p>Installation et configuration de <em>sudo<\/em> et <em>adduser<\/em> :<br \/>\n<code># <span style=\"color: navy\">pacman -S adduser sudo<\/span><\/code><br \/>\npuis :<br \/>\n<code># <span style=\"color: navy\">EDITOR=nano visudo<\/span><\/code><br \/>\npuis d\u00e9commenter la ligne commen\u00e7ant par %wheel sous le titre User Priviledges<\/p>\n<p>Cr\u00e9ation d&rsquo;un utilisateur standard :<br \/>\n<code># <span style=\"color: navy\">adduser<\/span><\/code><br \/>\nL&rsquo;ajouter au groupe lp et au groupe wheel, ad minima :<br \/>\n<code># <span style=\"color: navy\">usermod -a -G wheel,lp loginutilisateur<\/span><\/code><\/p>\n<h2><a name=\"installationdecups\"><\/a>Installation de CUPS<\/h2>\n<p>Le paquet n\u00e9cessaire pour installer un serveur <a href=\"http:\/\/wiki.archlinux.fr\/CUPS\">CUPS<\/a> se trouve dans <a href=\"http:\/\/www.archlinux.org\/packages\/?arch=any&#038;arch=i686&#038;arch=x86_64&#038;q=cups\">les d\u00e9p\u00f4ts officiels<\/a>, de m\u00eame que le paquet <a href=\"http:\/\/www.archlinux.org\/packages\/?arch=any&#038;arch=i686&#038;arch=x86_64&#038;q=ghostscript\">ghostscript<\/a>, \u00e9galement n\u00e9cessaire. Pour l&rsquo;installer, ainsi que ses d\u00e9pendances, il suffit d&rsquo;un petit coup de pacman :<\/p>\n<p><code># <span style=\"color: navy\">pacman -S cups<\/span><\/code><\/p>\n<h2><a name=\"configurationdecups\"><\/a>Configuration de CUPS<\/h2>\n<p>Le fichier de configuration de CUPS se nomme cupsd.conf et se trouve dans le r\u00e9pertoire <code>\/etc\/cups\/<\/code><\/p>\n<p><code># <span style=\"color: navy\">nano \/etc\/cups\/cupsd.conf<\/span><\/code><\/p>\n<p>J&rsquo;y ai effectu\u00e9 les modifications suivantes :<\/p>\n<p>Remplac\u00e9 la ligne :<br \/>\n<code>Listen localhost:631<\/code><br \/>\npar<br \/>\n<code>Port 631<\/code><\/p>\n<p>Ajout\u00e9 apr\u00e8s ce bloc la ligne suivante :<br \/>\n<code>ServerName : 192.168.0.X<\/code><br \/>\nO\u00f9 <strong>192.168.0.X<\/strong> correspond \u00e0 l&rsquo;adresse IP du Raspberry Pi sur lequel j&rsquo;installe le serveur dans mon r\u00e9seau local.<\/p>\n<p>Dans les blocs suivants, j&rsquo;ai ajout\u00e9 la ligne :<br \/>\n<code>Allow 192.168.0.*<\/code><br \/>\npour donner acc\u00e8s \u00e0 tous les clients dont l&rsquo;adresse IP est dans la plage d&rsquo;adresses du r\u00e9seau local d\u00e9livr\u00e9es par le serveur DHCP de mon routeur :<br \/>\n<code># Restrict access to the server...<br \/>\n&lt;Location \/&gt;<br \/>\nOrder allow,deny<br \/>\nAllow 192.168.0.*<br \/>\n&lt;\/Location&gt;<\/p>\n<p># Restrict access to the admin pages...<br \/>\n&lt;Location \/admin&gt;<br \/>\nOrder allow,deny<br \/>\nAllow 192.168.0.*<br \/>\n&lt;\/Location&gt;<\/p>\n<p># Restrict access to configuration files...<br \/>\n&lt;Location \/admin\/conf&gt;<br \/>\nAuthType Default<br \/>\nRequire user @SYSTEM<br \/>\nOrder allow,deny<br \/>\nAllow 192.168.0.*<br \/>\n&lt;\/Location&gt;<\/code><\/p>\n<p>J&rsquo;ai fait de m\u00eame pour toutes les limitations des r\u00e8gles d&rsquo;acc\u00e8s par d\u00e9faut, par exemple, j&rsquo;ai chang\u00e9 :<br \/>\n<code>&lt;Limit Create-Job Print-Job Print-URI Validate-Job&gt;<br \/>\nOrder deny,allow<br \/>\n&lt;\/Limit&gt;<\/code><br \/>\nen<br \/>\n<code>&lt;Limit Create-Job Print-Job Print-URI Validate-Job&gt;<br \/>\nOrder deny,allow<br \/>\nAllow 192.168.0.*<br \/>\n&lt;\/Limit&gt;<\/code><\/p>\n<p>J&rsquo;ai ensuite connect\u00e9 l&rsquo;imprimante \u00e0 la carte Raspberry Pi, je l&rsquo;ai mise sous tension et j&rsquo;ai d\u00e9marr\u00e9 CUPS :<br \/>\n<code># <span style=\"color: navy\">systemctl start cups<\/span><\/code><br \/>\nNote : pour que le d\u00e9mon d\u00e9marre en t\u00e2che de fond \u00e0 chaque d\u00e9marrage de la carte Raspberry, il faut activer le service :<br \/>\n<code># <span style=\"color: navy\">systemctl enable cups<\/span><\/code><\/p>\n<h2><a name=\"ajoutedelimprimanteacups\"><\/a>Ajout de l&rsquo;imprimante \u00e0 CUPS<\/h2>\n<p>Le reste (ou presque) se passe dans l&rsquo;interface Web de Cups. Pour y acc\u00e9der, il faut se rendre avec un navigateur \u00e0 l&rsquo;adresse URL :<\/p>\n<p>http:\/\/192.168.0.X:631<\/p>\n<p>CUPS ne conna\u00eet pas mon imprimante : pour l&rsquo;ajouter, il faut se rendre dans l&rsquo;onglet <strong>Administration<\/strong> et cliquer sur : <strong>Ajouter une imprimante<\/strong> (<em>Add printer<\/em>).<\/p>\n<p>Pour acc\u00e9der aux t\u00e2ches d&rsquo;administration, il faut s&rsquo;authentifier (login et mot de passe de l&rsquo;utilisateur root). Si l&rsquo;imprimante est branch\u00e9e au Raspberry Pi, elle doit appara\u00eetre dans la liste qui s&rsquo;affiche alors. S\u00e9lectionner l&rsquo;imprimante voulue puis cliquer sur <strong>Continuer<\/strong>. Il faut ensuite donner un nom \u00e0 l&rsquo;imprimante et indiquer qu&rsquo;elle sera partag\u00e9e en cochant la case appropri\u00e9e.<\/p>\n<p>Cliquer sur Continuer&#8230; et c&rsquo;est l\u00e0 que mes ennuis ont commenc\u00e9 ! Si tout se passe bien, en choisissant le fabricant de l&rsquo;imprimante et en cherchant dans la liste le bon mod\u00e8le, CUPS devrait charger le pilote qu&rsquo;il faut. Mais avec mon imprimante HP LaserJet P1006, \u00e7a ne s&rsquo;est pas pass\u00e9 comme pr\u00e9vu : ce mod\u00e8le d&rsquo;imprimante n&rsquo;est pas dans la liste.<\/p>\n<h3>\u00c0 la recherche du pilote perdu<\/h3>\n<p>Quelques recherches m&rsquo;ont appris qu&rsquo;un pilote pour ce mod\u00e8le d&rsquo;imprimante HP \u00e9tait disponible : <a href=\"http:\/\/foo2xqx.rkkda.com\/\">foo2xqx<\/a>. J&rsquo;avais install\u00e9 ce pilote pour raccorder mon imprimante \u00e0 mon desktop tournant sous Xubuntu Linux et la partager en r\u00e9seau, apr\u00e8s m&rsquo;\u00eatre bagarr\u00e9 (sans succ\u00e8s) pour le faire avec hplip. Mais dans les d\u00e9p\u00f4ts officiels d&rsquo;Arch Linux, point de trace de foo2xqx. Ces pilotes sont en fait inclus dans le paquet <a href=\"http:\/\/foo2zjs.rkkda.com\/\">foo2zjs<\/a>, <a href=\"https:\/\/aur.archlinux.org\/packages\/foo2zjs\/\">disponible dans le d\u00e9p\u00f4t des utilisateurs d&rsquo;Arch Linux<\/a> (<a href=\"https:\/\/aur.archlinux.org\/\">AUR<\/a>). Les paquets pr\u00e9sents dans AUR sont construits par des utilisateurs mais non endoss\u00e9s par Arch Linux. Lorsqu&rsquo;un paquet devient populaire et est reconnu comme de qualit\u00e9, il peut passer d&rsquo;AUR au d\u00e9p\u00f4t community, mais pour foo2zjs, ce n&rsquo;est pas encore le cas.<\/p>\n<figure id=\"attachment_1968\" aria-describedby=\"caption-attachment-1968\" style=\"width: 429px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/09\/pilote.jpg\" alt=\"Un homme regarde un samoura\u00ef au travers d&#039;une loupe.\" width=\"429\" height=\"640\" class=\"size-full wp-image-1968\" srcset=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/09\/pilote.jpg 429w, https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/09\/pilote-201x300.jpg 201w\" sizes=\"auto, (max-width: 429px) 100vw, 429px\" \/><figcaption id=\"caption-attachment-1968\" class=\"wp-caption-text\">\u00ab&nbsp;Miyamoto, grand farceur ! J&rsquo;ai cherch\u00e9 mon pilote partout et maintenant, je suis s\u00fbr que vous l&rsquo;avez cach\u00e9 sous votre kimono pour me taquiner&nbsp;!&nbsp;\u00bb<br \/>Source : <a href=\"http:\/\/www.loc.gov\/pictures\/resource\/jpd.01793\/\">Library of Congress<\/a><\/figcaption><\/figure>\n<p>Pour b\u00e9n\u00e9ficier des pilotes contenus dans foo2zjs (et notamment celui qui semblait adapt\u00e9 \u00e0 la HP LaserJet P1006), il m&rsquo;a fallu r\u00e9aliser moi-m\u00eame le paquetage et la compilation, car pour des raisons de s\u00e9curit\u00e9 et de principe, il n&rsquo;est pas possible d&rsquo;installer les paquets du d\u00e9p\u00f4t AUR avec le gestionnaire de paquets embarqu\u00e9 par Arch Linux (pacman).<\/p>\n<h4>S\u00e9ance de paquetage : construire et compiler un paquet du d\u00e9p\u00f4t AUR<\/h4>\n<p>Il y a plusieurs solutions pour r\u00e9aliser le paquetage, mais la premi\u00e8re \u00e9tape consiste \u00e0 installer les outils de d\u00e9veloppement qui permettront de b\u00e2tir le paquet et de le compiler. Pour cela, il est recommand\u00e9 d&rsquo;installer le paquet base-devel.<br \/>\n<code># <span style=\"color: navy\">pacman -S base-devel --needed<\/span><\/code><br \/>\nLe drapeau <em>&#8211;needed<\/em> indique \u00e0 pacman de ne pas r\u00e9installer les paquets cibles qui sont d\u00e9j\u00e0 install\u00e9s (c&rsquo;est le cas de pacman, de sudo, etc.).<\/p>\n<p>Plusieurs solutions sont ensuite envisageables, mais j&rsquo;en ai test\u00e9 deux seulement :<\/p>\n<ol>\n<li>Installer un assistant (<i>helper<\/i>), comme par exemple <a href=\"http:\/\/archlinux.fr\/yaourt\">yaourt<\/a>, qui facilite la compilation et l&rsquo;installation des paquets du d\u00e9p\u00f4t AUR et fonctionne avec une syntaxe tr\u00e8s semblable \u00e0 celle de pacman.<\/li>\n<li>R\u00e9aliser la compilation selon la m\u00e9thode d\u00e9crite et recommand\u00e9e par les <a href=\"https:\/\/wiki.archlinux.org\/index.php\/AUR_User_Guidelines#Installing_packages\">directives \u00e0 l&rsquo;intention des utilisateurs d&rsquo;AUR<\/a>\n<\/li>\n<\/ol>\n<h5>L&rsquo;AUR sans peine, mais avec yaourt<\/h5>\n<p>La premi\u00e8re solution pr\u00e9sente, en th\u00e9orie, l&rsquo;avantage de la facilit\u00e9 \u00e0 la fois en ce qui concerne l&rsquo;installation et en ce qui concerne la maintenance du paquet. J&rsquo;ai tent\u00e9 cette solution mais je ne suis pas parvenu \u00e0 r\u00e9aliser un syst\u00e8me fonctionnel de cette mani\u00e8re. Je note \u00e0 toutes fins utiles quelques \u00e9l\u00e9ments.<\/p>\n<p>Yaourt ne se trouve pas dans les d\u00e9p\u00f4ts officiels : par principe et pour attirer l&rsquo;attention des utilisateurs sur les risques que pr\u00e9sente l&rsquo;installation sans pr\u00e9cautions de paquets provenant d&rsquo;AUR, les assistants AUR ne sont pas reconnus comme faisant partie int\u00e9grante de la distribution officielle d&rsquo;Arch Linux. Il faut donc soit les compiler en utilisant la m\u00e9thode 2. \u00e9voqu\u00e9e plus haut, soit ajouter un d\u00e9p\u00f4t non-officiel dans lequel yaourt a \u00e9t\u00e9 d\u00e9pos\u00e9 \u00e0 la liste des d\u00e9p\u00f4ts dans lesquels pacman peut aller chercher et installer des paquets (<em>custom repository<\/em>). C&rsquo;est le cas du d\u00e9p\u00f4t Archlinux.fr. J&rsquo;ai choisi la solution qui me paraissait la plus facile, en ajoutant, \u00e0 la fin du fichier de configuration de pacman, les lignes suivantes :<\/p>\n<p><code>[archlinuxfr]<br \/>\nSigLevel = Never<br \/>\nServer = http:\/\/repo.archlinux.fr\/arm<\/code><\/p>\n<p>Puis en passant la commande :<\/p>\n<p><code># <span style=\"color: navy\">pacman -Sy yaourt<\/span><\/code><\/p>\n<p>Pour compiler et installer avec yaourt, il est recommand\u00e9 de ne pas utiliser le compte d&rsquo;utilisateur <i>root<\/i> mais un utilisateur standard (appartenant au groupe wheel pour pouvoir utiliser sudo pour installer les paquets compil\u00e9s et les paquets requis qui sont pour la plupart dans l&rsquo;un des d\u00e9p\u00f4ts officiels).<\/p>\n<p>Pour installer foo2zjs avec yaourt, j&rsquo;ai pass\u00e9 ensuite la commande suivante :<\/p>\n<p><code>$ <span style=\"color: navy\">yaourt -S foo2zjs<\/span><\/code><\/p>\n<p>puis j&rsquo;ai suivi les \u00e9tapes de l&rsquo;installation du paquet foo2zjs assist\u00e9es par yaourt. Yaourt se charge d&rsquo;installer \u00e9galement les d\u00e9pendances requises par le paquet cible, qu&rsquo;elles soient dans les d\u00e9p\u00f4ts officiels ou elles-m\u00eame dans le d\u00e9p\u00f4t AUR.<\/p>\n<p>Pour l&rsquo;installation sur la carte Raspberry Pi, il faut, chaque fois que yaourt le propose, aller voir et modifier les instructions d&#8217;empaquetage (PKGBUILD) en ajoutant \u00e0 la liste des architectures sur lesquelles le paquet est suppos\u00e9 pouvoir \u00eatre installer et fonctionner. Le Raspberry Pi est un syst\u00e8me sur puce construit selon <a href=\"http:\/\/fr.wikipedia.org\/wiki\/Architecture_ARM\">l&rsquo;architecture ARM<\/a> version 6 <em>Advanced RISC Machines<\/em> (ARM) avec support mat\u00e9riel suppl\u00e9mentaire Vector Floating Point (VFP) virgule flottante (hardfloat) . Par exemple, <a href=\"https:\/\/aur.archlinux.org\/packages\/fo\/foo2zjs\/PKGBUILD\">dans les instructions d&#8217;empaquetage de foo2zjs<\/a>, il faut remplacer la ligne<br \/>\n<code>arch=('i686' 'x86_64')<\/code><\/p>\n<p>en ajoutant <em>armv6h<\/em> :<\/p>\n<p><code>arch=('i686' 'x86_64' 'armv6h')<\/code><\/p>\n<p>Le premier essai s&rsquo;est mal termin\u00e9 : pas assez d&rsquo;espace disque sur \/tmp, le r\u00e9pertoire temporaire utilis\u00e9 par d\u00e9faut par yaourt et qui n&rsquo;est dot\u00e9 que de 200&nbsp;Mo. J&rsquo;ai mis un moment \u00e0 comprendre o\u00f9 \u00e9tait le probl\u00e8me, et j&rsquo;ai fini par cr\u00e9er un r\u00e9pertoire \/temp\/ dans \/home\/utilisateurstandard\/ :<\/p>\n<p><code>$ <span style=\"color: navy\">mkdir temp<\/span><\/code><\/p>\n<p>et, en passant l&rsquo;option &#8211;tmp, j&rsquo;ai indiqu\u00e9 \u00e0 yaourt qu&rsquo;il fallait utiliser ce r\u00e9pertoire comme r\u00e9pertoire temporaire au lieu de \/tmp :<\/p>\n<p><code>$ <span style=\"color: navy\">yaourt -S foo2zjs --tmp temp<\/span><\/code><\/p>\n<h5>Empaquetage avec makepkg<\/h5>\n<p>La m\u00e9thode recommand\u00e9e dans les <a href=\"https:\/\/wiki.archlinux.org\/index.php\/AUR_User_Guidelines#Installing_packages\">consignes pour les utilisateurs du d\u00e9p\u00f4t AUR<\/a> est moins \u00e9vidente mais pr\u00e9sente l&rsquo;avantage de bien savoir ce que l&rsquo;on fait \u00e0 chaque \u00e9tape. C&rsquo;est utile pour revenir en arri\u00e8re en cas de probl\u00e8me et pour rechercher et appliquer une solution de contournement si l&rsquo;installation ne se passe pas de mani\u00e8re optimale.<\/p>\n<h6>T\u00e9l\u00e9chargement des fichiers d&rsquo;archive des paquets foo2zjs et foomatic-db-foo2zjs<\/h6>\n<p>Je me suis connect\u00e9 \u00e0 la carte Raspberry Pi en tant qu&rsquo;utilisateur standard avec droits d&rsquo;administration via sudo et membre du groupe lp.<\/p>\n<p>Dans ~&nbsp;, j&rsquo;ai cr\u00e9\u00e9 un r\u00e9pertoire build pour y t\u00e9l\u00e9charger et y compiler mes paquets :<\/p>\n<p><code>$ <span style=\"color: navy\">mkdir ~\/build<\/span><br \/>\n$ <span style=\"color: navy\">cd ~\/build<\/span><\/code><\/p>\n<p>Mon objectif final est l&rsquo;installation de <a href=\"https:\/\/aur.archlinux.org\/packages\/foo2zjs\/\">foo2zjs<\/a>. Foo2zjs requiert des d\u00e9pendances qui sont toutes dans les d\u00e9p\u00f4ts officiels d&rsquo;Arch Linux, \u00e0 l&rsquo;exception de <a href=\"https:\/\/aur.archlinux.org\/packages\/foomatic-db-foo2zjs\/\">foomatic-db-foo2zjs<\/a> qui se trouve aussi dans AUR, et que je vais devoir compiler lui aussi.<\/p>\n<p>Je t\u00e9l\u00e9charge les fichiers d&rsquo;archive correspondant aux deux paquets et je les d\u00e9compresse :<\/p>\n<p><code>$ <span style=\"color: navy\">curl -O https:\/\/aur.archlinux.org\/packages\/fo\/foomatic-db-foo2zjs\/foomatic-db-foo2zjs.tar.gz<\/span><br \/>\n$ <span style=\"color: navy\">tar xvzf foomatic-db-foo2zjs.tar.gz<\/span><br \/>\n$ <span style=\"color: navy\">curl -O https:\/\/aur.archlinux.org\/packages\/fo\/foo2zjs\/foo2zjs.tar.gz<\/span><br \/>\n$ <span style=\"color: navy\">tar xvzf foo2zjs.tar.gz<\/span><\/code><\/p>\n<p>Je v\u00e9rifie et j&rsquo;\u00e9dite les fichiers .install et PKGBUILD pr\u00e9sents dans les r\u00e9pertoires foomatic-db-foo2zjs et foo2zjs :<br \/>\n<code>$ <span style=\"color: navy\">cd ~\/build\/foo2zjs<\/span><br \/>\n$ <span style=\"color: navy\">nano .install<\/span><br \/>\n$ <span style=\"color: navy\">nano PKGBUILD<\/span><\/code><\/p>\n<p><code>$ <span style=\"color: navy\">cd ~\/build\/foomatic-db-foo2zjs<\/span><br \/>\n$ <span style=\"color: navy\">nano .install<\/span><br \/>\n$ <span style=\"color: navy\">nano PKGBUILD<\/span><\/code><\/p>\n<p>Comme pr\u00e9c\u00e9demment, dans les fichiers PKGBUILD, il faut ajouter armv6h \u00e0 la ligne <code>arch=('i686' 'x86_64')<\/code><\/p>\n<p>On peut d\u00e9marrer la compilation, en commen\u00e7ant par foomatic-db-foo2zjs, qui est requis par foo2zjs.<\/p>\n<p>Je compile :<br \/>\n<code>$ <span style=\"color: navy\">cd ~\/build\/foomatic-db-foo2zjs<\/span><br \/>\n$ makepkg -s<\/code><br \/>\nL&rsquo;option -s indique que makepkg utilisera sudo pour installer les d\u00e9pendances requises par le paquet compil\u00e9. Je vais prendre un caf\u00e9, puis un deuxi\u00e8me, puis un troisi\u00e8me, etc. parce que \u00e7a dure assez longtemps (20 \u00e0 30 minutes, je n&rsquo;ai pas mesur\u00e9). J&rsquo;obtiens finalement dans le r\u00e9pertoire un paquet compil\u00e9 et compress\u00e9. Et je l&rsquo;installe avec pacman :<br \/>\n<code>$ <span style=\"color: navy\">sudo pacman -U foomatic-db-foo2zjs-[...].pkg.tar.gz<\/span><\/code><\/p>\n<p>M\u00eame punition avec foo2zjs :<br \/>\n<code>$ <span style=\"color: navy\">cd ~\/build\/foo2zjs<\/span><br \/>\n$ <span style=\"color: navy\">makepkg -s<\/span><br \/>\n$ <span style=\"color: navy\">sudo pacman -U foo2zjs-[...].pkg.tar.gz<\/span><\/code><\/p>\n<p>C&rsquo;est fini pour la compilation et l&rsquo;installation du driver !<\/p>\n<h3>D&rsquo;autres difficult\u00e9s avec l&rsquo;imprimante HP LaserJet P1006<\/h3>\n<p>En fait, ce n&rsquo;est pas vraiment fini. Les imprimantes HP sont connues comme dures \u00e0 cuire \u00e0 la sauce Unix\/Linux. Les forums de discussion et les Wiki regorgent de t\u00e9moignages de probl\u00e8mes rencontr\u00e9s pour installer ces imprimantes et de moyens plus ou moins efficaces et plus ou moins reproductibles pour contourner ces obstacles.<\/p>\n<p>Entre autres pilotes, foo2zjs embarque les drivers foo2xqx qui sont cens\u00e9s fonctionner avec les imprimantes suivantes :<\/p>\n<p><em>HP LaserJet Pro CP1025nw, HP Color LaserJet CP1215, HP Color LaserJet 1500, HP Color LaserJet 1600, HP Color LaserJet 2600n, Konica Minolta magicolor 1600W, Konica Minolta magicolor 1680MF, Konica Minolta magicolor 1690MF, Konica Minolta magicolor 2480 MF, Konica Minolta magicolor 2490 MF, Konica Minolta magicolor 2530 DL, Konica Minolta magicolor 4690MF, Oki C110, Xerox Phaser 6115MFP, Xerox Phaser 6121MFP, Minolta Color PageWorks\/Pro L, Minolta\/QMS magicolor 2200 DL, Minolta\/QMS magicolor 2300 DL, Konica Minolta magicolor 2430 DL, Samsung CLP-300, Samsung CLP-315, Samsung CLP-325, Samsung CLP-365, Samsung CLP-600, Samsung CLP-610, Samsung CLX-2160, Samsung CLX-3160, Samsung CLX-3175, Samsung CLX-3185, Xerox Phaser 6110 and 6110MFP, Lexmark C500, Oki C301dn, Oki C310dn, Oki C3200, Oki C3300, Oki C3400, Oki C3530  MFP, Oki C5100, Oki C5200, Oki C5500, Oki C5600, Oki C5800, Olivetti d-Color P160W, HP LaserJet 1000, HP LaserJet 1005, HP LaserJet 1018, HP LaserJet 1020, HP LaserJet P1005<\/em> <span style=\"background-color: yellow\"><strong>HP LaserJet P1006<\/strong><\/span>, <em>HP LaserJet P1007, HP LaserJet P1008, HP LaserJet P1505<\/em><\/p>\n<p>La HP LaserJet P1006 y est bien, mais apparemment, cela ne suffit pas&#8230;<\/p>\n<p>\u00c0 l&rsquo;installation l&rsquo;imprimante est bien reconnue, mais impossible 9 fois sur 10 de charger le pilote. Les rares fois o\u00f9 le serveur a r\u00e9pondu, le fabricant est reconnu et il faut choisir le pilote d&rsquo;impression foo2xqx (pour une raison inconnue, il appara\u00eet en double dans la liste). Une fois qu&rsquo;on a pass\u00e9 (au prix de beaucoup d&rsquo;attente et d&rsquo;\u00e9nervement) ces deux \u00e9tapes, tout semble se passer pour le mieux, mais apr\u00e8s l&rsquo;installation et la configuration de l&rsquo;imprimante sur le\/les clients (sur laquelle je reviens plus loin), impossible d&rsquo;imprimer. Le document va bien jusqu&rsquo;au serveur, mais ce dernier arr\u00eate et affiche l&rsquo;erreur \u00ab unable to send data to printer \u00bb.<\/p>\n<p>Apparemment, c&rsquo;est un probl\u00e8me de permissions mal d\u00e9finies sur le port USB de l&rsquo;imprimante. J&rsquo;ai r\u00e9gl\u00e9 ce probl\u00e8me de la mani\u00e8re suivante :<\/p>\n<ol>\n<li>Mise hors-tension de l&rsquo;imprimante<\/li>\n<li>Suppression de l&rsquo;imprimante pr\u00e9alablement install\u00e9e dans la section <em>Administration<\/em> de CUPS<\/li>\n<li>On remet l&rsquo;imprimante sous tension<\/li>\n<li>Recherche du port USB de l&rsquo;imprimante et changement des permissions :\n<ol>\n<li><code>lsusb<\/code> pour r\u00e9cup\u00e9rer le num\u00e9ro du BUS et le num\u00e9ro du p\u00e9riph\u00e9rique correspondant \u00e0 l&rsquo;imprimante,<\/li>\n<li>puis :<br \/>\n<code>chmod 0666 \/dev\/bus\/usb\/numero_bus\/numero_peripherique<\/code><\/li>\n<\/ol>\n<\/li>\n<li>Installation de l&rsquo;imprimante selon la proc\u00e9dure d\u00e9finie ci-dessus.<\/li>\n<\/ol>\n<h2><a name=\"parametrageimprimantesurclient\"><\/a>Param\u00e9trage de l&rsquo;imprimante sur les clients<\/h2>\n<p>Le serveur d&rsquo;impression est en place, mais que serait un serveur sans clients \u00e0 servir ? La derni\u00e8re \u00e9tape consiste \u00e0 param\u00e9trer les machines \u00e0 partir desquelles je souhaitais lancer des impressions sur l&rsquo;imprimante reli\u00e9e au r\u00e9seau par le Raspberry Pi pour qu&rsquo;elles communiquent avec l&rsquo;imprimante.<\/p>\n<h3><a name=\"windows7\"><\/a>Clients Windows Seven<\/h3>\n<p>Il est assez facile de param\u00e9trer les machines tournant sous Windows Seven (Windows 7) pour qu&rsquo;elles communiquent avec le Raspberry Pi \/ Serveur d&rsquo;impression, d\u00e8s lors que la machine sous Windows contient le pilote correspondant \u00e0 l&rsquo;imprimante. C&rsquo;\u00e9tait le cas pour moi en ce qui concerne l&rsquo;imprimante HP LasertJet P1006.<\/p>\n<p><strong>Menu D\u00e9marrer > Panneau de configuration > Programmes > Activer ou d\u00e9sactiver des fonctionnalit\u00e9s Windows<\/strong><br \/>\nAller \u00e0 la rubrique <strong>Services d&rsquo;impression<\/strong>, et v\u00e9rifier que la case <strong>Client d&rsquo;impression internet<\/strong> est ben coch\u00e9e.<br \/>\nPuis<br \/>\n<strong>Menu D\u00e9marrer > P\u00e9riph\u00e9riques et Imprimantes > Ajouter une imprimante<\/strong><br \/>\nChoisir l&rsquo;ajout d&rsquo;une imprimante r\u00e9seau et passer en mode manuel sans attendre la d\u00e9tection automatique de l&rsquo;imprimante, qui ne se fera jamais&#8230;<\/p>\n<p>Choisir l&rsquo;option <strong>S\u00e9lectionner une imprimante partag\u00e9e par nom<\/strong>, et renseigner l&rsquo;adresse de la mani\u00e8re suivante :<br \/>\n<code>http:\/\/192.168.0.X:631\/printers\/NomImprimante<\/code><br \/>\nNomImprimante correspond au nom donn\u00e9 \u00e0 l&rsquo;imprimante lors de son installation sur le serveur.<br \/>\nhttp:\/\/192.168.0.X est l&rsquo;adresse IP du serveur d&rsquo;impression install\u00e9 sur la carte Raspberry Pi sur le r\u00e9seau local.<br \/>\nIl faut ensuite identifier correctement le mod\u00e8le d&rsquo;imprimante pour charger le pilote correspondant.<\/p>\n<h3><a name=\"linux\"><\/a>Clients Unix\/Linux sous CUPS<\/h3>\n<p>Pour les clients sous Unix\/Linux, il suffit que CUPS soit install\u00e9 et correctement configur\u00e9. il suffit ensuite d&rsquo;ajouter une imprimante en utilisant l&rsquo;interface Web d&rsquo;administration. Je trouve plus simple de le faire manuellement :<br \/>\n<strong>https:\/\/localhost:631\/admin\/<\/strong> > onglet <strong>Administration<\/strong>, <strong>Ajouter une imprimante<\/strong>.<br \/>\nDans la liste Autres imprimantes r\u00e9seau, choisir l&rsquo;option Internet Printing Protocol (http). Renseigner, comme pour l&rsquo;ajout sur un client Windows 7 vue plus haut, l&rsquo;adresse de l&rsquo;imprimante :<br \/>\n<code>http:\/\/192.168.0.X:631\/printers\/NomImprimante<\/code><br \/>\nDonner un nom \u00e0 l&rsquo;imprimante, puis s\u00e9lectionner le pilote ad\u00e9quat (c&rsquo;est g\u00e9n\u00e9ralement&#8230; le m\u00eame que celui utilis\u00e9 sur la machine qui joue le r\u00f4le de serveur !).<\/p>\n<p>C&rsquo;est aussi simple que cela !<\/p>\n<h2><a name=\"sourcesref\"><\/a>Principales sources consult\u00e9es et utilis\u00e9es<\/h2>\n<ul>\n<li><a href=\"http:\/\/www.cups.org\/\">CUPS<\/a><\/li>\n<li><a href=\"https:\/\/wiki.archlinux.org\/index.php\/CUPS\">Arch Linux Wiki : CUPS<\/a><\/li>\n<li><a href=\"http:\/\/www.linuxpedia.fr\/doku.php\/imprimante_partage_cups\">LinuxPedia : Partage d&rsquo;imprimante IPP CUPS<\/a><\/li>\n<li><a href=\"http:\/\/www.bartbania.com\/index.php\/cups-raspberry-printer\/\">Bartbania : CUPS Your Printer with Raspberry (or Any Other Linux Machine)<\/a><\/li>\n<li><a href=\"http:\/\/foo2xqx.rkkda.com\/\">Foo2xqx<\/a><\/li>\n<li><a href=\"https:\/\/wiki.archlinux.org\/index.php\/Arch_User_Repository\">Arch User Repository (AUR) et comment l&rsquo;utiliser<\/a><\/li>\n<li><a href=\"https:\/\/aur.archlinux.org\/packages\/foo2zjs\/\">Paquet foo2zjs sur le d\u00e9p\u00f4t AUR<\/a><\/li>\n<li><a href=\"https:\/\/aur.archlinux.org\/packages\/foomatic-db-foo2zjs\/\">Paquet foomatic-db-foo2zjs (requis par foo2zjs) sur le d\u00e9p\u00f4t AUR<\/a><\/li>\n<li><a href=\"http:\/\/maddhat.com\/hp-laserjet-p1006-cups-fix\">MaddHat : HP Laserjet P1006 CUPS Fix (foo2xqx) (Debian)<\/a><\/li>\n<li><a href=\"https:\/\/bbs.archlinux.org\/viewtopic.php?pid=854280\">Forums d&rsquo;archlinux.org : cups: Print-Job client-error-not-authorized<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Explique comment r\u00e9aliser un serveur d&rsquo;impression en installant CUPS sur une carte Raspberry Pi raccord\u00e9e \u00e0 une imprimante Laser USB HP LaserJet P1006.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[395],"tags":[249,309,342,303,246,304],"class_list":["post-1897","post","type-post","status-publish","format-standard","hentry","category-bidouillages","tag-archlinux","tag-cups","tag-impression","tag-imprimante","tag-raspberry-pi-2","tag-serveur"],"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1897","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/comments?post=1897"}],"version-history":[{"count":80,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1897\/revisions"}],"predecessor-version":[{"id":2253,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/1897\/revisions\/2253"}],"wp:attachment":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/media?parent=1897"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/categories?post=1897"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/tags?post=1897"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}