NFC & RFID on Android


Published on

The Google Nexus S offers support for Near Field Communication (NFC), an extension to an RFID smart card protocol popularly used for secure access, metro passes (Oyster/Clipper), and electronic money (FeliCa/Octopus). NFC in smartphones promises adding these features to the phone you carry by allowing the it to emulate both RFID tag and reader.

NFC additionally adds new capabilities like exchanging configuration data such as WiFi settings, trading vCard contact information, reading URLs, triggering SMS text messages or initiating calls, and secure bi-directional communication between NFC devices.

This session will cover what NFC and RFID is and is not, what Android on the Nexus S is currently capable of, and some examples of how to add NFC to your apps.

Published in: Technology
  • nfc rfid reader:
    Are you sure you want to  Yes  No
    Your message goes here
  • WorkDaddy is the best application for office/corporate management in Android platform. Fully compatible with RFID/NFC cards. Can keep attendance calculate working hour, plan event and also if the user requires WorkDaddy can generate salary. But the salary generation plugin is not built in in Google Play version. As per the user demand it can be added. WorkDaddy is available in Google Play. Try it now. Trust me its worthy of downloading.
    Are you sure you want to  Yes  No
    Your message goes here
  • good.
    Are you sure you want to  Yes  No
    Your message goes here
  • very good thanks
    Are you sure you want to  Yes  No
    Your message goes here
  • good
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • I’m Tod, aka “todbot”. I’m a professional tinkerer.\n\nI founded ThingM with Mike Kuniavsky five years ago. We’re a ubiquitous computing device studio, a micro-OEM, producing a range of “Smart LED” products called BlinkM.\n\nI’ve written articles for MAKE magazine, had projects featured on MAKE:TV, and wrote the book on hacking the Roomba robot vacuum.\n\nI’ve been involved in the Arduino community for about five years too, and have produced a set of instructional material and hacking products.\n\nFinally, I’m active in the local Los Angeles hacker community. In 2010 I co-founded\nCRASH Space, the first LA hackerspace. And I work with local Los Angeles artists to help them add technology to their works.\n \n \n
  • First, how many have played with RFID tags? How many with NFC on Android?\n\nNFC is a type of RFID.\nRFID tech is being used increasingly for identification & financial transactions. \nAs keys to open locks of all kinds.\nAs the mobile phone has become a “convergence” device for other portable electronics,\nso too it may become a universal “keyring” for RFID applications.\n\n\nsf muni pic:\n\n
  • Some of the promises:\none-touch setup of WiFi & Bluetooth\nsimple touch-based data exchange\nPC logins\ncar personalization\nsmart posters\n\n\n\n
  • If the rumors about the next iPhone are true, we could see a flood of NFC applications in the near future.\n
  • A ThingM prototype, I designed a high-density RFID reader network for WineM, a winerack you can ask questions of. It knows what wine is in it and where it’s located. Each wine slot has an RFID reader. Each wine bottle has an RFID tag.\nWhen a wine bottle is inserted, the winerack registers that fact.\n\n\nFor the Henry Ford Museum, we prototyped “Ghost Tours” where visitors had “magic tickets” that created an interactive narrative flow on top of existing museum exhibits.\n\nAnother startup I co-founded was AFK, with Ben Cerveny (Bloom) and Kevin Slavin (area/code).\nAFK focused on building platforms for spatial interaction.\nWe worked with Busch Entertainment (SeaWorld/Busch Gardens) on new projects domestically and in Dubai. \nOne of the things I designed was an active and semi-active RFID ticket sensor network that was to blanket an entire park.\n\n
  • Okay so let’s talk about what RFID actually is.\n
  • I used to think RFID tags stored lots of data.\nAnd that the RFID tag had some meaningful communication with its reader.\nNo. At its basic, RFID is just a barcode.\n\nRFID tags are just another kind of machine-readable number.\nLike barcodes, or QR codes, or magstripes.\n\nAll RFID tags have a permanent UID. Some tags have an additional writable area of 64bytes to 4kB.\nSome tags have a crypto engine for doing key exchanges, but those are in the minority.\n\n\n
  • \n
  • Not localization - no position data can be inferred from a tag read\nNot proximity detection - you can’t tell how far away a tag is from a reader\nNot crypto\n\nIt’s easy to use RFID but hard to use it securely. So eschew the use of it for sensitive information, instead use it for entertainment and fun.\n\n
  • This is the only schematic in here, promise.\n\nThe reader does two things: \n- generate a high-power RF field to power the tag\n- officiate the protocol between the two devices\n\nMost tags are “passive”. They have no power source. Instead, powered by the reader.\nPower and communication are transmitted inductively, like a wireless charging sytems.\n\nReaders control the data transmission. Readers energize the tags.\n\nData rate is between 100 kbps and 800 kbps. \nRF carrier is at 13.56MHz for NFC RFID. \n\n\n\n\n
  • The insides of these cheap tiny tags. \nIt’s essentially three sections: an RF interface, a memory, and a controller joining the two.\n\nSome tags have rewritable EEPROM, some just have ROM. \nSome have only a few bytes (just enough for the UID), some have up to 4kB.\n\n\n
  • \n
  • Tickets in the form of RFID wristbands are becoming increasingly popular in amusement parks.\nBecause they are waterproof and wrist-attached, people can carry them anywhere. \n\nUse their RFID bracelet to lock up their personal effects.\n\nSince visitors carry them everywhere, they can be leveraged for other purposes.\nVisitors can purchase food and merchandise. Alcohol served only to non-minors.\n\n
  • Dec 2010, guy walks in with a motorcycle helmut on, walked up to craps table, and walked out with $1.5 million in chips. The casino unregisters the chips. Thief comes in to cash some in, security grab him.\n\n\nimage:;txt\n\n
  • And what’s NFC then?\n
  • Instead of just using the UID, a key into a database,\nnow can have interesting self-contained data\n\nimage:\n\n
  • \n\nimage:\n
  • In addition to the low-level protocol specs, \nNFC also defines a set of mime-types and microformats for concisely embedding certain types of information, like URLs, where it has codes for common strings like “https://www.”\n\n\nimage:\n
  • free business models here, no charge.\n\n
  • \n
  • \n
  • \n
  • Nexus S NFC antenna in back cover; two spring-loaded contacts make the connection.\nThe Secure Element chip is on the blue board for tag emulation. \nIt’s a SmartMX combined into the same package as the PN544 NFC controller\n
  • \nI’ve been looking at them mostly for testing of NFC & RFID\n\n
  • AnyTag is open source :\ntaglet is implemented as a web app somehow.\n
  • \n
  • They recompiled the SDK to get access to previously hidden APIs.\n\nThese guys are good.\n\n\n\n
  • NXP produces many RFID chips and reader products.\nTagWriter can “back up” NFC tags.\n\nHere is an example of TagWriter reading one of the 46-byte read-only Touchatag tags.\n\n\n
  • And here’s an example of TagWriter writing to a 1kB Mifare tag.\n\n
  • \n
  • Show some of these apps in action on the video camera.\n
  • \nOkay let’s look at what it would take to add RFID/NFC capability to an app.\n\n
  • \n
  • If you’ve never programmed in Android before, here’s the basic lifecycle of the primary chunk of code you write: the Activity\n\nimage:\n
  • Every Android app has an AndroidManifest.xml file that describes needed resources and permissions.\nAn app’s activities, intents and services and permissions are declared in the manifest file\n\n\n\n
  • These are the two most important things to add to your code.\nIn your app’s AndroidManifest.xml\n
  • There are three different intents you can register for:\n- NDEF_DISCOVERED - What kind of NFC-formatted NDEF packet you’re looking for\n- TECH_DISCOVERED – What kind of RFID tag you’re expecting\n- TAG_DISCOVERED - Is a tag present or not\n
  • Seems you need to have “category” or it doesn’t work.\n\n
  • Filter for what kind of tag hardware you want to look at.\n\n
  • With all that setup, just getIntent() then get an array of NdefMessages containing an array of NdefRecords.\n
  • Like most interesting sensors on smartphones, you can’t use the simulator to test. You test on the device. Google provides a trick around this.\n
  • \n
  • \n
  • If you want to explore RFID & NFC outside of Android (which is useful for debugging Android), you should get some reader hardware.\n\n\n
  • The tags it comes with are read-only, but pre-formated with NFC URL data.\n\n
  • Open source and awesome, is used to explore possible exploits to RFID and NFC.\n\n
  • \nAt SparkFun at\nshould probably also get:\n\n
  • Print your own NFC tags, with multiple tag types.\nSame web interface as online sticker makers, but also contains RFID tags.\n\n
  • \n
  • hat-tip to Carlyn for this video\n\n\n\n
  • \n
  • NFC & RFID on Android

    1. 1. NFC & RFIDwith Android Tod E. Kurt, ThingMWhere 2.0 2011, Santa Clara, CA
    2. 2. What is this talk?Why you should care about RFID & NFCOverview of what RFID & NFC is technically How Android implements NFC What Android can and cannot do Some existing Android apps Tips on how to add NFC to your Android app Non-Android NFC hacking
    3. 3. Who is this guy? @todbot does...Crystal Monster BlinkM Smart LEDs ScrewShield Spooky ArduinoWiichuck adapter
    4. 4. Why Should I Care About RFID? Exxon Mastercard PayPass IdentificationSpeedPass Financial TransactionsAsset tracking Access control SF Muni Clipper pass Supply chain
    5. 5. Why Should I Care About NFC?Some of the things NFC promises...
    6. 6. Also...
    7. 7. Why I like RFIDThingM: WineM AFK: SeaWorld in Dubai ThingM: Ghost Tours at Henry Ford !
    8. 8. RFID
    9. 9. RFID is EasyRFID tag – just a serial number, a unique IDUID 32-bit or 56-bitSome tags UP TO 4kB! (wow!) of writeable data
    10. 10. Why RFID instead of......barcodes– can have a lot more data, no ugly barcode...QR codes– can write data, no camera lag, no ugly qr code...Bluetooth– cheaper, low-overhead, easier setup...WiFi / GPS localization– cheap, definite, closely-spaced location
    11. 11. What RFID is NotNOT localizationNOT proximity detectionNOT fast data transferNOT secure (for non-smartcard)Be careful using it for identification, use it instead for fun
    12. 12. How RFID works“reader” “tag”expensive ($10) cheap ($0.10)
    13. 13. Passive Tag Internals
    14. 14. Some Interesting RFID Examples
    15. 15. Waterpark ticketday-pass vs season passage-based restrictionspayment of food, beverages, merchandise
    16. 16. Casino Chips Theft Fail man steals $1.5M in chips, cashes them in for $0 and jail“RFID can void the stolenchips, like a registrationthat’s no longer valid,”Kendall said.“When we manufactureRFID-embedded chips andsend them to a casino,they’re not worth anythinguntil they register the codes.Until then, they’re nothing butfreight.”
    17. 17. NFC
    18. 18. NFC: Near Field Communication web-like semantics for RFID Built on existing RFID tech Multi-part, mime-typed, textual data Devices can have 3 modes: - tag reader/writerNokia 3220 NFC - tag emulation - peer-to-peer data transferNFC products available since 2005
    19. 19. NFC Technical Architecture
    20. 20. NDEF: NFC data exchange format some example NDEF formats
    21. 21. Some cool NFC ideasTap Your Top10 – Send top 10 list to DJ by tapping phoneHouseMood – Tap your house so it knows your moodHiRes 4SQ – Precise, hyper-dense checkins with foursquare
    22. 22. NFC Capabilities on AndroidCurrently available Android NFC phones: Google Nexus SUse Android 2.3.3 (API Level 10) as the NFC APIs drasticallychanged from 2.3.2.New Intent Filter and TechFilter APIs for registering interest intypes of cards, types of NDEF messages, types of NFC events
    23. 23. What works now on Android? Tag reader/writer Tag emulation (of certain NFC NDEF tags) P2P communication (Android-specific)
    24. 24. What doesn’t workTag emulation of Smart CardsPeer-to-peer with Nokia NFC phones
    25. 25. Nexus S NFC Hardware
    26. 26. Current App Landscape
    27. 27. taglet & AnyTag “ for RFID tags” maps UID –> URL works with any tag phone can read but both don’t seem to work on 2.3.3
    28. 28. Tags App System App Two functions: - tag reader - tag emulator Makes sharing contact info & URLs easy
    29. 29. NFC TagInfo most useful
    30. 30. NXP TagWriterlets you format tags for NDEF use
    31. 31. NXP TagWriter
    32. 32. App DemosLet’s try to show some demos...
    33. 33. Developing NFC on AndroidDisclaimer: I’m not a big Android programmer.Good docs at read them.Instead, look at the process from a high levelAnd at the lower-level setup and gotchas
    34. 34. Quick Android SDK Setup IntroAndroid apps are written in Java using Eclipse IDEInstall Eclipse (or other favorite IDE)Download Android SDKHook Android SDK up to EclipseTell SDK to download needed extra packagesThen you can start a new Eclipse Android project
    35. 35. App Activity lifecycle Apps have at least one Activity Activities triggered from system events, “intents” Activities are paused & resumed by Android system
    36. 36. Main Steps to add NFC■ Edit app’s AndroidManifest.xml, set: ■ Minimum SDK version ■ Hardware permissions ■ Intent filters■ Two ways to work: ■ Intent Dispatch – run your Activity on tag presence ■ Foreground Dispatch – intercept tag intents
    37. 37. Permissions in ManifestSet SDK version to get to NFC APIs:<uses-sdk android:minSdkVersion="10"/>Request permission from the user to use NFC hardware:<uses‐permission
    38. 38. Intent Filter in ManifestNFC intent filters tell Android your Activity can handle NFCAnd let you control what kind of tags your Activity sees<intent-filter>  <action android:name="android.nfc.action.NDEF_DISCOVERED"/>  <data android:mimeType="mime/type" /></intent-filter><intent-filter>  <action android:name="android.nfc.action.TECH_DISCOVERED"/>  <meta-data android:name="android.nfc.action.TECH_DISCOVERED"                android:resource="@xml/nfc_tech_filter.xml" /></intent-filter><intent-filter>  <action android:name="android.nfc.action.TAG_DISCOVERED"/></intent-filter>
    39. 39. Intent Filter Can even filter on NFC mime-type<intent‐filter>



    40. 40. TechFilter Filter for what kind of tag hardware you care about<resourcesxmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">    <tech-list>        <tech></tech>        <tech></tech>                <tech></tech>        <tech></tech>        <tech></tech>        <tech></tech>        <tech></tech>        <tech></tech>        <tech></tech>    </tech-list></resources>
    41. 41. Get Tag Data In onCreate() if using intent filters, or anywhere using foreground dispatchIntent intent = getIntent();NdefMessage[] msgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGESs);for (int i = 0; i < msgs.length; i++) { NdefRecord[] records = msgs[i].getRecords();}
    42. 42. FakeTagsActivity
    43. 43. Hacking NFC not on AndroidGet a USB or serial readerGet some tags (SF Muni Clipper, your prox card, etc.)Get some appsHook it up to your PC or Arduino
    44. 44. Touchatag http://touchatag.comInexpensive ($40) USB NFC readerComes with 10 read-only 64-byte tagsWorks with libnfc
    45. 45. Proxmark GPL RFID hardware reader Build it yourself, if you’re hardcore Read/emulate any RFID tag $300
    46. 46. SonMicro RFID 13.56 MHz RFID reader Libraries for Processing & Arduino Read/write tags Limited NFC, no emulation $30 avail from SparkFun
    47. 47. LibNFC library for NFC explorationWorks with most all NFC/RFID USB readersUnderstands most all NFC/RFID tag typesActive developer community
    48. 48. Open NFC
    49. 49. Create custom NFC tags with custom graphics, all online
    50. 50. Links
    51. 51. Thank Youimagine these guys with NFC tags
    52. 52. Thank Youimagine these guys with NFC tags
    53. 53. Tod E. Kurt