I recently purchased an Acomdata 6-in-1 USB Multi-Flash memory card reader for CompactFlash, SmartMedia/X-media. SD/MMC and Sony Memorystick cards (http://www.acomdata.com). I specifically chose Acomdata because they explicitly advertise that their product works with Linux as well as Windows and MacOS.

The USB card reader is detected by Linux via the usb kernel modules (including the usb.c, usb-uhci.c, hub.c and usb-storage modules) as a multi-LUN SCSI device. Further, to access the SmartMedia filesystem, you also need the SDDR09 and SDDR55 usb-storage kernel modules (these provide the FAT emulation layer for Smartmedia). Finally, the manual for the Acomdata USB card reader recommends that you recompile the kernel to enable the SCSI Option "Probe all luns" (CONFIG_MULTI_LUN), which is normally disabled by default in the kernel because of potential problems.

Fortunately, the Knoppix kernel is compiled with all of the necessary components, except for the SCSI multi-LUN option. You can still detect and mount the USB card reader devices without recompiling the kernel, however. Here's how you do it:

1) Detect the USB mult-card reader devices. If you are booting from the Knoppix LiveCD, then at the boot prompt, pass the kernel option: knoppix max_scsi_luns=6.

If you are booting from a hard-drive installation, then include the above kernel option under an "append" statement in /etc/lilo.conf e.g.: append="max_scsi_luns=6"; then as root, execute /sbin/lilo. When you reboot, dmesg will show the various devices in your USB multi-card reader detected as SCSI devices (e.g. sda, sdb, sdc, sdd).

2) Mount your card media. On my system, sda is assigned to an Iomega Zip drive. Therefore, the various devices on the Acomdata USB multi-flash card reader are detected as:

sdb: CompactFlash
sdc: SmartMedia / X-media
sdd: SD / MMC
sde: Sony Memorystick

I use only SmartMedia from my Olympus C-2000Z digital camera. To mount it, I execute (as root or superuser): mount -t vfat /dev/sdc1 /mnt/sdc1. Note that you need to specify the partition number when you mount ie. /dev/sdc1, not /dev/sdc. Of course, you can use mount points other than /mnt/sdc1.

3) Diagnostics. If you are having trouble mounting your media card, execute dmesg | less to check if your USB card reader was detected. My dmesg shows:
Code:
Initializing USB Mass Storage driver...
usb.c: registered new driver usb-storage
usb_control/bulk_msg: timeout
scsi1 : SCSI emulation for USB Mass Storage devices
  Vendor: DMI       Model: MultiFlash        Rev: 3.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
  Vendor: DMI       Model: MultiFlash        Rev: 3.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
  Vendor: DMI       Model: MultiFlash        Rev: 3.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
  Vendor: DMI       Model: MultiFlash        Rev: 3.00
  Type:   Direct-Access                      ANSI SCSI revision: 02
Attached scsi removable disk sdb at scsi1, channel 0, id 0, lun 0
Attached scsi removable disk sdc at scsi1, channel 0, id 0, lun 1
Attached scsi removable disk sdd at scsi1, channel 0, id 0, lun 2
Attached scsi removable disk sde at scsi1, channel 0, id 0, lun 3
You will also see some READ CAPACITY FAILED messages, which you can ignore.

Alternatively, you can peruse the contents of /proc/scsi directory. If your USB multi-card reader is successfully detected, the file /proc/scsi/usb-storage-0/1 will be created. This file is plain text; if you execute 'less /proc/scsi/usb-storage-0/1', you should see something like this:
Code:
   Host scsi1: usb-storage
       Vendor:                         
      Product: MultiFlash
Serial Number: None
     Protocol: Transparent SCSI
    Transport: Bulk
         GUID: 0c0b27cb0000000000000000
     Attached: Yes
If your USB multi-card reader is not detected, then the usb-storage-0 subdirectory will not appear under /proc/scsi.