I had OmniKey CardMan 5321 reader sitting on my desk for quite some time. First time I tried it, I had problem with propitiatory binary driver which expected pcscd to be compiled without hal support to make it work.
Fortunately, we now have pcsc-omnikey package in Debian which should make usage of this reader much easier. But, I really wanted more low-level implementation, allowing me to muck with cards without need to pass through whole smart card stack (since I'm really only interested in RFID part of this reader).
So, I did some searching and found out that librfid - A Free Software RFID stack implements support for this reader, so here is a quick overview of how to get started:
# build dependency dpavlin@klin:/rest/cvs/librfid$ sudo apt-get install libusb-dev # checkout source dpavlin@klin:/rest/cvs$ svn co https://svn.gnumonks.org/trunk/librfid/ dpavlin@klin:/rest/cvs$ cd librfid/ dpavlin@klin:/rest/cvs/librfid$ ./autogen.sh # build dpavlin@klin:/rest/cvs/librfid$ ./configure --enable-ccid dpavlin@klin:/rest/cvs/librfid$ makeNow we can test if our reader is working:
dpavlin@klin:/rest/cvs/librfid$ sudo ./utils/librfid-tool -s lt-librfid-tool - (C) 2005-2008 by Harald Welte This program is Free Software and has ABSOLUTELY NO WARRANTY initializing librfid opening reader handle OpenPCD, CM5x21 No OpenPCD found scanning for RFID token... Layer 2 success (ISO 15693): eb 6e 77 1f 00 01 04 e0And, that's not all. We can also read content of our tag:
dpavlin@klin:/rest/cvs/librfid$ sudo ./utils/librfid-tool -r -1 lt-librfid-tool - (C) 2005-2008 by Harald Welte This program is Free Software and has ABSOLUTELY NO WARRANTY initializing librfid opening reader handle OpenPCD, CM5x21 No OpenPCD found Layer2 init ok Layer 2 success (ISO 15693)[8]: ' eb 6e 77 1f 00 01 04 e0' block[ 0:00]sec:0x8 data(4): 04 11 00 01 block[ 1:01]sec:0x8 data(4): 31 33 30 32 block[ 2:02]sec:0x8 data(4): 30 32 39 37 block[ 3:03]sec:0x8 data(4): 31 30 00 00 block[ 4:04]sec:0x8 data(4): 00 00 00 00 ... block[ 26:1a]sec:0x8 data(4): 00 00 00 00 block[ 27:1b]sec:0x8 data(4): 57 5f 4f 4b no data(read_block(28)>> -1)It's exactly what I was looking for: ability to do low-level block transfer with RFID card.
This is great news since I don't have to carry bulky 3M reader and antenna with me to conferences to demonstrate RFID. Since I didn't find librfid first time I searched for software to drive this reader, I hope that this post will be helpful to someone.If you intend to buy RFID reader, take a look at OpenPCD instead of this one :-)