Linux kärnan (<=2.1.32), förutsatt att du kar kompilerat in eller
laddat lp enheten (output av cat /proc/devices
skall
innehålla enheten lp), tillhandahåller en eller flera av
/dev/lp0, /dev/lp1, och /dev/lp2. Dessa
tilldelas INTE dynamisk utan var och en av dem svarar mot en specifik
I/O adress. Detta betyder att din första skrivare kan vara lp0
eller lp1 beroende på din hårdvara. Prova båda.
Några få användare har rapporterat att deras dubbelriktade lp portar inte upptäcks om de använder en äldre universalriktad skrivarkabel. Se till att du har en passande kabel.
Man kan inte köra plip och lp drivrutinerna på samma gång på en port. Du kan dock ladda den ena eller den andra när som helst antingen manuellt, eller med kerneld om du har version 2.x (eller senare versioner av 1.3.x) av kärnan. Genom att noggrant ställa in irq och dylikt, kan du antagligen köra plip på ena porten och lp på den andra. Någon gjorde så genom att editera drivrutinen. Jag väntar otåligt på en positiv rapport om någon som lyckats göra detta med bara en smart kommandorad.
Det finns ett litet verktyg som heter
tunelp
med vilket du, som root, kan finjustera Linux lp
enheters irq, "polling rate" och andra alternativ.
Om den är inbyggd, i en del 1.3.x och senare kärnor, kan kärnan ta emot
lp=
argumentet för att sätta irq och io adresser:
När lp drivrutinen är inbyggd i kärnan kan du använda kommandoraden
till LILO/LOADLIN för att sätta portadresser och irq's som
den drivrutinen skall använda.
Syntax: lp=port0[,irq0[,port1[,irq1[,port2[,irq2]]]]]
exempel: lp=0x378,0 eller lp=0x278,5,0x378,7 **
Observera att om du använder denna finess måste specificera *alla*
portar som du vill använda, det finns inga "defaults". Du kan stänga av
en inbyggd drivrutin med lp=0.
Om den laddas som en modul i version 2 och sena 1.3.x kärnor är det
möjligt att specificera io adresser och irq's på insmod
kommandoraden (eller i /etc/conf.modules för att ha effekt
på kerneld) genom att använda den vanliga syntaxen. Parametrarna är
io=port0,port1,port2
och irq=irq0,irq1,irq2
. Läs manualsidan
för
insmod för ytterligare information om detta.
**För dem av er (som jag själv) som aldrig kan hitta standardportnumren när ni behöver dem, de är som i det andra exemplet ovan. Den andra porten (lp0) är på 0x3bc. Jag har ingen aning om vilken irq den brukar använda.
Källkoden för Linux parallellportsdrivrutin finns i /usr/src/linux/drivers/char/lp.c.
Med början i kärna 2.1.33 (och tillgänglig som patch för kärna 2.0.30), är lp enheten bara en klient till den nya parport enheten. Fördelen med parportenheten är att den rättar till ett antal problem som den gamla lp enheten led av - den kan dela port med andra drivrutiner, den tilldelar tillgängliga parallellportar dynamiskt till enhetsnummer istället för att kräva en fast kommunikation mellan I/O adresser och portnummer, och så vidare.
Tillkomsten av parport enheten har möjliggjort en hel flock av nya parallell-ports drivrutiner för saker som, Zip drives, Backpack CD-ROMs och diskar, etc. En del av dessa finns också tillgängliga för 2.0.x kärnor; leta runt på nätet.
Jag kommer att täcka parport drivaren mer komplett då jag själv använder en, men tills vidare kan du läsa filen Documentation/parport.txt i din källkod till kärnan eller titta på parport web site.
Seriella enheter heter vanligtvis något som /dev/ttyS1 under
Linux. Verktyget
stty
låter dig interaktivt studera eller sätta
inställningarna för en serieport;
setserial
låter dig kontrollera ytterligare några attribut och konfigurera IRQs och
I/O adresser för icke standard portar. Ytterligare behandling av
serieportar under Linux hittas i
Serial-HOWTO.
Om du använder en långsam seriell skrivare med flödeskontroll kan du
komma att upptäcka att dina utskrifter trunkeras. Detta kan komma av
att serieportens normala beteende är att slänga alla oöversända tecken
från sin buffer 30 sekunder efter det att portenheten
stängts. Bufferten kan hålla upp till 4096 tecken, och om din skrivare
använder flödeskontroll och är så långsam att den inte kan ta emot all
data ur bufferten inom 30 sekunder efter det att utskriftsmjukvaran
stängt porten kommer det sista av din utskrift att gå förlorad. Om
kommandot
cat file > /dev/ttyS2
producerar kompletta utskrifter för korta filer och trunkerade för
längre kan du ha detta problem.
30 sekundersintervallet kan justeras genom "closing_wait" kommandorads argumentet till setserial (version 2.12 and later). En maskins serieportar initieras vanligtvis genom ett anrop till setserial i startfilen rc.serial. Anropet till skrivarserieporten kan modifieras så att det sätter closing_wait på samma gång som det sätter den portens andra parametrar.