NFC device compatibility and stability issues explained

NFC operates by using electromagnetic fields to enable communication between devices. It works in two modes: active mode and passive mode. In active mode, both devices generate their own electromagnetic fields to communicate with each other. In passive mode, one device generates the electromagnetic field, and the other device uses that field for communication. Passive NFC devices, such as NFC programmable TOTP tokens or NFC-enabled security keys, rely on an external electromagnetic field to power the chip and enable communication. These devices do not generate their own electromagnetic field. All Token2 devices with NFC operate in passive mode, therefore the aspects covered in this article are important

NFC Devices compatible with Token2 Burner apps

Token2 programmable tokens can be seeded and configured using one of our burner apps, currently available under Windows, iOS (iPhones only), and Android platforms. The only requirement for the burner apps to operate is having an NFC chip. While the majority of  Android devices (including phones and tablets) are equipped with an NFC module, the laptops running Windows are rarely equipped with a built-in NFC module. So far we were able to test and confirm the compatibility with the Windows burner app with the following model(s):

  • Dell Latitude 7480

With laptops without built-in NFC modules, external USB NFC readers should be used for the Windows version of the NFC Burner. We successfully tested the following models:

Python version of the NFC Burner -

We also have a python script to program and configure the second generation NFC-programmable single-profile TOTP hardware tokens using nfcpy python library. It works under Linux, macOS and Windows. Python version can currently work  with the StickID NFC Writer only.

A note on the NFC link stability issues with Token2 programmable tokens

The text below does not apply to iOS devices. The user experience with iPhones is way better, there is even no need to touch, approaching by 1-2 cm is enough to “catch” the signal. Apparently, the NFC hardware of modern iPhones is way better than the NFC chips of any other device.

A few of the customers have reported NFC connectivity issues when using some Android devices which makes the burning process a little troublesome. This behavior with the link breaking can certainly occur with NFC, it's just the nature of the technology with such a short-range wireless communication. This is especially true at relatively higher bit rates where packets can get lost or corrupted easier (i.e. during the burn process).  NFC was chosen as a method to control the programmable tokens because NFC equipment is relatively cheap, easy to find, and consumes less power compared to others (BLE, Wifi etc.). But the protocol  (or to be entirely correct, a set of protocols) NFC is based on, was originally meant to be used primarily in contactless payment systems (or similar), where a powered device (i.e. a payment terminal) and a powerless card (i.e. a credit card or a transport card) are communicating with each other for a very short amount of time. The concept of data exchange is obviously different with NFC programmable tokens.  On top of that the NFC antenna used in our products even thinner and more miniature than, for instance, NFC tags to allow keeping the dimensions of the tokens as small as possible.  Another inconvenience that plagues the burning process is that with the wide variety of Android phones comes many different locations for the NFC chip — and thereby some frustrating experiences when users don't find it. On one device it might be located at the top, another in the center, and another at the bottom.

In theory, any Android phone with NFC should work, (as there are now more than 24,000 different Android devices, and we are not in a position to test all of them). We have been receiving reports about Google Pixel and Nexus being unstable when burning the tokens, and are still investigating the issue. We have tested a couple of other phone models in our lab and compared with Google Pixel and Google Nexus and can confirm that the NFC behavior is different. Here is what we have right now in our lab that we confirm are working without any issues: Samsung Galaxy A50, Samsung Galaxy A60,  Samsung Galaxy S20,  Samsung Galaxy Note 20,  OnePlus 8 Pro, Nokia 3 TA-1032, Nokia 5.1, Xiaomi Redmi 9C NFC.  The recommendations below apply to other brands. 

Here is something to keep in mind when using our NFC burner apps:

1) It's important that the NFC area on the token is touching the NFC area on the writer device (NFC module or the phone/tablet's NFC chip) when programming the token. Check the manufacturer's website to find the exact location of the NFC module, as this may vary significantly. See the example below showing NFC detection areas of a few Samsung phones. A full list is available here.
[Samsung NFC screenshot]

2) Turn off and on the token and try again by removing and placing the device back onto the NFC area

3) Verify if the NFC link is successfully established. Android devices produce specific sounds (depending on the model etc.) during establishing NFC links, these sounds are different for successful and unsuccessful attempts. 

With USB NFC modules, the established NFC links are indicated by a green LED indicator.  With ACR122, for example, a successfully established link is indicated by a green led flashing once and then turning off after a couple of seconds; while with unsuccessful links the led is turning red.

It is also important to mention that NFC operations (both read and write) consume a significant amount of power, therefore please do not keep the tokens near NFC chips (Android devices or NFC modules) even if the apps are not running.