NFC

Near-field communication (NFC) can be used for contactless exchange of data over short distances. Different approaches exist on Linux to support it:


 * libnfc: userspace implementation, but mostly for desktop (e.g. USB) readers
 * Android NFC HAL: doesn't really work outside Android, probably mostly proprietary implementations
 * Linux NFC subsystem: NFC abstraction in the (mainline) Linux kernel with support for many different (also embedded) NFC chips

For smartphones/embedded devices the Linux NFC subsystem is the most suitable one, because it can be set up normally in the device tree like other hardware. Unfortunately, the NFC subsystem has been somewhat unmaintained for quite some time, and especially the userspace portion of it: Neard.

However, the main problem when testing NFC is a lack of applications that can make use of the Linux NFC subsystem. If you know any useful applications, please add them here. Also note that there is support for NFC/Neard in Qt if you want to build an application that makes use of NFC yourself.

Devices with NFC support
If your device runs the mainline kernel, and has a NFC chip that is supported in mainline's Linux NFC subsystem it should be fairly easy to add it to the device tree. Check the available NFC device tree bindings for details. Otherwise, these devices in postmarketOS already support NFC to some extent:

Testing
At the moment there are not many useful applications for testing NFC. As a basic test, you can use  (from  ) to poll for devices:

If you hold some other NFC-capable device close to the NFC antenna, it should find a NFC tag and show it. Many chip cards nowadays have NFC, or maybe you can use another smartphone.

Reading NFC tags
For advanced usage you should start the Neard daemon. Neard then provides a DBUS API similar to BlueZ for Bluetooth that allows reading/writing NFC tags for example.

The easiest way to test it is using the Neard test scripts, for example with  and. Unfortunately Neard hasn't been updated for a long time so they still use Python 2, but there is an open pull request which you can use with Python 3

Upstream is looking for potential maintainers and testers of the Linux NFC subsystem, so if you would like to help, consider posting on the linux-nfc mailing list.