I got a Phidget RFID experimenters pack from Think Geek and started to play.

It seemed like a nice package with bare a USB cicuit board device with cable and a package full of rfid chips/patches/cards.

The software wasn't really working on Linux as downloaded from Phidgets. The library seemed ok (but see notes below) (and you will need it from there anyway) but the sample programs were just copies of the VC++ code and not ported to gcc/g++ at all.

So I wrote my own program to play with and actually see what the card does. you can download it from me here. It still needs to run as root or at least as someone with access to the device. Not sure exactly what /dev/??? file name it uses tho.

rfid.tar.gz

At first I thot this: One valuable point I have discovered is when you plug in the USB card, before you run any of the software, the led on the card should light up steady and stay on. My first few attempts it would only flicker on when I pluged it in and was flashing on and off while the software was running. It still managed to read some of the RFID chips (the large credit card size ones) but wouldnt read most of the small chips. It seems it draws more power than some USB ports are willing to supply. I needed to plug it into an external USB hub with extra power supply to the hub to get it to light up steady and stay on.

But now it seems it is not the power level of the port. There is something odder and more subtle going on here. It only occurs on a few of my usb ports. The device is very unstable, sometimes repeatedly attaching and detaching with a small flicker of the led like the one you get when you first plug it in. One theory I have is the code in the phidgets lib that takes control of the device from the HID driver is interacting with the usb power control code. When the HID driver gives up the device it turns off the power. When the phidgets lib powers up the device the HID code gets allerted to a "new" device again. My system doesn't want me to just unload the hid code just now, it sez it is in use for some other device.

Another point is their "standard" (EM4102) chip isn't much of a standard. It seems there is really just the one supplier of chips for this system (EM Mircoelectronic) and all the chips you get are made by the one outfit even if they filter out thru various different distributors and suppliers.

The easiest cards to read were the big credit card sized ones. They even partially worked with the card in a misbehaving usb slot. The hardest one to get a reading from was the tiny glass bead capsule which is suposedly made to be implanted in a body, pet or human. I suspect you might need a more powerfull reader if you actually implated it cuz it was kinda hard to read even without any wetware surrounding it. ... Further playing shows I might be mistaken on this point too. I can get a fairly good signal from the glass bead when eveything is working correctly.

I am slightly confused about the length of the ID string in the chips. the Phidget docs say they are 40 bit codes but the cip maker "EM Microelectronic - Marin SA" sez they are 64 bit codes. Perhaps part of the code is only for error checking or something since all the chips they sent me were uniqe in the 40 bits the phidget library returns. ... Further research shows this is right. The unique part of the chip id is 40 bits. the rest of the bits, to make up 64, are mostly parity error check bits. I assume the Phidgets device and/or library checks these parity bits before stripping them and handing us the result. The boast of 64 bits is kinda just marketing speak, not usable.

Ok time for a confesion. When I ordered this I had the idea it might read (just out of curiousity) rfid chips other then those supplied such as those used by wallmart and in credit cards and passports. Now that I have played with it for a little while I serioulsy doubt it will read any of those chips. It seems rather tightly bound to the type of chips it is supplied with and I strongly suspect those other chips are not compatible. I'll prolly try them as I go but I'm not holding my breath. I'll try to put any further reports up here as I get them.

A couple things to note when installing the Phidgets library. One, it installs in /usr/local/lib and ldocnfig & ld.so.conf may not be configured to use that directory. I had to add a line to ld.so.conf for it on kubuntu fiesty. Two, there is a header file from the library that is not installed by default but it is kinda needed called cphidgetconstants.h. If you want to compile my sample prog you will need it from the phidgets21 library sources. Put it with phidget21.h in /usr/local/include.

Lloyd Miller, 2007/09/14, 2007/09/21

There is an optional file not included in my download tar file. It is a set of descriptions or whatever you want to associate a text string with an id code. Just put one per line starting with the 10 hex digit(40 bit) id number followed with the rest of the line filled with whatever text you like. When that tag is detected, the text will be displayed. Or you can put the name of each user in the file with the card/fob/whatever that has been assigned to them. It doesnt really do anything yet but it might be a start for your own ideas. Lloyd Miller 2007/09/18