Zusätzliche parallele Schnittstelle einrichten

Supportdatenbank (jsmeix_print-device-parallel)
Bezieht sich auf

SuSE Linux: Versionen 6.2 bis 7.3
Kernel: Versionen ab 2.2

Anliegen:

Sie möchten Ihre zusätzliche parallele Schnittstelle einrichten.

Ab SuSE Linux 8.0 siehe das "Referenz"-Handbuch.

Voraussetzung:

Sie verwenden einen Kernel ab Version 2.2.xx .

Hintergrund:

Standardmäßig ist nur die erste parallele Schnittstelle /dev/lp0 verfügbar.
Diese ist durch folgenden Eintrag in der Datei /etc/conf.modules bzw. ab SuSE Linux Version 6.3 in der Datei /etc/modules.conf konfiguriert:

alias parport_lowlevel parport_pc
options parport_pc io=0x378 irq=none,none
# If you have multiple parallel ports, specify them this way:
# options parport_pc io=0x378,0x278  irq=none,none
Bei io=0x... steht die IO-Adresse der parallelen Schnittstelle und bei irq=... steht normalerweise none für Polling-Betrieb des Druckers oder der Interrupt der parallelen Schnittstelle. Der Polling-Betrieb ist im allgemeinen unproblematischer als der Interrupt-Betrieb und auch nicht langsamer (außer bei ganz alten Rechnern).
Voraussetzung, daß die erste parallele Schnittstelle mit diesen Einstellungen funktioniert, sind folgende Standardeinstellungen im BIOS Ihres Rechners für die parallele Schnittstelle:
IO-Adresse 378 (hexadezimal)
Interrupt 7 (eigentlich egal im Polling-Betrieb)
Modus Normal oder SPP (andere Modi funktionieren nicht immer)
DMA ist abgeschaltet (sollte im Modus Normal abgeschaltet sein)

Test der ersten parallelen Schnittstelle:
Angenommen an /dev/lp0 hängt ein normaler Drucker (kein sog. GDI-Drucker), dann sollte man als Benutzer root mit
echo -en "Hallo\f" >/dev/lp0
eine Seite mit dem Wort Hallo ausgedruckt bekommen. (Vergl. die Artikel GDI-Drucker und Drucker-Kauf und Kompatibilität)

Vorgehen:

Einfachster Fall:

Angenommen, Sie haben eine zweite parallele Schnittstelle, die unter der Standard-IO-Adresse 278 (hexadezimal) ansprechbar ist (z.B. per Jumper auf einer ISA-Schnittstellenkarte einstellbar), dann genügt folgender Eintrag in /etc/conf.modules bzw. ab SuSE Linux Version 6.3 in /etc/modules.conf

alias parport_lowlevel parport_pc
# options parport_pc io=0x378 irq=none,none
# If you have multiple parallel ports, specify them this way:
options parport_pc io=0x378,0x278  irq=none,none
und nach einem Reboot steht die zweite parallele Schnittstelle zur Verfügung.
Test der zweiten parallelen Schnittstelle:
Angenommen an /dev/lp1 hängt ein normaler Drucker (kein sog. GDI-Drucker), dann sollte man als Benutzer root mit
echo -en "Hallo\f" >/dev/lp1
eine Seite mit dem Wort Hallo ausgedruckt bekommen.

Schwierigere Fälle:

Problematischer ist es, wenn die IO-Adresse der zusätzlichen parallelen Schnittstelle nicht vorher bekannt ist.
Hier muß die IO-Adresse der zusätzlichen parallelen Schnittstelle vorher ermittelt werden.

I) ISA PnP Karten:

Manchmal lassen sich auf solchen Karten auch feste Werte für IO-Adresse, Interrupt und Modus einstellen:
Entweder über Jumper oder - falls Sie DOS/Windows haben - über ein mitgeliefertes DOS/Windows Programm.
Wenn dies möglich ist, stellen Sie feste Werte für IO-Adresse, Interrupt und Modus ein.

Andernfalls werden aber die Werte für IO-Adresse, Interrupt und Modus erst beim Starten von Linux auf der ISA PnP Karte eingetragen.
Welche Werte eingetragen werden, läßt sich entweder in den Bootmeldungen von Linux finden, oder analog zum Handbuch Kapitel "Hardware rund um den Linux-Rechner" wie folgt vorgehen:

  1. als root anmelden
  2. falls /etc/isapnp.conf schon existiert, die bestehende Datei sichern mit
    mv /etc/isapnp.conf /etc/isapnp.conf.bak
  3. eine neue /etc/isapnp.conf erzeugen mit
    pnpdump -c >/etc/isapnp.conf
  4. die ISA PnP Karte(n) aktivieren mit
    isapnp /etc/isapnp.conf
    und aus der Ausgabe hier IO-Adresse (Port) und Interrupt (IRQ) der Schnittstellenkarte notieren.
Nachteil von ISA PnP Karten ohne feste Werte für IO-Adresse, Interrupt und Modus:
Wenn Sie schon solche ISA PnP Karten verwenden und eine zusätzliche derartige ISA PnP Karte einbauen, können entweder durch das BIOS oder durch den Aufruf von
pnpdump -c >/etc/isapnp.conf
die Werte für IO-Adresse und Interrupt der bisherigen ISA PnP Karten anders zugewiesen werden. Dann funktionieren die bisherigen ISA PnP Karten nicht mehr und alle ISA PnP Karten müssen neu konfiguriert werden.
Bei PCI Karten tritt dieses Problem normalerweise nicht auf. Durch eine neu hinzugekommene PCI Karte können zwar auch die Werte für IO-Adresse und Interrupt der bisherigen PCI Karten durch das BIOS anders zugewiesen werden, aber die Treiber der PCI Karten übernehmen normalerweise beim Start die aktuellen Werte aus dem BIOS. Eine Ausnahme ist z.B. der Treiber der parallelen Schnittstellen - das Kernelmodul parport_pc - diesem müssen die Werte der IO-Adressen und Interrupts der parallelen Schnittstellen explizit angegeben werden.

II) PCI Karten:

Welche IO-Adressen und welche Interrupt bei einer PCI-Karte in Frage kommt können Sie als Benutzer root duch folgenden Befehl sehen:
lspci -v
bzw. ausführicher mit
lspci -vv

Beispiel :

Beispielauszug aus der Ausgabe von lspci -v für eine PCI Schnittstellenkarte mit zwei parallelen Schnittstellen:

...
00:0a.0 Parallel controller: ...
        ...
        Flags: stepping, medium devsel, IRQ 10
        I/O ports at b400
        I/O ports at b000
        I/O ports at a800
        I/O ports at a400
...
Jeweils zwei um 400 (hexadezimal) versetzte IO-Adressen gehören zusammen zu einem parallelen Port.
Folgender Eintrag in /etc/conf.modules bzw. ab SuSE Linux Version 6.3 in /etc/modules.conf
alias parport_lowlevel parport_pc
# options parport_pc io=0x378 irq=none,none
# If you have multiple parallel ports, specify them this way:
options parport_pc io=0x378,0xb400,0xa800 irq=none,none,none
und nach einem Reboot stehen alle drei parallelen Schnittstellen zur Verfügung.
Test aller parallelen Schnittstellen:
Sofern jeweils ein normaler Drucker angeschlossen ist, sollte man als Benutzer root mit
echo -en "Hallo\f" >/dev/lp0
echo -en "Hallo\f" >/dev/lp1
echo -en "Hallo\f" >/dev/lp2
jeweils eine Seite mit dem Wort Hallo ausgedruckt bekommen.

Hinweis:
Statt eines Reboots genügt es, als Benutzer root, die Liste der Kernel-Modulabhängigkeiten zu aktualisieren und - sofern an den parallelen Ports nur Drucker angeschlossen sind - den Druckerdämon zu stoppen, die Kernelmodule, die die parallelen Schnittstellen betreffen, zu entladen und wieder neu zu laden und den Druckerdämon wieder zu starten:
/sbin/depmod -a 2>/dev/null >/dev/null
rclpd stop
rmmod lp
rmmod parport_probe
rmmod parport_pc
rmmod parport
modprobe parport
modprobe parport_pc
modprobe parport_probe
modprobe lp
rclpd start

Wenn der Test der zusätzlichen parallelen Schnittstellen erfolgreich war, können z.B. zusätzliche Drucker eingerichtet werden. Dabei ist nur statt /dev/lp0 als Druckerdevice /dev/lp1 oder /dev/lp2 anzugeben.


Siehe auch:
o Drucker einrichten
o Parport - allgemeine Informationen

Stichwörter: DRUCKEN, DRUCKER, PARALLELE, SCHNITTSTELLE, LP1, LP2, PARPORT

Kategorien: Fragen und Antworten , Dokumentation , Drucker

SDB-jsmeix_print-device-parallel, Copyright SuSE Linux AG, Nürnberg, Germany - Version: 13. Mär 2000
SuSE Linux AG - Zuletzt generiert: 04. Apr 2002 von jsmeix (sdb_gen 1.40.0)