NFC specs

This is a post from google groups.
The post was so chock full of information that I just had to put it up here so I could digest it more slowly.

The original thread is here:

and here’s the post:

I added a bit of formatting to it.

Thanks to Michael Roland

for such an awesome post.


<————begin post ————–>

Hallo JMC,
I think there is a big misunderstanding out there of what card emulation
is (and what it is not!).
First of all, NFC has three different communication modes:
* Reader/writer mode,
* Peer-to-peer mode, and
* Card-emulation mode

*Reader/writer mode*

is used to access NFC tag (i.e. tags that comply to
the tag formats specified by the NFC Forum and contain NDEF data).
Moreover, this modes provides compatibility to existing RFID (13.56MHz,
inductive, proximity coupling) card infrastructures (i.e. you can
interact with contactless smart (and memory) cards, like MIFARE,
ePassports, …)
The Nexus S supports reader/writer mode for 3 (4) contactless standards:

  • – ISO/IEC 14443 Type A (e.g. MIFARE) and Type B
  • – JIS X 6319-4 (that’s FeliCa)
  • – ISO/IEC 15693 (that’s vicinity coupling cards, which is not NFC

but uses a similar communication technique also in 13.56 MHz)

*Peer-to-peer mode*

is used for direct communication between two NFC
devices (e.g. two mobile phones, but an NFC device can be pretty much

This mode lifts the restrictions imposed by an “active reader
— passive card” system. Thus, in a classic RFID/smart card system there
is a reader device that starts and controls the communication with one
or multiple cards, and cards that process commands received by reader.
Whereas, in a peer-to-peer system any device can start (and control) the
communication with any other device.
Peer-to-peer mode is used to exchange any data between NFC devices. This
data can be as simple as NDEF messages, but it’s even possible to tunnel
other network protocols like IP over a peer-to-peer link.
The Nexus S supports the peer-to-peer protocol (NFC-DEP, ISO/IEC 18092)
with LLCP (NFC Logical Link Control Protocol) on top. With the current
API level only a simple exchange of NDEF messages (with Android’s
proprietary protocol on top of LLCP) is possible.

*Card-emulation mode*

is used to emulate a contactless smart card with
an NFC device. This mode provides compatibility to existing RFID
(13.56MHz, inductive, proximity coupling) reader infrastructures. An NFC
device in card-emulation mode acts the same as any “real” contactless
smart card.
With card emulation it is important to notice the difference between a
_contactless smart card_ and an _NFC tag_:
– An NFC tag is a contactless transponder that has a certain memory
layout and contains standardized data elements (NDEF messages).
Four such layouts are defined by the NFC Forum (tag types 1 to 4).
Tag type 1 is based on Innovision’s Jewel tags, tag type 2 is
based on NXP’s MIFARE Ultralight. So I would not consider these
two “smart” cards (they are more like simple memory cards). Tag
type 3 is based on FeliCa and tag type 4 is based on the ISO/IEC
7816-4 smart card standard. Therefore, the latter certainly are
smart cards. Yet, in this case an NFC tag is a smart card with a
specific file layout (i.e. a card that contains the “NDEF

Besides the standardized NFC tag formats, vendors like NXP have
created guidelines for using their contactless card technologies
(e.g. MIFARE Classic) as NFC tags.

An NFC tag is only data storage and doesn’t have (may have but

not use) special security features like data encryption, …
– A smart card can be much more than an NFC tag. A smart card can
contain, for instance, a credit/debit card application, a
ticketing application for public transport …
These applications have even existed before NFC. They DO NOT use
the NDEF format to exchange data. Instead they use their own
protocols (e.g. EMV for payment cards). Often they use special
security features of smart cards (high security execution
environment, highly secure data storage, cryptographic
processing power …)
So the card-emulation mode allows the emulation of a contactless msart
card (and not an NFC tag, although the smart card could *possibly* be
used as NFC tag). As applications like credit cards typically have high
security requirements, card emulation is not handled by the NFC device
itself (i.e. the application processor of an NFC-enabled mobile phone).
Instead, the NFC device has a dedicated hardware component (the
so-called Secure Element) that handles all the card emulation. (*)
(*) This is not entirely true, as some NFC controllers (like the
PN544) would theoretically allow the emulation of ISO/IEC
14443-4 contactelss smart cards from the application processor.
Yet, I don’t know of any NFC phone that makes this functionality
available to the user and I rather doubt that this will become
available on the Nexus S.
The Secure Element (SE) is typically a smart card itself. But instead of
a normal contact/contactless smart card interface it has a connection to
the NFC controller, which connects it to the NFC antenna.
The Nexus S has an integrated SE (a SmartMX combined into the same
package as the PN544 NFC controller). This SmartMX emulates a ISO/IEC
14443 (Type A) smart card and a MIFARE Classic card.
In addition to this integrated SE it is possible to use a special UICC
(also known as SIM card) that supports the Single Wire Protocol (which
is an interface designed for the communiction between the NFC controller
and a UICC) as the SE.
So the Nexus S will definitly support the emulation of contactless smart
cards (with a bit of tweaking the Android sourcesthis is already
possible to some extent). Yet, the SE is a protected environmentwhere
you can’t simply install your application. Instead, you have to ask the
owner for permission to install your application. The “owner is not the
user who bought the device but instead the device’s vendor. So, for the
internal SE of the Nexus S it is Samsung/Google(?) who decide who gets
access to the SE. For the UICC it is your telco who decides this.
As a consequence an “NDEF application” will most likely not make it into
the SE. So you won’t be able to use your phone as *NFC tag*. But there
is not much use for this anyways as a device that understands NDEF would
most likely be an NFC device that also supports peer-to-peer mode.
To summarize this, card emulation will certainly become available for
the applications you mentioned. But it will not be used to transport
*NDEF data* between devices.

Leave a Reply

Your email address will not be published. Required fields are marked *