Tevion CardReader mit RedHat oder Fedora Core Linux
Letzte Änderung: 13.02.2005
Dieses Dokument beschreibt, wie man den Tevion CardReader unter RedHat 9 oder Fedora Core 1, 2 oder 3 benutzen kann, ohne den Kernel neu zu kompilieren.
Alle hier beschriebenen Änderungen und Modifikationen funktionieren bzw. funktionierten bei mir ohne Probleme. Dennoch übernehme ich keine Verantwortung für Modifikationen, die irgendjemand an seinem System aufgrund meiner Ausführungen vornimmt.
Insbesondere übernehme ich keine Verantwortung für das Flashen der Firmware auf dem CardReader. Damit kann man das Gerät komplett unbrauchbar machen!
|
Achtung! Der Tevion Cardreader ist buggy. Es gelang mir nicht mit diesem Gerät eine 256MB SD Karte korrekt zu lesen. Die Dateien werden zwar übertragen, die Dateigröße stimmt auch überein, allerdings steht in der Datei nur noch Zeichensalat. Ich habe es mit zwei verschiedenen Tevion Kartenlesern ausprobiert. www.traveler-service.de hat aber einen Firmware-Update, der unter http://www.traveler-service.de/upload/Firmenware/FIRM_UP.ZIP verfügbar ist. In der Beschreibung steht, dass dieses Update für Modelle aus Oktober 2003 geeignet ist. Nach dem Flashen ändert sich die UID der erkannten Geräte derart, dass die einzelnen Slot sich in ihrer Beschreibung nicht mehr unterscheiden. Damit ist meine "alte" Lösung für Fedora Core 1 hinfällig. |
Das Problem ist, dass der Standardkernel ohne die Option CONFIG_SCSI_MULTI_LUN=y übersetzt wird. Im Konfigurationsmenu heißt die Option Probe all LUNs on each SCSI device. Dadurch werden SCSI-Geräte mit Logic Unit Numbers (LUNs) ≥ 1 nicht gescannt. Man kann sie jedoch nachträglich hinzufügen, indem man direkt in das /proc Dateisystem schreibt. Das erledigt mein cardreader Skript.
Unter der Überschrift Fedora Core 3 findet sich mein aktuelles System wieder.
Unter Fedora Core 2 habe ich beschrieben, wie ich den Cardreader auf meinem alten System betrieben habe. Die Lösung sollte auch unter Fedora Core 1 und RedHat funktionieren, allerdings habe ich sie da nie ausprobiert. Unter Fedora Core 1 findet sich die Beschreibung meines alten Systems wieder. Diese kann mehr oder weniger als "historisch" angesehen werden.
Fedora Core 3
Fedora Core 3 wartete mit zwei neuen Überrachungen auf: udev und hal. Das udev-System dient (grob gesagt) dazu, zur Laufzeit Systemdevices unter /dev zu erzeugen und eventuell auch Symlinks. hal verwaltet eine Datenbank, in der die Systemhardware aufgeführt ist, zusammen mit ihren Fähigkeiten und Zusatzinformationen. Die beiden Systeme muss man jetzt überreden mit dem Cardreader zusammenzuarbeiten.
UDEV
udev ist sehr einfach zu Mitarbeit zu überzeugen. Dazu muss man unter /etc/udev/rules.d eine Regel hinzufügen. Denkbar schlecht ist es z.B. die Datei 50-udev.rules zu modifizieren, denn die Änderungen gehen bei einem Update wahrscheinlich verloren. Also erstellt man am besten eigene Datei, z.B. 00-tevion.rules in der folgende Zeile steht:
BUS="usb", SYSFS{idVendor}="3538", SYSFS{idProduct}="0015", NAME{all_partitions}="%k"
Damit werden die passenden Devices unter /dev beim Einstecken erzeugt.
HAL
HAL steht für Hardware Abstraction Layer (Hardwareabstraktionsebene) und ist - meiner Meinung nach - hier unpassend gewählt. HAL ist ein Begriff, der bereits im Kernel verwendet wird und an dieser Stelle nur verwirrt.
HAL braucht eine XML-Datei, die die Fähigkeiten der Hardware beschreibt. Ich habe zwei Dateien vorbereitet, wobei ich mich an der bereits vorhandenen Datei 6in1-card-reader.fdi orientiert habe. Der richtige Ort für diese Dateien ist /usr/share/hal/fdi/95userpolicy. Man braucht nur eine dieser Dateien!
- 00-tevion-cardreader-1_lun.fdi
Das ist die richtige Datei für Kernel, die nicht alle LUNs scannen, also auch den Originalkernel. - 00-tevion-cardreader-multilun.fdi
Das ist die richtige Datei für Kernel, die alle LUNs scannen.
SCSI Geräte im /proc-Dateisystem (nur für nicht multi-LUN Kernel!)
Für Fedora Core 3 und andere Distributionen, die nicht alle LUNs der SCSI-Geräte scannen, braucht man noch ein Skript, dass die verbleibenden 3 Geräte hinzufügt.
Hierfür reicht eine minimalistische Variante des cardreader-Skriptes von der Fedora Core 2 Lösung. Ich habe es tevion genannt. Das Skript muss nach /etc/hotplug/usb kopiert werden. Anschließend muss man noch folgende Zeile in der Datei /etc/hotplug/usb.usermap hinzufügen.
tevion 0x0003 0x3538 0x0015 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
Hier die Zeile auch zum herunterladen.
Fedora Core 2
Nach dem Flashen des Gerätes mußte ich feststellen, dass die UIDs der 4 Kartenleser identisch sind. Damit sind sie für das devlabel-Skript nicht mehr unterscheidbar. Alle Ansätze das Problem auf die alte Art und Weise zu lösen waren frustrierend und scheiterten.
Also habe ich mein cardreader-Skript überarbeitet. Es dient jetzt nicht nur dazu die Einträge im /proc-Dateisystem vorzunehmen, sondern legt auch die Links auf die SCSI-Geräte an. Die Namen der Links kann man im Skript konfigurieren. Es erzeugt auch unter /var/run ein Skript, dass vom hotplug-System beim Entfernen des CardReaders aufgerufen wird und die Links wieder entfernt.
Zunächst muss man hotplug sagen, bei welchem Gerät er das Skript aufrufen soll. Dazu fügt man die folgende Zeile in /etc/hotplug/usb.usermap ein:
cardreader 0x0003 0x3538 0x0015 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
Hier die Zeile auch zum herunterladen.
Anschließend muß man das cardreader-Skript nach /etc/hotplug/usb kopieren und mit dem Befehl
chmod 755 /etc/hotplug/usb/cardreader
ausführbar machen. Wer möchten, der kann noch die Namen der Links im Skript anpassen. Standard ist /dev/cardreader{cf,sd,sm,ms}. Et voilà, c'est ça.
Fedora Core 1, RedHat 9
Ihr braucht das hotplug Paket. Sehr nützlich ist ebenfalls das devlabel Paket, das von hotplug benutzt wird. Es erstellt in /dev Links auf zuvor konfigurierte Geräte. Da USB Geräte meist in beliebiger Reihenfolge hinzugefügt werden, erhält ein Gerät nicht immer die gleiche SCSI Gerätedatei als Bezeichnung. devlabel erkennt die Geräte anhand ihrer Beschreibung im Unique Identifier (UID) und legt für jedes konfigurierte und erkannte Geräte einen Link an.
Zunächst müßt ihr sicherstellen, dass beim Einstöpseln des Readers die SCSI Geräte1 mit LUNs 0-3 gescannt werden. Das erledigt das Skript cardreader. Das hotplug Subsystem kann User-Skripte aufrufen, falls es das Gerät erkennt, das hinzugefügt wurde. Man kopiert das Skript cardreader nach /etc/hotplug/usb/cardreader und fügt in /etc/hotplug/usb.usermap folgende Zeile hinzu:
cardreader 0x0003 0x3538 0x0015 0x0000 0x0000 0x00 0x00 0x00 0x00 0x00 0x00 0x00000000
Hier die Zeile auch zum herunterladen.
Prüft bitte mit usbview oder lsusb nach, ob die VendorID und DeviceID vom eurem Reader übereinstimmen.
Das /sbin/devlabel Skript ist leider bißchen zu penibel und fügt keine Geräte hinzu, die keine Daten enthalten. D.h. es fügt keine Geräte hinzu, in den gerade keine Karte steckt. Das ist bei dem CardReader nicht umbedingt erwünscht, deswegen habe ich das Skript devlabel ein wenig modifiziert. Die Änderungen sind nicht sehr groß und in devlabel.diff festgehalten.
Wenn ihr jetzt den CardReader einsteckt, sucht hotplug die VendorID und die DeviceID in der Datei usb.usermap. Findet es die Einträge, ruft es das gegebene Skript cardreader auf. Das fügt die fehlenden SCSI Geräte mit LUNs 1-3 hinzu. Anschließend ruft hotplug das (modifizierte) devlabel Skript auf und erstellt Links auf die konfigurierten SCSI Geräte.
Ach ja, ihr müßt natürlich nach dem ersten Einstecken zunächst devlabel einrichten... Aber dazu lest ihr am besten die man-Pages von devlabel. Die SCSI-Devices werden sich wahrscheinlich irgendwo unter /dev/sda1, /dev/sdb1, usw. wiederfinden.
| Datei | MD5-Checksumme |
|---|---|
| redhat9.zip (7.903 B) | e9ac2fc870b7b93ae2e98417b87580fe |
| fedora-core1.zip (10.153 B) | 152da014ef6befa6f5d9d427ce600f18 |
1: Unter Linux werden USB-Speichermedien in der Regel über eine Emulationsschicht als SCSI Geräte angesprochen.(zurück)
Letzte Änderungen am: Sonntag, 5. Oktober 2008, 22:48:47


