The PNY Technologies USB Memory Card Reader

[Linux]

2nd May 2003

Last week, Hersey showed me a little card reader that took 3 different types of memory cards and connects to the computer with USB. He had it working under Windows, so we experimented and plugged it into my Linux box at work. It worked without any problems at all. This made me think.

I'd been thinking about these new little devices that are basically memory sticks that plug into USB ports and allow you to transfer "vital" information between your computers. Sneakernet revisited. These devices start at about $60 for a 32 meg device, and go up to $180 for a 128 meg device. That's not worth it to me. But the small device that Hersey showed me was only $40. I already had a few memory sticks for my Sony digital camera so all I really needed was a little reader like this and I had one of those devices. Time to hit the shops and see what was available.

I went to BestBuy and found the same card reader that Hersey had found. $40 and it handles the three main types of memory cards. But right beside it was the baby brother (PNY Technologies USB Memory Stick Reader/Writer FPTS2-K), a card reader that handles only the Sony memory sticks, but only costs $15. Now that's more like it. And it was pretty small too. The footprint is almost exactly the same size as a credit card, but it's a lot, lot thicker, about 1 cm thick. For $15, I was willing to experiment and see how if it worked okay with Linux and would do what I wanted.

I got it home and started playing. The package contained the memory card reader, a USB extension cable, a small single page manual for Windows users and a CDROM for Windows users. Before I opened the package, I couldn't see how the USB cable connected to the device. There were no openings big enough.

[PNY Technologies memory
stick reader]

I didn't read the instruction sheet. Who needs to read the instruction manual anyway? So I puzzled at this little device and fiddle and pushed and pulled and then found out where the USB connections are made. The back section opens up and it's got its own USB cable inside. It's a fully self-contained unit. If you're using it with a laptop, you won't need the USB extension cable. And if your USB ports are on the front of your computer and you have your machine near your face, then you won't need the USB extension cable either.

[Back section open, showing
the USB cable]

Now that was pretty neat. The cable pulls out, and there's a little hole in the back so you can shut the case again.

[Back section shut, with the
USB cable extended]

I have my computer already set up to mount my Sony digital camera, so I tailed /var/log/messages, then connected the device to my USB port. It recognised the device but gave an error because there was no memory stick in it.

May  3 21:54:24 cerebus kernel: hub.c: new USB device 00:1f.2-2, assigned address 3
May  3 21:54:27 cerebus /etc/hotplug/usb.agent: Setup usb-storage for USB product \
 416/7722/100
May  3 21:54:27 cerebus kernel: Initializing USB Mass Storage driver...
May  3 21:54:27 cerebus kernel: usb.c: registered new driver usb-storage
May  3 21:54:27 cerebus kernel: scsi2 : SCSI emulation for USB Mass Storage devices
May  3 21:54:27 cerebus kernel:  sda: I/O error: dev 08:00, sector 0
May  3 21:54:27 cerebus kernel: USB Mass Storage support registered.

I unplugged it, inserted a memory stick, and plugged it back in. The little light on top of the device flickered red a few times. Then complete success, exactly as if I had attached my camera.

[Reader with memory stick
inserted]

May  3 21:55:46 cerebus kernel: hub.c: new USB device 00:1f.2-2, assigned address 4
May  3 21:55:49 cerebus /etc/hotplug/usb.agent: Setup usb-storage for USB product \
 416/7722/100
May  3 21:56:17 cerebus kernel:  sda: sda1

I already have an entry in /etc/fstab for my camera:

/dev/sda1        /mnt/camera      vfat        noauto,users     0   0

so I just mounted the reader with

mount /mnt/camera

and it was available and I could access the files and directories and do what I wanted with the memory stick. This was pretty cool. I played around with it a fair bit and found only one minor glitch. If I put a memory stick in the reader and then connected it to the USB port, it would recognise the reader:

May  3 22:16:12 cerebus kernel: hub.c: new USB device 00:1f.2-2, assigned address 8
May  3 22:16:15 cerebus /etc/hotplug/usb.agent: Setup usb-storage for USB product \
 416/7722/100

but wouldn't setup or assign the device, so if I tried to mount it, I would get the standard error of:

mount: wrong fs type, bad option, bad superblock on /dev/sda1,
       or too many mounted file systems

but this would trigger an access of the device, reported in /var/log/messages as:

May  3 22:16:39 cerebus kernel:  sda: sda1

and I could do the mount again immediately and it would work. I experimented and found that if you connect the device and wait patiently, it will not recognise the device and assign it automatically. So, just issue the mount command, get the fail, then issue it again. I don't know why this happens. I don't know enough about USB to know why. It might be that the Linux USB drivers have a flaw, although they work perfectly for all the other USB devices I have thrown at them. It might be because the Card Reader is classed as a USB 1.1 device. It might be that the Card Reader has a flaw. It might just be the way that things have to happen with a device like this. I don't know, and I don't care much. It works well enough for me to be very happy with it. I know the limitation and have an extremely simple workaround. I do the mount twice and it works.

I did some more experiments with leaving the reader attached and just switching the memory sticks. That worked fine too. Just remember to umount the device before you pull the memory stick out, otherwise you could lose data. Each time you put a new memory stick in, mount it, have the mount fail, mount it again and it will mount. /var/log/messages will just show this each time:

May  3 23:45:19 cerebus kernel:  sda: sda1
May  3 23:46:07 cerebus kernel:  sda: sda1
May  3 23:48:03 cerebus kernel:  sda: sda1

So I have achieved two things with this little device. I can transfer images off my Sony digital camera without having the special USB cable for the camera. And I can use my memory sticks as removable storage devices for transferring data between my machines. The biggest memory stick I have is 128 meg, and that's a reasonable amount of memory. It will hold a lot of documents, especially as I don't use any Windows product, as they specialise in file bloat. I can fit an entire presentation in HTML, including images, on one memory card. I can even fit a fairly full CD of music converted to mp3 onto one of the 128 meg memory sticks.

All in all, I am extremely pleased with this little device given what it can do for me, and especially as it only cost $15.

[Sony memory sticks]

[PNY Card Reader ready for
action]

[Card reader close-up]

[Another view of the card
reader]