Zugriff auf einen SanDisk ImageMate unter Debian Linux #
Motivation #
Was ist das? #
Der SanDisk ImageMate ist ein Lese- und Schreibgerät für Compact Flash Cards (CF). Diese Karten werden in sehr vielen Digital-Kameras, aber z.B. auch als Speicher für den SharpZaurus verwendet. Der ImageMate ist sozusagen ein Laufwerk, in das ein solches CF-Medium wie eine Diskette eingelegt wird. Er selber wird am USB-Bus angeschlossen.
Warum gerade ich? #
Ich habe dieses Gerät zusammen mit einer Digitalkamera, die CF-Medien benutzt, von FranzLischka geliehen, um im Urlaub damit zu photographieren. Da mein Laptop im Urlaub nicht fehlen darf, habe ich, statt auf die mitgelieferten Windows-Treiber zurückzugreifen, selbstverständlich so lange herumgebastelt, bis es unter Linux lief. War im Prinzip übrigens gar nicht schwer, also keine Angst!
Grundlegender Ablauf #
- benötigte Kerneltreiber einkompilieren
- USB-Treiber beim einstöpseln automatisch laden
- CF-Medium mounten
- Daten/Bilder kopieren/löschen etc.
- CF-Medium unmounten
Kerneltreiber #
Zuerstmal muss der USB-Support an sich sauber funktionieren. Dies kann man im Zweifelsfall prüfen, indem man den usbmgr installiert und in /var/log/syslog nachschaut, ob sich beim Einstöpseln des Gerätes was tut. Zusätzlich zum "nackten" USB-Treiber benötigen wir noch den Treiber für USB Mass Storage support, mit dem festplattenähnliche Massenspeicher per USB angebunden werden können. Dieser sollte als Modul kompiliert werden. Dabei ist noch die Unterstützung für SanDisk SDDR-09 (and other SmartMedia) support zu aktivieren. Damit diese überhaupt kompiliert werden können, ist im Kernel übrigens die grundlegende Unterstützung für SCSI sowie für SCSI-Disks zu aktivieren.
USB-Treiber automatisch laden #
Um Treiber für USB-Devices automatisch zu laden, wird ein Daemon benutzt, der beim einstöpseln ein neues Gerät erkennt und aus einer Liste den entsprechenden Treiber auswählt. Ich benutze hierzu das Paket usbmgr. Leider ist der ImageMate nicht in der entsprechenden Liste aufgeführt. Deshalb habe ich an die Datei /etc/usbmgr/usbmgr.conf die Zeile
vendor 0x781 product 0x1 module usb-storage
angefügt. Danach muss der Daemon nur mit
/etc/init.d/usbmgr restart
neu gestartet werden, das Gerät am USB-Bus des Rechners eingesteckt werden und der Treiber wird automatisch geladen.
CF-Medium mounten #
Bis jetzt haben wir lediglich ein Laufwerk eingerichtet, aber das Medium noch nicht gemountet. Ich möchte diesen Vorgang gerne auch als normaler User starten, deshalb habe ich folgendes (als root) eingerichtet:
mkdir /mnt/compactflash chmod a+rwx /mnt/compactflash
danach habe ich folgende Zeile in ide /etc/fstab eingefügt:
/dev/sda1 /mnt/compactflash vfat defaults,user,noauto 0 0
Jetzt kann man (als root aber auch als User) mit mount /mnt/compactflash das Medium mounten.
Lesen, Ändern, Löschen #
Man kann nun im Verzeichnis /mnt/compactflash ganz normal die Dateien auslesen und ändern, wie man das auf einer Festplatte machen würde. D.h. man kann das Verzeichnis z.B. über die KDE-Oberfläche so einbinden, das es bei einem Klcik automatisch gemountet wird und die Dateien dann per Konqueror ganz einfach in ein anderes Verzeichnis ziehen. Ich selber habe daraufhin immer das ganze Medium gelöscht (also alle Dateien, auch die Verwaltungsdateien?!? der Kamera). Die Canon Powershot Kamera hat mir das nicht übel genommen. Theoretisch sollte man die CF-Karte auch formatieren können. Andere Dateisysteme als VFAT machen allerdings für Digitalkameras keinen Sinn (für den Zaurus u.U. schon). Außerdem kann man normalerweise eine Formatierung auch mit der Kamera durchführen, was evtl. sicherer ist, falls das Kamera-Betriebssystem irgendwo seine Nickeligkeiten hat.
Unmounten #
Natürlich darf man - wie bei einer Diskette - niemals vergessen, die Karte zu unmounten, bevor man sie aus dem Gerät nimmt! Evtl. ist der Einsatz eines Automounters empfehlenswert, mit dem ich jedoch noch keine Erfahrung habe.
Weitere Tips #
Ein ähnliches Gerät hat KaiEhlers installiert und dies auf der Seite UsbStick dokumentiert.