[[PageOutline]] = Near Field Communication (NFC) = Near Field Communication (NFC) is a short range wireless technology used commonly today in smartphones and point of sale (POS) terminals. It's primary features when comparing with other wireless technologies are: * operates at 13.56MHz * data rates from 106kbps to 424kbps * range of about 4cm * modes: tag read/write, card emulation, peer to peer (LLCP) (OBEX over LLCP / IP over LLCP) * differs from RFID: there is an intersection between the two (TAG read/write and 13.56MHz RFID same) but they differ in several areais (RFID uses many frequencies and lacks P2P and card emulation) An NFC carrier emitted from a device can inductively power another device. This is the technique used when reading/writing passive tags. References: * http://www.androidauthority.com/what-is-nfc-270730/ * http://www.androidauthority.com/how-to-use-nfc-android-164644/ * http://elinux.org/images/d/d1/Near_Field_Communication_with_Linux.pdf * http://elinux.org/images/a/a9/Elce11_venancio_ortiz.pdf == NFC Controller Interface (NCI) == The NFC Controller Interface (NCI) specification is a device level specification that defines the interface between an NFC Controller (NFCC) and a Device Host (DH). It was created as a common ground between NFC controllers and software much like the Bluetooth HCI and USB EHCI specifications. Modern NFC controller typically implements NCI in hardware/firmware. == Linux == The Linux NFC Subsystem is described well at * ​http://elinux.org/images/d/d1/Near_Field_Communication_with_Linux.pdf * http://elinux.org/images/a/a9/Elce11_venancio_ortiz.pdf == Android == The Android OS has had NFC support since Android 4.0 Ice Cream Sandwich which also debuted the 'Android Beam' functionality. Starting with Android 5.0 Lollipop Android supports the NCI specification making hardware interoperability a bit easier. A Hardware Abstraction Layer exists to allow relaying the NCI protocol to the OS driver/hardware layer. == Hardware == Commonly used NFC controller hardware: * NXP PN544 * NXP PN7120/PN7150 * Marvell MV8887 * Broadcom BCM2079x