What is NFC ?
NFC stands for Near Field Communication. It is a short-range (a few inches/centimeters) radio technology that enables communication between devices that either touch or are momentarily held close together. NFC is an open technology standardized by the NFC Forum. It is based on RFID. The major NFC use cases are:
- Tag reading: An NFC device reads static data from an NFC tag. Tags are un-powered and passive NFC items and can contain small amount of data, typically a URL, or some advertisement data.
- Peer to peer: Two NFC devices exchange data by touching. Typically, 2 NFC enabled phones getting close together to almost instantly exchange short chunks of data like contact details or a URL to be shared.
NFC peer to peer mode can also be used to initiate a data carrier handover in order to exchange large amount of data. For example NFC can be used to quickly initiate a Bluetooth pairing between 2 mobile phones and then use the faster and higher bandwidth Bluetooth link to exchange videos, pictures or to open an audio stream.
- Payments: An NFC enabled phone pretends to be an NFC tags and exports payment credentials that will be securely read by an NFC point of sale. In that scenario, the NFC chipset gets the payment credentials from a hardware secured storage area called the secure element. Secure elements can be embedded within the NFC chipset or found in external devices, typically SIM cards.
The Linux NFC project
The Linux NFC project aims at providing a complete, open source and HW independent NFC support for Linux. There are currently several NFC open source stacks, all of them with various shortcomings like limited HW support, non standard APIs or lack of community support. Our project goal is to fix that by:
- Supporting as many NFC HW designs as we can, be it HCI, NCI or USB based.
- Providing a native socket and netlink based architecture.
- Providing a fully GPLv2 NFC stack.
- Building a Linux NFC community and working in the open.
Getting the code
The Linux NFC stack is divided into 2 parts:
- The NFC kernel implementation. It is part of the vanilla Linux kernel since the 3.1 release, and the NFC userspace daemon, also known as neard.
- An optional part could be used: NeardAL which is an abstraction library providing a complete C abstraction for the underlying NFC daemon (a.k.a. neard) for developers that don't want to use the neard D-Bus API directly.
- You can find a "How to" here
How to contact us
Please visit our get involved page and use our IRC channel, mailing list, and source repositories to contact us and contribute to the project.