{"id":2038,"date":"2013-10-14T11:22:33","date_gmt":"2013-10-14T09:22:33","guid":{"rendered":"https:\/\/www.azurs.net\/carnet\/?p=2038"},"modified":"2025-10-22T11:34:16","modified_gmt":"2025-10-22T09:34:16","slug":"serveur-dimpression-sur-raspberry-pi-ajouter-airprint-a-cups-sous-arch-linux-arm","status":"publish","type":"post","link":"https:\/\/www.azurs.net\/carnet\/2013\/10\/serveur-dimpression-sur-raspberry-pi-ajouter-airprint-a-cups-sous-arch-linux-arm\/","title":{"rendered":"Serveur d&rsquo;impression sur Raspberry Pi : ajouter AirPrint \u00e0 CUPS sous Arch Linux ARM"},"content":{"rendered":"<p>Pour imprimer des documents depuis une machine Apple tournant sous iOS comme par exemple un iPad ou un iPhone sur une imprimante partag\u00e9e via un serveur d&rsquo;impression CUPS install\u00e9 sur un Raspberry Pi, il suffit de quelques op\u00e9rations simples qui ne prennent que quelques minutes.<\/p>\n<figure id=\"attachment_2054\" aria-describedby=\"caption-attachment-2054\" style=\"width: 457px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/serveur.jpg\" alt=\"Couverture d'une publication am\u00e9ricaine de la fin des ann\u00e9es trente destin\u00e9e aux pharmaciens repr\u00e9sentant un serveur coiff\u00e9 d'un calot portant un plateau sur lequel sont pos\u00e9s, en \u00e9quilibre pr\u00e9caire, une coupe de glace et deux grands verre contenant une boisson rafra\u00eechissante. Un insecte qui pourrait \u00eatre un bourdon butine une fleur \u00e9pingl\u00e9e \u00e0 la boutonni\u00e8re de sa veste, ce qui semble grandement inqui\u00e9ter le jeune homme, qui craint de se faire piquer.\" width=\"457\" height=\"640\" class=\"size-large wp-image-2054\" srcset=\"https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/serveur.jpg 457w, https:\/\/www.azurs.net\/carnet\/wp-content\/uploads\/2013\/10\/serveur-214x300.jpg 214w\" sizes=\"auto, (max-width: 457px) 100vw, 457px\" \/><figcaption id=\"caption-attachment-2054\" class=\"wp-caption-text\">\u00ab&nbsp;Ce serveur ne manque pas d&rsquo;air, mais il est loin de faire bonne impression !&nbsp;\u00bb Source : <a href=\"http:\/\/www.loc.gov\/pictures\/item\/96509070\/\">Library of Congress<\/a>.<\/figcaption><\/figure>\n<p><!--more-->Pour le faire, j&rsquo;ai \u00e9t\u00e9 aid\u00e9, entre autres ressources, par <a href=\"http:\/\/www.pihomeserver.fr\/2013\/02\/07\/raspberry-pi-home-server-archlinux-installer-un-serveur-dimpression-avec-cups-et-airprint\/\">ce billet publi\u00e9 sur le blog Raspberry Pi Home Server<\/a>.<\/p>\n<h2>Qu&rsquo;est-ce qu&rsquo;AirPrint ?<\/h2>\n<p>AirPrint est <a href=\"http:\/\/support.apple.com\/kb\/HT4356\">une fonction des syst\u00e8mes d&rsquo;exploitation con\u00e7us par Apple<\/a> qui permet d&rsquo;imprimer au travers d&rsquo;un r\u00e9seau 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\u00e9cessite pas de pilotes propres \u00e0 l&rsquo;imprimante utilis\u00e9e. Comme AirPrint se connecte \u00e0 l&rsquo;imprimante uniquement via un r\u00e9seau WiFi, il requiert un routeur WiFi (ce que sont aujourd&rsquo;hui la plupart des box ADSL chez les principaux fournisseurs d&rsquo;acc\u00e8s \u00e0 l&rsquo;internet).<\/p>\n<p>AirPrint permet donc d&rsquo;imprimer sans-fil depuis un iPad, un iPhone r\u00e9cent, un iPod Touch ou encore un Mac tournant sous OS X. Normalement, il faut une imprimante compatible avec AirPrint, mais si l&rsquo;on en a pas, on peut d\u00e9guiser \u00e0 l&rsquo;intention de ces appareils utilisant AirPrint et connect\u00e9s au r\u00e9seau local en WiFi une imprimante ajout\u00e9e \u00e0 un serveur CUPS en imprimante compatible avec AirPrint, en configurant une annonce de service correspondante dans <a href=\"https:\/\/wiki.archlinux.org\/index.php\/avahi\">Avahi<\/a>.<\/p>\n<h2>Pr\u00e9requis pour ajouter le support d&rsquo;AirPrint \u00e0 CUPS<\/h2>\n<p>L&rsquo;installation d\u00e9crite ici a \u00e9t\u00e9 r\u00e9alis\u00e9e dans les conditions suivantes :<\/p>\n<ul>\n<li>un Raspberry Pi mod\u00e8le B tournant sous Arch Linux ARM, connect\u00e9 au r\u00e9seau local (Ethernet ou WiFi),<\/li>\n<li>configur\u00e9 comme serveur d&rsquo;impression CUPS (<a href=\"https:\/\/www.azurs.net\/carnet\/2013\/09\/raspberry-pi-serveur-impression-imprimante-hp-laserjet-p1006\/\" title=\"Serveur d\u2019impression CUPS sur Raspberry Pi et imprimante HP LaserJet P1006\">l&rsquo;installation et la configuration de CUPS sous Arch Linux ARM font l&rsquo;objet d&rsquo;un billet pr\u00e9c\u00e9dent<\/a>),\n<\/li>\n<li>et une imprimante (HP LaserJet P1006) connect\u00e9e en USB \u00e0 la carte Raspberry Pi et partag\u00e9e sur le r\u00e9seau local via le serveur d&rsquo;impression sous CUPS.<\/li>\n<\/ul>\n<p>L&rsquo;impression depuis iOS a \u00e9t\u00e9 test\u00e9e avec succ\u00e8s avec une tablette iPad tournant sous iOS 7.<\/p>\n<h2>Ajout du support d&rsquo;AirPrint \u00e0 CUPS<\/h2>\n<p>Avant de commencer, il faut s&rsquo;assurer que deux \u00e9l\u00e9ments sont install\u00e9s sur la carte Raspberry Pi :<\/p>\n<ul>\n<li>Le d\u00e9mon Avahi (installer les paquets avahi et nss-mdns).<\/li>\n<li>Le module CUPS de python (sous Arch Linux, il faut installer le paquet pycups).<\/li>\n<\/ul>\n<p>Si ce n&rsquo;est pas le cas, on les installe avec les droits d&rsquo;administrateur (en tant que <em>root<\/em> ou via la commande <em>sudo<\/em>) :<\/p>\n<p><code># <span style=\"color: navy\">pacman -Sy avahi nss-mdns pycups<\/span><\/code><\/p>\n<p>On compl\u00e8te la configuration de CUPS en ajoutant deux fichiers dans <code>\/usr\/share\/cups\/mime\/<\/code> :<\/p>\n<p><code># <span style=\"color: navy\">echo \"image\/urf urf string(0,UNIRAST<00>)\" > \/usr\/share\/cups\/mime\/airprint.types<\/span><br \/>\n# <span style=\"color: navy\">echo \"image\/urf application\/pdf 100 pdftoraster\" > \/usr\/share\/cups\/mime\/airprint.convs<\/span><\/code><\/p>\n<p>et on red\u00e9marre CUPS :<\/p>\n<p><code># <span style=\"color: navy\">systemctl restart cups<\/span><\/code><\/p>\n<p>On peut ensuite t\u00e9l\u00e9charger <a href=\"https:\/\/github.com\/tjfontaine\/airprint-generate\">un script en python qui va se charger de cr\u00e9er le d\u00e9guisement de CUPS en AirPrint avec la complicit\u00e9 d&rsquo;Avahi<\/a> :<\/p>\n<p><code># <span style=\"color: navy\">wget -O airprint-generate.py --no-check-certificate https:\/\/raw.github.com\/tjfontaine\/airprint-generate\/master\/airprint-generate.py<\/span><\/code><\/p>\n<p>Ce script produit pour chaque imprimante ajout\u00e9e \u00e0 CUPS un fichier AirPrint[&#8230;].service. Il faut ensuite placer ces fichiers dans <code>\/etc\/avahi\/services<\/code> :<\/p>\n<p><code># <span style=\"color: navy\">cp AirPrint*.service \/etc\/avahi\/services\/<\/span><\/code><\/p>\n<p>Pour finir, on red\u00e9marre  le d\u00e9mon Avahi puis le serveur CUPS :<\/p>\n<p><code># <span style=\"color: navy\">systemctl restart avahi-daemon cups<\/span><\/code><\/p>\n<p>Normalement, les p\u00e9riph\u00e9riques Apple qui sont compatibles AirPrint doivent d\u00e9sormais prendre les imprimantes ajout\u00e9es dans CUPS pour des imprimantes compatibles AirPrint et y envoyer des impressions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Explique comment imprimer des documents depuis un iPad, un iPhone ou un autre mat\u00e9riel tournant sous iOS sur une imprimante m\u00eame si elle n&rsquo;est pas compatible AirPrint en utilisant un serveur d&rsquo;impression CUPS install\u00e9 sur une carte Raspberry Pi tournant sous Arch linux ARM.<\/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":[354,350,249,342,303,351,352,353,246,304],"class_list":["post-2038","post","type-post","status-publish","format-standard","hentry","category-bidouillages","tag-airprint","tag-apple","tag-archlinux","tag-impression","tag-imprimante","tag-ios","tag-ipad","tag-iphone","tag-raspberry-pi-2","tag-serveur"],"share_on_mastodon":{"url":"","error":""},"_links":{"self":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/2038","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=2038"}],"version-history":[{"count":19,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/2038\/revisions"}],"predecessor-version":[{"id":2058,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/posts\/2038\/revisions\/2058"}],"wp:attachment":[{"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/media?parent=2038"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/categories?post=2038"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.azurs.net\/carnet\/wp-json\/wp\/v2\/tags?post=2038"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}