Monday, June 18, 2007

PQI Travel flash-Multi Slot Card R/W and Linux

I have one of these and needed to access an SD card to retreive some information from it via Slackware Linux. The text below shows the steps I took to get this piece of hardware working correctly.

First make sure that the card reader was even being picked up:

igs-awilliams@IGS-LAP02:~> less /proc/scsi/usb-storage-0/1

Host scsi1: usb-storage
Vendor: Generic
Product: USB Storage Device
Serial Number: 0AEC305000001A002
Protocol: Transparent SCSI
Transport: Bulk
GUID: 0aec5010aec305000001a002
Attached: Yes

Thats present so I can proceed.

Under Linux these things are detected as SCSI devices do you have to
accommodate the multiple devices. Add the following to your lilo.conf:

append = "max_scsi_luns=6"

You will have to reboot after running lilo for the changes to take effect.

Now once you have rebooted you can check what drives your system has available:

igs-awilliams@IGS-LAP02:~> sudo fdisk -l

Disk /dev/sdc: 256 MB, 256901632 bytes
8 heads, 62 sectors/track, 1011 cylinders
Units = cylinders of 496 * 512 = 253952 bytes

This doesn't look like a partition table
Probably you selected the wrong device.

Device Boot Start End Blocks Id System
/dev/sdc1 ? 1568823 3870254 570754815+ 72 Unknown
Partition 1 has different physical/logical beginnings (non-Linux?):
phys=(357, 116, 40) logical=(1568822, 3, 11)
Partition 1 has different physical/logical endings:
phys=(357, 32, 45) logical=(3870253, 0, 51)
Partition 1 does not end on cylinder boundary.
/dev/sdc2 ? 340100 4243383 968014120 65 Novell Netware 386
Partition 2 has different physical/logical beginnings (non-Linux?):
phys=(288, 115, 43) logical=(340099, 6, 47)
Partition 2 has different physical/logical endings:
phys=(367, 114, 50) logical=(4243382, 4, 42)
Partition 2 does not end on cylinder boundary.
/dev/sdc3 ? 3769923 7673205 968014096 79 Unknown
Partition 3 has different physical/logical beginnings (non-Linux?):
phys=(366, 32, 33) logical=(3769922, 2, 30)
Partition 3 has different physical/logical endings:
phys=(357, 32, 43) logical=(7673204, 7, 39)
Partition 3 does not end on cylinder boundary.
/dev/sdc4 ? 5817906 5818018 27749+ d Unknown
Partition 4 has different physical/logical beginnings (non-Linux?):
phys=(372, 97, 50) logical=(5817905, 4, 25)
Partition 4 has different physical/logical endings:
phys=(0, 10, 0) logical=(5818017, 3, 33)
Partition 4 does not end on cylinder boundary.

Partition table entries are not in disk order
This disk has both DOS and BSD magic.
Give the 'b' command to go to BSD mode.

Disk /dev/hda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 2197 17647371 7 HPFS/NTFS
/dev/hda2 2198 5844 29294527+ 83 Linux
/dev/hda3 5845 5968 996030 82 Linux swap
/dev/hda4 5969 7296 10667160 83 Linux

Now its a matter of mounting the drive and verifying the contents:

igs-awilliams@IGS-LAP02:~> sudo mount -t vfat /dev/sdc4 /mnt/usbkey
igs-awilliams@IGS-LAP02:~> ls /mnt/usbkey
FileThatIWanted.exe
igs-awilliams@IGS-LAP02:~> df -h /mnt/usbkey
Filesystem Size Used Avail Use% Mounted on
/dev/sdc4 245M 28M 217M 12% /mnt/usbkey

There you have it. If anyone has a better solution please feel free to post a comment.

May Your Skill Prevail.

No comments: