Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Mini-HOWTO: Serveur d'impression (lpd/samba) et les Hewlett-Packard DeskJet 710, 712, 720, 722, 820 et 1000.

2 réponses
Avatar
Cyrille \cns\ Szymanski
Voici comment créer un serveur d'impression pour les imprimantes windows
de HP (séries 7xx, 820 et 1000). Ces imprimantes utilisent, à l'instar
des WinModems, un protocole propriétaire (PPA - Printer Performance
Architecture) qui déleste l'imprimante de calculs complexes au détriment
de quelques cycles CPU.

Ce document décrit comment configurer samba et lpd pour pouvoir partager
l'imprimante et imprimer depuis des machines Windows.

Cette configuration est simple (si on ne souhaite pas pouvoir imprimer
depuis FreeBSD) car le driver HP pour Windows envoie directement des
commandes PPA qu'il suffit de rerouter vers l'imprimante. Le problème
rencontré par beaucoup de novices est que les HOWTO disponibles
commencent par l'installation locale de l'imprimante, ce qui dans ce cas
n'est pas chose aisée.



0 *** Installer l'imprimante

Pour l'installation de l'imprimante se reporter au handbook, sections
11.1 à 11.3.1.3.
Il est mieux de les configurer en poll-mode (section 11.3.1.3.1).
Ni "lptest", ni "cat > /dev/lpt0" ne fonctionnent : l'imprimante veut du
PPA. On ne cherche pas non plus (pour l'instant du moins) à pouvoir
imprimer depuis FreeBSD.



1 *** Installer et configurer lpd

Pour imprimer sur l'imprimante, on peut envoyer directement le fichier :

cat fichier > /dev/lpt0

Le problème de cette métode est qu'elle bloque lpt0 pendant l'impression.
Si l'on désire envoyer plusieurs fichiers, on doit attendre que l'accès
soit libéré avant d'imprimer un nouveau fichier. Utiliser un spouleur tel
que lpd permet entre autres de pallier à cet inconvénient.

lpd crée une file d'attente dans laquelle sont placés les travaux
d'impression. On utilise lpr pour mettre un document dans la file. Un
appel à lpr retourne immédiatement et dès que son tour viendra, le
document sera imprimé.

Il faut donc installer lpd, par exemple depuis les ports.

Le fichier de configuration est /etc/printcap. Il faut à présent définir
les différents paramètres.

* Nommer l'imprimante :
Pour ce qui nous intéresse, on désire donner un accès direct à
l'imprimante, appelons-la donc "direct".

* Trouver le device (lp) :
C'est /dev/lptN où N est le numéro du port LTP (0 pour le premier, 1 pour
le second, etc.). On aura par exemple
lp=/dev/lpt0

* Créer un répertoire pour le spouleur (sd) :
Typiquement on crée un répertoire /var/spool/lpd/<imprimante> pour
recevoir les documents en file d'attente.
mkdir /var/spool/lpd/direct
et
sd=/var/spool/lpd/direct

* Options diverses :
Ces options suppriment une page d'entête et suppriment la limite sur la
taille des fichiers à imprimer (qui en PPA ont tendance à être énormes).
Voir printcap(5) pour plus d'infos.
la
mx#0
sh
sf

Ce qui donne donc les lignes suivantes à insérer dans /etc/printcap
direct:\
:lp=/dev/lpt0:\
:sd=/var/spool/lpd/direct:\
:la:mx#0:\
:sh:sf:



2 *** Mettre en place le partage SAMBA

Il faut installer samba et s'assurer de son bon fonctionnement (hors du
cadre de ce mini-howto).
La méthode est assez directe et la configuration explicite. A mettre dans
/usr/local/etc/smb.conf :

[HP DeskJet 720C]
comment = HP DeskJet 720C
path = /var/tmp
printer name = direct
writable = yes
public = yes
printable = yes
print command = lpr -r -P %p %s

lpr -P <imprimante> (ici remplacé par direct) <fichier> ici remplacé par
le fichier à imprimer.

/usr/local/etc/rc.d/samba.sh stop
/usr/local/etc/rc.d/samba.sh start

Pour relancer Samba.



3 *** Fonctionnement

Dans Windows il faut ajouter une imprimante correspondant au partage et
choisir le driver de l'imprimante (Windows 2000 et + l'ont en standard,
il suffit de la sélectionner dans la liste, pour les autres versions on
peut utiliser le CD fourni avec l'imprimante).

Lorsqu'une impression est lancée, le driver imprimante génère un fichier
d'instructions PPA pour l'imprimante et elles sont envoyées à travers le
réseau via samba. Sur la machine FreeBSD, un fichier temporaire est créé
dans /var/tmp, et la commande lpr est appelée sur ce fichier.
L'impression du fichier est placée dans la file d'attente. Lorsque son
tour vient, lpd envoie le fichier à l'imprimante et le document est
imprimé.



4 *** Imprimer depuis FreeBSD.

C'est plus compliqué car il faut générer le fichier PPA. Il existe pour
cela un outil nommé pnm2ppa (disponible via les ports).

--
_|_|_| CnS
_|_| for(n=0;b;n++)
_| b&=b-1; /*pp.47 K&R*/

2 réponses

Avatar
alebret
[snip - merci pour ça]
Pourquoi ne pas l'envoyer aux documenteurs "officiels" ?

Par ailleurs, petite précision : j'utilise une HP deskjet 870 Cxi,
avec laquelle j'imprime très facilement en local ; je l'ai configurée
avec webmin, qui fournit les pilotes.
Avatar
Cyrille \cns\ Szymanski
[snip - merci pour ça]
Pourquoi ne pas l'envoyer aux documenteurs "officiels" ?

Par ailleurs, petite précision : j'utilise une HP deskjet 870 Cxi,
avec laquelle j'imprime très facilement en local ; je l'ai configurée
avec webmin, qui fournit les pilotes.



Parce que je ne suis peut-être pas être à la hauteur pour ce genre de
boulot et surtout parce que j'ai besoin de "peer review" avant d'en faire
qqch de sérieux.

Si vous avez des conseils à me donner (sur ce que j'explique, les autres
solutions équivalentes etc.) je suis preneur.

a+
--
_|_|_| CnS
_|_| for(n=0;b;n++)
_| b&=b-1; /*pp.47 K&R*/