Using NFC phone as ISO14443 card reader

In order to finally get something working for my thesis I decided to move from NFCIP communication to Bluetooth for now. So far that seems to work much better, except the connection time.

It’s rather easy to write a Java app running on a normal PC (the host) using the BlueCove stack to communicate with the phone and write a MIDlet that acts as a middle man between a contactless ISO14443 card and the host. I did this to test the Bluetooth communication and it seems to work 🙂

For now I created a BTChannel class that implements the javax.smartcardio.CardChannel API so it’s easy to modify existing applications that use the Java Smart Card API to use the Bluetooth link. On the phone I created a small MIDlet that acts as a Bluetooth server and waits for a connection from a client. As soon as you keep a card close to the phone it sends the APDU received over Bluetooth from the host to the smart card and relays the results back to the host.


Maybe I can find some time to finish this and turn it into a TerminalFactory provider where all bluetooth devices in the vicinity with the “relay” MIDlet running are seen as card readers.


2 thoughts on “Using NFC phone as ISO14443 card reader

  1. Hi François. Perhaps you remember me, I am Diego, the Colombian guy with whom you took some of the Kerckhoff’s lectures. Anyway, your MsC thesis sounds very interesting because I did mine on a similar topic (see. Are you (planning) to share the resulting product, or better yet, the code 😉 I would like to give it a try!. Cheers!

  2. A lot of code can be found on This is not directly related to the project of this blog entry, because this one depends on a as of yet unreleased project (GlobalPlatformManager) by a RU employee. But with the Bluetooth layer from the nfcip-java project is becomes easy to implement it yourself. If you are interested in the MIDlet code for relaying between Bluetooth/ISO14443 cards I can send you the code. Let me know (see About page for contact details). If you have any further questions or want to share your code (under some free license) let me know 😉

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s