redesign autoconf/automake infrastructure to support
[librfid] / README
1 librfid - low-level RFID access library
2 (C) 2005-2006 by Harald Welte <laforge@gnumonks.org>
3 ======================================================================
4
5 This library intends to provide a reader- and (as much as possible)
6 PICC / tag independent API for RFID applications.
7
8 1. Supported Prodocols:
9
10 At this early stage of implementaition, it offers only ISO 14443-2, ISO 14443-3
11 A and B as well as ISO 14443-4 (T=CL) support.  Other protocols, both open
12 (such as ISO 15693) and proprietary are to be added as soon as I find some
13 more time.
14
15 2. Supported Readers:
16
17 At this time, the Omnikey Cardman 5121 and the OpenPCD readers are supported. 
18
19 2.1 Omnikey Cardman 5121 RFID (http://www.omnikey.de/)
20
21 The cm5121 is a relatively stupid piece of hardware.  Basically a contact-based
22 cm3121 that was enhanced by putting a Philips CL RC632 reader ASIC next to it.
23 There is no RFID protocol implementation on the cm5121, everything is done on
24 the host (PC) software.  Four primitives (read/write byte/fifo) are provided
25 via simple PC_to_RDR_Escape CCID messages.
26
27 2.2 OpenPCD (http://www.openpcd.org/)
28
29 The OpenPCD reader is completely free.  You get the full schematics, the PCB
30 design, the source code to the device firmware (written in C, to be compiled
31 with the free GNU toolchain).
32
33 Also, it has various headers for access to the intermediate signal processing
34 steps.
35
36 This makes it the ideal device to learn and play with RFID, since you don't
37 have any (proprietary) software interfere and puts you in full control of
38 everything.
39
40 2.3 Philips Pegoda
41
42 This reader is not yet supported.
43
44
45 2.x Further Readers
46
47 Support for more devices shouldn't be too difficult to add, provided the
48 devices are stupid enough.  More sophisticated readers like Integrated
49 Engineering or Philips Pegoda do much of the protocol handling in firmware on a
50 Microcontroller.  This makes them (at least till now) faster, but also of
51 limited use, especially in education and research.
52
53 So if you happen to run into any other dumb RFID readers, especially those
54 based on Philips CL RC622, RC531 and RC632, adding support should be very
55 straightforward.  If you want to contract me for implementing a driver
56 backend, don't hesitate to contact me.
57
58
59 3. Building / Installing
60
61 In the default configuration, librfid only includes the driver for the OpenPCD
62 dumbreader firmware.
63
64 If you want support for Omnikey Cardman 5121/5321, you have to add
65 '--enable-reader-cm5x21' to the './configure' comannd, _and_ choose the backend
66 you want to use, either:
67
68 3.1 (new) native CCID backend
69
70 If you add the '--enable-ccid' option to the './configure' command, then the new
71 native CCID driver (courtesy of Werner Koch) will be linked into the library.
72 This requires a working libusb with development headers.  
73
74 In order to use the reader, you will need to set the permissions of the
75 respective /proc/bus/usb or /sys/bus/usb files (or run the application as
76 root, if you trust my code, which you shouldn't).
77
78 If you run udev, just use the 'etc/udev/librfid.rules' udev rulefile, which should
79 change the group of the usb device to 'users'.
80
81 3.2 (old) OpenCT backend
82
83 This backend has the advantage that it will allow you to use the contact-based
84 part and the contactless part of the CM5121 simultaneously.  However, it requires
85 a patched version of OpenCT.
86
87 A patch against openct-0.6.7 is available as openct-0.6.7-librfid.patch.
88
89 Please note that while librfid in this configuration _uses_ OpenCT as a
90 lower-layer transport interface, it doesn't actually provide a virtual reader
91 interface to it, i.e. you can't use CT-API/OpenCT/PCSC API's to access RFID
92 transponders.
93
94 In order to use this backend, you need to use the
95 '--with-openct=/path/to/openct' option.
96
97
98 4. Testing
99
100 In the 'utils' directory, you will get a 'librfid-tool' binary.  It is very
101 minimalistic, and mainly an example on how to use the librfid api. For an ICAO
102 compliant passport, you may try "--layer2 iso14443a --protocol tcl".  For a
103 mifare ultralight transponder, "--layer2 iso14443a --protocol
104 mifare-ultralight" will give you a full dump of the transponder.
105
106 -- Harald Welte <laforge@gnumonks.org>
107