Apr 102006
 

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 Responses to “Card reader for FreeBSD”

  1. The link in the article for the card reader dock is broken. The link currently points to:

    http://www.freebsddiary.org/images/card-reader.san.disk.in.dock.jpg

    [%sig%]