was kind enough to send us one of their ImageMate USB Compact Flash Adapters (Part No SDDR-31), which now support Linux. If you've got a digital camera, MP3 player, or PDA that uses Compact Flash, you're in luck, because SanDisk was willing to work with the Linux community and get support for it built into the kernel. I initially tried with kernel version 2.2.15, with little luck, but was successful with version 2.4.0-test11. Due to some other issues with getting bttv support working and the system time being off, I rolled back to the 2.2.18pre21 version with the backported USB code. All work was done on a fairly stock YDL CS1.2 install.

Flash memory is a solid-state storage device, much more durable than hard-disks. they are dependable for as many as 300,000 erase/write cycles, and with the advent of PDA's and digital cameras, the price is becoming quite attractive. SanDisks MSRP list as of Sept, 2000 listed the devices as this:

Compact Flash Cards: $35-$800 for 8MB to 300MB capacity
PCMCIA Adapter: $20
ImageMate USB Adapter: $30

Essentially, all you need to do is enable "USB Mass Storage Support". the Flash Adapter will show up as the next SCSI hard drive, or the first one, if you don't have any actual SCSI devices. In my case, it showed up as /dev/scd, as I have 2 external SCSI hard drives. You will also need to do a little reconfiguring to get your mouse and keyboard to work with the new input layer. Below is a link to my kernel configuration for a fully functional 2.2.18-pre21 kernel with USB storage support, and support for the Formac iProRaidTV mezzanine SCSI card on a rev B iMac. It should also work for other NCR based SCSI cards. It also includes USB printer and scanner support, but I don't have the gear to test those. I've also verified that you can build bttv according to my iProRaidTV HowTo, and it's functional with this kernel arrangement. Be sure to include MSDOS filesystem support as most Flash cards come formatted for DOS.

config-2.2.18pre21

You can also download a fully functional 2.2.18pre21 kernel from here.

You should see something like this at boot:

usb.c: registered new driver usb-storage
USB Mass Storage support registered.
usb.c: USB new device connect, assigned device number 5
scsi1 : SCSI emulation for USB Mass Storage devices
scsi : 2 hosts.
Vendor: SanDisk Model: ImageMate II Rev: 1.30
Type: Direct-Access ANSI SCSI revision: 02
Detected scsi removable disk sdc at scsi1, channel 0, id 0, lun 0
sdc : READ CAPACITY failed.
sdc : status = 0, message = 00, host = 0, driver = 08
sdc : extended sense code = 2
sdc : block size assumed to be 512 bytes, disk size 1GB.
sdc:scsidisk I/O error: dev 08:20, sector 0
unable to read partition table
WARNING: USB Mass Storage data integrity not assured
USB Mass Storage device found at 5


The card was not in the drive, hence the read error.

You should then be able to create a mount point and mount the card. Most flash cards are DOS formatted and will be on partition 1:

mkdir /mnt/flash
mnt /dev/sdc1 /mnt/flash

[root@imac linux]# ls /mnt/flash/
1-1-98.org 6-7-99.pdt apname.lst homeeq phone.pdb stocks.wk1


(This card is normally in my HP200LX palmtop).

Be sure to umount before removing the card or you may get a kernel panic.

umount /mnt/flash

That's it! Special thanks to Kevin Turner and the other fine folks at for providing the hardware for review, and to Matthew Dharm, who worked with SanDisk to write the original Linux driver.