Om printers met het LPD wachtrijsysteem te kunnen gebruiken, dienen zowel de printerhardware als de LPD software geïnstalleerd te worden. Dit document beschrijft deze installatie in twee stappen:
In het onderdeel Eenvoudige printerinstallatie staat hoe een printer moet worden aangesloten, hoe LPD er mee kan communiceren en hoe tekstbestanden afgedrukt kunnen worden.
In Geavanceerde printerinstallatie staat beschreven hoe een scala aan bestandsformaten afgedrukt kan worden, hoe voorbladen kunnen worden afgedrukt en hoe statistieken van de printer kunnen worden bijgehouden.
Nu wordt toegelicht hoe de printerhardware en de LPD software ingesteld moeten worden om een printer te kunnen gebruiken. Het behandelt de basis:
Hardware-instellingen geeft een aantal aanwijzingen voor het aansluiten van een printer op een poort van een computer.
Software-instellingen
toont hoe het instellingenbestand
(/etc/printcap
) voor het
LPD-systeem moet worden
opgezet.
Hoe een printer geïnstalleerd moet worden die via een netwerkprotocol gegevens ontvangt, in plaats van een seriële of parallelle poort, staat in Printers met netwerkinterfaces.
Hoewel dit onderdeel “Eenvoudige printerinstallatie” heet, is het redelijk complex. De printer met de computer en het LPD-systeem laten samenwerken is het moeilijkste. De geavanceerde opties, zoals voorbladen en statistieken, zijn relatief makkelijk als de printer eenmaal werkt.
Hier worden de verschillende manieren waarop een printer op een computer kan worden aangesloten beschreven. Het bespreekt de soorten poorten en kabels en de kernelinstellingen die nodig kunnen zijn om FreeBSD met een printer te laten communiceren.
Als een printer al is aangesloten en succesvol is gebruikt onder een ander besturingssysteem, dan kan waarschijnlijk verder gelezen worden in Software-instellingen.
De printers die tegenwoordig voor PC's verkocht worden hebben eigenlijk altijd een van de volgende drie poorten:
Seriële poort, ook bekend als RS-232- of COM-poorten, gebruiken een seriële poort op een computer om gegevens naar een printer te sturen. Seriële poorten zijn heel gebruikelijk in de computerindustrie en kabels zijn eenvoudig verkrijgbaar en makkelijk te maken. Seriële poorten hebben soms speciale kabels nodig en vereisen soms het instellen van ingewikkelde communicatieparameters. De meeste seriële poorten hebben een maximale doorvoersnelheid van 115.200 bps waardoor het afdrukken van grote grafische afdrukopdrachten erg onpraktisch wordt.
Parallelle poorten gebruiken een parallelle poort op een computer om gegevens naar een printer te sturen. Parallelle poorten zijn gebruikelijk in de PC-markt en zijn sneller dan RS-232 serieel. Kabels zijn goed verkrijgbaar, maar moeilijker handmatig te vervaardigen. Meestal zijn er geen communicatieparameters bij parallelle poorten, wat het instellen erg eenvoudig maakt.
Parallelle poorten staan ook wel bekend als “Centronics” poorten, genoemd naar het soort aansluiting op de printer.
USB poorten, genoemd naar de Universal Serial Bus, kunnen zelfs op nog hogere snelheid werken dan parallelle of RS-232 seriële poorten. De kabels zijn eenvoudig en goedkoop. USB is voor afdrukken superieur aan RS-232 Serieel en Parallel, maar wordt op UNIX®-systemen niet altijd goed ondersteund. Een van de manieren om dit te omzeilen is de aanschaf van een printer met zowel een USB als een parallelle poort, zoals veel printers die hebben.
Over het algemeen kunnen parallelle poorten meestal in één richting communiceren (van computer naar printer), terwijl seriële en USB poorten in twee richtingen kunnen communiceren. Nieuwere parallelle poorten (EPP en ECP) en printers kunnen onder FreeBSD in beide richtingen communiceren, mits een IEEE-1284 gekeurde kabel wordt gebruikt.
Tweewegcommunicatie met een printer over een parallelle poort verloopt meestal op een van de volgende twee manieren. De eerste manier is door gebruik te maken van een op maat gemaakt stuurprogramma voor FreeBSD dat de taal spreekt die door de printer wordt gebruikt. Dit geldt meestal voor inkjet printers en er kan dan gebruikt gemaakt worden van rapportagemogelijkheden over bijvoorbeeld inktniveaus en andere statusinformatie. De tweede methode wordt gebruikt als een printer PostScript® ondersteunt.
PostScript®-taken zijn eigenlijk programma's die naar de printer worden gestuurd. Het hoeft zelfs niet in een afdruk te resulteren; het resultaat van de opdracht kan direct weer naar de computer worden gestuurd. PostScript® gebruikt ook tweewegcommunicatie om een computer op de hoogte te stellen van opgetreden fouten, zoals fouten in het PostScript®-programma of vastgelopen papier. Gebruikers kunnen dit soort informatie handig vinden. De beste manier om bij een PostScript®-printer effectief bij te houden wat het printergebruik is, vraagt om tweewegcommunicatie: de printer wordt gevraagd om het totaal aantal afgedrukt pagina's, de afdrukopdracht wordt verzonden en vervolgens wordt nogmaals om het totaal aantal afgedrukte pagina's gevraagd. Het verschil van deze getallen geeft het aantal afgedrukte pagina's van de afdrukopdracht van de betreffende gebruiker.
Om een printer met een parallelle poort aan te sluiten, moet een Centronics kabel de printer met de computer verbinden. De instructies die geleverd zijn bij de printer, de computer of beide, moeten voldoende zijn om dit te verduidelijken.
Onthoud op welke parallelle poort de printer is
aangesloten. De eerste parallelle poort heet onder FreeBSD
ppc0
, de tweede
ppc1
, enzovoort. De
benaming voor de printer gaat analoog: /dev/lpt0
voor de printer op
de eerste parallelle poort enzovoort.
Gebruik de juiste seriële kabel om een printer met een seriële poort op een computer aan te sluiten. De instructies die geleverd zijn bij de printer, de computer of beide, moeten voldoende zijn om dit te verduidelijken.
Als onduidelijk is wat de “juiste seriële kabel” is, kan een van onderstaande opties geprobeerd worden:
Een modemkabel verbindt elke pin van de stekker aan het ene eind direct met de corresponderende pin van de stekker aan het andere eind. Dit type kabel heet ook wel een “DTE-naar-DCE”-kabel.
Een null-modem kabel verbindt enkele pinnetjes direct, verwisselt andere (bijvoorbeeld van verstuur gegevens naar ontvang gegevens) en sluit sommige draden kort in de stekker. Dit type kabel heet ook wel een “DTE-to-DTE”-kabel.
Een seriële printerkabel, nodig bij sommige ongebruikelijke printers, is als een null-modem kabel, maar stuurt sommige signalen naar hun tegenhangers in plaats van ze intern kort te sluiten.
Het is ook nodig de communicatieparameters voor de
printer in te stellen, meestal via het bedieningspaneel of
middels DIP-schakelaars op de printer. Selecteer de
hoogste bps
(bits per seconde, soms
baud) die zowel door de computer als
de printer wordt ondersteund. Kies 7 of 8 data bits.
Geen, even of oneven pariteit en 1 of 2 stop bits.
Selecteer ook het flow-control protocol: ofwel geen, ofwel
XON/XOFF (ook bekend als “in-band” of
“software”) flow-control. Onthoud deze
instellingen voor de hier op volgende
software-instellingen.
Nu wordt beschreven welke software-instellingen nodig zijn om onder FreeBSD af te drukken met behulp van het wachtrijsysteem LPD.
Een overzicht van de te doorlopen stappen:
Maak, indien nodig, de kernel geschikt voor de poort die door de printer wordt gebruikt. In Kernelinstellingen is te lezen hoe dit gedaan kan worden.
Stel de communicatievorm voor de parallelle poort in, als gebruik wordt gemaakt van een parallelle printer. In Communicatietype instellen voor een parallelle poort staan de details.
Test of het besturingssysteem gegevens naar de printer kan sturen. In Printercommunicatie controleren staat een aantal suggesties.
Stel LPD in voor de
printer door /etc/printcap
aan te
passen. Dat wordt later in het hoofdstuk
beschreven.
Het besturingssysteem is gecompileerd om met een beperkte verzameling apparaten te kunnen werken. De seriële en parallelle poorten zijn onderdeel van deze verzameling. Daarom kan het nodig zijn om ondersteuning voor een extra seriële of parallelle poort toe te voegen als een kernel hier nog niet voor is ingesteld.
Om te achterhalen of de huidige kernel een seriële poort ondersteunt:
#
grep sioN /var/run/dmesg.boot
Hier is N
het aantal
seriële poorten, beginnende bij nul. Als de uitvoer
op het volgende lijkt, dan wordt de poort door de kernel
ondersteund:
sio2 at port 0x3e8-0x3ef irq 5 on isa sio2: type 16550A
Om te achterhalen of de kernel een parallelle poort ondersteunt:
#
grep ppcN /var/run/dmesg.boot
Hier is N
het aantal
parallelle poorten beginnende bij nul. Als de uitvoer er
ongeveer als volgt uit ziet, dan wordt de poort door de
kernel ondersteund:
ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0 ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode ppc0: FIFO with 16/16/8 bytes threshold
Het kan nodig zijn een kernel aan te passen om het besturingssysteem in staat te stellen een parallelle of seriële poort die voor een printer wordt gebruikt te herkennen en te gebruiken.
In het onderdeel over kernelinstellingen staat meer informatie om ondersteuning voor een seriële poort toe te voegen. Lees de betreffende en de volgende sectie om ondersteuning voor een parallelle poort toe te voegen.
Wanneer een parallelle poort wordt gebruikt, kan worden aangegeven of FreeBSD voor de printer interrupt-gestuurde of “polled” communicatie moet gebruiken. Het generieke printerapparaatstuurprogramma (lpt(4)) onder FreeBSD gebruikt het systeem ppbus(4). Dit bestuurt de chipset van de poort met het stuurprogramma ppc(4).
De interrupt-gestuurde methode is standaard in de GENERIC kernel. In dit geval gebruikt het besturingssysteem een IRQ om te bepalen of de printer klaar is om gegevens te ontvangen.
Bij de polled methode vraagt het besturingssysteem met vaste intervallen aan de printer of deze klaar is om gegevens te ontvangen. Als de printer antwoordt met “klaar”, stuurt de kernel meer gegevens.
De interrupt-gestuurde methode is meestal iets sneller, maar gebruikt een kostbaar IRQ-nummer. Van sommige HP printers wordt beweerd dat ze niet goed werken in interruptmodus, schijnbaar door een (nog niet begrepen) timing-probleem. Deze printers moeten gebruik maken van de polled methode. Gebruik de methode die werkt. Sommige printers werken met beide methodes, maar zijn tergend langzaam in de interrupt modus.
Het communicatietype kan op twee manieren worden ingesteld: door de kernel in te stellen of door gebruik te maken van lptcontrol(8).
Het communicatietype instellen door de kernel aan te passen:
Pas het kernelinstellingenbestand aan. Zoek naar
een ppc0
ingang. Gebruik
ppc1
voor het opzetten van een
tweede parallelle poort. Gebruik
ppc2
voor de derde poort,
enzovoort.
Als u gebruik wilt maken van de interrupt gestuurde modus, bewerk dan de regel hieronder:
hint.ppc.0.irq="N
"
Het kernelinstellingenbestand moet ook het stuurprogramma ppc(4) bevatten:
device ppc
Om gebruik te maken van polled modus verwijder
dan het volgende regel uit
/boot/device.hints
:
hint.ppc.0.irq="N
"
In sommige gevallen is het onder FreeBSD niet voldoende om een poort in polled modus te zetten. In veel gevallen komt dat door het stuurprogramma acpi(4). Dit is in staat om apparaten te testen en aan te sluiten en kan zodoende het communicatietype van de printer wijzigen. Raadpleeg de instellingen voor acpi(4) om dit probleem te verhelpen.
Sla het bestand op. Maak en installeer de nieuwe kernel en herstart de computer. In De FreeBSD-kernel instellen staan meer details.
Communicatietype instellen met lptcontrol(8):
Typ:
#
lptcontrol -i -d /dev/lptN
om lptN
op
interrupt-gestuurde modus in te stellen.
Typ:
#
lptcontrol -p -d /dev/lptN
om lptN
op
polled modus in te stellen.
#
lptcontrol -p -d /dev/lptN
Zet deze commando's in het bestand
/etc/rc.local
zodat het
communicatietype juist wordt ingesteld bij het opstarten.
In lptcontrol(8) staat meer informatie.
Voor het instellen van het wachtrijsysteem, is het verstandig te controleren of het besturingssysteem gegevens naar een printer kan versturen. Het is een stuk makkelijker om problemen met printercommunicatie en het wachtrijsysteem apart op te lossen.
De printer wordt getest door er tekst naar toe te sturen. Voor printers die direct tekens kunnen afdrukken is het programma lptest(1) handig: het genereert alle 96 afdrukbare ASCII-tekens op 96 regels.
Voor PostScript® (of andere op taal gebaseerde) printers, is een meer geavanceerde test nodig. Een eenvoudig PostScript®-programma zoals het volgende volstaat:
%!PS 100 100 moveto 300 300 lineto stroke 310 310 moveto /Helvetica findfont 12 scalefont setfont (Werkt dit?) show showpage
Bovenstaande PostScript®-code kan in een bestand worden opgeslagen en in de voorbeelden in de volgende paragrafen gebruikt worden.
Als in dit document wordt gesproken over een printertaal, wordt uitgegaan van een taal als PostScript® en niet PCL van HP. Hoewel PCL zeer functioneel is, kan het direct platte tekst afdrukken door gebruik te maken van escape-tekens. PostScript® kan niet direct platte tekst afdrukken. Voor dat soort printertalen zijn speciale aanpassingen nodig.
In deze sectie wordt beschreven hoe te controleren of FreeBSD kan communiceren met een printer die op een parallelle poort is aangesloten.
Voer de volgende stappen uit om een printer op een parallelle poort te testen:
su(1) naar root
.
Stuur gegevens naar de printer.
Gebruik lptest(1) als de printer platte tekst af kan drukken:
#
lptest > /dev/lptN
Hier is N
het
nummer van de parallelle poort, beginnende bij
nul.
Als de printer PostScript® of een andere printertaal begrijpt, stuur dan een klein programma naar de printer:
#
cat > /dev/lptN
Geef het programma regel voor regel
heel nauwkeurig in. Een
regel kan niet worden gewijzigd als er op
RETURN
of
ENTER
is gedrukt. Geef na het
afronden van de invoer voor het programma het
einde-van-invoer-teken. Dit is meestal
CONTROL+D
.
Het programma kan ook in een bestand worden opgeslagen:
#
cat bestand > /dev/lptN
Hier is bestand
de
naam van het bestand waarin het programma is
opgeslagen dat naar een printer gestuurd kan
worden.
Nu moet er iets worden afgedrukt. Tekst die er niet goed uitziet is geen probleem. Dit wordt later gerepareerd.
In deze sectie wordt beschreven hoe te controleren of FreeBSD kan communiceren met een printer die op een seriële poort is aangesloten.
Voer de volgende stappen uit om een printer op de seriële poort te testen:
su(1) naar root
.
Voeg de volgende regel toe aan
/etc/remote
:
printer:dv=/dev/poort
:br#bps-snelheid
:pa=pariteit
Hier is poort
de
apparaatingave voor de seriële poort
(ttyu0
, ttyu1
,
enzovoort), bps-snelheid
is het aantal bits per seconde waarop de printer
communiceert en pariteit
is de pariteit die door de printer wordt vereist
(even
, odd
,
none
of zero
).
Hier volgt een voorbeeldregel voor een printer verbonden met een seriële lijn op de derde seriële poort op 19200 bps, zonder pariteit:
printer:dv=/dev/ttyu2
:br#19200:pa=none
Maak verbinding met de printer met tip(1):
#
tip printer
Als dit niet werkt, pas dan
/etc/remote
opnieuw aan en
probeer gebruik te maken van /dev/cuaaN
in plaats van /dev/ttyuN
.
Stuur gegevens naar de printer.
Gebruik lptest(1) als de printer platte tekst af kan drukken:
%
$lptest
Als de printer PostScript® of een andere
printertaal begrijpt, stuur dan een klein
programma naar de printer. Geef het programma
regel voor regel heel
nauwkeurig in. Backspace of andere
speciale toetsen kunnen een speciale betekenis
hebben voor de printer. Het kan ook nodig zijn
een speciaal einde-van-invoer-teken te geven
zodat de printer weet dat het gehele programma
ontvangen is. Druk voor PostScript®-printers
CONTROL+D
.
Het programma kan ook in een bestand worden opgeslagen:
%
>bestand
Hier is bestand
de
naam van het bestand waarin het programma is
opgeslagen. Nadat tip(1) het bestand heeft
verstuurd kan het juiste einde-van-invoer-teken
ingegeven worden.
Nu moet er iets worden afgedrukt. Tekst die er niet goed uitziet is geen probleem. Dit wordt later gerepareerd.
Op dit punt moet de printer zijn aangesloten, de kernel ingesteld zijn om met de printer te communiceren (indien nodig) en is het mogelijk eenvoudige gegevens naar de printer te sturen. Nu kan LPD ingesteld worden zodat de toegang tot de printer wordt geregeld.
LPD wordt ingesteld door het
bestand /etc/printcap
aan te passen.
Het wachtrijsysteem LPD leest
dit bestand iedere keer dat het systeem wordt aangeroepen
zodat wijzigingen direct van toepassing zijn.
De opmaak van het bestand printcap(5) is voor de
hand liggend. Met een willekeurige tekstverwerker kunnen
wijzigen in /etc/printcap
aangebracht
worden. De opmaak is identiek aan die van andere bestanden
die voor dergelijke instellingen worden gebruik, zoals
/usr/share/misc/termcap
en
/etc/remote
. In cgetent(3) staat
een uitgebreid overzicht van dit formaat.
De vereenvoudigde instellingen bestaan uit de volgende stappen:
Kies een naam (en een paar handige aliassen) voor de
printer en voeg ze toe aan
/etc/printcap
. In Printernaamgeving
staat meer informatie over het toekennen van een naam aan
een printer.
Het afdrukken van voorbladen (standaard) kan uitgezet
worden met de optie sh
. In Voorbladen
onderdrukken staat meer informatie.
Maak een wachtrijmap aan en specificeer de locatie
door middel van de optie sd
. In
Wachtrijmap
aanmaken staat meer informatie.
Bepaal welke ingave in /dev
voor de printer wordt
gebruikt en geef dit in /etc/printcap
aan door gebruik te maken van de optie
lp
. In Printerapparaat
identificeren staat meer informatie. Als de
printer is aangesloten op een seriële poort moeten
de communicatieparameters worden ingesteld met de optie
ms#
. Dit wordt beschreven in Communicatieparameters
voor het wachtrijsysteem instellen.
Installeer een filter voor platte tekst. In Tekstfilter installeren staan details.
Test de instellingen door iets met lpr(1) af te drukken. Details staan in Printer uitproberen en Problemen oplossen.
Op taal gebaseerde printers, zoals PostScript®-printers, kunnen niet direct platte tekst afdrukken. De vereenvoudigde instellingen, zoals hierboven beschreven en hieronder verder beschreven, gaan er van uit dat alleen bestanden naar een printer worden gestuurd die de printer begrijpt.
Gebruikers verwachten vaak dat ze platte tekst naar printers op een systeem kunnen sturen. Programma's die LPD gebruiken om af te drukken gaan hier ook vaak van uit. Als een dergelijke printer wordt geïnstalleerd en het moet mogelijk zijn zowel afdrukopdrachten in de printertaal als in platte tekst naar een printer te sturen, dan is het zeer aan te raden een extra stap in deze vereenvoudigde opzet in te voegen: installeer een conversieprogramma dat automatisch platte tekst omzet in PostScript® (of een andere printertaal). In Platte tekst op PostScript®-printers afdrukken staat hoe dit in zijn werk gaat.
De eerste (makkelijke) stap is het kiezen van een naam voor een printer. Het maakt niet uit of een naam functioneel of grappig is, aangezien ook een aantal aliassen aan een printer toegekend kunnen worden.
Ten minste één van de printers die in
/etc/printcap
worden genoemd moet het
alias lp
hebben. Dit is de
standaardnaam voor de printer. Als gebruikers de
omgevingsvariabele PRINTER
niet ingesteld
hebben en ook geen printernaam specificeren als ze
LPD gebruiken, dan wordt
standaard de printer lp
gebruikt.
Het is verder gebruikelijk om het laatste alias zo te kiezen dat het een volledige beschrijving van de printer is, inclusief merk en model.
Als een naam en een aantal aliassen zijn gekozen,
kunnen ze aan /etc/printcap
worden
toegevoegd. De naam van een printer wordt in de meest
linker kolom geplaatst. Scheid ieder alias met een
verticale streep en plaats een dubbele punt achter het
laatste alias.
In het volgende voorbeeld is de beginsituatie een
uitgekleed /etc/printcap
waarin twee
printers worden gedefinieerd (een Diablo 630 lijnprinter
en een Panasonic KX-P4455
PostScript®-laserprinter):
# # /etc/printcap voor host rose # rattan|line|diablo|lp|Diablo 630 Line Printer: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:
In dit voorbeeld heet de eerste printer
rattan
en heeft de volgende aliassen:
line
, diablo
,
lp
en Diablo 630 Line
Printer
. Omdat deze printer het alias
lp
heeft, is het de standaard printer.
De tweede printer heet bamboo
en heeft
de aliassen ps
, PS
,
S
, panasonic
en
Panasonic KX-P4455 PostScript v51.4
.
Het wachtrijsysteem LPD drukt standaard een voorblad af voor elke afdrukopdracht. Het voorblad bevat de gebruikersnaam van de gebruiker die de afdrukopdracht gaf, de computer waar de opdracht is gegeven en, in mooie grote letters, de naam van de afdrukopdracht. Het nadeel hiervan is dat al deze extra tekst het debuggen van de eenvoudige printerinstallatie bemoeilijkt. Daarom wordt het afdrukken van voorbladen onderdrukt.
Om voorbladen te onderdrukken, wordt de optie
sh
toegevoegd voor de relevante printer
in /etc/printcap
. Hieronder staat een
voorbeeld van /etc/printcap
met de
optie sh
:
# # /etc/printcap voor host rose - nergens worden voorbladen afgedrukt # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:
Het juiste formaat is gebruikt: de eerste regel begint in de meest linker kolom, volgende regels springen in. Elke regel eindigt met een backslash, behalve de laatste.
De volgende stap in deze eenvoudige opzet is het aanmaken van een wachtrijmap. Dit is een map waar afdrukopdrachten geplaatst worden totdat ze worden afgedrukt. Ook wordt er een aantal bestanden geplaatst die nodig zijn voor het functioneren van het wachtrijsysteem.
Vanwege het veranderlijke karakter van wachtrijmappen
is het gebruikelijk om deze mappen onder
/var/spool
te
plaatsen. Het is niet nodig om een reservekopie van de
inhoud van deze mappen te maken. Ze kunnen eenvoudigweg
opnieuw worden aangemaakt met mkdir(1).
Het is ook gebruikelijk om de naam van de map overeen te laten komen met die van de printer, zoals onder is weergegeven:
#
mkdir /var/spool/printernaam
Als er veel printers zijn aangesloten op een netwerk,
is het beter de wachtrijmappen aan te maken in een enkele
map die speciaal wordt gebruikt voor afdrukken met
LPD. In dit voorbeeld wordt dat
gedaan voor de printers rattan
en
bamboo
:
#
mkdir /var/spool/lpd
#
mkdir /var/spool/lpd/rattan
#
mkdir /var/spool/lpd/bamboo
Als de afdrukopdrachten privé moeten blijven,
dan is het belangrijk de wachtrijmap niet algemeen
toegankelijk te maken. Wachtrijmappen moeten eigendom
zijn van gebruiker daemon
en groep
daemon
. Uitsluitend deze gebruiker
en groep moeten de map kunnen lezen, schrijven en
doorzoeken. We doen dit voor onze voorbeeldprinters:
#
chown daemon:daemon /var/spool/lpd/rattan
#
chown daemon:daemon /var/spool/lpd/bamboo
#
chmod 770 /var/spool/lpd/rattan
#
chmod 770 /var/spool/lpd/bamboo
Tenslotte moet LPD verteld
worden dat deze mappen bestaan. Dit kan met het bestand
/etc/printcap
. De locatie van de
wachtrijmap wordt opgegeven met de optie
sd
:
# # /etc/printcap voor host rose - wachtrijmappen toegevoegd # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan
: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo
:
De naam van de printer staat in de eerste kolom, maar alle andere regels die de printer beschrijven worden ingesprongen en elke regel eindigt met een backslash.
Als geen wachtrijmap wordt opgegeven met
sd
, dan wordt standaard
/var/spool/lpd
gebruikt.
In de sectie Hardware-instellingen
is bepaald welke poort en ingang in de map /dev
door FreeBSD worden gebruikt om met een printer te
communiceren. Nu moet LPD dit
ook weten. Als het wachtrijsysteem een afdrukopdracht
krijgt, opent het het relevante apparaat namens het
filterprogramma (dat verantwoordelijk is voor het sturen van
gegevens naar een printer).
Geef de locatie van de ingang in
/dev
op in
/etc/printcap
door gebruik te maken
van de optie lp
.
In het huidige voorbeeld wordt aangenomen dat
rattan
op de eerste parallelle poort is
aangesloten en bamboo
op de zesde
seriële poort. Hier volgen de toevoegingen voor
/etc/printcap
:
# # /etc/printcap voor host rose - bepaald welke apparaten te gebruiken # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan
:\ :lp=/dev/lpt0
: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo
:\ :lp=/dev/ttyu5
:
Als voor een printer de optie lp
niet wordt gebruikt in /etc/printcap
,
dan gebruikt LPD standaard
/dev/lp
. Momenteel
bestaat /dev/lp
niet
in FreeBSD.
Als de te installeren printer is aangesloten op een parallelle poort, dan staan verdere instructies in Tekstfilter installeren. In andere gevallen kunnen de instructies in de volgende paragraaf gevold worden.
Voor printers die zijn aangesloten op een seriële poort kan LPD de bps-snelheid, pariteit en andere seriële communicatie parameters instellen voor het filterprogramma dat gegevens naar een printer stuurt. Dit is gunstig omdat:
De verschillende communicatieparameters
uitgeprobeerd kunnen worden door
/etc/printcap
aan te passen. Het
is niet nodig het filterprogramma opnieuw te
compileren;
Het wachtrijsysteem kan hetzelfde filter gebruiken voor verschillende printers die mogelijk verschillende seriële communicatie-instellingen hebben.
Met de volgende opties in
/etc/printcap
kunnen seriële
communicatieparameters worden ingesteld voor het apparaat
waar lp
naar verwijst:
br#bps-snelheid
Stelt de communicatiesnelheid van het apparaat in
op bps-snelheid
, waarbij
bps-snelheid
de waarde
50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800,
2400, 4800, 9600, 19200, 38400, 57600 of 115200
bits-per-seconde kan aannemen.
ms#stty-modus
Bepaalt de opties voor het geval het printerapparaat een terminal is. In stty(1) staat uitleg over de beschikbare opties.
Als LPD het apparaat opent
dat met lp
is opgegeven, worden de
eigenschappen van het apparaat bepaald door de optie
ms#
. Met name van belang zijn de modi
parenb
, parodd
,
cs5
, cs6
,
cs7
, cs8
,
cstopb
, crtscts
en
ixon
. Deze worden uitgelegd in
stty(1).
Nu wordt de voorbeeldprinter op de zesde seriële
poort aangepast. De bps-snelheid wordt ingesteld op 38400.
Als modus wordt gekozen: geen pariteit met
-parenb
, 8-bit tekens met
cs8
, geen modemcontrole met
clocal
en hardware flow-control met
crtscts
:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo
:\ :lp=/dev/ttyu5
:ms#-parenb cs8 clocal crtscts:
Nu kan LPD verteld worden
welke tekstfilters gebruikt moeten worden bij het versturen
van afdrukopdrachten. Een tekstfilter
is een programma dat LPD
aanroept als het een afdrukopdracht krijgt. Wanneer
LPD het tekstfilter aanroept,
wordt de standaard invoer van het filter gekoppeld aan de
afdrukopdracht en de standaard uitvoer aan het
printerapparaat dat door de optie lp
is opgegeven. Er wordt aangenomen dat het filter van
standaard invoer leest, vervolgens de nodige handelingen
uitvoert en het resultaat naar de standaard uitvoer
schrijft, zodat het afgedrukt wordt. In Filters staat
meer informatie over het tekstfilter.
Voor deze eenvoudige printerinstallatie kan het
tekstfilter een klein shellscript zijn dat
/bin/cat
aanroept om de afdrukopdracht
naar de printer te sturen. FreeBSD wordt geleverd met een
ander filter, lpf
, dat backspaces en
onderlijnde tekst afhandelt voor printers die hier niet mee
overweg kunnen. Natuurlijk kan elk filter gebruikt worden
dat gewenst is. Het filter lpf
wordt
uitgebreid beschreven in lpf: een
tekstfilter.
Nu wordt eerst het shellscript
/usr/local/libexec/if-simple
gemaakt
dat als simpel tekstfilter dient. Plaats de volgende tekst
in het bestand met een tekstverwerker naar keuze:
#!/bin/sh # # if-simple - Eenvoudig tekstfilter voor lpd # Geïnstalleerd in /usr/local/libexec/if-simple # # Kopieert eenvoudigweg stdin naar stdout. # Filterargumenten worden genegeerd. /bin/cat && exit 0 exit 2
Zorg dat het bestand uitvoerbaar is:
#
chmod 555 /usr/local/libexec/if-simple
Zorg dat LPD het filter
gebruikt door dit aan te geven met de optie
if
in
/etc/printcap
. Nu volgt hoe dit te
doen voor de twee printers uit het voorbeeld:
# # /etc/printcap voor host rose - met tekstfilter # rattan|line|diablo|lp|Diablo 630 Line Printer:\ :sh:sd=/var/spool/lpd/rattan
:\ :lp=/dev/lpt0
:\ :if=/usr/local/libexec/if-simple
: bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\ :sh:sd=/var/spool/lpd/bamboo
:\ :lp=/dev/ttyu5
:ms#-parenb cs8 clocal crtscts:\ :if=/usr/local/libexec/if-simple
:
Een kopie van het script
if-simple
staat in de map /usr/share/examples/printing
.
lpd(8) wordt gestart vanuit
/etc/rc
door de variabele
lpd_enable
. Standaard staat deze
variabele op NO
. Als dit nog niet is
gedaan, voeg dan de volgende regel toe aan
/etc/rc.conf
en herstart de
computer:
lpd_enable="YES"
Of voer het commando lpd(8) uit:
#
lpd
Nu volgt het laatste onderdeel van de eenvoudige LPD installatie. Helaas zijn felicitaties nog niet gepast. De printer moet worden getest en eventuele problemen moeten worden opgelost. Om de installatie te testen kan iets afgedrukt worden. Afdrukken gaat met het commando lpr(1). Dit stuurt een opdracht naar een printer.
Het programma lpr(1) is te combineren met het programma lptest(1) uit Printercommunicatie controleren om tekst te genereren.
Om de eenvoudige installatie van LPD te testen:
#
lptest 20 5 | lpr -Pprinternaam
Hier is printernaam
de naam
van een printer (of een alias) die in
/etc/printcap
wordt genoemd. De
standaard printer kan worden getest door bij het aanroepen
van lpr(1) de optie -P
weg te laten.
Nogmaals: test een PostScript®-printer door een
PostScript®-programma naar een printer te sturen en maak
geen gebruik van lptest(1). Dit kan door het
programma in een bestand op te slaan en de volgende
commandoregel uit te voeren: lpr
bestand
.
Voor een PostScript®-printer moet het resultaat van het programma verschijnen. Als gebruik wordt gemaakt van lptest(1) ziet het resultaat er ongeveer zo uit:
!"#$%&'()*+,-./01234 "#$%&'()*+,-./012345 #$%&'()*+,-./0123456 $%&'()*+,-./01234567 %&'()*+,-./012345678
Om de printer uitvoeriger te testen kunnen grotere
programma's geprobeerd worden (voor taalgebaseerde
printers) of kan lptest(1) aangeroepen worden met
andere argumenten. Bijvoorbeeld: lptest 80
60
, drukt 60 regels af met elk 80 karakters.
Als de printer niet werkt, lees dan verder in Problemen oplossen.