CUPS – Scanprobleme beheben

Brandon Nielsen, Zdenek Dohnal Version unspecified Last review: 2021-06-16

Die SANE-Bibliothek, Kommunikationsbibliotheken und Backends können das Debug-Logging über die Umgebungsvariablen SANE_DEBUG_* aktivieren und deaktivieren.

Die gemeinsamen Umgebungsvariablen:

  • SANE_DEBUG_DLL – aktiviert das Debuggen der SANE-Bibliothek

  • SANE_DEBUG_SANEI_USB – Aktiviert die Debugging-Kommunikationsbibliothek für USB – fügen Sie die Umgebungsvariable hinzu, wenn Ihr Gerät über ein USB-Kabel angeschlossen ist

  • SANE_DEBUG_SANEI_TCP – Aktiviert die Debugging-Kommunikationsbibliothek für drahtlose/Ethernet-Verbindungen – fügen Sie die Umgebungsvariable hinzu, wenn Ihr Gerät per WLAN oder Ethernet verbunden ist

Umgebungsvariablen zum Aktivieren des Debuggens bestimmter Backends haben die Struktur SANE_DEBUG_<Backendname>, so heißt die Umgebungsvariable für z.B. das HPAIO-Backend SANE_DEBUG_HPAIO*.

Welches SANE-Backend Ihr Gerät unterstützt, erfahren Sie hier. Falls Ihr Gerät von HP ist und weder vom airscan-Backend noch von einem anderen SANE-Backend unterstützt wird, kann es möglicherweise vom hpaio-Backend des hplip-Pakets unterstützt werden. Eine Liste der unterstützten Geräte finden Sie hier.

Debuggen der Scannererkennung

Wird Ihr Scanner in der Scan-Anwendung nicht angezeigt, sollten Sie den Erkennungsprozess debuggen. In den Beispielen verwende ich den Befehl scanimage, die Schritte lassen sich aber auf alle Scan-Anwendungen wie xsane, scanadf, simple-scan usw. anwenden.

Sie müssen Umgebungsvariablen verwenden, wenn Sie eine Scan-Anwendung starten (in diesem Fall scanimage). Die mit dem Befehl scanimage verwendeten Umgebungsvariablen hängen davon ab, wie Ihr Scanner angeschlossen ist und welches Backend ihn unterstützt. Um Debug-Protokolle für ein HP LaserJet-Gerät zu erhalten, das über Ethernet/WLAN verbunden ist und vom HPAIO-Backend unterstützt wird, verwenden Sie folgenden Befehl:

$ SANE_DEBUG_DLL=255 SANE_DEBUG_HPAIO=255 SANE_DEBUG_SANEI_TCP=255 scanimage -L &> discovery_output

Oder, z.B. wenn Sie einen CanoScan 8600F besitzen, der über USB angeschlossen und vom Genesys-Backend unterstützt wird, verwenden Sie folgenden Befehl:

$ SANE_DEBUG_DLL=255 SANE_DEBUG_GENESYS=255 SANE_DEBUG_SANEI_USB=255 scanimage -L &> discovery_output

Bitte fügen Sie die erstellte Datei discovery_output als Anhang zum Bugzilla-Ticket hinzu.

Debugging des Scanvorgangs

Wenn der Scanner gefunden wird, aber während des Scanvorgangs selbst ein Problem auftritt, müssen wir den Scanvorgang selbst debuggen - das bedeutet, die Kommunikation zwischen Backend und Scanner zu debuggen, wenn Sie mit dem Scannen eines Dokuments beginnen.

Der Debugging-Scan ähnelt dem Erkennungs-Scan: Die Umgebungsvariablen werden vor dem Ausführen des Befehls/der Scan-Anwendung eingerichtet und die Protokolle in eine Datei geschrieben. Ein möglicher Befehl lautet beispielsweise (wenn Sie einen Netzwerkscanner mit HPAIO-Backend-Unterstützung verwenden):

$ SANE_DEBUG_DLL=255 SANE_DEBUG_HPAIO=255 SANE_DEBUG_SANEI_TCP=255 xsane &> debug_log

oder (sobald Sie die Geräte-URI mit dem Befehl scanimage -L ermittelt haben – siehe nächster Abschnitt):

$ SANE_DEBUG_DLL=255 SANE_DEBUG_HPAIO=255 SANE_DEBUG_SANEI_TCP=255 scanimage -d <Geräte_URI> > out.pnm 2> debug_log

, wobei Sie <Geräte_URI> durch die tatsächliche Geräte-URI ersetzen, z.B. 'hpaio:/net/laserjet_m1536dnf_mfp?ip=192.168.1.112'.

Bitte fügen Sie die erstellte Datei – debug_log – als Anhang zum Bugzilla-Ticket hinzu.

Abrufen einer Scannergeräte-URI

Dieser Abschnitt beschreibt im Wesentlichen, wie man über den Befehl scanimage eine Scanner-URI für das Debuggen des Scanvorgangs erhält. In GUI-Anwendungen wie xsane oder simple-scan ist die Angabe einer Scanner-URI nicht erforderlich, da die Anwendung dies automatisch erledigt oder Sie den Scanner per Mausklick auswählen können.

Der Befehl scanimage -L liefert eine Ausgabe zurück, in der die Geräte-URI des Geräts angezeigt wird, z.B.:

$ scanimage -L
device `v4l:/dev/video0' is a Noname Integrated Camera: Integrated C virtual device
device `hpaio:/net/laserjet_m1536dnf_mfp?ip=192.168.1.112&queue=false' is a Hewlett-Packard laserjet_m1536dnf_mfp all-in-one

Beispielsweise ist die Zeichenkette „hpaio:/net/laserjet_m1536dnf_mfp?ip=192.168.1.112&queue=false“ ein Geräte-URI für den All-in-One-Scanner Hewlett-Packard laserjet_m1536dnf_mfp.

Debugging des HP-Scanners, wenn dieser von HPLIP unterstützt wird

Das hplip-Paket verfügt nicht über eine einheitliche Protokollierung. Daher werden einige Protokolle des HPAIO-Backends in die Standardausgabe geschrieben, während die Protokolle interner HP-Dienstprogramme im Journal gespeichert werden. Um die Situation zu verstehen, müssen wir daher beide Protokolle erfassen.

Das kann man folgendermaßen machen:

  • Journalprotokolle im Hintergrund erfassen:

$ journalctl -f > journal_logs &
  • Lösen Sie eine Aktion aus (Erkennung oder Scannen)

  • Beenden Sie den journalctl-Prozess, z. B. auf diese Weise (falls es nur einen journalctl-Prozess gibt)

$ kill `pidof journalctl`

Fügen Sie anschließend die erstellte Datei – journal_logs – als Anhang zum Bugzilla-Ticket hinzu. Bitte führen Sie pro Erfassung nur eine Aktion durch. Wenn Sie beispielsweise aufgefordert werden, Protokolldateien für die HP-Scannererkennung und das von hplip unterstützte Scannen anzuhängen, fügen Sie bitte vier Dateien als Anhang hinzu: discovery_output, journal_logs für die Erkennungsausgabe, debug_logs und journal_logs für die Debug-Protokolle.

Debuggen von sane-airscan

Wenn Ihr Gerät eSCL oder WSD unterstützt (dies können Sie in den Gerätespezifikationen nachlesen – suchen Sie nach den genannten Protokollen oder AirScan), wird dessen Scanfunktion von sane-airscan unterstützt. Zur Fehlersuche erstellt sane-airscan zusätzlich zu den üblichen Protokollen einen Kommunikationsdump und ein Ausgabebild, was bei der Untersuchung hilfreich ist.

Das Debugging von sane-airscan kann in /etc/sane.d/airscan.conf durch folgende Einstellung aktiviert werden:

[debug]
trace = /path/to/dir/where/debugfiles/will/be/saved
enable = true

Dann reproduzieren Sie Ihr Problem (Erkennung oder Scannen), gehen Sie zu dem Verzeichnis, das Sie in /etc/sane.d/airscan.conf definiert haben, nehmen Sie alle Dateien von dort und hängen Sie sie an das Bugzilla-Ticket an.

Aufteilen der Protokolldateien

Falls Ihre Debug-Protokolldatei zu groß für Bugzilla ist (weil Ihr Problem bei den niedrigsten Einstellungen nicht auftritt oder die Protokolldateien selbst bei den niedrigsten Einstellungen zu groß sind), teilen Sie die Protokolldateien bitte wie folgt in drei Dateien auf:

$ grep dll debug_log > debug_log_dll
$ grep <connection> debug_log > debug_log_connection
$ grep <backend> debug_log > debug_log_backend

<backend> ist der Name des Backends, das Ihren Scanner unterstützt (pixma, genesys, plustek, hpaio, airscan usw.), <connection> ist die Art der Verbindung, die Sie für das Gerät verwenden (tcp, usb).

Die Aufteilung erschwert die Untersuchung (die Person muss drei Dateien gleichzeitig geöffnet haben), teilen Sie die Protokolle also nur auf, wenn die Protokolldatei zu groß ist.