Nexus S video: Android’s hidden NFC tag writing abilities revealed

An NFC development house in Argentina has discovered hidden code in Android 2.3 Gingerbread that enables the Google Nexus S to write to NFC tags as well as read them.

Nexus S writing an NFC tag
NEXUS S: Video shows NFC tag writing in action

Gibraltar Software Factory, a specialist mobile solutions developer based in Argentina, has combed through Android 2.3’s source code and identified a number of API calls — currently hidden — that deal with the operating system’s tag writing functionality.

The company then put together demonstration software that showcases the phone’s tag writing capability — as can be seen in this video:

As shipped, Android 2.3 Gingerbread only allows tag reading. This means that the Nexus S, the first Gingerbread handset, can only so far retrieve information from pre-programmed near field communication tags. Google has promised that write functionality is on the way soon with some upcoming extensions to the SDK. It would appear to be these that Gibraltar has unearthed.

“We’ve been analyzing the Android kernel source code and we found a lot of ‘@hide’ tags in the NFC java classes,” says the firm’s Gustavo Gonzalez in a blog post detailing the discovery. “The @hide tag is used to mark public APIs that are not to be exported in the SDK. This is used by the Android team to have APIs accessible across packages without having them available to applications. APIs marked with @hide are considered private to the Android platform and can change at any time, so you cannot rely on them.”

Gonzalez then goes on to assert that “we can confirm that there is some extended NFC functionality hidden in Android 2.3 that can be accessed” before walking developers step-by-step through example tag-writing code.

The method, Gonzalez points out, “will work as long as you use a tag pre-formatted with any NFC Forum type tag with default public keys.”

• Thanks to Paco Lazca.

Next: Visit the NFCW Expo to find new suppliers and solutions

3 comments on this article

  1. Does this allow “overwrite functionality”? If I walk by a tag somewhere, can I change it on the fly?

  2. Indeed, this allow overwrite functionality as long as the underlying tag is configured as read and write mode. If tag is read only this will not work. Also the Nfc forum published the signature record standard to enforce tag integrity.

Comments are closed.