Imprimante CanonNotre lycée local vient de faire l’acquisition d’une imprimante de bureau Canon Maxify GX7050. Comme cela arrive, on ne m’a pas trop demandé mon avis, et du moment que le carton d’emballage du périphérique arborait la mention « compatible Linux », tout semblait réglé. C’est vrai que l’imprimante est supportée sous Linux par le constructeur dans la mesure où une poule est capable de voler et un cheval de nager. On arrive à la faire fonctionner correctement, mais la procédure de configuration n’est pas tout à fait triviale.

Configuration réseau

Dans le réseau de l’école, l’imprimante est censée desservir les quatre postes du secrétariat. Je me sers de l’écran de configuration intégré à l’imprimante pour la rattacher au réseau Wi-Fi de l’école, et je lui attribue une adresse IP fixe 192.168.10.247 dans la configuration Dnsmasq de notre proxy local, avec un nom d’hôte correspondant canon-admin.

L’ergonomie de l’interface de configuration de l’imprimante a visiblement été conçue par les Shadoks, mais on finit par obtenir ce qu’on veut avec une bonne dose d’obstination.

Pare-feu

Je pourrais très bien ouvrir le port 631 en TCP et en UDP pour IPP (Internet Printing Protocol) et ensuite me mettre à la recherche de tous les ports non documentés utilisés par l’application ScanGear fournie par Canon pour le Scanner en utilisant Wireshark. Au lieu de cela, je ne vais pas m’embêter et ajouter l’imprimante à la zone de confiance de FirewallD :

# firewall-cmd --permanent --zone=trusted --add-source=192.168.10.247
# firewall-cmd --reload

Téléchargement

Je me rends sur la page dédiée à notre imprimante sur le site du constructeur. Je clique sur Drivers > View your operating system, et je me retrouve confronté à une mauvaise surprise. Le menu déroulant des systèmes d’exploitation propose des pilotes pour Windows, macOS et ChromeOS. Aucune trace de Linux.

Canon Maxify GX7050 Linux

Je déroule alors la section Individual Drivers de la page, et je finis par trouver les paquets relatifs à Linux proposés au format .deb et .rpm :

  • IJ Printer Driver Ver. 6.20 for Linux
  • ScanGear MP Ver. 4.20 for Linux

Je choisis le format rpm Package archive sur le site, je suis la procédure de téléchargement inutilement compliquée, et je me retrouve avec deux archives compressées :

$ ls -lh
total 1,9M
-rw-rw-r--. 1 nkovacs nkovacs 1,5M 16 oct.  10:44 cnijfilter2-6.20-1-rpm.tar.gz
-rw-rw-r--. 1 nkovacs nkovacs 348K 16 oct.  10:44 scangearmp2-4.20-1-rpm.tar.gz

Je décompresse les deux archives et j’examine sommairement le contenu des répertoires nouvellement créés :

$ tar -xzf cnijfilter2-6.20-1-rpm.tar.gz 
$ tar -xzf scangearmp2-4.20-1-rpm.tar.gz 
$ ls -lh
total 1,9M
drwxrwxr-x. 5 nkovacs nkovacs 4,0K 20 févr.  2021 cnijfilter2-6.20-1-rpm
-rw-rw-r--. 1 nkovacs nkovacs 1,5M 16 oct.  10:44 cnijfilter2-6.20-1-rpm.tar.gz
drwxrwxr-x. 5 nkovacs nkovacs 4,0K 18 nov.   2020 scangearmp2-4.20-1-rpm
-rw-rw-r--. 1 nkovacs nkovacs 348K 16 oct.  10:44 scangearmp2-4.20-1-rpm.tar.gz
$ ls cnijfilter2-6.20-1-rpm
documents  install.sh  packages  resources
$ ls scangearmp2-4.20-1-rpm
documents  install.sh  packages  resources

Installer le pilote d’impression

Le répertoire cnijfilter2-6.20-1-rpm contient certes un script install.sh, mais nous allons éviter de l’utiliser, pour deux raisons :

  • L’installation avec un script shell fait partie des mauvaises pratiques à proscrire.
  • De toute façon, le script install.sh ne fonctionne pas (j’ai testé pour vous).
# cd cnijfilter2-6.20-1-rpm/packages/
# ls -lh
total 1.7M
-rw-rw-r--. 1 nkovacs nkovacs 394K Feb 20  2021 cnijfilter2-6.20-1.aarch64.rpm
-rw-rw-r--. 1 nkovacs nkovacs 465K Feb 20  2021 cnijfilter2-6.20-1.i386.rpm
-rw-rw-r--. 1 nkovacs nkovacs 395K Feb 20  2021 cnijfilter2-6.20-1.mips64el.rpm
-rw-rw-r--. 1 nkovacs nkovacs 471K Feb 20  2021 cnijfilter2-6.20-1.x86_64.rpm
# rpm -ivh --test cnijfilter2-6.20-1.x86_64.rpm 
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
# rpm -ivh cnijfilter2-6.20-1.x86_64.rpm 
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:cnijfilter2-6.20-1               ################################# [100%]

Configurer l’imprimante

Je vérifie si le serveur d’impression CUPS tourne :

# systemctl is-active cups
active

Je lance Firefox et j’ouvre l’interface d’administration de CUPS à l’adresse http://localhost:631 dans la section Administration :

Canon Maxify GX7050 CUPS

Je clique sur Ajouter une imprimante et je m’identifie en tant que root en renseignant le mot de passe correspondant :

Canon Maxify GX7050 CUPS

Dans la section Imprimantes réseau, je sélectionne Internet Printing Protocol et je clique sur Continuer :

Canon Maxify GX7050 CUPS

J’utilise l’URI socket://canon-admin pour me connecter à l’imprimante :

Canon Maxify GX7050 CUPS

Je définis le nom et l’emplacement de l’imprimante :

Canon Maxify GX7050 CUPS

Je sélectionne la marque Canon et je clique sur Continuer :

Canon Maxify GX7050 CUPS

Dans la longue liste de pilotes, je sélectionne Canon GX7000 series et je clique sur Ajouter une imprimante :

Canon Maxify GX7050 CUPS

Pour finir, j’ouvre la page de l’imprimante dans l’interface de CUPS et j’imprime une page de test :

Canon Maxify GX7050 CUPS

Utiliser le scanner avec ScanGear

Le scanner de l’imprimante ne fonctionne pas avec les applications de numérisation classiques du monde du libre comme Simple Scan ou Skanlite. En revanche, on arrive à le faire fonctionner avec l’application ScanGear fournie par le constructeur. On va donc l’installer :

# cd scangearmp2-4.20-1-rpm/packages/
# ls -lh
total 332K
-rw-r--r--. 1 nkovacs nkovacs 163K Nov 18  2020 scangearmp2-4.20-1.i386.rpm
-rw-r--r--. 1 nkovacs nkovacs 167K Nov 18  2020 scangearmp2-4.20-1.x86_64.rpm
# rpm -ivh --test scangearmp2-4.20-1.x86_64.rpm 
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
# rpm -ivh scangearmp2-4.20-1.x86_64.rpm 
Verifying...                          ################################# [100%]
Preparing...                          ################################# [100%]
Updating / installing...
   1:scangearmp2-4.20-1               ################################# [100%]

Le paquet fournit notamment un binaire /usr/local/bin/scangearmp2 :

# rpm -ql scangearmp2
/etc/udev/rules.d/80-canon_mfp2.rules
/usr/lib64/bjlib/canon_mfp2.conf
/usr/lib64/bjlib/canon_mfp2_net.ini
/usr/lib64/libcncpmslld2.so.3.0.0
/usr/lib64/libcncpnet2.so.1.2.4
/usr/lib64/libcncpnet20.so.1.0.0
/usr/lib64/libcncpnet30.so.1.0.0
/usr/local/bin/scangearmp2
/usr/local/share/locale/de/LC_MESSAGES/scangearmp2.mo
/usr/local/share/locale/fr/LC_MESSAGES/scangearmp2.mo
/usr/local/share/locale/ja/LC_MESSAGES/scangearmp2.mo
/usr/local/share/locale/zh/LC_MESSAGES/scangearmp2.mo
/usr/local/share/scangearmp2/scangearmp2.glade
/usr/share/doc/scangearmp2-4.20
/usr/share/doc/scangearmp2-4.20/LICENSE-scangearmp-4.20EN.txt
/usr/share/doc/scangearmp2-4.20/LICENSE-scangearmp-4.20FR.txt
/usr/share/doc/scangearmp2-4.20/LICENSE-scangearmp-4.20JP.txt
/usr/share/doc/scangearmp2-4.20/LICENSE-scangearmp-4.20SC.txt

On notera l’absence d’une entrée de menu pour l’application. Je la lance donc à la main depuis un terminal :

$ scangearmp2

La fenêtre de sélection des scanners s’affiche :

Canon ScanGear

L’application a probablement été codée par un développeur est-allemand dans les années 1980 :

Canon ScanGear

Une fois que j’ai vérifié qu’elle fonctionne correctement, je lui confectionne une entrée de menu « maison » en éditant un fichier /usr/share/applications/scangearmp2.desktop comme ceci :

[Desktop Entry]
Exec=scangearmp2
Icon=org.gnome.SimpleScan
Terminal=false
Type=Application
StartupNotify=true
GenericName=ScanGear
Name=Scanner Tool (Canon)
Name[de]=Scannersoftware (Canon)
Name[fr]=Acquisition d'images (Canon)
Categories=Graphics;

Je mets à jour la base de données des entrées de menu :

# update-desktop-database

Et le tour est joué :

Canon ScanGear

PS 12 décembre 2023 : le pilote de l’imprimante souffre d’un bug qui fait que l’impression finit par remplir le disque dur. Voici la solution.


La rédaction de cette documentation demande du temps et des quantités significatives de café espresso. Vous appréciez ce blog ? Offrez un café au rédacteur en cliquant sur la tasse.

 


4 commentaires

Guillaume · 8 décembre 2023 à 10 h 01 min

Désolé, vraiment pour t’avoir fait galérer autant, dans le monde informaticommercial on incite à acheter, c’est écrit « clé en main, tout fonctionne », mais en réalité ….! Mais du coup fier de toi car tu as réussi l’impossible, et voir je suis même très content que nous soyons à l’origine de cette page ! j’espère qu’elle aidera beaucoup de monde, en tous cas oui on se rend bien compte que c’était une imprimante tout public mais avec mention « ingénieur NASA systèmes embarqués avec dons de traduction novlangue-linux-français »! Bien joué Nico !!!!!

Jonathan · 31 octobre 2024 à 15 h 17 min

Question bête, mais si on t’avait demandé ton avis, tu aurais recommandé quoi comme imprimante ?
Il y a des marques d’imprimantes plus conseillées que d’autre pour les systèmes Linux ?

    kikinovak · 31 octobre 2024 à 16 h 48 min

    Les imprimantes sont une plaie. Mais d’un simple point de vue des pilotes, je dirais les HP. La configuration avec HPLIP est tellement plus simple.

JB · 3 décembre 2024 à 12 h 21 min

Merci pour le retour ça m’a fait gagner un temps considérable !
J’ai réussi à faire fonctionner le scanner avec sane. Par défaut sane utilise le backend escl (sane-escl) mais pour une raison que j’ignore il retourne systématiquement une erreur dès qu’on tente d’utiliser le scanner

scanimage -L
device `escl:https://10.10.10.88:443‘ is a Canon GX7000 series platen,adf scanner

scanimage –all-options –verbose
scanimage: open of device escl:https://10.10.10.88:443 failed: Invalid argument

En changeant le backend sane pour airscan (man sane-airscan) on arrive à récupérer les options du scanner et j’ai réussi à faire fonctionner le flatbed ainsi que l’adf. Je peux donc faire des scans de plusieurs document recto/verso en une seule commande, classe !

Juste pour info les options retournées le scanner et la commande de test multi pages recto/verso (2 pages)

scanimage –all-options –verbose
Output format is not set, using pnm as a default.

All options specific to device `airscan:e0:Canon GX7000 series’:
Standard:
–resolution 75|100|150|200|300|600|1200dpi [300]
Sets the resolution of the scanned image.
–mode Color|Gray [Color]
Selects the scan mode (e.g., lineart, monochrome, or color).
–source Flatbed|ADF|ADF Duplex [Flatbed]
Selects the scan source (such as a document-feeder).
Geometry:
-l 0..215.9mm [0]
Top-left x position of scan area.
-t 0..297.011mm [0]
Top-left y position of scan area.
-x 0..215.9mm [215.9]
Width of scan-area.
-y 0..297.011mm [297.011]
Height of scan-area.
Enhancement:
–brightness -100..100% (in steps of 1) [0]
Controls the brightness of the acquired image.
–contrast -100..100% (in steps of 1) [0]
Controls the contrast of the acquired image.
–shadow 0..100% (in steps of 1) [0]
Selects what radiance level should be considered « black ».
–highlight 0..100% (in steps of 1) [100]
Selects what radiance level should be considered « white ».
–analog-gamma 0.0999908..4 [1]
Analog gamma-correction
–negative[=(yes|no)] [no]
Swap black and white
–adf-justification-x [inactive]
ADF width justification (left/right/center)
–adf-justification-y [inactive]
ADF height justification (top/bottom/center)

scanimage –resolution=75 –format=jpeg –batch= »test-%d.jpg » –source « ADF Duplex »
Scanning infinity pages, incrementing by 1, numbering from 1
Scanning page 1
Scanned page 1. (scanner status = 5)
Scanning page 2
Scanned page 2. (scanner status = 5)
Scanning page 3
Scanned page 3. (scanner status = 5)
Scanning page 4
Scanned page 4. (scanner status = 5)
Scanning page 5
scanimage: sane_start: Document feeder out of documents
Batch terminated, 4 pages scanned

Laisser un commentaire

Emplacement de l’avatar

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *