androidemulationnfcopen-nfc

Getting started with Open NFC emulator


I would like to get started with developing NFC apps for android. I have started with android recently and I'm finding it a very interesting platform to develop for. Before I go out and invest in an Android device that has a built in NFC reader and purchase tags, I would like to get a feel of how one actually writes code for them.

I found the Open NFC Android emulator and it appears to be what I'm looking for. I have downloaded : 1. The Open NFC for Android 2. The Open NFC core Edition

After creating an avd that for Open NFC, I followed the instructions.

Now the problem that I face is that in the emulator, when I go to the Wireless Settings and then I enable NFC, It says that there was an error. I have tried setting the IP to 10.0.2.2 and also the IP that I get from ipconfig but to no avail. There's no log that I can see. Also I have tried to disable the firewall completely while running it so that it doesn't get blocked accidentally.

As a side note, I would like to mention that I have the Connection Manager Started before I launch the emulator.

Does anybody have experience with Open NFC for Android, If somebody can point me to a better set of instructions I'd be most grateful alternatively If someone could suggest another simulator by which I can try out some sample code and get a better understanding about NFC.

The output of the adb logcat is

W/KeyCharacterMap(  165): No keyboard for id 0
W/KeyCharacterMap(  165): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
D/NfcSettings(  165): onPreferenceChange: Setting NFC key: nfc_cc_ip
D/NfcSettings(  165): onPreferenceChange: Setting NFC value: 10.0.2.2
D/NfcSettings(  165): onPreferenceChange: Setting System NFC NFC_CC_IP: 10.0.2.2
D/NfcSettings(  165): onPreferenceChange: Setting NFC key: nfc_hal_mode_list
D/NfcSettings(  165): onPreferenceChange: Setting NFC value: 1
D/NfcSettings(  165): onPreferenceChange: Setting NFC mPreferenceNfcHalMode: SIMULATOR:1
D/NfcSettings(  165): onPreferenceChange: Setting System NFC NFC_HAL_MODE: 1
W/InputManagerService(   68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@406df430
D/NfcEnabler(  165): Setting NFC enabled state to: true
D/OpenNFCService(  250): Enabling NFC.  previous =false
D/OpenNFCService(  250): mIsNfcEnabled NFC =false
D/OpenNFCService(  250): _enable =true
D/OpenNFCService(  250): IOpenNFCService:setNFCEnabled(true)
D/OpenNFCService(  250): Invalid IP address
D/OpenNFCService(  250): can't create configuration !
D/OpenNFCService(  250): updateNfcOnSetting: false
D/OpenNFCService(  250): NFC success of _enabletrue) is false
D/OpenNFCService(  250): $$$NFC$$$ Will connect ! $$$NFC$$$
W/NfcEnabler(  165): Error setting NFC enabled state to true

I get the same error when I change the IP to the one obtained with ipconfig.

D/NfcSettings(  165): onPreferenceChange: Setting NFC key: nfc_cc_ip
D/NfcSettings(  165): onPreferenceChange: Setting NFC value: 114.31.179.86
D/NfcSettings(  165): onPreferenceChange: Setting System NFC NFC_CC_IP: 114.31.179.86
D/NfcEnabler(  165): Setting NFC enabled state to: true
D/OpenNFCService(  250): Enabling NFC.  previous =false
D/OpenNFCService(  250): mIsNfcEnabled NFC =false
D/OpenNFCService(  250): _enable =true
D/OpenNFCService(  250): IOpenNFCService:setNFCEnabled(true)
D/OpenNFCService(  250): Invalid IP address
D/OpenNFCService(  250): can't create configuration !
D/OpenNFCService(  250): updateNfcOnSetting: false
D/OpenNFCService(  250): NFC success of _enabletrue) is false
D/OpenNFCService(  250): $$$NFC$$$ Will connect ! $$$NFC$$$
W/NfcEnabler(  165): Error setting NFC enabled state to true

Solution

  • @nikhil: Thanks for the link to TCP Echo Server. I got my OpenNFC stack to work after running the echo server. So that other users can benefit from this exercise, here's a summary of what to do to set up the OpenNFC stack with the NFC controller (NFCC) simulator.

    --The stack (with NFCC simulator) is supported on Windows host only, since both the Connection Center and the NFCC simulator are Windows apps.

    --Need to download all 3 packages:

    1. OpenNFC Android SDK addon
    2. OpenNFC core Edition, which has the Connection Center and the NFCC simulator apps.
    3. The echo server: EchoTool

    --Install the SDK addon, and create an AVD using the SDK Addon.

    --start Connection Center (run "Connection Center.exe") and config it to accept client connections from other machines.

    --start NFCC simulator (run "NfcSimulator.exe").

    --start echo server (on port 7), using the cmd: echotool /p tcp /s 7

    --start Android emulator using the AVD just created.

    --from the emulator, select Settings->Wireless & networks->NFC settings

    --enter 10.0.2.2 in IP Connection Center

    --select Simulator for NFC HAL implementation

    --now click the NFC toggle (check box) to start the NFC stack!