zur Startseite

Druckausgabe von https://privat.albicker.org
Iveco Daily 4x4, Hunde und multithematisches Blog - Bernhard Albicker

Firewire-Scanner Nikon Coolscan 4000ED in Linux - hier: Manjaro

veröffentlicht am 20.12.2018 mit 791 Worten - Lesezeit: 4 Minute(n)

Da hab ich also über Jahre meinen schönen Nikon-Filmscanner an meinem Linux-Mint (mithilfe der Software Vuescan) problemlos betrieben, und dann kommt Manjaro und erkennt den Scanner nicht einmal :(

Wie heißt doch gleich der alte Spruch aus der IT-Welt:

Never change a running system.
Never run a changing system.
Change a never running system.

Also - selbst schuld. Aber so einfach wollte ich es mir nicht machen. Und hier ist die Abfolge der Schritte, die zur Lösung des Problems führten:

Fehlersuche und Lösung

Optional: Sicherstellen, daß die Hardware (noch) funktioniert

Dieser Schritt ist nicht unbedingt nötig, in meinem Fall wollte ich das sicherstellen, weil ich das alte vergleichsweise langsame Mainboard durch ein neueres schnelleres und deutlich energiesparsameres Mainboard ersetzt hatte. Dieses neue Mainboard hat auch keinen Onboard-Firewire-Anschluß, sodaß ich eine uralte PCI-Karte wieder ausgegraben und eingebaut habe.
Vorgehen: Je eine Festplatte mit installiertem Windows 7, Linux Mint und Manjaro eingebaut. Auf allen Systemen Vuescan benutzt. Auf Windows 7 und LinuxMint 19 wurde der Scanner erkannt und konnte genutzt werden, auf Manjaro nicht. Ein Hardware-Problem konnte demnach ausgeschlossen werden.

Firewire-Karte erkannt?

Das scheint der Fall zu sein, jedenfalls liefert sie eine korrekte Ausgabe:

$ lspci -vvv
04:00.0 FireWire (IEEE 1394): NEC Corporation uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller (rev 01) (prog-if 10 [OHCI])
	Subsystem: Ratoc System Inc uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 64, Cache Line Size: 32 bytes
	Interrupt: pin A routed to IRQ 19
	Region 0: Memory at f7c00000 (32-bit, non-prefetchable) [sixe=4K]
	Capabilities: <access denied>
	Kernel driver in use: firewire_ohci

Kernel, Treiber, Geräte

Mit dmesg werden Kernelmeldungen (Kernel Ring Buffer, die darin enthaltenen Meldungen werden typischerweise von Gerätetreibern erzeugt) ausgegeben, hier auf die Firewire-spezifischen gefiltert:

$ dmesg | grep -i firewire 
[    0.753055] firewire_ohci 0000:04:00.0: enabling device (0110 -> 0112)
[    0.808404] firewire_ohci 0000:04:00.0: added OHCI v1.0 device as card 0, 4 IR + 4 IT contexts, quirks 0x1
[    1.588694] firewire_core 0000:04:00.0: created device fw0: GUID 00c0d00000f7e983, S400
[    1.588699] firewire_core 0000:04:00.0: phy config: new root=ffc1, gap_count=5
[    6.918068] firewire_core 0000:04:00.0: created device fw1: GUID 0090b54001ffffff, S400
[    7.626546] firewire_sbp2 fw1.0: logged in to LUN 0000 (0 retries)
[  263.775084] firewire_sbp2 fw1.0: released target 4:0:0
[  275.306235] firewire_core 0000:04:00.0: phy config: new root=ffc1, gap_count=5
[  278.144915] firewire_core 0000:04:00.0: phy config: new root=ffc1, gap_count=5
[  281.267119] firewire_core 0000:04:00.0: created device fw1: GUID 0090b54001ffffff, S400
[  281.469915] firewire_sbp2 fw1.0: logged in to LUN 0000 (0 retries)

demnach wurden 2 Geräte erstellt:

$ ls -l /dev/fw*
crw------- 1 root root 242, 0 11. Dez 21:57 /dev/fw0
crw------- 1 root root 242, 1 11. Dez 22:02 /dev/fw1

Firewire-Kernel-Module geladen?

Das scheint der Fall zu sein:

$ lsmod | grep firewire
firewire_sbp2          28672  0
firewire_ohci          45056  0
firewire_core          81920  2 firewire_ohci,firewire_sbp2
crc_itu_t              16384  1 firewire_core
scsi_mod              253952  4 sd_mod,firewire_sbp2,libata,sr_mod

An der Firewire-Schnittstelle scheint es wohl nicht zu liegen, daß Vuescan den Scanner (immer noch) nicht findet.
An dieser Stelle machte sich eine gewissen Ratlosigkeit breit.

Gegentest mit sane - wo ist der Firewire-Scanner?

Um die grundsätzlichen Funktionen eines Scanners wie zum Beispiel Auflösung, Schwarzweiß- / Graustufen- / Farbscans oder Sondertasten verwenden zu können, bedarf es eines Gerätetreibers. Linux verwendet eine eigene offene Schnittstelle für Scanner, welche von den Herstellern unabhängig ist: die SANE Schnittstelle. Dort gibt es das Hilfsprogramm sane-find-scanner. Dieses ließ sich aber nicht starten, sodaß ich erstmal ermitteln mußte, in welchem Paket der Befehl enthalten ist

$ pacman -Fs sane-find-scanner
extra/sane 1.0.27-2
    usr/bin/sane-find-scanner

um dieses dann nachzuinstallieren und mit pkexec sane-find-scanner aufzurufen.

Die interessante Erkenntnis war nun:

In Linuxmint wurde der Scanner als SCSI-Scanner wie folgt angezeigt

found SCSI scanner "Nikon LS-4000 ED 1.05" at /dev/sg2
  # Your SCSI scanner was detected. It may or may not be supported by SANE. Try
  # scanimage -L and read the backend's manpage.

während die Ausgabe in Manjaro diesen Block enthielt:

  # No SCSI scanners found. If you expected something different, make sure that
  # you have loaded a kernel SCSI driver for your SCSI adapter.
  # Also you need support for SCSI Generic (sg) in your operating system.
  # If using Linux, try "modprobe sg"..

Nachdem ich also sudo modprobe sg eingegeben hatte, konnte auch in Manjaro meine Software Vuescan den Scanner finden - und nutzen :) - und die Ausgabe von sane-find-scanner entsprach der, wie ich sie in Linuxmint gesehen hatte.
Um es nochmal klar zu beschreiben: Vuescan bringt eigene Scanner-Treiber mit - ist insoweit also nicht auf Sane oder Treiber des Scannerherstellers angewiesen. Sane bzw. dessen Hilfsprogramm wird hier lediglich zur Fehlereingrenzung/Diagnose genutzt.

Kernelmodul dauerhaft laden

Dazu muß das Kernelmodul sg (generischer SCSI-Treiber) in eine Zeile in die Datei /etc/modules-load.d/modules.conf eingetragen werden.