An open API service indexing awesome lists of open source software.

https://github.com/soixantecircuits/ofxnfcreader

ofxNFCReader is an openFrameworks addon to read nfc tags. It is based on libnfc.
https://github.com/soixantecircuits/ofxnfcreader

Last synced: 7 months ago
JSON representation

ofxNFCReader is an openFrameworks addon to read nfc tags. It is based on libnfc.

Awesome Lists containing this project

README

        

ofxNFCReader
=========

Copyright (c) 2013 Soixante circuits

MIT License.

For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "LICENSE.txt," in this distribution.

See https://github.com/soixantecircuits/ofxNFCReader for documentation as well as the [OF forums](http://forum.openframeworks.cc/index.php).

Description
-----------

ofxNFCReader is an openFrameworks addon to read nfc tags. It is based on [libnfc](http://nfc-tools.org).

It is under development.

It has been tested with a [ACR122 NFC reader](http://nfc-tools.org/index.php?title=ACR122) and ISO14443A tags.

It has been tested on linux mint, os x 10.8 and 10.6.

The roadmap is:

* write tags
* mutiple devices connected

openFrameworks is a cross platform open source toolkit for creative coding in C++.
[http://www.openframeworks.cc/](http://www.openframeworks.cc/)

Installation
------------

To use ofxNFCReader, first you need to download and install [Open Frameworks](https://github.com/openframeworks/openFrameworks).

To get a copy of the repository you can download the source from [http://github.com/soixantecircuits/ofxNFCReader](http://github.com/soixantecircuits/ofxNFCReader) or, alternatively, you can use git clone:


git clone git://github.com/soixantecircuits/ofxNFCReader.git

The addon should sit in `openFrameworks/addons/ofxNFCReader/`.

Running the Example Project
---------------------------

The example projects are in the `example` folder.

### OSX

Xcode3: Open the Xcode project and hit "Build and Run". You might want to choose "Release" instead of "Debug" for faster performance.

Xcode4: Open the Xcode project, select the "ofxNFCReaderExample" scheme, and hit "Run".

Since OS X Lion, the PC/SC Smartcard Daemon ([pcscd](https://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man8/pcscd.8.html)) recognizes NFC Reader and automatically starts a communication with it.

Therefore, if you see this in the console:

`error libnfc.driver.acr122_usb Unable to claim USB interface (Permission denied)`

It must be pcscd using your NFC Reader.
To claim the device for your program, you can kill the processus like this:

```
$ sudo launchctl list | grep pcscd
$ sudo kill -9 thePID
```

or use the oneliner:
`$ kill $(ps aux | grep '[p]cscd' | awk '{print $2}')`

### Linux

Install the libusb-1.0 library. On Ubuntu, you can do this with:


sudo apt-get install libusb-1.0-0-dev

Open the Code::Blocks .cbp and hit F9 to build. Optionally, you can build the example with the Makefile.

To run it, use the terminal:


make
cd bin
./example_debug

Also, you should create some udev rules in order to run the app without root privileges. As the root user, write this to `/etc/udev/rules.d/51-ACR122.rules` (this works on Ubuntu 10.10):


SUBSYSTEM=="usb", SYSFS{idVendor}=="072f", SYSFS{idProduct}=="2200", MODE="0660", GROUP="plugdev"

From Ubuntu 12.10 the correct settings for udev rules are:


SUBSYSTEM=="usb", ATTR{idVendor}=="072f", ATTR{idProduct}=="2200", MODE="0660", GROUP="plugdev"

### Windows
Not supported yet.

How to Create a New ofxNFCReader Project
-----------------------------------------

To develop your own project based on ofxNFCReader, simply copy the example project and rename it. You probably want to put it in your apps folder, for example, after copying:

`openFrameworks/addons/ofxNFCReader/example/ => openFrameworks/apps/myApps/example/`

Then after renaming:

`openFrameworks/apps/myApps/myProject/`

### Mac (Xcode):

Rename the project in Xcode (do not rename the .xcodeproj file in Finder!): XCode Menu->Project->Rename (Xcode3) / Slow double click the project name and rename (Xcode4)

### Codeblocks (Win & Linux):

Close Codeblocks and rename the *.cbp and *.workspace files to the same name as the project folder. Open the workspace and readd the renamed project file.

### Windows (Visual Studio):

Close Visual Studio and rename the *.sln file. Open the solution, right click on the project in the project broswer and select "Rename ...".

Adding ofxNFCReader to an Existing Project
---------------------------------------

If you want to add ofxNFCReader to another project, you need to make sure you include the src folder and the :


openFrameworks/addons/ofxNFCReader/src

as well as search paths for the libs (lbnfc, libusb) required by ofxNFCReader.

### Mac (Xcode):

In the Xcode project browser:

* add the ofxNFCReader sources to the project:
* create a new group "ofxNFCReader"
* drag these directories from ofxNFCReader into this new group: ofxNFCReader/src & ofxNFCReader/libs
* add a search path to the libusb headers: `../../../addons/ofxNFCReader/libs/libusb/include/libusb-1.0` to your project Target build settings
* Xcode3: under Targets->YourApp->Build->Header Search Paths (make sure All Configurations and All Settings are selected) and add the path
* Xcode4: add the lib path to your Project.xconfig, see the example
* add the path to the libusb precompiled library: `../../../addons/ofxNFCReader/libs/libusb/osx/libs/usb-1.0.a`
* Xcode3: under Targets->YourApp->Build->Library Search Paths (make sure All Configurations and All Settings are selected) and add the path
* Xcode4: add the lib path to your Project.xconfig, see the example

### Linux (Makefiles & Codeblocks):

Edit the Makefile config files:

* edit addons.make in your project folder and add the following line to the end of the file:

ofxNFCReader

* edit config.make in your project folder and change the lines for USER_LIBS to:

USER_LIBS = -lusb

Notes
-----

### Linux: Unable to claim USB interface

If you get an error like `Unable to claim USB interface` when executing `nfc-list`, follow these [instructions by Romuald Conty](http://web.archive.org/web/20131017062059/http://www.libnfc.org/community/post/3323/) (post number 3):

> On recent Linux kernel (>= 3.1) you need to prevent modprobe from autoload pn533 and nfc modules.
To do that, create /etc/modprobe.d/blacklist-libnfc.conf with this content:
```bash
blacklist pn533
blacklist nfc
```
Then, restart or unplug the device, unload modules (sudo modprobe -r pn533 nfc), then re-plug the devive.

### Using multiple NFC Readers
Not supported yet.

Troubleshooting
---------------

Developing ofxNFCReader
--------------------

Feel free to log bug reports and issues to the ofxNFCReader Github page: https://github.com/soixantecircuits/ofxNFCReader/issues

If you wish to help in ofxNFCReader development, please do!