Card reader for FreeBSD

Card reader for FreeBSD

When I first heard of a card reader, I thought of business cards. I imagined a device
that took business cards and digitized them so you could save contact information.
Yes, such tools exist, but the card reader in question is actually a memory card reader.
A very common use of this tool is to take a memory card from a digital camera and read
it into your computer. I have two such devices. One I’ve had for year or so, and the
other one is a recent acquistion.

I bought a second card reader just recently in order to get the pictures off the kids’
camera. Their cameras take an XD meory chip. My original card reader was a USB 2.0
7-in-1 device. It can handle the following types of cards:

  1. CF
  2. MD
  3. SD
  4. MMC
  5. MS
  6. MSpro
  7. SM

Most cameras come with a cable that allows you to connect to a USB connection. Kids being
kids, they can’t find the cable, which, as luck would have it, is not a standard USB cable.
That’s another reason why a card reader is handy.

While I was able to use this card reader under NT, FreeBSD 4, 5, and 6, it would not handle the
XD cards.

The new device, which I got at Staples, is from SanDisk. It’s an ImageMate 12 in 1, model number
SDD3-89 V3, part number 20-90-30329. It can take the following cards:

  1. Memory Stick Duo
  2. Mmeory Stick PRO
  3. Mmeory Stick PRO Duo
  4. Compact Flash I
  5. Compact Flash II
  6. SD
  7. miniSD
  8. MultilMediaCard
  9. MMCplus
  10. MMCmobile
  11. RS-MMC
  12. RSMMC Dual Voltage
  13. SmartMedia
  14. xD
  15. xD Type M

The unit comes with an optional docking station. You don’t
have to use it, and the card reader also comes with a short USB cables just right for plugging directly
into a laptop. Everything is powered from the USB connection; you do not need an external power
supply for it.

docking station

front

back

The SanDisk unit worked every time I used it. No problems at all, under both FreeBSD 6 and Windows XP.
Including with the card reader is some Windows software to use the one-touch button. I have not
installed that.

Under FreeBSD 6, here is an extract from /var/log/messages when the card reader is
connected and it contains an xD memory card. The device that represents the memory card
is in bold.

umass0: SanDisk ImageMate 14 in 1 Reader/Writer, rev 2.00/93.21, addr 2 
da0 at umass-sim0 bus 0 target 0 lun 0 
da0:  Removable Direct Access SCSI-0 device  
da0: 40.000MB/s transfers 
da0: 15MB (32000 512 byte sectors: 64H 32S/T 15C) 
(da0:umass-sim0:0:0:0): READ CAPACITY. CDB: 25 0 0 0 0 0 0 0 0 0  
(da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error 
(da0:umass-sim0:0:0:0): SCSI Status: Check Condition 
(da0:umass-sim0:0:0:0): NOT READY asc:3a,0 
(da0:umass-sim0:0:0:0): Medium not present 
(da0:umass-sim0:0:0:0): Unretryable error 
Opened disk da0 -> 6 
(da0:umass-sim0:0:0:0): READ CAPACITY. CDB: 25 0 0 0 0 0 0 0 0 0  
(da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error 
(da0:umass-sim0:0:0:0): SCSI Status: Check Condition 
(da0:umass-sim0:0:0:0): NOT READY asc:3a,0 
(da0:umass-sim0:0:0:0): Medium not present 
(da0:umass-sim0:0:0:0): Unretryable error 
Opened disk da0 -> 6 
(da0:umass-sim0:0:0:0): READ CAPACITY. CDB: 25 0 0 0 0 0 0 0 0 0  
(da0:umass-sim0:0:0:0): CAM Status: SCSI Status Error 
(da0:umass-sim0:0:0:0): SCSI Status: Check Condition 
(da0:umass-sim0:0:0:0): NOT READY asc:3a,0 
(da0:umass-sim0:0:0:0): Medium not present 
(da0:umass-sim0:0:0:0): Unretryable error 
Opened disk da0 -> 6 
da1 at umass-sim0 bus 0 target 0 lun 1 
da1:  Removable Direct Access SCSI-0 device  
da1: 40.000MB/s transfers 
da1: 15MB (32000 512 byte sectors: 64H 32S/T 15C) 
da2 at umass-sim0 bus 0 target 0 lun 2 
da2:  Removable Direct Access SCSI-0 device  
da2: 40.000MB/s transfers 
da2: Attempt to query device size failed: NOT READY, Medium not present 
da3 at umass-sim0 bus 0 target 0 lun 3 
da3:  Removable Direct Access SCSI-0 device  
da3: 40.000MB/s transfers 
da3: Attempt to query device size failed: NOT READY, Medium not present 
(da2:umass-sim0:0:0:2): READ CAPACITY. CDB: 25 40 0 0 0 0 0 0 0 0  
(da2:umass-sim0:0:0:2): CAM Status: SCSI Status Error 
(da2:umass-sim0:0:0:2): SCSI Status: Check Condition 
(da2:umass-sim0:0:0:2): NOT READY asc:3a,0 
(da2:umass-sim0:0:0:2): Medium not present 
(da2:umass-sim0:0:0:2): Unretryable error 
Opened disk da2 -> 6 
(da2:umass-sim0:0:0:2): READ CAPACITY. CDB: 25 40 0 0 0 0 0 0 0 0  
(da2:umass-sim0:0:0:2): CAM Status: SCSI Status Error 
(da2:umass-sim0:0:0:2): SCSI Status: Check Condition 
(da2:umass-sim0:0:0:2): NOT READY asc:3a,0 
(da2:umass-sim0:0:0:2): Medium not present 
(da2:umass-sim0:0:0:2): Unretryable error 
Opened disk da2 -> 6 
(da2:umass-sim0:0:0:2): READ CAPACITY. CDB: 25 40 0 0 0 0 0 0 0 0  
(da2:umass-sim0:0:0:2): CAM Status: SCSI Status Error 
(da2:umass-sim0:0:0:2): SCSI Status: Check Condition 
(da2:umass-sim0:0:0:2): NOT READY asc:3a,0 
(da2:umass-sim0:0:0:2): Medium not present 
(da2:umass-sim0:0:0:2): Unretryable error 
Opened disk da2 -> 6 
(da3:umass-sim0:0:0:3): READ CAPACITY. CDB: 25 60 0 0 0 0 0 0 0 0  
(da3:umass-sim0:0:0:3): CAM Status: SCSI Status Error 
(da3:umass-sim0:0:0:3): SCSI Status: Check Condition 
(da3:umass-sim0:0:0:3): NOT READY asc:3a,0 
(da3:umass-sim0:0:0:3): Medium not present 
(da3:umass-sim0:0:0:3): Unretryable error 
Opened disk da3 -> 6 
(da3:umass-sim0:0:0:3): READ CAPACITY. CDB: 25 60 0 0 0 0 0 0 0 0  
(da3:umass-sim0:0:0:3): CAM Status: SCSI Status Error 
(da3:umass-sim0:0:0:3): SCSI Status: Check Condition 
(da3:umass-sim0:0:0:3): NOT READY asc:3a,0 
(da3:umass-sim0:0:0:3): Medium not present 
(da3:umass-sim0:0:0:3): Unretryable error 
Opened disk da3 -> 6 
(da3:umass-sim0:0:0:3): READ CAPACITY. CDB: 25 60 0 0 0 0 0 0 0 0  
(da3:umass-sim0:0:0:3): CAM Status: SCSI Status Error 
(da3:umass-sim0:0:0:3): SCSI Status: Check Condition 
(da3:umass-sim0:0:0:3): NOT READY asc:3a,0 
(da3:umass-sim0:0:0:3): Medium not present 
(da3:umass-sim0:0:0:3): Unretryable error 
Opened disk da3 -> 6

To access the memory card, you need to mount the device. To FreeBSD,
this memory card appears as a SCSI device.

# mount_msdosfs /dev/da1s1 /mnt

Make sure that /mnt exists before you issue this command.

Most cameras use a FAT file system, and that is why I used mount_msdosfs
above.

The memory stick is now just another filesystem according to your FreeBSD system:

# df
Filesystem  1K-blocks    Used   Avail Capacity  Mounted on
/dev/ad0s2a    507630  102034  364986    22%    /
devfs               1       1       0   100%    /dev
/dev/ad0s2e    507630      72  466948     0%    /tmp
/dev/ad0s2f  15709014 6505554 7946740    45%    /usr
/dev/ad0s2d   1254862  282386  872088    24%    /var
/dev/da1s1      16000   15744     256    98%    /mnt

Here’s a look around that memory stick:

# cd /mnt 
# ls 
dcim 
# cd dcim 
# ls 
100_fuji 
# cd 100_fuji 
# ls 
dscf0001.jpg    dscf0048.avi    dscf0091.jpg 
dscf0002.jpg    dscf0049.avi    dscf0092.jpg 
dscf0003.jpg    dscf0081.jpg    dscf0093.jpg 
dscf0030.jpg    dscf0082.jpg    dscf0117.jpg 
dscf0046.jpg    dscf0086.jpg    dscf0118.avi 
#

Now you can copy files around, just as you would on any other disk:

# mkdir ~/my-photos 
# cd ~/my-photos 
# cp /mnt/dcim/100_fuji/* . 
# ls 
dscf0001.jpg    dscf0048.avi    dscf0091.jpg 
dscf0002.jpg    dscf0049.avi    dscf0092.jpg 
dscf0003.jpg    dscf0081.jpg    dscf0093.jpg 
dscf0030.jpg    dscf0082.jpg    dscf0117.jpg 
dscf0046.jpg    dscf0086.jpg    dscf0118.avi 
#

Always remember to unmount the filesystem before you disconnect the USB device, or remove the memory stick
from the card reader. Failure to do this may result in a corrupted filesystem.

# umount /mnt

Nice addition

This SanDisk card is a nice addition to my laptop bag. It has proven useful already, just for being able to get
the photos off the kids’ cameras. I’m glad I bought it.

2 thoughts on “Card reader for FreeBSD”

Leave a Comment

Scroll to Top