Datafab USB-CF-Reader unter Linux

Bei angeschlossenem Reader, sollte man durch "cat /proc/bus/usb/devices" folgendes sehen:
T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  5 Spd=12  MxCh= 0
D:  Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=07c4 ProdID=a400 Rev= 1.13
S:  Manufacturer=USB
S:  Product=Mass Storage
C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr= 70mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
E:  Ad=81(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms

Interessant sind hierbei Vendor und Product-ID.

Der Reader hat ein Problem mit dem standard SCSI-Inquiry. Er beantwortet nur inquiries korrekt, die 36 Byte anfordern (wie unter Windows üblich). Linux fordert 255 Bytes an. Der Reader funktioniert einfandfrei, wenn das US_FL_FIX_INQUIRY Flag gesetzt wird. Siehe: Linux-USB device overview
Als nächstes fügt man in /usr/src/linux/drivers/usb/storage/unusual_devs.h folgende Zeilen ein:

UNUSUAL_DEV(  0x07c4, 0xa400, 0x0000, 0xffff,
		"Datafab",
		"KECF-USB",
		US_SC_SCSI, US_PR_BULK, NULL,
		US_FL_FIX_INQUIRY ),

Danach müssen die Kernelmodule mit "make modules" und "make modules_install" neu gebaut und installiert werden.
Anschliessend das Modul usb-storage neu laden.

Mounten lassen sich die CF-Karten dann mit "mount -t vfat /dev/sda1 /mnt/flash" oder durch einen Eintrag in der fstab:

/dev/sda1 /mnt/flash vfat rw,noauto,user 0 0

Ab Kernelversion 2.4.21 wird der Reader standardmässig unterstützt, der entstrechende ist im 2.4.21pre3 Patch bereits enthalten