11.7. Fehlerbehebung

In den folgenden Abschnitten werden einige der am häufigsten auftretenden Probleme mit der Druckerhardware und -software sowie deren Lösungen oder Umgehung beschrieben.

11.7.1. Drucker ohne Unterstützung für eine Standard-Druckersprache

Drucker, die keine der geläufigen Druckersprachen unterstützen und nur mit speziellen Steuersequenzen adressiert werden können, werden als GDI-Drucker bezeichnet. Diese Drucker funktionieren nur mit den Betriebssystemversionen, für die der Hersteller einen Treiber zur Verfügung stellt. GDI ist eine von Microsoft für Grafikgeräte entwickelte Programmierschnittstelle. Das eigentliche Problem ist nicht die Programmierschnittstelle, sondern die Tatsache, dass GDI-Drucker nur mit der proprietären Druckersprache des jeweiligen Druckermodells adressiert werden können.

Der Betrieb einiger Drucker kann sowohl im GDI-Modus als auch in einer der Standard-Druckersprachen ausgeführt werden. Einige Hersteller stellen für ihre GDI-Drucker proprietäre Treiber zur Verfügung. Der Nachteil proprietärer Druckertreiber ist, dass es keine Garantie gibt, dass diese mit dem installierten Drucksystem funktionieren und für die unterschiedlichen Hardwareplattformen geeignet sind. Im Gegensatz dazu sind Drucker, die eine Standard-Druckersprache unterstützen, nicht abhängig von einer speziellen Drucksystemversion oder einer bestimmten Hardwareplattform.

Anstatt Zeit darauf zu verwenden, einen proprietären Linux-Treiber zum Funktionieren zu bringen, ist es möglicherweise kosteneffektiver, einen unterstützten Drucker zu kaufen. Dadurch wäre das Treiberproblem ein für alle Mal aus der Welt geschafft und es wäre nicht mehr erforderlich, spezielle Treibersoftware zu installieren und zu konfigurieren oder Treiber-Updates zu beschaffen, die aufgrund neuer Entwicklungen im Drucksystem benötigt würden.

11.7.2. Für einen PostScript-Drucker ist keine geeignete PPD-Datei verfügbar

Wenn das Paket manufacturer-PPDs für einen PostScript-Drucker keine geeignete PPD-Datei enthält, sollte es möglich sein, die PPD-Datei von der Treiber-CD des Druckerherstellers zu verwenden, oder eine geeignete PPD-Datei von der Webseite des Druckerherstellers herunterzuladen.

Wenn die PPD-Datei als Zip-Archiv (.zip) oder als selbstextrahierendes Zip-Archiv      (.exe) zur Verfügung gestellt wird, entpacken Sie sie mit unzip. Lesen Sie zunächst die Lizenzvereinbarung für die PPD-Datei. Prüfen Sie anschließend mit dem Dienstprogramm cupstestppd, ob die PPD-Datei der „Adobe PostScript-PDF-Format-Spezifikation, Version 4.3, “ entspricht. Wenn das Dienstprogramm „FAIL“ zurückgibt, sind die Fehler in den PPD-Dateien schwerwiegend und verursachen wahrscheinlich größere Probleme. Die von cupstestppd protokollierten Problempunkte müssen behoben werden. Fordern Sie beim Druckerhersteller ggf. eine geeignete PPD-Datei an.

11.7.3. Parallelanschlüsse

Die sicherste Methode ist, den Drucker direkt an den ersten Parallelanschluss anzuschließen und im BIOS die folgenden Einstellungen für Parallelanschlüsse auszuwählen:

  • I/O address: 378 (hexadezimal)

  • Interrupt: irrelevant

  • Mode: Normal, SPP oder Output Only

  • DMA: deaktiviert

Wenn der Drucker trotz dieser Einstellungen über den Parallelanschluss nicht angesprochen werden kann, geben Sie die E/A-Adresse explizit in Übereinstimmung mit der Einstellung im BIOS in Form von 0x378 in /etc/modprobe.conf ein. Wenn zwei Parallelanschlüsse vorhanden sind, die auf die E/A-Adressen 378 und 278 (hexadezimal) gesetzt sind, geben Sie diese in Form von 0x378,0x278 ein.

Wenn Interrupt 7 frei ist, kann er mit dem in Beispiel 11.1, „/etc/modprobe.conf: Interrupt-Modus für den ersten Parallelanschluss“ dargestellten Eintrag aktiviert werden. Prüfen Sie vor dem Aktivieren des Interrupt-Modus die Datei /proc/interrupts, um zu sehen, welche Interrupts bereits verwendet werden. Es werden nur die aktuell verwendeten Interrupts angezeigt. Dies kann sich je nachdem, welche Hardwarekomponenten aktiv sind, ändern. Der Interrupt für den Parallelanschluss darf von keinem anderen Gerät verwendet werden. Wenn Sie sich diesbezüglich nicht sicher sind, verwenden Sie den Polling-Modus mit irq=none.

Beispiel 11.1. /etc/modprobe.conf: Interrupt-Modus für den ersten Parallelanschluss

alias parport_lowlevel parport_pc
options parport_pc io=0x378 irq=7

11.7.4. Netzwerkdrucker-Verbindungen

Netzwerkprobleme identifizieren

Schließen Sie den Drucker direkt an den Computer an. Konfigurieren Sie den Drucker zu Testzwecken als lokalen Drucker. Wenn dies funktioniert, werden die Probleme netzwerkseitig verursacht.

TCP/IP-Netzwerk prüfen

Das TCP/IP-Netzwerk und die Namensauflösung müssen funktionieren.

Entfernten lpd prüfen

Geben Sie den folgenden Befehl ein, um zu testen, ob zu lpd (Port 515) auf host eine TCP-Verbindung hergestellt werden kann:

netcat -z host 515 && echo ok || echo failed

Wenn die Verbindung zu lpd nicht hergestellt werden kann, ist lpd entweder nicht aktiv oder es liegen grundlegende Netzwerkprobleme vor.

Geben Sie als root den folgenden Befehl ein, um einen (möglicherweise sehr langen) Statusbericht für queue auf dem entfernten host abzufragen, vorausgesetzt, der entsprechende lpd ist aktiv und der Host akzeptiert Abfragen:

echo -e "\004queue" \
  | netcat -w 2 -p 722 host 515

Wenn lpd nicht antwortet, ist er entweder nicht aktiv oder es liegen grundlegende Netzwerkprobleme vor. Wenn lpd reagiert, sollte die Antwort zeigen, warum das Drucken in der queue auf host nicht möglich ist. Wenn Sie eine Antwort wie die in Beispiel 11.2, „Fehlermeldung vom lpd erhalten, wird das Problem durch den entfernten lpd verursacht.

Beispiel 11.2. Fehlermeldung vom lpd

lpd: your host does not have line printer access
lpd: queue does not exist
printer: spooling disabled
printer: printing disabled
Entfernten cupsd prüfen

Der CUPS-Netzwerkserver sollte Informationen über seine Warteschlangen standardmäßig alle 30 Sekunden an UDP-Port 631 via Broadcast senden. Demzufolge kann mit dem folgenden Befehl getestet werden, ob im Netzwerk ein CUPS-Netzwerkserver vorhanden ist.

netcat -u -l -p 631 & PID=$! ; sleep 40 ; kill $PID

Wenn ein CUPS-Netzwerkserver vorhanden ist, der Informationen über Broadcasting sendet, erscheint die Ausgabe wie in Beispiel 11.3, „Broadcast vom CUPS-Netzwerkserver“ dargestellt.

Beispiel 11.3. Broadcast vom CUPS-Netzwerkserver

ipp://host.domain:631/printers/queue

Mit dem folgenden Befehl können Sie testen, ob mit cupsd (Port 631) auf host eine TCP-Verbindung hergestellt werden kann:

netcat -z host 631 && echo ok || echo failed

Wenn die Verbindung zu cupsd nicht hergestellt werden kann, ist cupsd entweder nicht aktiv oder es liegen grundlegende Netzwerkprobleme vor. lpstat -h host -l -t gibt einen (möglicherweise sehr langen) Statusbericht für alle Warteschlangen auf host zurück, vorausgesetzt, dass der entsprechende cupsd aktiv ist und der Host Abfragen akzeptiert.

Mit dem nächsten Befehl können Sie testen, ob die Warteschlange auf Host einen Druckauftrag akzeptiert, der aus einem einzigen CR-Zeichen (Carriage-Return) besteht. In diesem Fall sollte nichts gedruckt werden. Möglicherweise wird eine leere Seite ausgegeben.

echo -en "\r" \
  | lp -d queue -h host
Fehlerbehebung für einen Netzwerkdrucker oder eine Print Server Box

Spooler, die in einer Print Server Box ausgeführt werden, verursachen gelegentlich Probleme, wenn sie viele Druckaufträge bearbeiten müssen. Da dies durch den Spooler in der Print Server Box verursacht wird, können Sie nichts dagegen tun. Sie haben aber die Möglichkeit, den Spooler in der Print Server Box zu umgehen, indem Sie den an die Print Server Box angeschlossenen Drucker über TCP-Socket direkt ansprechen. Siehe Abschnitt 11.4.2, „Netzwerkdrucker“.

Auf diese Weise wird die Print Server Box auf einen Konvertierer zwischen den unterschiedlichen Formen der Datenübertragung (TCP/IP-Netzwerk und lokale Druckerverbindung) reduziert. Um diese Methode verwenden zu können, müssen Sie den TCP-Port der Print Server Box kennen. Wenn der Drucker eingeschaltet und an die Print Server Box angeschlossen ist, kann dieser TCP-Port in der Regel mit dem Dienstprogramm nmap aus dem Paket nmap ermittelt werden, wenn die Print Server Box einige Zeit eingeschaltet ist. Beispiel: nmap IP-Adresse gibt die folgende Ausgabe für eine Print Server Box zurück:

Port       State       Service
23/tcp     open        telnet
80/tcp     open        http
515/tcp    open        printer
631/tcp    open        cups
9100/tcp   open        jetdirect

Diese Ausgabe gibt an, dass der an die Print Server Box angeschlossenen Drucker über TCP-Socket an Port 9100 angesprochen werden kann. nmap prüft standardmäßig nur eine bestimmte Anzahl der allgemein bekannten Ports, die in /usr/share/nmap/nmap-services aufgeführt sind. Um alle möglichen Ports zu überprüfen, verwenden Sie den Befehl nmap -p Ausgangs-Port-Ziel-Port IP-Adresse. Dies kann einige Zeit dauern. Weitere Informationen hierzu finden Sie auf der Manualpage für den Befehl nmap.

Geben Sie einen Befehl ein wie

echo -en "\rHello\r\f" | netcat -w 1 IP-address port
cat file | netcat -w 1 IP-address port

um Zeichenketten oder Dateien direkt an den entsprechenden Port zu senden, um zu testen, ob der Drucker auf diesem Port angesprochen werden kann.

11.7.5. Fehlerhafte Ausdrucke ohne Fehlermeldung

Für das Drucksystem ist der Druckauftrag abgeschlossen, wenn das CUPS-Backend die Datenübertragung an den Empfänger (Drucker) abgeschlossen hat. Wenn die weitere Verarbeitung auf dem Empfänger nicht erfolgt, z. B. wenn der Drucker die druckerspezifischen Daten nicht drucken kann, wird dies vom Drucksystem nicht erkannt. Wenn der Drucker die druckerspezifischen Daten nicht drucken kann, wählen Sie eine andere PPD-Datei, die für den Drucker besser geeignet ist.

11.7.6. Deaktivierte Warteschlangen

Wenn die Datenübertragung zum Empfänger auch nach mehreren Versuchen nicht erfolgt, meldet das CUPS-Backend, z. B. usb oder socket, dem Drucksystem (an cupsd) einen Fehler. Das Backend entscheidet, ob und wie viele Versuche sinnvoll sind, bis die Datenübertragung als nicht möglich abgebrochen wird. Da weitere Versuche vergeblich wären, deaktiviert cupsd das Drucken für die entsprechende Warteschlange. Nachdem der Systemadministrator das Problem behoben hat, muss er das Drucken mit dem Befehl /usr/bin/enable wieder aktivieren.

11.7.7. Durchsuchen von CUPS: Löschen von Druckaufträgen

Wenn ein CUPS-Netzwerkserver seine Warteschlangen den Client-Hosts via Brwosing bekannt macht und auf den Host-Clients ein geeigneter lokaler cupsd aktiv ist, akzeptiert der Client-cupsd Druckaufträge von Anwendungen und leitet sie an den cupsd auf dem Server weiter. Wenn cupsd einen Druckauftrag akzeptiert, wird diesem eine neue Auftragsnummer zugewiesen. Daher unterscheidet sich die Auftragsnummer auf dem Client-Host von der auf dem Server. Da ein Druckauftrag in der Regel sofort weitergeleitet wird, kann er mit der Auftragsnummer auf dem Client-Host nicht gelöscht werden, da der Client- cupsd den Druckauftrag als abgeschlossen betrachtet, sobald dieser an den Server-cupsd weitergeleitet wurde.

Um einen Druckauftrag auf dem Server zu löschen, geben Sie einen Befehl wie lpstat -h Print-Server -o ein, um die Auftragsnummer auf dem Server zu ermitteln, vorausgesetzt, der Server hat den Druckauftrag nicht bereits abgeschlossen (d. h. ihn an den Drucker gesendet). Mithilfe dieser Auftragsnummer kann der Druckauftrag auf dem Server gelöscht werden:

cancel -h print-server queue-jobnnumber

11.7.8. Fehlerhafte Druckaufträge und Fehler bei der Datenübertragung

Druckaufträge verbleiben in den Warteschlangen und das Drucken wird fortgesetzt, wenn Sie den Drucker aus- und wieder einschalten oder den Computer während des Druckvorgangs herunterfahren und neu booten. Fehlerhafte Druckaufträge müssen mit cancel aus der Warteschlange entfernt werden.

Wenn ein Druckauftrag fehlerhaft ist oder während der Kommunikation zwischen dem Host und dem Drucker ein Fehler auftritt, druckt der Drucker mehrere Seiten Papier mit unleserlichen Zeichen, da er die Daten nicht ordnungsgemäß verarbeiten kann. Führen Sie die folgenden Schritte aus, um dies zu beheben:

  1. Um den Druckvorgang zu beenden, entfernen Sie das Papier aus Tintenstrahldruckern oder öffnen Sie die Papierzufuhr bei Laserdruckern. Qualitativ hochwertige Drucker sind mit einer Taste zum Abbrechen des aktuellen Druckauftrags ausgestattet.

  2. Der Druckauftrag befindet sich möglicherweise noch in der Warteschlange, da die Aufträge erst dann entfernt werden, wenn sie vollständig an den Drucker übertragen wurden. Geben Sie lpstat -o oder lpstat -h Print-Server -o ein, um zu prüfen, über welche Warteschlange aktuell gedruckt wird. Löschen Sie den Druckauftrag mit cancel Warteschlange-Auftragsnummer oder mit cancel -h Print-Server Warteschlange-Auftragsnummer.

  3. Auch wenn der Druckauftrag aus der Warteschlange gelöscht wurde, werden einige Daten weiter an den Drucker gesendet. Prüfen Sie, ob ein CUPS-Backend-Prozess für die entsprechende Warteschlange ausgeführt wird und wenn ja, beenden Sie ihn. Für einen an den Parallelanschluss angeschlossenen Drucker geben Sie beispielsweise den Befehl fuser -k /dev/lp0 ein, um alle Prozesse zu beenden, die aktuell noch auf den Drucker zugreifen (präziser: auf den Parallelanschluss).

  4. Setzen Sie den Drucker vollständig zurück, indem Sie ihn für einige Zeit ausschalten. Legen Sie anschließend Papier ein und schalten Sie den Drucker wieder ein.

11.7.9. Fehlerbehebung beim CUPS-Drucksystem

Suchen Sie Probleme im CUPS-Drucksystem mithilfe des folgenden generischen Verfahrens:

  1. Setzen Sie LogLevel debug in /etc/cups/cupsd.conf.

  2. Stoppen Sie cupsd.

  3. Entfernen Sie /var/log/cups/error_log*, um das Durchsuchen sehr großer Protokolldateien zu vermeiden.

  4. Starten Sie cupsd.

  5. Wiederholen Sie die Aktion, die zu dem Problem geführt hat.

  6. Lesen Sie die Meldungen in /var/log/cups/error_log*, um die Ursache des Problems zu identifizieren.

11.7.10. Weitere Informationen

Lösungen zu vielen spezifischen Problemen sind in der SUSE-Support-Datenbank (http://portal.suse.com/) enthalten. Die gesuchten Themen finden Sie am schnellsten über Schlüsselwortsuchen.