Near Field Communication (NFC) Introduction and Software Development
Android 2.3 features near field communication (NFC) in order to allow payment through your phone as it is already implemented in Japan with FeliCa (Felicity Card), a contactless RFID smart card system from Sony, direct communication between NFC devices, RFID reader, etc… NFC is already supported in Samsung / Google Nexus S.
In this blog post, we’ll see what near field communication is, which hardware is needed and what needs to be done at the software level (driver and NFC stack).
What is Near Field Communication ?
Extract from Wikipedia:
Near Field Communication or NFC, is a short-range high frequency wireless communication technology which enables the exchange of data between devices over about a 10 centimeter (around 4 inches) distance. The technology is a simple extension of the ISO/IEC 14443 proximity-card standard (proximity card, RFID) that combines the interface of a smartcard and a reader into a single device. An NFC device can communicate with both existing ISO/IEC 14443 smartcards and readers, as well as with other NFC devices, and is thereby compatible with existing contactless infrastructure already in use for public transportation and payment. NFC is primarily aimed at usage in mobile phones.
ISO/IEC 14443 standard entitled “Identification cards — Contactless integrated circuit cards — Proximity cards” is composed of 4 parts:
- ISO/IEC 14443-1:2008 (2nd Edition) – Part 1: Physical characteristics
- ISO/IEC 14443-2:2010 (2nd Edition) – Part 2: Radio frequency power and signal interface
- ISO/IEC 14443-3:2010 – Part 3: Initialization and anticollision
- ISO/IEC 14443-4:2008 (2nd Edition) – Part 4: Transmission protocol
For a full list of documents including previous versions and amendments, please go to ISO/IEC 14443, Proximity cards (PICCs) section of Working Group 8.
Actually, ISO/IEC 14443 is just one of the standard supported by NFC, you can also download the following NFC specific documents (PDF format) after registering with NFC Forum:
- NFC Data Exchange Format (NDEF) Technical Specification
- NFC Record Type Definition (RTD) Technical Specification
- NFC Text Record Type Definition Technical Specification
- NFC URI Record Type Definition Technical Specification
- NFC Smart Poster Record Type Definition Technical Specification
- NFC Forum Type 1 Tag Operation Specification
- NFC Forum Type 2 Tag Operation Specification
- NFC Forum Type 3 Tag Operation Specification
- NFC Generic Control Record Type Definition Technical Specification
- Logical Link Control Protocol Technical Specification
- NFC Connection Handover 1.2 Technical Specification
- NFC Activity Technical Specification
- NFC Digital Protocol Technical Specification
- NFC Signature Record Type Definition Technical Specification
- NFC Forum Type 4 Tag Operation Specification 2.0
Which hardware is required for Near Field Communication ?
In order to support NFC in your device you’ll need a NFC controller such as NXP PN544 used in the Nexus S. Other NFC controllers include Broadcom BCM20203, Renesas RF21S, Samsung S3FHRN2 (Mass Production 2011), ST Microelectronics ST21 / ST21NFCA…
For development board, NXP manufactured a reference board OM5596 (Order number: 12NC 9352 900 17699) that can be purchased at one of NXP distributors.
You can also check out NXP PN544 Product Brief for further details.
NFC Software development: drivers and software stack
For NFC development, you may start from what has been done for NXP PN544.
If you order NXP NFC devkit with OM5596 reference board, you’ll also get the data sheet, a user manual, and an application note, along with drivers, source code and
examples in Windows and Linux. A reference implementation for the NFC Forum’s protocol stack is also provided
If you want to try on your own:
Here’s a patch to add NXP PN544 driver to the Linux kernel.
An open source NFC Protocol Stack will be officially released by Google/NXP in the near future. This NFC stack with be certified for Android 2.3 (Gingerbread).
You might also want to work with the open source NFC stack available at libnfc.org although it seems only compatible with NXP PN53x devices. The latest stable version can be downloaded at http://code.google.com/p/libnfc/downloads/list or you can check out the latest development version:
svn checkout http://libnfc.googlecode.com/svn/trunk/ libnfc-read-only
The API document is available at http://www.libnfc.org/api
What’s next ?
If you want to see a list of potential applications and how NXP envisions the NFC market in the years ahead, please download and read Near Field Communication World Asia 2010 Presentation by NXP.