No description
Find a file
Olliver Schinagl e946f7a97a drivers: pn532_i2c: Errata on i2c timing
The datasheet is wrong for the pn532_i2c. After having constant issues
with the device failing to respond on the bus and after contacting NXP
about this, it turns out 1.3 ms is too tight. The official timing spec
is unknown for now, but we tested 4 and 5 ms without problems. Thus we
have choosen 5 ms as a safe delay.

Signed-off-by: Olliver Schinagl <oliver@schinagl.nl>
2016-12-06 11:40:56 +01:00
cmake Drop PCRE dependency. 2015-07-22 15:47:36 +02:00
contrib Match nfc.h 2016-12-05 13:11:45 +01:00
examples Fix nfc-poll card removing check (should be done only if a target has been found). 2015-08-02 16:16:19 +00:00
include Do not include extra header in nfc.h 2015-08-19 11:47:22 +02:00
libnfc drivers: pn532_i2c: Errata on i2c timing 2016-12-06 11:40:56 +01:00
m4 I2C: remove unneeded I2C_DRIVERS_ENABLED 2013-06-15 00:20:04 +02:00
test Fix cppcheck warning: The scope of the variable X can be reduced. 2013-04-05 14:38:03 +02:00
utils nfc-mfultralight: also set failure state on uid write error 2016-05-13 14:44:07 +02:00
.gitignore Git: ignore generated files 2015-05-18 20:43:32 +02:00
.travis.yml Add travis config file 2015-09-01 09:33:06 +02:00
AUTHORS Update ChangeLog & AUTHORS 2014-02-18 15:40:22 +01:00
ChangeLog Fix out-of-bounds access in nfc-mfultralight unveiled by coverity scan: 2014-04-14 23:29:18 +02:00
CMakeLists.txt Fixed file name "README" in cmakelists.txt 2016-11-20 20:32:25 +03:00
configure.ac tell Automake that we will not follow GNU Standards 2016-05-03 10:53:55 +02:00
COPYING Add LICENSE and README files to releases produce by make_release.sh script. 2009-06-26 09:22:26 +00:00
Doxyfile.in Remove last SVN cruft 2012-11-27 18:56:54 +01:00
HACKING.md Added Markdown to HACKING file 2016-04-08 11:02:40 +02:00
libnfc.conf.sample Fix typo in libnfc.conf.sample 2013-04-30 21:48:33 +02:00
libnfc.pc.in Sync libnfc.pc includedir with the rest of the project source files. 2009-12-22 21:02:19 +00:00
make_release.sh Fix version fetch using make_release.sh 2013-01-15 18:16:56 +01:00
Makefile.am I2C: add i2c to cppcheck 2013-06-15 00:37:08 +02:00
manual-test-results.txt add some manual test reports. 2011-05-05 16:03:09 +00:00
mingw-cross-configure.sh Improves mingw-cross-configure.sh script using patch provided by Frank Morgner, thanks! 2012-12-05 18:27:40 +01:00
NEWS.md Changed a few README Markdown files to the .md extension so GitHub 2016-04-07 13:52:12 +02:00
README-Windows.md Added Markdown to HACKING file 2016-04-08 11:02:40 +02:00
README.md Added more Markdown formatting to README 2016-04-08 10:52:25 +02:00

*-
* Free/Libre Near Field Communication (NFC) library
*
* Libnfc historical contributors:
* Copyright (C) 2009      Roel Verdult
* Copyright (C) 2009-2015 Romuald Conty
* Copyright (C) 2010-2012 Romain Tartière
* Copyright (C) 2010-2013 Philippe Teuwen
* Copyright (C) 2012-2013 Ludovic Rousseau
* Additional contributors:
* See AUTHORS file
-*

General Information

libnfc is a library which allows userspace application access to NFC devices.

The official web site is: http://www.nfc-tools.org/

The official forum site is: http://www.libnfc.org/community/

The official development site is: https://github.com/nfc-tools/libnfc

Important note: this file covers POSIX systems, for Windows please read README-Windows.txt

Requirements

Some NFC drivers depend on third party software:

The regression test suite depends on the cutter framework: http://cutter.sf.net

Installation

See the file INSTALL for configure, build and install details.

Additionnally, you may need to grant permissions to your user to drive your device. Under GNU/Linux systems, if you use udev, you could use the provided udev rules. e.g. under Debian, Ubuntu, etc.

sudo cp contrib/udev/42-pn53x.rules /lib/udev/rules.d/

Under FreeBSD, if you use devd, there is also a rules file: contrib/devd/pn53x.conf.

Configuration

In order to change the default behavior of the library, the libnfc uses a configuration file located in sysconfdir (as provided to ./configure).

A sample commented file is available in sources: libnfc.conf.sample

If you have compiled using:

./configure --prefix=/usr --sysconfdir=/etc

you can make configuration directory and copy the sample file:

sudo mkdir /etc/nfc
sudo cp libnfc.conf.sample /etc/nfc/libnfc.conf

To configure multiple devices, you can either modify libnfc.conf or create a file per device in a nfc/devices.d directory:

sudo mkdir -p /etc/nfc/devices.d
printf 'name = "My first device"\nconnstring = "pn532_uart:/dev/ttyACM0"\n' | sudo tee /etc/nfc/devices.d/first.conf
printf 'name = "My second device"\nconnstring = "pn532_uart:/dev/ttyACM1"\n' | sudo tee /etc/nfc/devices.d/second.conf

How to report bugs

To report a bug, visit https://github.com/nfc-tools/libnfc/issues and fill out a bug report form.

If you have questions, remarks, we encourage you to post this in the developers community: http://www.libnfc.org/community

Please make sure to include:

  • The version of libnfc

  • Information about your system. For instance:

    • What operating system and version
    • For Linux, what version of the C library

    And anything else you think is relevant.

  • A trace with debug activated.

    Reproduce the bug with debug, e.g. if it was:

      $ nfc-list -v
    

    run it as:

      $ LIBNFC_LOG_LEVEL=3 nfc-list -v
    
  • How to reproduce the bug.

    Please include a short test program that exhibits the behavior. As a last resort, you can also provide a pointer to a larger piece of software that can be downloaded.

  • If the bug was a crash, the exact text that was printed out when the crash occured.

  • Further information such as stack traces may be useful, but is not necessary.

Patches

Patches can be posted to https://github.com/nfc-tools/libnfc/issues

If the patch fixes a bug, it is usually a good idea to include all the information described in "How to Report Bugs".

Building

It should be as simple as running these two commands:

./configure
make

Troubleshooting

Touchatag/ACR122:

If your Touchatag or ACR122 device fails being detected by libnfc, make sure that PCSC-lite daemon (pcscd) is installed and is running.

If your Touchatag or ACR122 device fails being detected by PCSC-lite daemon (pcsc_scan doesn't see anything) then try removing the bogus firmware detection of libccid: edit libccid_Info.plist configuration file (usually /etc/libccid_Info.plist) and locate <key>ifdDriverOptions</key>, turn <string>0x0000</string> value into 0x0004 to allow bogus devices and restart pcscd daemon.

ACR122:

Using an ACR122 device with libnfc and without tag (e.g. to use NFCIP modes or card emulation) needs yet another PCSC-lite tweak: You need to allow usage of CCID Exchange command. To do this, edit libccid_Info.plist configuration file (usually /etc/libccid_Info.plist) and locate <key>ifdDriverOptions</key>, turn <string>0x0000</string> value into 0x0001 to allow CCID exchange or 0x0005 to allow CCID exchange and bogus devices (cf previous remark) and restart pcscd daemon.

Warning: if you use ACS CCID drivers (acsccid), configuration file is located in something like: /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist

SCL3711:

Libnfc cannot be used concurrently with the PCSC proprietary driver of SCL3711. Two possible solutions:

  • Either you don't install SCL3711 driver at all
  • Or you stop the PCSC daemon when you want to use libnfc-based tools

PN533 USB device on Linux >= 3.1:

Since Linux kernel version 3.1, two kernel-modules must not be loaded in order to use libnfc : "nfc" and "pn533". To prevent kernel from loading automatically these modules, you can blacklist them in a modprobe conf file. This file is provided within libnfc archive:

sudo cp contrib/linux/blacklist-libnfc.conf /etc/modprobe.d/blacklist-libnfc.conf

Proprietary Notes

FeliCa is a registered trademark of the Sony Corporation. MIFARE is a trademark of NXP Semiconductors. Jewel Topaz is a trademark of Innovision Research & Technology. All other trademarks are the property of their respective owners.