« Agile web development in 2010 | Main | MongoDB - so you want fast NoSQL database which you can grok »

OmniKey CardMan 5321 supported by librfid

CardMan-5321_free.jpg 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$ make
Now 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 e0
And, 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 :-)

TrackBack

TrackBack URL for this entry:
http://blog.rot13.org/mt/mt-tb.cgi/675

Comments (3)

Pozdrav! Prijatelj me uputio na tvoj blog jer sam ga pitao za savjet vezan uz RFID. Pregledao sam tvoj RFID kategoriju ali imam par pitanja na koja nisam našao odgovor.

Dakle, htio bih neki lako dostupan budget RFID reader te par tagova za testiranje. Interesantna mi je ideja praćenja vremena koliko je koji korisnik proveo u sustavu, a mislim da bi se to moglo riješiti RFIDem. Nemam iskustva s time no pregledao sam tvoj blog, odnosno RFID kategoriju i zapeo mi je za oko OpenPCD projekt, ali njihov webshop je nedostupan s porukom "The webshop is currently down for maintainance and will be open again on November 8th.". :/

Konkretno bih htio jednostavnu mogućnost čitanja i pisanja s RFID kartica tako da npr. mogu proizvoljno zapisivati vlastite ID brojeve na karticu. Ne znam koliko je sama sigurnost ključna za mali, osobni sustav. Našao sam par uređaja koji imaju tu mogućnost, npr ovaj:
125Khz RFID Reader Writer with RS232 port

Prema datasheet pdfu na tom siteu, uređaj se spaja preko RS232 porta i radi s Atmelovim T5557 tipom kartica:
PDF na Atmel siteu - T5557

Htio sam već naručiti ali sam se odlučio malo bolje raspitati. Ako sam u pravu, pomoću ovoga bi i početnik mogao napisati vlastitu aplikaciju na bilo kojem OSu i jeziku/biblioteci s pristupom RS232 portu, zar ne?

Da, to je jedan način da dodaš RFID u aplikaciju. Međutim, pravo pitanje je da li zapravo sa druge strane imaš RS232 port ili možda USB i želiš li zapravo pisati podršku za "neki RFID reader" (napisao sam podršku za dva, nije nešto ali oduzme tjedan dana vremena) ili je jednostavnije uzeti neki već gotovi library, npr libnfc i uzeti kompatibilni reader (npr. touchatag) i zapravo napisati samo nekoliko linija koda sa jednostavnog USB device-a.

Pisanjem podrške za RFID reader naučiti ćeš više o RFID-ju nego što si ikada želio znati, ali zapravo je pravi kriterij da li želiš RS232 ili USB :-)

Odlično! Puno hvala na odgovoru, pošteđen sam mučenja sa serijskim portom. Touchatag se stvarno čini kao najelegantnije rješenje, a libnfc primjer mi izgleda poprilično jednostavno.

Stvarno je šteta da postoji toliko puno raznog RFID hardvera, a praktički nijedno slobodno i standardno hardversko rješenje, jer iako znam da ne bih trebao imati nikakvih problema svejedno postoji ona sumnja "možda od jučer nenajavljeno prodaju ACR122 s nekom novom verzijom firmwarea". Eto, hvala puno još jednom, Bud me na pravo mjesto poslao.

Post a comment

(If you haven't left a comment here before, you may need to be approved by the site owner before your comment will appear. Until then, it won't appear on the entry. Thanks for waiting.)

About

This page contains a single entry from the blog posted on January 19, 2010 4:38 PM.

The previous post in this blog was Agile web development in 2010.

The next post in this blog is MongoDB - so you want fast NoSQL database which you can grok.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type 5.04