libnfc is a constantly moving target, and due to the frequent changes from one version to the next we aren't able to offer libnfc support ourselves for the PN532. We can only guarantee support and working code for the Arduino codebase that we maintain ourselves. The information below is our best attempt at helping you get started with libnfc and the PN532 breakout, but it may require a bit of poking and prodding on your own depending on the library version and platform you are working with. libnfc use is, unfortunately, at your own discretion.

Using the PN532 Breakout Boards with libnfc

libnfc is a mature, cross-platform, open-source NFC library that can be easily configured to work with the PN532 Breakout Board. While Linux is probably the easiest platform to use libnfc with, it can be configured for the Mac and Windows as well, though you may need to dig around on the libnfc Community Forums for some specific details on compiling .dlls for Windows, etc.

If you want to test the PN532 Breakout Board out with libnfc, this simple tutorial should walk you through the absolute basics of compiling and configuring libnfc, and using some of the canned example SW included in the library.
This is only for using the PN532 breakout with an FTDI cable or FTDI Friend to a proper computer. You cannot run LIbNFC on an Arduino or other microcontroller

libnfc In Linux (Ubuntu 10.10 used in this example)

Step One: Download libnfc

Download the latest version of libnfc from Google Code (ex. "libnfc-1.4.1.tar.gz") and extract the contents of the file as follows:
  $ wget http://libnfc.googlecode.com/files/libnfc-x.x.x.tar.gz
  $ tar -xvzf libnfc-x.x.x.tar.gz
  $ cd libnfc-x.x.x

Step Two: Configure libnfc for PN532 and UART

libnfc currently only supports communication over UART, using any inexpensive USB to UART adapter like the FTDI Friend or a TTL FTDI cable. Before compiling, however, you will need to configure libnfc to include support for UART and the PN532 chipset, which can be done with the following commmand (executing in the folder where the above archive was unzipped):
  $ ./configure --with-drivers=pn532_uart --enable-serial-autoprobe
Note: If you also wish to include debug output, you can add the '–enable-serial-autoprobe' flag (minus the single quotes) to the configure options

Step Three: Build and install libnfc

You can build and install libnfc with the following three commands, also run from the folder where the original archive was unzipped:
  $ make clean
  $ make
  $ make install

Step Four: Check for installed devices

Now that libnfc is (hopefully) built and installed, you can run the 'nfc-list' example to try to detect an attached NFC board. Make sure the board is connected to the FTDI or USB/UART adapter, and that it is connected to your PC, and run the following commands:
  $ cd examples
  $ ./nfc-list
This should list the devices that were detected

Step Five: Poll for an ISO14443A (Mifare, etc.) Card

Next, you can use the 'nfc-poll' example to wait 30 seconds for an ISO14443A card or tag and display some basic information about this card. In the examples folder that we changed to above, run the following command:
  $ ./nfc-poll
This should give you some basic information on any card that entered the magnetic field within the specified delay.

libnfc With Mac OSX Lion

scott-42 was kind of enough to post some tips on getting libnfc working on a Mac using an FTDI adapter. A couple simple changes to the code were required (as of v1.6.0-rc1), with the details here.

Keeping in mind the code changes mentionned above, the following steps should get libnfc compiling and working via an FTDI type adapter and UART on Lion (using libnfc 1.6.0_rc1):

Download and build libnfc and configure if for PN532 UART (making the code changes above before running make):

  wget http://libnfc.googlecode.com/files/libnfc-1.6.0-rc1.tar.gz
  tar -xvzf libnfc-1.6.0-rc1.tar.gz
  cd libnfc-1.6.0-rc1
  ./configure --with-drivers=pn532_uart --enable-serial-autoprobe
  sudo make
  sudo make install

If everything worked out, switch to the examples folder and see if you can find the PN532 and wait for an appropriate tag:

  cd examples
  Kevins-Mac-mini:examples kevin$ ./nfc-poll
  /Users/kevin/libnfc-1.6.0-rc1/examples/.libs/nfc-poll uses libnfc 1.6.0-rc1 (r1326)
  NFC reader: pn532_uart:/dev/tty.usbserial-FTE5WWPB - PN532 v1.6 (0x07) opened
  NFC device will poll during 30000 ms (20 pollings of 300 ms for 5 modulations)
  ISO/IEC 14443A (106 kbps) target:
      ATQA (SENS_RES): 00  04  
         UID (NFCID1): 3e  b9  6e  66  
         SAK (SEL_RES): 08
There are some dependencies to get libnfc running, but since it isn't an Adafruit project and we can't really support it directly ourselves, you will probably have better luck looking at the libnfc forums for Mac support. There are a few active users developping on the Mac.

This guide was first published on Dec 30, 2012. It was last updated on Mar 18, 2024.

This page (Using with LibNFC) was last updated on Nov 29, 2012.

Text editor powered by tinymce.