Imprimante & numériseur (scanner) en réseau

Le but de la manœuvre est de mettre une imprimante/scanner à disposition de toutes les machines du réseau local. Elle sera donc branchée sur le T500 qui fera office de serveur d'imprimante.

Mais avant cela, je vais tenter de redonner vie à une imprimante Canon Pixma MP250 qui a cessé de fonctionner pour cause d'absorbeurs saturés (code erreur E08). Leur rôle est d'absorber l'encre quand l'imprimante effectue un nettoyage.

Les fabricants d'imprimantes voulant être certains d'être aussi aimés qu'une feuille d'impôt ou un nuage de sauterelles, il est tout à fait logique que le scanner ne puisse plus fonctionner lorsque survient un problème lié à l'impression.

Mais revenons à notre mouton noir.

Remettre en service l'imprimante Pixma MP250

Seulement deux étapes faciles !

C'est vraiment dommage...

Nettoyer les absorbeurs d'encre

Matériel utile

Les absorbeurs d'encre se présentent sous la forme de petits rectangles de 1,5 mm d'épaisseur (à vue de nez) et 20 x 8 pour l'un ; 13 x 9 pour l'autre. Ils semblent être faits de plastique, mais je penche plutôt pour de l'anhydrure de polyoxybenzylméthylèneglycol et sont situés sous le panneau de contrôle de l'imprimante, chacun posé sur un petit support entouré d'un joint de caoutchouc ou de silicone, allez savoir.

Vue sur les supports des absorbeurs d'encre de l'imprimante.
Les deux supports noirs dépourvus des absorbeurs d'encre. La structure blanche peut être légèrement tirée vers l'extérieur.

Il faut donc démonter le côté gauche de l'imprimante (côté panneau de contrôle/fiche USB).

  1. Allumer l'imprimante puis tirer le cordon d'alimentation lorsque les cartouches d'encre arrivent à l'opposé du panneau de contrôle.
  2. Dévisser les deux vis à l'arrière (haut) de l'imprimante. On peut enlever ce panneau ou simplement tirer un peu pour laisser du jeu.
  3. Enlever le panneau gauche. C'est toujours plus facile à la télé qu'en vrai.
  4. Enlever les absorbeurs. Il suffit de tirer délicatement vers le haut pour les sortir de l'emprise des joints ; les brucelles peuvent s'avérer utile.
  5. Nettoyer les absorbeurs au savon et rincer. De grâce, boucher l'évacuation de l'évier ! Les déposer sur un papier absorbant.
  6. Nettoyer les supports des absorbeurs et le reste du mécanisme à l'aide des lingettes et cotons-tiges si besoin.
  7. Laisser sécher le tout durant 24 heures.

Réinitialiser l'imprimante

Les absorbeurs d'encre remis en place, il faut réinitialiser l'imprimante car elle est totalement incapable de détecter la disparition du problème qu'elle a pourtant elle-même signalée. Évidemment, appuyer sur le bouton « Reset » serait bien trop simple alors il faut chercher sur le net la combinaison improbable qui va faire disparaitre le message d'erreur et remettre cette machine infernale en fonction. Le mieux que j'ai trouvé pour l'instant est la procédure suivante :

Mettre l'imprimante en route.

  1. Appuyer et maintenir le bouton « Reset ».
  2. Tout en maintenant le bouton « Reset », appuyer et maintenir le bouton « Color Start » durant cinq secondes.
  3. Relacher « Color Start » et ensuite « Reset ».
  4. Attendre que l'imprimante se reconfigure.
  5. Le chiffre 1 apparaît à l'écran de l'imprimante.
  6. Appuyer et maintenir le bouton « Outils »; la lettre A apparaît.
  7. Tout en maintenant « Outils », appuyer et maintenir « Reset ».
  8. Attendre jusqu'à ce que toute les lumières clignotantes disparaissent.
  9. Relacher « Outils » et ensuite « Reset ».

Résultat

L'erreur 8 disparaît et l'imprimante est maintenant fonctionnelle. Cependant, l'erreur va apparaitre de nouveau si j'éteins puis allume l'imprimante. Cela est peut-être dû au fait qu'elle a effectué un long nettoyage (elle n'a pas servi depuis plusieurs semaines) et par conséquent, les absorbeurs d'encre sont déjà noirs comme du charbon. Cela dit, je soupçonne que la cause provienne plutôt d'une sorte de compteur programmé en mode obsolescence...

Pour l'instant, je vais laisser les choses en (sale) état. La cartouche noire étant probablement presque vide, je recommencerai l'opération nettoyage avant la mise en place d'une cartouche neuve.
Édition : après quelques semaines, l'imprimante a cessé de fonctionner pour de bon. Impossible de la réinitialiser. Mes soupçons se confirment. On ne fait pas face à un problème d'absorbeurs d'encre mais bien d'obsolescence programmé !

Installation de CUPS

Common Unix Printing System est le serveur d'imprimante qui permet d'installer et de gérer la ou les imprimantes réseau. L'installation se déroule simplement avec sudo apt update && sudo apt install cups

Sur l'écran du T500 le message usb 2-1: device descriptor read/64, error -71 disparaît après redémarrage de la machine...

Configuration de CUPS

Pour gérer une imprimante locale, c'est-à-dire branchée directement sur l'ordinateur qui l'utilise, on passe normalement par l'interface web de CUPS situé à l'adresse http://localhost:631

Ce n'est pas possible dans mon cas puisque le T500 n'a pas d'environnement graphique ; il faudrait installer un navigateur en mode texte comme Lynx. De toute façon, mon but étant de gérer à distance, je vais utiliser Firefox depuis le C50-A; l'URL de la page web d'administration CUPS sera alors http://192.168.1.30:631 (IP du T500:port par défaut de CUPS).

L'accès à cette page de gestion n'est pas encore possible car CUPS interdit par défaut les connexions depuis les hôtes distants. De plus, une règle de pare-feu doit être ajoutée afin de permettre aux ordinateurs du réseau local de lancer les impressions via le port par défaut de CUPS (631).

Ouvrir le port 631 sur le T500

sudo ufw allow from 192.168.1.0/24 to any port 631 proto tcp

Ensuite, j'édite le fichier de configuration de CUPS, cupsd.conf afin de paramétrer les autorisations adéquates.

sudo nano /etc/cups/cupsd.conf

Le serveur doit écouter sur tout le réseau local

Commenter ou supprimer la ligne Listen localhost:631 et la remplacer par Listen *:631, ce qui donne :

# Only listen for connections from the local machine.
#Listen localhost:631
# Écouter les connexions provenants de n'importe quelle adresse.
Listen *:631

On pourrait surement remplacer l'astérisque par 192.168.1.* afin de spécifier le réseau.

Seules les machines du réseau local ont accès au serveur

# Restrict access to the server...

Order allow,deny
Allow 192.168.1.*

Seul le C50-A aura l'autorisation d'accéder à la page web d'administration

# Restrict access to the admin pages...

Order allow,deny
Allow From 127.0.0.1
Allow From 192.168.1.5

Ctrl x o Enter pour sauvegarder la configuration puis je redémarre CUPS : sudo /etc/init.d/cups restart.

Installer l'imprimante

J'ouvre le gestionnaire CUPS qui est donc maintenant accessible à l'adresse http://192.168.1.30:631

Si navigation en mode privée, il faut ajouter une exception cookie pour cette page.

Il apparaît une mise en garde de sécurité au sujet du certificat SSL : j'ajoute l'exception de sécurité.

Dans l'interface web de CUPS

  1. Colonne droite « Server »
    • Cocher « Share printers connected to this system » et « Allow remote administration ».
  2. Colonne gauche « Printers »
    • bouton « Add Printer »

À la fenêtre de connexion, il faut renseigner les identifiants root, c'est-à-dire « Username : root » et « Password : M.d.P du compte administrateur du système ».

Si on se trompe dans les identifiants de connexion, l'accès sera bloqué. Pour recommencer, il faut utiliser un autre navigateur car effacer l'historique du navigateur courant ET redémarrer cups n'est pas suffisant (solution testée). Autre solution non testée : fermer et ouvrir le navigateur courant. Si on veut plutôt utiliser le compte $USER (dans mon cas, toto) il faut auparavant l'ajouter au groupe lpadmin : sudo adduser toto lpadmin.

Le bouton « Add Printer » est en fait un lien direct vers la page d'administration accessible par l'URL http://192.168.1.30:631/admin

Il est intéressant de noter que le fichier cupsd.conf ainsi que les fichiers journaux sont accessibles directement à partir de cette page.

Il suffit ensuite de suivre les étapes suivantes :

1. CUPS a détecté l'imprimante (c'est bon signe).

CUPS detecte l'imprimante

2. Entrer le lieu où se trouve l'imprimante (facultatif). Les autres champs sont remplis par défaut. Cocher « Share This Printer » est dans doute facultatif car on a déjà autorisé le serveur CUPS à partager les imprimantes (voir plus haut). Ce faisant, j'ai deux entrées dans le dialogue d'impression : une pour « projetx » et l'autre étant « salon ».

Localisation de l'imprimante

3. Choisir les pilotes. Il est inutile d'installer les pilotes Canon, Gutenprint se débrouille très bien !

Choix des pilotes

Ajouter l'imprimante aux ordinateurs clients

Sur le C50-A, menu « Administration » puis « Imprimantes ».

Heu... En fait, elle y est déjà ? Ah bon.

Sant doute grâce à l'option # Show shared printers on the local network. Browsing On dans le fichier de configuration.

Liaison vers le scanner

SANE pour Scanner Access Now Easy avec son logo ésotérique est le programme qui permet de faire fonctionner les numériseurs et surtout de le faire en réseau. Je pourrais donc le manipuler avec des interfaces graphiques comme Simple Scan déjà installé sur Linux Mint 17.x ou avec Xsane.

Il faut cependant installer les paquets sane-utils et libsane sur le serveur (T500).

Configurer le serveur de scanner

Je vérifie d'abord si le scanner est reconnu, grâce à la commande (sudo) sane-find-scanner.

 could not open USB device 0x1d6b/0x0002 at 008:001: Access denied (insufficient permissions)
 could not open USB device 0x1d6b/0x0001 at 006:001: Access denied (insufficient permissions)
 could not open USB device 0x1d6b/0x0001 at 005:001: Access denied (insufficient permissions)
 could not open USB device 0x1d6b/0x0001 at 004:001: Access denied (insufficient permissions)
 could not open USB device 0x17ef/0x4807 at 007:004: Access denied (insufficient permissions)
 found USB scanner (vendor=0x04a9 [Canon], product=0x173a [MP250 series]) at libusb:007:002
 could not open USB device 0x1d6b/0x0002 at 007:001: Access denied (insufficient permissions)
 could not open USB device 0x1d6b/0x0001 at 003:001: Access denied (insufficient permissions)
 could not open USB device 0x08ff/0x2810 at 002:002: Access denied (insufficient permissions)
 could not open USB device 0x1d6b/0x0001 at 002:001: Access denied (insufficient permissions)
 could not open USB device 0x1d6b/0x0001 at 001:001: Access denied (insufficient permissions)

Ce n'est pas évident au premier coup d'œil, mais il y a de l'espoir au milieu de ces lignes !

Ou (sudo) scanimage -L ce qui donne : device `pixma:04A9173A_9119D6' is a CANON Canon PIXMA MP250 multi-function peripheral

Dans mon cas, le numériseur apparaît que si je lance ces commandes en sudo, ce qui n'est pas exactement idéal. Cela démontre un problème de permissions d'accès via USB.

On peut aussi lister les appareils branchés sur les ports USB en fonction d'un produit spécifique : lsusb | grep Canon

Configurer le daemon

J'édite le fichier saned.conf avec sudo nano /etc/sane.d/saned.conf

  1. En dessous de la ligne ##Access list, autoriser les ordinateurs du réseau local en écrivant : 192.168.1.0/24. On pourrait autoriser quelques ordinateurs seulement, en indiquant leurs adresses IP les unes en dessous des autres.
  2. Décommenter la ligne # data_portrange = 10000 - 10100.
  3. Il est recommandé d'utiliser une fourchette de ports plus haute : data_portrange = 30000 - 30100

Cette partie m'a donné beaucoup de soucis ; voir la section Dépannage plus bas. En fait, SANE a besoin d'une fourchette de ports ouverts afin d'échanger les données de numérisation. Les exemples ici, comme ceux dans le fichier de configuration, donnent une plage d'une centaine de ports ouverts. Sans doute peut-on en utiliser moins (à tester).

Démarrer SANE

Dans la documentation en ligne on lit souvent qu'il faut éditer le fichier /etc/default/saned et changer la ligne Run=no par RUN=yes. Ceci est vrai pour les systèmes qui utilisent Upstart.

Debian utilisant systemd, il faut se tourner vers deux autres fichiers saned.socket et saned@.service situés dans /lib/systemd/system/. Normalement, il n'y a pas besoin de modifier quoi que ce soit dans ces fichiers mais il est bon de savoir qu'ils sont là et instructif de lire leurs contenus.

Afin d'initier SANE avec systemd il faut l'activer et le démarrer.

  1. sudo systemctl enable saned.socket
  2. sudo systemctl start saned.socket

Puis vérifier qu'il est bien en service : systemctl status saned.socket, ce qui donne si tout va bien :

	 saned.socket - saned incoming socket
	Loaded: loaded (/lib/systemd/system/saned.socket; enabled)
	Active: active (listening) since jeu 2016-09-15 10:05:53 EDT; 51min ago
	Listen: [::]:6566 (Stream)
 	Accepted: 1; Connected: 0

Redemarrer SANE avec sudo service saned restart donne un message d'erreur :
Failed to restart saned.service: Unit saned.service is masked. C'est normal.

Ouvrir les ports pour le scanner

J'ajoute les règles suivantes au pare-feu afin d'autoriser les ports dont le scanner a besoin.

ATTENTION ! Aucun changement dans le pare-feu n'est pris en compte par SANE à moins de redémarrer le serveur T500 !

Configurer le(s) client(s)

Il faut que les ordinateurs qui vont utiliser le scanner puissent savoir où il se trouve. On configure cela dans le fichier net.conf des clients (je suppose que ce fichier est déjà disponible à cause de la présence de Simple Scan).

Donc, sur le C50-A : sudo nano /etc/sane.d/net.conf

  1. Décommenter la ligne # connect_timeout = 60.
  2. Sous la ligne ## saned hosts, j'entre l'IP du serveur, 192.168.1.30

Je peux maintenant utiliser le scanner dans le salon en le contrôlant depuis mon bureau.

Préférences dans Simple Scan
Simple Scan détecte bien le scanner.
Numérisation avec Simple Scan
Numérisation d'un document confidentiel.

Dépannage

Initialement, le scanner ne fonctionnait qu'en désactivant le pare-feu du T500. Sinon, soit il ne parvenait pas à numériser ou, en fonction de mes essais dans le pare-feu, Simple Scan ne pouvait même pas trouver le scanner.

échec connexion de Simple Scan
Simple Scan ne trouve pas le scanner.

Bien que le problème provenait de toute évidence d'une autorisation manquante dans le pare-feu, j'ai tout de même effectué - sans succès - de nombreuses vérifications. Je les énumère ci-dessous, cela pouvant toujours être utile.

- Vérifié que la ligne sane-port 6566/tcp sane saned # SANE network scanner daemon est bien présente dans /etc/services.

- Vérifié que l'utilisateur et le groupe saned sont bien présents sur le T500 :
id saned renvoie le résulat uid=111(saned) gid=119(saned) groupes=119(saned),117(scanner).

- Également, que l'utilisateur saned appartient au groupe scanner : groups saned donne saned : saned scanner.

- Que l'utilisateur saned a les bonnes permissions pour accèder au scanner. Pour cela on se place en tant qu'utilisateur saned et on fait scanimage -L :

  1. sudo -s
  2. su -s /bin/bash saned
  3. scanimage -L

Ce qui donne après quelques secondes : device `pixma:04A9173A_9119D6' is a CANON Canon PIXMA MP250 multi-function peripheral

- Pour me donner bonne conscience, je vérifie que le scanner soit bien supporté ; vue tous les résultats au dessus, le contraire aurait été étonnant :

PIXMA MP250 USB 0x04a9/0x173a Complete All resolutions supported (up to 600DPI) pixma(0.17.23) sane-pixma

pixma est ce que SANE nomme le « backend ».

- Sur le C50-A, j'ouvre le pare-feu pour le trafic entrant depuis le T500 (allow from 192.168.1.30) et je lance simple-scan -d (option « -d » pour débugger), ce qui me donne rien de bien nouveau : [+63,65s] WARNING: scanner.vala:837: No scan device available.

- J'ajoute aussi ces lignes dans les fichiers de configuration :

0x04a9 correspond au fabriquant (enfin, à la marque...). 0x173a correspond au modèle.

- Je vérifie que je n'habite pas au-dessus d'un cimetière indien.

- Désespéré, j'installe les pilotes Canon pour le scanner (ce qui prouve qu'on peut faire des choses absurdes quand on est désespéré).

- Finalement, Startpage/Ixquick est mon ami et c'est bugzilla qui va me donner la solution de façon très explicite. Je n'avais pas tenu compte de la fourchette de ports à autoriser, ni dans le fichier saned.conf ni dans le pare-feu. Cela avait échappé à mon attention du fait des commentaires plutôt ambiguës dans le fichier saned.conf et par ailleurs, aucune des sources consultées alors en faisaient mention. La doc. de SANE parle plutôt de cela comme une « option » alors que de toute évidence, le scanner en a vraiment besoin pour communiquer les données numérisées vers les clients. On doit donc lui dire quelle fourchette il faut utiliser et l'autoriser dans le pare-feu, bien que là encore c'est un peu confus ; le commentaire dans Bugzilla indique qu'il faut l'autoriser à la fois dans le fichier de conf. et à la fois dans le pare-feu, alors que la documentation semble indiquer soit l'un soit l'autre.

Après quelques essais, je confirme qu'il faut ouvrir les ports dans le pare-feu du serveur ET les autoriser dans le fichier de configuration.

Une documentation vieillissante ?

La lecture de documents ou de tutoriels révèle un nombre assez élevé d'informations inexactes ou périmées qui peuvent amener l'utilisateur à prendre des chemins tortueux et inextricables.

Par exemple, on voit encore souvent des passages au sujet de la configuration des supers-serveurs inet et xinet, mais ceux-ci ne sont plus utilisé, pour Ununtu, depuis la version 10.10. Linux Mint 17.x n'a d'ailleurs aucun fichier de configuration (x)inetd.conf dans les répertoires concernés.

Ou encore si le système utilise systemd, le fait de devoir créer ou modifier les fichiers saned.socket et saned@.service dans /etc/systemd/system/ alors qu'ils sont déjà présents, configurés, et ce, non pas dans /etc/... mais dans /lib/systemd/system/ (d'ailleurs, la commande systemctl status saned.socket montre bien le chemin.

Évidemment, Linux Mint n'est pas exactement Ubuntu qui n'est pas exactement Debian. Ceci explique peut-être cela ?


Installation de BOINCDocumenter le projet grâce à Markdown