add information about our own udev rules file to README
[librfid] / README
1 librfid - low-level RFID access library
2 (C) 2005 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 more
13 time.
14
15 2. Supported Readers:
16
17 At this time only the Omnikey Cardman 5121 reader is supported. 
18
19 The cm5121 is a relatively stupid piece of hardware.  Basically a contact-based
20 cm3121 that was enhanced by putting a Philips CL RC632 reader ASIC next to it.
21 There is no RFID protocol implementation on the cm5121, everything is done on
22 the host (PC) software.  Four primitives (read/write byte/fifo) are provided
23 via simple PC_to_RDR_Escape CCID messages.
24
25 This makes it the ideal device to learn and play with RFID, since you don't
26 have any (proprietary) software interfere and puts you in full control of
27 everything.
28
29 Support for more devices shouldn't be too difficult to add, provided the
30 devices are stupid enough.  More sophisticated readers like Integrated
31 Engineering or Philips Pegoda do much of the protocol handling in firmware on a
32 Microcontroller.  This makes them (at least till now) faster, but also of
33 limited use, especially in education and research.
34
35 So if you happen to run into any other dumb RFID readers, especially those
36 based on Philips CL RC531 and RC632, adding support should be very
37 straightforward.  If you want to contract me for implementing a driver backend,
38 don't hesitate to contact me.
39
40 3. Installation
41
42 In order to run librfid, you need a reader transport backend that provides a
43 PC_to_RDR_Escape function.  The current version of this library offers two backends
44
45 3.1 (new) native CCID backend
46
47 If you add the '--with-ccid' option to the './configure' command, then the new
48 native CCID driver (courtesy of Werner Koch) will be linked into the library.
49 This requires a working libusb with development headers.  
50
51 In order to use the reader, you will need to set the permissions of the respective
52 /proc/bus/usb or /sys/bus/usb files (or run the application as root, if you
53 trust my code, which you shouldn't).
54
55 If you run udev, just use the 'etc/udev/librfid.rules' udev rulefile, which should
56 change the group of the usb device to 'users'.
57
58 3.2 (old) OpenCT backend
59
60 This backend has the advantage that it will allow you to use the contact-based
61 part and the contactless part of the CM5121 simultaneously.  However, it requires
62 a patched version of OpenCT.
63
64 A patch against openct-0.6.7 is available as openct-0.6.7-librfid.patch.
65
66 Please note that while librfid in this configuration _uses_ OpenCT as a
67 lower-layer transport interface, it doesn't actually provide a virtual reader
68 interface to it, i.e. you can't use CT-API/OpenCT/PCSC API's to access RFID
69 transponders.
70
71 4. Testing
72
73 In the 'utils' directory, you will get a 'librfid-tool' binary.  It is very
74 minimalistic, and mainly an example on how to use the librfid api. For an ICAO
75 compliant passport, you may try "--protocol tcl".  For a mifare ultralight transponder,
76 "--protocol mifare-ultralight" will give you a full dump of the transponder.
77
78 -- Harald Welte <laforge@gnumonks.org>
79