1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
# nfc-binding
Binding to handle NFC devices and tags.
It currently use the libnfc, but we would like to support neard.
Unfortunatly, neard seem not mature enough right now.
# Devices and Tags compatibilities
Those tags were tested with both SCL3711 (pn533) and ACS122U (pn532).
ACS122U is currently not working using neard and have also some issues with libnfc.
Expect random error, but seem to stay stable and working.
|Tag type |Protocol |libnfc|neard|
|---------------------------|----------------|------|-----|
|Alien H3 + FM1108 |ISO/IEC 14443A |yes |no² |
|FM1108 |ISO/IEC 14443A |yes |no² |
|Hitag2 |ISO/IEC 14443A |yes |no |
|Mifaire Ultralight |ISO/IEC 14443A |yes |yes |
|Mifare 1K S50 |ISO/IEC 14443A |yes |no² |
|Mifare Plus S2K |ISO/IEC 14443A |yes |no² |
|Mifare Desfire D41 |ISO/IEC 14443A |yes |yes |
|NTag 213 |ISO/IEC 14443A |yes |yes |
|Hellfest Cashless |ISO/IEC 14443A |yes |no² |
|French biometric passeport¹|ISO/IEC 14443A |yes |no² |
|French Credit Card |ISO/IEC 14443-4B|yes |no² |
|Alien H3 |N/A |no |no |
|Alien H3 9654 |N/A |no |no |
|Alien H3 9662 |N/A |no |no |
|Alien H3 + TK4100 |N/A |no |no |
|EM4450 |N/A |no |no |
|ICODE SLI |N/A |no |no |
|Picopass 2KS |N/A |no |no |
|SRI512 |N/A |no |no |
|Tag-it HF-I (TI2048) |N/A |no |no |
|TK4100 |N/A |no |no |
¹ UID is randomly generated so the tag is detected as a new one on each poll.
² Polling is stopped at detection but no tag is exposed.
# UDev rules
You may want to add some UDev's rule for nfc device to make things easier.
You can put those lines into /etc/udev/rules.d/99-nfc.rules
```Shell
ACTION!="add", GOTO="nfc_pn53x_end"
# Advanced Card Systems, Ltd ACR122U
ATTRS{idVendor}=="072f", ATTRS{idProduct}=="2200", MODE="0666", SYMLINK+="nfc%n"
# SCM Microsystems, Inc. SCL3711-NFC&RW
ATTRS{idVendor}=="04e6", ATTRS{idProduct}=="5591", MODE="0666", SYMLINK+="nfc%n"
LABEL="nfc_pn53x_end"
```
# Kernel module
The SCL3711 is supported by the kernel and neard, so it takes the device and prevent the libnfc to use it.
If you have an error saying that the device is busy, it's probably the reason why.
You have to unload nfc kernel modules to get it work using libnfc.
```ShellSession
root@localhost# rmmod pn533_usb
root@localhost# rmmod pn533
root@localhost# rmmod nfc
```
To make it permanent you can add this file: /etc/modprobe.d/blacklist-nfc.conf
```
blacklist nfc
blacklist pn533
blacklist pn533_usb
```
# Compilation option
* USE_LIBNFC - Enable or disable the 'libnfc' usage. Default is ON.
* LIBNFC_POLL_ALL Enable all modulation when polling. Default is OFF.
* LIBNFC_POLL_NMT_ISO14443A - Enable ISO-14443A modulation when polling. Default is ON.
* LIBNFC_POLL_NMT_ISOJEWEL - Enable ISO-JEWEL modulation when polling. Default is OFF.
* LIBNFC_POLL_NMT_ISO14443B - Enable ISO-14443B modulation when polling. Default is OFF.
* LIBNFC_POLL_NMT_ISO14443BI - Enable ISO-14443BI modulation when polling. Default is OFF.
* LIBNFC_POLL_NMT_ISO14443B2SR - Enable ISO-14443B2SR modulation when polling. Default is OFF.
* LIBNFC_POLL_NMT_ISO14443B2CT - Enable ISO-14443B2CT modulation when polling. Default is OFF.
* LIBNFC_POLL_NMT_FELICA - Enable Felica modulation when polling. Default is OFF.
|