How to use NFC in a tablet without a built-in reader

Enabling NFC applications on tablets without built-in NFC capability

Sep 25, 2018 - 10 minute read

The all-in-one nature and large touch screens offered by tablets at very reasonable price points make them a very appealing option for many of uses - displaying product information microsites, powering brand activation points, and simply being the brains behind kiosks of all varieties. Unfortunately, while these tablets offer many connectivity options and plenty of sensors, one thing they often forgo is NFC capability. Further, even if the tablet does have NFC, using it often requires the tag to be tapped on the back of the tablet, which is highly impractical in most NFC applications. So, how then, does one use NFC on a tablet without a built-in reader in a practical location?

Regardless of what specific technology is used, fundamentally, in order to add NFC capability to a tablet reader, two things are required: a means to connect an external NFC reader peripheral to the tablet and an application to talk to it. Unfortunately, with the multitude of connectivity options presented by modern tablets and the multiple different readers on the market, figuring out what makes the most sense for a given application can be a little tough. To help with that we’re going to give a run-down of the main ways to accomplish this task:

USB NFC Readers

The cheapest and most available NFC readers on the market are those that connect via USB. In addition to their advantages in price and availability, USB NFC readers also offer a very reliable connection that isn’t vulnerable to congested radio frequencies (a common problem with Bluetooth readers as we will see later).

Despite their advantages, historically, USB readers have had a major stumbling block - charging. Traditionally, Android tablets have only been able to either act as a USB host through a USB On-The-Go cable or charge themselves, but they couldn’t do both at once. There were a few unusual tablets that have ways around this limitation either via an auxiliary charging method like the Nexus 10’s Pogo pins or by using certain Samsung tablets a special with a LAVALink SimulCharge adapter. As a result, in most cases, the tablet and the reader were both powered solely by the tablet’s onboard battery, which is only a practical arrangement for short-duration events. Quite conveniently, this limitation is starting to disappear with the adoption of USB-C. With USB-C, for around 20 dollars, it is now possible to buy standard off-the-shelf hubs that are also capable of powering their host devices. Unfortunately, USB-C adoption has been a bit slower in the tablet space than it has been for other electronic devices, but, as new tablet models with USB-C support start saturating the market, pairing such a tablet with a hub and USB NFC reader will become a steadily more attractive option.

As for the readers themselves, there are a large number of different USB readers that could be used with a tablet, many with quite similar specifications. Instead of trying to base a reader decision on these specifications, most of which are inconsequential for practical applications, it makes more sense to select a reader based on the available applications and SDKs for integrating with the reader. Unfortunately, the majority of these USB readers are primarily targeted at desktop usage, so the availability of first-party support for Android devices, tablets included, is either limited or non-existent. For example, the ubiquitous ACR122U made by ACS has a handful of of second- and third-party libraries and apps developed for it, but ACS themselves only distributes a basic SDK as a precompiled JAR with an example app built using the deprecated Eclipse-based ADT instead of providing a Maven repo and Android Studio project. While there are some other examples out there for this reader, they are mostly very limited in either functionality or support (if indeed there is any support offered at all). All that said, if your application is quite simple and you have significant development resources at your disposal, these disadvantages may not matter when weighed against the ready availability and low cost of the ACR122U.

At the other end of the spectrum for Android support sits TapTrack’s TappyUSB NFC Reader. While the Tappy is a bit more expensive than the ACS offering, it comes with an modern first-party open-source SDKs with support as well as a host of example applications that cover many common use cases. In fact, for many common use cases such as brand activation touch points, one of these example applications may be sufficient without any additional development needed at all. In addition to the greater ease of development, the Tappy also provides a faster read speed than the ACS reader and, due to its larger, more powerful antenna, detects tags much more reliably, an effect that is particularly noticeable with smaller tags such as those commonly found in wristbands (some of which the ACS reader is unable to detect at all). As a result of the superior read speed and scan reliability of the Tappy, applications based around it are able to provide a much smoother experience for end users than would be possible with the ACR122U or other basic USB NFC readers.

Bluetooth NFC Readers

Bluetooth NFC readers are somewhat less common than USB ones, but there are still several available on the market. Prior to the adoption of USB-C, these were your only options for broad tablet compatibility if it was necessary to charge the tablet while using the reader. Now that USB-C is being broadly adopted, Bluetooth readers are becoming less compelling for NFC kiosk applications, but their wireless functionality does enable some use cases for which the cable of a USB reader presents a problem. Additionally, if one has already purchased tablets for an application and they do not support USB-C charging hubs, getting Bluetooth NFC readers may make more sense than replacing the tablets. In particular, iOS devices do not support generic USB peripherals, so, if an application is targeting iOS, Bluetooth readers are the only option.

While they can perform quite admirably and do offer excellent flexibility in positioning, Bluetooth readers have a couple of distinct disadvantages compared to their wired cousins. Firstly, while USB is usually very reliable on all devices, Bluetooth performance can be highly variable from device-to-device and can be impacted by difficult-to-debug, seemingly unrelated factors. For example, here at TapTrack, we’ve seen tablets that repeatedly lose their connection to a Bluetooth reader, but only when they also have WiFi enabled. Exacerbating this issue is the fact that the Android Bluetooth driver itself is, in our experience, not particularly reliable and is prone to failing in ways that are difficult-to-detect or completely silent and, unfortunately, sometimes only fixed by rebooting the tablet. Additionally, regardless of what host device and reader you use and how reliable it may be, Bluetooth performance is always going to be degraded in the presence of significant amounts of radio interference. Unfortunately, the 2.4GHz frequency that Bluetooth operates at is extremely congested with signals from other Bluetooth devices, signals from devices using WiFi, and noise thrown out by microwave ovens all contributing to the problem.

From a reader option standpoint, the story is largely the same as it is for USB readers. There are a handful of readers out there, but the most commonly available one is again an ACS offering - the ACR1255U-J1. Once again, there is a somewhat outdated SDK offered by ACS themselves and a handful of second- and third-party example programs and SDKs on offer from other groups and individuals with varying levels of functionality and support. That said, once again, if your application only requires basic tag interaction such as reading the tag’s unique serial number and you have significant development resources to devote to the project, the ACR1255U-J1 might be a logical choice.

On the other hand, if you’re looking for a more plug-and-play solution, TapTrack’s TappyBLE NFC reader with its host of open-source SDKs and example applications may be the more attractive option. In addition to providing superior NFC performance, battery life, SDKs, and support, the TappyBLE also offers a relatively unique feature - heartbeat mode. When you use a TappyBLE with heartbeat mode enabled, the application and the Tappy will maintain a ‘heartbeat’ of messages back-and-forth and initiate a disconnect/reconnect cycle and raise an alert if the heartbeat fails. Often the disconnect/reconnect cycle will resolve some Bluetooth issues that would otherwise require staff intervention, and, if the issue is not resolved, you at least have a mechanism for informing staff that the tablet needs servicing.

Headphone Jack Readers

NFC readers that connect via a tablet or phone’s headphone jack used to be more popular than they are today, but they still occasionally crop up, particularly in mobile cash register applications. Headphone jack readers are usually the cheapest option for NFC readers, but their performance in all other aspects is generally abysmal. From a compatibility perspective, the headphone jack readers are generally only tested on a handful of devices and often there is a significant lag between new devices being released and the reader manufacturer performing the tests and updates necessary to extend support to that device. Granted, sometimes devices that are not officially supported by a reader will still work, but it is nowhere near as likely as with a Bluetooth or USB reader. Further, headphone jack readers are powered by an onboard battery that is generally very small. As a result, in order to achieve an acceptable battery life, the readers use very low power reader chips with very brief scanning cycles, which results in scanning range and speed that are unimpressive at best. Finally, headphone jack readers may or may not provide a good user experience placement-wise, depending on how the reader and tablet you are using are built. In any case, headphone jack readers certainly don’t provide positioning convenience that comes close to the nearly-unlimited flexibility of a Bluetooth reader or even that of a USB reader. Taking all these disadvantages into account, here at TapTrack we generally try to guide people away from headphone jack readers.

Additional Resources for Tappy Readers

Utilities and Examples

TapTrack provides several open-source demo utilities to help kickstart your application development. In fact, some of these demo utilities are so feature-packed that you may not need to do any application development at all!

Tappy NFC Reader for Android

This is the general-purpose Tappy demonstration application on Android. It supports connecting to multiple TappyUSB and TappyBLE readers simultaneously and provides the ability to use most standard Tappy commands, including reading and writing NDEF messages to NFC tags as well as interacting with MIFARE Classic and ISO14443-4 tags. In addition, it can be used to provide automatic URL launching mirroring Android’s built-in functionality.

Get it on Google Play Get source on GitHub

Tappy External NFC for Android

This is a specialized utility developed for people interested in using a Tappy as an external NFC reader, especially for kiosk applications. Just like the general-purpose application, it supports connecting to multiple TappyUSB and TappyBLE readers simultaneously and will automatically configure them to listen for NFC tags. When a tag is detected, it will send out an Intent very similar to the the one that Android’s NFC system generates when it detects a tag. This makes it so that apps developed using Android’s built-in tag dispatch capabilities will only require minimal alteration to work with the Tappy. Like the general-purpose application, it also can be used to provide automatic URL launching.

Get it on Google Play Get source on GitHub

Tappy Kiosk Demo

This is a modified version of the external NFC application discussed above that makes use of the Tappy’s heartbeat mode functionality and provides an automatic reconnect functionality. This makes it an excellent starting point for developing a brand activation kiosk application or something similar.

Get source on GitHub

OEMs and Custom Integrations

For OEMs and high volume customers, Tappy readers can be customized to integrate with third party devices such as vehicle tracking systems and programmable logic controllers (PLCs). Available with up to a 24V input power rating and a RS232 interface, Tappy readers can also be provided as mountable PCB components. For applications that have wired power available, but would still benefit from using a BLE reader, we can also provide a TappyBLE variant that forgoes the battery in order to provide a lower cost offering. Please contact us if you think a customized Tappy offering might be right for you.

Last Updated: Sep 25, 2018
Originally Published: May 17, 2015

Luke Van Oort

Chief Developer, fan of immutable data structures and functional reactive programming. Cooking hobbyist and cycling enthusiast.

Share on: LinkedIn, Twitter, Google+