Outils pour utilisateurs

Outils du site


issue172:tutoriel2

This will be a short note on how to connect a printer to your network using a Raspberry Pi. It is not meant to be a full tutorial, but rather some quick notes that may help you, the reader, if you find yourself in the same position I was. I happen to be the proud owner of a HP Laserjet 2100 printer. This is a now ancient 1999-era piece of equipment that prints a tad more slowly than modern machines. On the positive side of things, however, its 1200 dpi resolution is more than satisfactory for office tasks even by today’s standards. In a time of need, it was readily available in my back room, complete with a spare toner cartridge, and fired right up immediately after about seven years in storage. Also, I am not disposed to spend cash on a new piece of kit unless it outperforms my old stuff considerably, or to go through the hassle of acquiring, transporting and setting up a new printer.

Cet article sera une brève présentation expliquant comment connecter une imprimante sur votre réseau en utilisant un Raspberry Pi. Plutôt qu’un tutoriel complet, ce ne seront que quelques notes rapides qui peuvent vous aider, vous le lecteur, si vous vous trouvez dans la même position que moi.

Il s’avère que je suis le fier propriétaire d’une ancienne imprimante HP Laserjet 2100, qui date de l’ère 1999 et dont l’impression est un chouia plus lente qu’avec les machines modernes. Côté positif, il y a le fait que sa résolution de 1200 dpi est plus que satisfaisante pour les tâches de bureau, même en tenant compte des normes d’aujourd’hui. Lorsque j’étais dans le besoin, elle était là, disponible dans une remise, avec une cartouche de toner de rechange ; elle a démarré tout de suite après environ sept ans d’abandon. Qui plus est, je n’ai pas l’habitude de dépenser des sous pour un équipement neuf à moins qu’il ne soit beaucoup plus performant que mes vieux trucs, et je ne veux pas me donner la peine d’acquérir, transporter et configurer une nouvelle imprimante.

The only feature I do miss on modern printers is network access. Although the Laserjet 2100 is a fine printer, its connectivity is limited to a single parallel port. Remember back when? I am sure older readers will, but youngsters may struggle with the concept. Anyway, the printer came with a parallel port-to-USB converter cable that works very well. I also had a spare Raspberry Pi lying around, and so was all set to plug the hardware in and build myself a 1999/2021 vintage network printer. The converter cable (black) went into the printer’s parallel port on one end, and into one of the RPi’s USB sockets on the other. I used a physical Ethernet cable (red) to connect the RPi to my home router, and a spare USB cable and telephone charger (white) to power the RPi. That was the hardware side of things taken care of. The operating system I already had on the SD card in my RPi was Raspberry Pi OS, previously known as Raspbian. Based on Debian “Buster”, it is sufficiently similar to Ubuntu Server that most commands are identical, up to and including useful commands to install software such as apt, aptitude, and so forth. I will not delve here into setting up the network on the RPi since such matters are very well explained in the official documentation (https://www.raspberrypi.org/documentation/). In particular, I would like to point you to the page on setting up Wireless networking, which may be of interest if using a RPi version 3 or 4. These have a built-in WiFi chip, and can connect directly to your access point, thus saving some cabling (https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md). Since I was using a similar but older version 2, my precise specs and setup were:

Des fonctionnalités des imprimantes modernes, la seule qui me manque est l’accès au réseau. Bien que la Laserjet 2100 soit une très bonne imprimante, sa connectivité est limitée à un seul port parallèle. Vous souvenez-vous d'autrefois ? Je suis sûr que les lecteurs vieillissants s’en souviennent, mais les jeunes peuvent avoir du mal à appréhender le concept. Quoi qu’il en soit, l’imprimante était livrée avec un câble convertisseur port parallèle vers USB qui fonctionne très bien. J’avais également un Raspberry Pi de rab et j’étais vraiment prêt à brancher le matériel et construire une imprimante réseau vintage 1999/2021. Le câble convertisseur (noir) était branché sur le port parallèle de l’imprimante à un bout et dans un des ports USB du RPi à l’autre. J’ai utilisé un câble Ethernet physique (rouge) pour connecter le RPi au routeur domestique et un câble USB de rechange plus un chargeur de téléphone (blanc) pour alimenter le RPi. Ainsi, le côté matériel était réglé.

Le système d’exploitation qu’il y avait déjà sur la carte SD dans mon Rpi était Raspberry Pi OS, connu auparavant sous le nom de Raspbian. Basé sur Debian « Buster », il est suffisamment similaire à Ubuntu Server et la plupart des commandes sont identiques, y compris les commandes utiles pour installer des logiciels comme apt, aptitude et ainsi de suite. Je ne vais pas vous parler de la configuration du réseau sur le RPi, car de tels sujets sont très bien expliqués dans la documentation officielle (https://www.raspberrypi.org/documentation/). Particulièrement, j’aimerais vous diriger vers la page sur le paramétrage d’un réseau WiFi, qui peut intéresser les gens qui se servent d’un RPi version 3 ou 4, où il y a une puce WiFi intégrée. Ces RPi peuvent se connecter directement à votre point d’accès, ce qui économise des connexions par câble. (https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md). Puisque j’utilisais une version similaire, mais plus vielle, la 2, mes spécifications et configuration précises étaient :

Now, to set up printing: from the software point of view the obvious candidate is the Common UNIX Printing System, or CUPS. This can contain the print server software itself, printer drivers and a Web server to access and configure our printers from our main computer. It also implements the Internet Printing Protocol (IPP), a very simple and robust protocol that - in my opinion, at least - is far superior to Microsoft’s SMB/CIFS printer sharing protocols as regards speed and dependability. Moreover, most modern network printers use this protocol, and, as a consequence, most operating systems also support it. The protocol can also be queried directly using a standard web browser, which helps a lot for configuration.

Nous allons maintenant configurer l’impression : du point de vue des logiciels, le candidat évident est le Common UNIX Printing System ou CUPS. Cela peut contenir le logiciel même du serveur d’impression, les pilotes de l’imprimante et un serveur Web pour accéder à et configurer nos imprimantes à partir de l'ordinateur principal. Il implémente aussi l'Internet Printing Protocole (l’IPP), un protocole qui est très simple et robuste et qui, du moins à mon avis, est bien supérieur aux protocoles de partage d’imprimantes SMB/CIFS de Microsoft pour ce qui concerne la vitesse et la fiabilité. De plus, la plupart des imprimantes réseau modernes utilise ce protocole et, par conséquent, la plupart des systèmes d’exploitation le prend en charge aussi. On peut envoyer des requêtes directement au protocole avec un navigateur Web standard, ce qui aide beaucoup pendant le paramétrage.

I installed CUPS (as root) using command: aptitude install cups cups-core-drivers Other software packages, including cups-daemon and printer-driver-gutenprint, were also installed automatically. The CUPS daemon is started, and set up to start automatically with sysctl. As a security feature, however, it is initially configured to listen on only the localhost interface (address 127.0.0.1): netstat -l | grep ipp tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN tcp6 0 0 localhost:ipp [::]:* LISTEN To change this, we need to edit file /etc/cups/cupd.conf, and change the line reading: Listen localhost:631 to: Listen 0.0.0.0:631

En tant que root, j’ai installé CUPS avec la commande :

aptitude install cups cups-core-drivers

D’autres paquets logiciels, y compris cups-daemon et printer-driver-gutenprint ont été aussi installés automatiquement. Le démon de CUPS est démarré et configuré pour démarrer automatiquement avec sysctl. Pour la sécurité, cependant, il est initialement paramétré pour n'écouter que sur l’interface localhost (adresse 127.0.0.1) :

netstat -l | grep ipp tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN tcp6 0 0 localhost:ipp [::]:* LISTEN

Pour changer cela, il faut éditer le fichier /etc/cups/cupd.conf, et modifier la ligne

Listen localhost:631

en

Listen 0.0.0.0:631

*To allow configuration of the server from other computers in our network, I also needed to add several Allow stanzas further down in the same file:

<Location /> Order allow,deny Allow localhost Allow from 192.168.* </Location>

<Location /admin> Order allow,deny Allow localhost Allow from 192.168.* </Location>

As shown, these are correct – assuming we are using IP addresses from block 192.168/16 on our local network; otherwise we would need to adapt to suit. It does make sense to open up administration to other machines on our local network, but not make our server accessible from further away. Once this is done and the file saved, we can restart CUPS using command:

systemctl restart cups Pour permettre la configuration du serveur à partir d’autres ordinateurs de notre réseau je devais ajouter plusieurs « Allow » un peu plus loin dans le même fichier : <Location /> Order allow,deny Allow localhost Allow from 192.168.* </Location> <Location /admin> Order allow,deny Allow localhost Allow from 192.168.* </Location> Tels que montrés, ils sont corrects – en supposant que nous utilisons des adresses IP du bloc 192.168/16 sur le réseau local ; autrement, il faudrait s’adapter. Il est effectivement logique d’ouvrir l’administration à d’autres machines de notre réseau local, mais ne pas rendre notre serveur accessible de plus loin. Une fois cela fait et le fichier sauvegardé, nous pouvons redémarrer CUPS avec la commande : systemctl restart cups We can now connect to our print server from any web browser on our network, using the IP address of the RPi on our network and port 631. For instance, if our RPi has IP address 192.168.1.142, we would use: http://192.168.1.142:631 (shown top right)

When adding a new printer, it is possible that our browser will complain of a bad certificate when switching to the HTTPS protocol. We can safely continue by accepting this certificate and adding a security exception. We may also need to authenticate. I logged in as the main user on the RPi. By default, this is username “pi” and password “raspberry”, though it would perhaps be best to change the password at the very least.

I then went to the CUPS “Add Printer” (shown below) option, where the Laserjet had been recognized and was offered for configuration. Nous pouvons maintenant nous connecter à notre serveur d’impression à partir de n’importe quel navigateur Web de notre réseau, en utilisant l’adresse IP du RPi sur notre réseau et le port 631. Par exemple, si l’adresse du RPi est 192.168.1.142, on utiliserait : http://192.168.1.142:631 Lors de l’ajout d’une nouvelle imprimante, le navigateur se plaindra peut-être d’un mauvais certificat en basculant sur le protocole HTTPS. Nous pouvons continuer en sécurité en acceptant ce certificat et en ajoutant une exception sécuritaire. Il se peut que nous dussions l’authentifier . Je me suis connecté en tant qu’utilisateur principal du RPi. Par défaut, le nom d’utilisateur est « pi » et le mot de passe est « raspberry », mais ce serait sans doute mieux de changer au moins le mot de passe. Je suis allé ensuite à l’option « Ajouter une imprimante » dans CUPS, où la Laserjet avait été reconnue et était proposée à la configuration. Let us remember to actually share this printer, by checking the box (shown next page, top right). On the client side of things, most modern Linux systems will automatically detect the presence of our new printer server, and automagically configure our new printer for us. In my case, on a Kubuntu 20.04, the new printer appeared immediately: If this is not the case, simply go to the configuration panel and manually add the printer which should have been discovered on the network. For instance, on a recent Manjaro: The great thing about CUPS is that it is a universal piece of software. The very same software has actually been baked into Apple’s Mac OS. Thus, the network printers advertised by the RPi over “dnssd” are readily recognized by the Mac as having been announced over “Bonjour”.

Souvenons-nous de partager cette imprimante en cochant la case (voir en haut à droite de la page suivante).

Côté client, la plupart des systèmes Linux détectera automatiquement la présence de notre nouveau serveur d’impression et configurera automatiquement la nouvelle imprimante à notre place. Dans mon cas, sous Kubuntu 20.04, la nouvelle imprimante s’est affichée tout de suite :

Si ce n’est pas le cas, il suffit d’aller au panneau de configuration et d’ajouter manuellement l’imprimante qui aurait dû être découverte sur le réseau. Par exemple, sur un Manjaro récent :

Ce qui est génial dans CUPS, c’est que c’est un logiciel universel. Le même logiciel a en fait été mis en dur dans Mac OS d’Apple. Ainsi, les imprimantes réseau dont la publicité est faite par le RPi sur « dnssd » sont tout de suite reconnues par le Mac comme ayant été annoncées sur « Bonjour ».

The end result is identical, and the new printer can be configured with ease on Mac OS. No fiddling about with printer drivers was needed; the Mac and CUPS figured it out between them and within a minute I was printing away wildly. Note the Gutenprint drivers in use - these are the same as installed on a Linux CUPS implementation. Things may be a tad different from a Windows machine for users who are accustomed to configuring printers over Windows printer sharing protocol (SMB/CIFS). In this case, the printer server on the RPi is communicating over IPP, so just browsing the local network in our file explorer on the Windows machine will not find it. Instead, we need to get over to the Control Panel (or Settings, or whatever else it is called these days) and select “Devices (Bluetooth, printers, mouse)”, then “Add a printer or scanner”. This will search for our new printer server, but is just as likely to find the neighbor’s WiFi-connected ink-jet instead of our own RPi server. Simply choose “The printer that I want isn’t listed”, then “Add a printer using a TCP/IP address or hostname”. In my case, I entered (please note the :631 port number): http://192.168.1.142:631/printers/HP_Laserjet_2100_Series

Le résultat final est identique et la nouvelle imprimante peut être facilement configurée sur Mac OS. Aucun bricolage avec les pilotes d’imprimante n’était nécessaire ; le Mac et CUPS ont collaboré et, en une minute, j’ai pu imprimer sans retenue. Remarquez les pilotes Gutenprint utilisés – ce sont les mêmes que ceux installés sur une implémentation de Linux CUPS.

Les choses peuvent être un chouia différentes sur une machine Windows pour les utilisateurs qui ont l’habitude de configurer des imprimantes sur le protocole de partage d’imprimantes Windows (SMB/CIFS). Dans ce cas, le serveur d’impression du RPi communique sur IPP et il ne suffit pas de parcourir le réseau local dans l’explorateur de fichiers sur la machine Windows pour le trouver.

À la place, il faut aller dans Paramètres et sélectionner « Périphériques (Bluetooth, imprimantes, souris), puis « Imprimantes et scanners » et « Ajouter une imprimante ou un scanner ». Windows recherchera alors le nouveau serveur d’impression, mais peut aussi bien trouver l’imprimante à jet d’encre sur le WiFi du voisin au lieu du serveur sur le RPi. Il suffit de choisir « Je ne trouve pas l’imprimante recherchée dans la liste », puis « Ajouter une imprimante à l’aide d’une adresse TCP/IP ou d’un nom d’hôte. » Dans mon cas, j’ai saisi (veuillez noter le numéro de port:631) : http://192.168.1.142:631/printers/HP_Laserjet_2100_Series

After jumping through a couple more hoops - such as telling Windows to use a printer driver meant for a completely distinct Postscript printer (the “HP Color Laserjet 2500 PS Class Driver”) - I got my new printer set up and working. For more details to set up IPP printers on Windows, there is a good tutorial on The Zedt: https://zedt.eu/tech/windows/installing-an-ipp-printer-in-windows-10/ . The end result was that, with a Raspberry Pi version 2 and a 20-year-old laser printer, I had a working, printing networked laser using the CUPS software. From plugging in the hardware, installing cups, to getting the system fully working on Linux and Apple machines on my local network, the complete process took about half an hour. Convincing my lone Windows laptop to print took a further hour of fiddling and searching for tutorials on the Web, which is probably par for the course.

Après avoir franchi deux ou trois autres obstacles, comme dire à Windows d’utiliser un pilote d’imprimante destiné à une imprimante Postscript entièrement différente (le « HP Color Laserjet 2500 PS Class Driver ») - ma nouvelle imprimante était configurée et fonctionnait.

Pour plus de détails concernant la configuration d’imprimantes IPP sous Windows, il y a un bon tutoriel sur The Zedt : https://zedt.eu/tech/windows/installing-an-ipp-printer-in-windows-10/ .

Le résultat final était qu'avec un Raspberry Pi 2 et une imprimante laser de 20 ans, j’avais une imprimante laser sur réseau qui fonctionnait en utilisant le logiciel CUPS. À partir du branchement du matériel et l’installation de CUPS pour avoir un système pleinement fonctionnel sur les machines Linux et Apple sur mon réseau local, le processus a pris environ une demi-heure. Pour convaincre mon seul portable sous Windows d’imprimer, il m'a fallu une heure, plus de bidouillage et de recherches de tutoriels sur le Web, ce qui est sans doute la norme.

Extending my server would be a simple matter of physically connecting another printer to the RPi, and configuring CUPS through the web interface. As a side note, most professional-grade printers of major brands tend not to be too complex to set up, especially when they are compatible with the Postscript language. Printers originally meant for “home use” may be more challenging to set up, for instance by requiring the use of specific drivers or even proprietary software kits and firmware. Some previous research may be a good idea to ensure compatibility between the printer and Linux before proceeding.

Étendre le serveur nécessiterait simplement le branchement physique d’une autre imprimante au RPi et la configuration de CUPS au moyen de l’interface Web. Soit dit en passant, la plupart des imprimantes professionnelles des marques importantes ont tendance à être assez simple à configurer, surtout quand elles sont compatibles avec le langage Postscript. Les imprimantes destinées à « l’usage domestique » peuvent être plus difficiles à paramétrer, par exemple en nécessitant des pilotes spécifiques ou même des jeux de logiciels et de microprogrammes propriétaires. Quelques recherches auparavant peuvent être une bonne idée pour assurer la compatibilité entre l’imprimante et Linux, avant de commencer le processus.

issue172/tutoriel2.txt · Dernière modification : 2021/09/01 17:27 de d52fr