Je vais reparler de l'impression sous un aspect assez général même si les exemples données concernent toujours le matériel que je possède. Je me limiterai à CUPS, Common Unix Printing System.
CUPS est disponible depuis fort longtemps dans les distributions à noyau 2.4 mais votre imprimante ne sera que mieux reconnue, en particulier dans le cas d'un branchement en USB, si vous tournez avec un noyau 2.6. Cela permet entre autres d'utiliser Udev.
Ensuite, allez sur linuxprinting.org pour télécharger
le fichier .ppd
adapté à votre imprimante. S'il n'est pas
disponible alors que l'imprimante est référencée, c'est qu'elle est trop
récente ou qu'elle utilise un langage inconnu, autre que Postscript, PCL
ou GDI. Il y a alors de fortes chances qu'il ne s'agisse pas d'une vraie
imprimante mais d'un glorieux membre de la catégorie des winprinters,
incapables de fonctionner sans pilotes spécifiques. Donnez-la à
quelqu'un que vous n'aimez pas et allez en acheter une vraie.
Quoi qu'il en soit, vous trouverez surement sur linuxprinting.org une évaluation du niveau de compatibilité de votre imprimante avec votre système préféré.
.ppd
dans
/usr/share/cups/model
,
# /etc/init.d/cupsys restart
(Debian) ou :
# /etc/rc.d/rc.cups restart
(Slackware).
Elle peut se faire en ligne de commande ou par modification de fichiers
texte mais aussi, beaucoup plus simplement, par l'interface web de CUPS,
à l'adresse http://localhost:631,
tapée dans n'importe quel navigateur. Attention : le mot de passe
root
vous sera demandé ; veillez à ne pas le faire
mémoriser par votre navigateur .
L'interface en question est un clicodrome du type «Suivant, suivant...». La
première précaution à prendre est de spécifier le bon port
parallèle ou USB. Dans le cas d'une grosse imprimante par défaut,
surement sur port parallèle, pas de souci : /dev/lp0
et ça roule.
Dans le cas d'une liaison par port USB, vous indiquerez donc simplement :
/dev/usb/lp0
.
Pensez à vos utilisateurs qui lanceront des impressions en ligne de commande ailleurs que vers l'imprimante par défaut : spécifiez un nom d'imprimante ne comportant ni espaces ni caractères spéciaux et, de préférence... court !
Dans le cas de plusieurs imprimantes USB, si elles doivent étre branchées ou utilisées en même temps, il faut être sûr de leur donner toujours le même nom.
Supposons que l'on veuille donner à une HP-840 le nom de périphérique
/dev/hp840
. En fait, le but est de créer automatiquement,
gréce à Udev, un lien symbolique /dev/hp840
vers
/dev/usb/lp...
. On vérifie tout d'abord que le matériel est bien
reconnu. Si nous sommes en présence d'un noyau 2.6 et que l'imprimante est la
seule branchée, elle doit être normalement en /dev/usb/lp0
.
Voyons donc quel chemin interroger avec udevinfo
: pour
cela, après un petit man udevinfo
, histoire de voir où on
va, utilisons la commande udevinfo -q all -n /dev/usb/lp0
.
Une partie de la réponse :
P: /class/usb/lp0
Essayons alors : udevinfo -a -p /sys/class/usb/lp0
. Ce que
l'on peut relever d'intéressant est le nom «humain» de cette imprimante,
ses identifiants en hexadécimal, son numéro de série et plein d'autres
choses...
Alors que choisir ? Dans un réseau important, il est impératif, et c'est
un euphémisme, que les ordres d'impression ne partent pas au mauvais
endroit... J'ignore si les imprimantes sans fil autonomes existent ;
merci d'éclairer ma lanterne à ce sujet. On indiquera plutôt le numéro
de série par SYSFS{serial}
.
Si l'on n'a pas de risque de ce type, on peut choisir sans crainte les
identifiants en hexa. Pour cela, rajouter dans les règles Udev (fichier avec l'extension .rules
) :
# Imprimante HP-840c BUS="usb", KERNEL="lp[0-9]*", SYSFS{idProduct}="0604", SYSFS{idVendor}="03f0", SYMLINK="hp840"
Le fichier à modifier est dans le dossier /etc/udev/
ou
un de ses sous-dossiers. La priorité entre les différents fichiers de règles
suit l'ordre alphabétique. Ainsi, 00-mesreglesamoi.rules
passera
avant udev.rules
.
On redémarre ensuite Udev avec /etc/init.d/udev restart
(Debian)
ou /etc/rc.d/rc.udev restart
(Slackware) et à la prochaine
configuration de CUPS, on pourra indiquer comme périphérique
/dev/hp840
.
à ma connaissance, ce n'est pas prévu dans l'interface web de CUPS. Il
faut utiliser la commande lpstat -d -p
pour savoir quelle
est l'imprimante par défaut. Voici le résultat chez moi :
system default destination: hp840 printer hp840 is idle. enabled since Jan 01 00:00 printer ml1210 is idle. enabled since Jan 01 00:00 printer ml1250 is idle. enabled since Jan 01 00:00
Si le réglage actuel ne vous convient pas (par exemple si vous souhaitez la Samsung ML-1250 comme imprimante principale), vous pouvez le changer par :
# lpadmin -d ml1250