Making the 6-in-1 Card Reader work with Linux

I splashed out recently on a high-end digital camera, a Fuji FinePix S602Z. There may eventually be something to be said about it on this site.

Along with it I bought a 256MB flash card to store images. Lots of people had said that one of the best ways of getting the images onto disk from the camera would be to buy a USB card reader and then Linux would see the card reader as simply a USB hard drive.

I bought a KU6in1 card reader, branded with Dane-Elec on the outside. Searches of Google make it obvious that this is a commodity component sourced in Taiwan, but the various pages that I could find which related to it naturally didn't talk about Linux drivers.

I plugged the USB cable in and stuck the flash card in the appropriate slot. Linux recognised it as a SCSI drive which I was able to mount and read and write with ease. Lovely, nice and simple. But not so simple when you try to read the Smart Media slot - no joy at all. Much scratching of head.

Eventually the solution was found. There are four slots in front of the device which presumably take six different kinds of card between them. Each slot should look to Linux like a different SCSI drive and you can (apparently, I haven't tried it) copy between them all. BUT FIRST you need to tell Linux that it's a funny device and that it does in fact consist of four separate drives.

By default Linux simply sees the first slot (compact flash)as /dev/sda1. To get the Smart Media slot working as /dev/sdb1 (and presumably the others too) I discovered this gem after a lot of searching the web - unfortunately I didn't keep a reference to the original item - you have to prod the SCSI subsystem with the following information:

echo >/proc/scsi/scsi "scsi add-single-device 1 0 0 1"
echo >/proc/scsi/scsi "scsi add-single-device 1 0 0 2"
echo >/proc/scsi/scsi "scsi add-single-device 1 0 0 3"
I put mine in /etc/rc.d/rc.local on my RedHat system. And now it works fine. I have created mount points called /mnt/compactflash and /mnt/smartmedia with corresponding entries in /etc/fstab and everything works (barring the comment below).
/dev/sdb1		/mnt/smartmedia		vfat	user		0 0
/dev/sda1		/mnt/compactflash	vfat	user		0 0
When I mount the smartmedia cards for some reason it always complains the first time then works the second:
bash-2.05$ mount /mnt/smartmedia/
mount: wrong fs type, bad option, bad superblock on /dev/sdb1,
       or too many mounted file systems
bash-2.05$ mount /mnt/smartmedia/

With a bit of luck, this may help someone else too! It all works like a dream now. The picture above was taken with an old Olympus D-340R and transferred using the card reader itself via a 16MB Smart Media card. Anyone unlucky enough still to own one of those Olympus cameras: it works with Smart Media cards up to 16MB and Olympus used to offer firmware upgrades for 32MB cards. As far as I can tell, there's no way it will do anything larger. It's probably cheaper and simpler just to buy a bunch of 16MB cards if you really need lots of photos - or get a more modern camera.