USB CardReader unter Linux

Version     1.3.0, 03.12.2002

  1. Kernel kompilieren
  2. Kernel-Optionen
  3. Benötigte Kernel-Module
  4. Laden der Kernel-Module
  5. MBO 6-in-1 CardReader
  6. Transcend 2-in-1 CardReader
  7. Verknüpfungen auf dem Desktop
  8. Hinweis
  9. Weitere Informationen
  10. Disclaimer
  11. Copyright


Kernel kompilieren

Der Standard-Kernel der aktuellen SuSE-Distributionen haben bereits "Multiple LUN Support", der benötigt wird um alle Slots des CardReaders anzuzeigen (z.B. SmartMedia = LUN 00, CompactFlash = LUN 01 usw.).   Bei Red Hat z.B. muß man diese Option noch aktivieren und einen neuen Kernel kompilieren (andere Distributionen werden noch getestet).

Kernel kompilieren ML-Support

Kernel-Optionen

Die Standard-Kernel der aktuellen Distributionen, z.B. SuSE 7.3 haben schon USB-Support.   Falls man einen älteren Kernel oder einen selbst kompilierten Kernel hat, so muss dieser mit USB-Support kompiliert werden.

Benötigte Kernel-Module

Es ist sinnvoll die benötigten Kernel-Module nicht fest in den Kernel zu kompilieren, sondern diese dynamisch nachzuladen.  

Modulname Verwendung/Bezeichnung
uhci.o Universal Host Controller Interface
usb-storage.o USB Mass Storage
sg.o Generic SCSI (wird bei SCSI-Systemen nicht benötigt)

Laden der Kernel-Module

Die Kernel-Module können an der Eingabeaufforderung manuell eingebunden werden, hierzu sind Root-Rechte erforderlich.  Wie oben schon erwähnt, bei aktuellen Distributionen ist der USB-Support schon im Kernel.  Desweiteren werden in den meisten Fällen bei solchen Systemen die Module automatisch geladen.  Um zu sehen ob die Module automatisch geladen werden kann man ein Terminal öffnen und dort mit tail -f /var/log/messages die Systemmeldungen beobachten während man den CardReader an den USB-Bus anschliesst.  Sieht man dort keine Meldungen über die USB-Module so muss man diese manuell einbinden, das geschieht mit dem Kommando modprobe oder insmod.

/sbin/modprobe -v uhci
/sbin/modprobe -v usb-storage
/sbin/modprobe -v sg
       (Nur bei Nicht-SCSI-Systemen)

MBO 6-in-1 Cardreader

Dieses Gerät wurde beim Discounter "plus" für 33,33 EUR verkauft.   Der CardReader verfügt über 4 Einschübe in denen folgende Speichermedien verwendet werden können: SmartMedia, CompactFlash, IBM Mircodrive, Sony Memory-Stick, MultiMediaCard und SecureDigital-Card.   Das Gerät wird über ein mitgeliefertes USB-Kabel (leider etwas zu kurz) angeschlossen.   Zum Lieferumfang gehört noch eine Mini-CD mit Windows-Treibern und einem kurzen README für Linux, eine Bedienungsanleitung findet man nicht.
Nach dem Anschluss kann man mittels cat /proc/scsi/scsi überprüfen ob das Gerät erkannt wird.  Das Gerät meldet sich mit der Vendor-ID "ICSI", Modell "IC1100" und der Revision "2.5B".  Hier wird auch gleichzeitig angezeigt welche LUN für welchen Slot zuständig ist, dadurch ist es später einfacher den CardReader in das Dateisystem einzubinden.  

cat /proc/scsi/scsi

Hier kann man sehen das zusätzlich zum vorhandenen SCSI-Controller scsi 0, noch ein weiterer Controller scsi 1 geladen ist.  Unter diesem Controller sind die vier Slots für CompactFlash/IBM MicroDrive (Lun: 00), Sony Memory-Sitck (Lun: 01), MultiMediaCard/SD-Card (Lun: 02) und SmartMedia (Lun: 03) aufgelistet.

Einbinden des Cardreader in das Dateisystem (mounten)

Mit den vier Zeilen
/dev/sdc1    /mnt/card_cf     auto    noauto,user   0  2
/dev/sdd1    /mnt/card_ms     auto    noauto,user   0  2
/dev/sde1    /mnt/card_sd     auto    noauto,user   0  2
/dev/sdf1    /mnt/card_sm     auto    noauto,user   0  2
erweitern wir die Datei /etc/fstab.

Falls nicht vorhanden sollte noch folgende Zeile ergänzt werden
usbdevfs    /proc/bus/usb     usbdevs    noauto   0  0

In unserem Beispiel sind schon 2 SCSI-Festplatten im System vorhanden, also beginnt die Auflistung bei /dev/sdc1.  Bei reinen IDE-Systemen sieht die Sache etwas anders aus, da wir keinen normalen SCSI-Controller haben werden die Devices vom System anders bezeichnet.  Bei einem solchen System sehen die Zeilen für die Datei /etc/fstab wie folgt aus.
/dev/sda1    /mnt/card_cf     auto    noauto,user   0  2
/dev/sdb1    /mnt/card_ms     auto    noauto,user   0  2
/dev/sdc1    /mnt/card_sd     auto    noauto,user   0  2
/dev/sdd1    /mnt/card_sm     auto    noauto,user   0  2

Danach werden noch die Mountpoints mit dem Befehl
mkdir /mnt/card_cf
mkdir /mnt/card_ms
mkdir /mnt/card_sd
mkdir /mnt/card_sm
angelegt.
Nachdem nun eine SmartMedia-Karte in den CardReader gesteckt wurde kann man mit dem Befehl mount /mnt/card_sm die Speicherkarte mounten, und die Bilder/Daten auslesen.  Zum mounten einer CF-Karte oder IBM MicroDrive verwendet man den Befehl mount /mnt/card_cf.

Transcend 2-in-1 Cardreader

Wie auch beim MBO CardReader kann man mittels cat /proc/scsi/scsi überprüfen ob das Gerät richtig erkannt wurde, der cardReader meldet sich mit der Vendor-ID "ScanLogi", Modell "c SSFDC-CF 0.74".  Hier wird leider nicht angezeigt welche LUN für welchen Slot zuständig ist

cat /proc/scsi/scsi

Hier sieht man wieder das zusätzlich zum vorhandenen SCSI-Controller scsi 0, noch ein weiterer Controller scsi 1 geladen ist.  Unter diesem Controller sind die beiden Slots für SmartMedia (Lun: 00) und CompactFlash (Lun: 01) aufgelistet.

Einbinden des Cardreader in das Dateisystem (mounten)

Mit den beiden Zeilen
/dev/sdc1    /mnt/card_sm     auto    noauto,user   0  2
/dev/sdd1    /mnt/card_cf     auto    noauto,user   0  2
erweitern wir die Datei /etc/fstab.

Falls nicht vorhanden sollte noch folgende Zeile ergänzt werden
usbdevfs    /proc/bus/usb     usbdevs    noauto   0  0

Auch hier wieder der Hinweis das bei reinen IDE-Systemen die Sache etwas anders aussieht, da wir keinen normalen SCSI-Controller haben werden die Devices vom System anders bezeichnet. Bei einem solchen System sehen die Zeilen für die Datei /etc/fstab wie folgt aus.
/dev/sda1    /mnt/card_sm     auto    noauto,user   0  2
/dev/sdb1    /mnt/card_cf     auto    noauto,user   0  2

Danach werden noch die Mountpoints mit dem Befehl
mkdir /mnt/card_sm
mkdir /mnt/card_cf
angelegt.
Nachdem nun eine SmartMedia-Karte in den CardReader gesteckt wurde kann man mit dem Befehl mount /mnt/card_sm die Speicherkarte mounten, und die Bilder/Daten auslesen.  Zum mounten einer CF-Karte verwendet man den Befehl mount /mnt/card_cf.

Verknüpfungen auf dem Desktop

Unter KDE 3.0 ist es ganz einfach für die einzelnen Slot ein Icon anzulegen.   Rechte Maustaste auf dem Desktop - Neu erstellen - Festplatte - Namen eingeben, z.B. SmartMedia - Gerät auswählen, z.B. /dev/sdc1 (/mnt/card_cf) - Schönes Icon auswählen - Fertig.

Desktop

Anmerkung zu SuSE 8.0

Folgender Link kann unter SuSE 8.0 weiterhelfen
Probleme mit USB in SuSE Linux 8.0

Hinweis

Achtung, wenn der CardReader vom USB-Kabel getrennt wird bleibt der erste Eintrag in /proc/scsi/scsi bestehen.  Beim erneuten Anschliessen des CardReader ohne Reboot, entsteht ein neuer Eintrag.  Unser Device wäre dann nicht mehr /dev/sdc1 sondern /dev/sde1 und der Eintrag in /etc/fstab wäre nicht mehr gültig.  Ich versuche dafür eine Lösung zu finden (evtl. über ein Script welches das Device ausliest und dann mountet) und werde sie dann in dieses Dokument einbinden.

Informationen

Informationen zu SuSE  http://www.suse.de
Informationen zu Red Hat  http://www.red-hat.de
Informationen zu USB unter Linux  http://www.linux-usb.org

Copyright

Copyright 2002, Andreas Dahl

Für den Inhalt dieses Domuments wird keine Haftung übernommen.   Alle Befehle und Änderungen an Konfigurationsdateien werden auf eigene Gefahr durchgeführt.   Anregungen, Fragen und Kritik (auch konstruktive) bitte per Mail an mich.  Kurze Mails mit Hinweisen über das verwendete Linux und welches Gerät verwendet wird, sind ebenfalls sehr willkommen.

Stand: 03.12.2002



03.12.2002  Version 1.3.0 - MBO 6-in-1 CardReader funktioniert
27.09.2002  Version 1.2.2 - Preis-Update, Link zur Firmware aktualisiert, Multiple LUN Support
28.05.2002  Version 1.2.1 - Hinweis auf SuSE 8.0 Problem
14.02.2002  Version 1.2.0 - Hinweis auf Firmware-Upgrade
16.01.2002  Version 1.1.0 - Tippfehler verbessert
29.12.2001  Version 1.0.0