================================================== RELEASE NOTE: Software Development Kit for Nokia 6131 NFC, version 1.1 03 July 2007 ================================================== For product support and the latest release notes, please visit Nokia Developer Home at http://www.forum.nokia.com/. Product Description: ==================== The Software Development Kit for the Nokia 6131 NFC (Nokia 6131 NFC SDK) can be used to develop and emulate Java(tm) applications(MIDlets) developed for the Nokia 6131 NFC mobile phone. The Contactless Communication API (JSR-257) included in the Nokia 6131 NFC SDK enables usage of the NFC features of the Nokia 6131 NFC mobile phone. The SDK also includes additional interfaces and classes that do not belong to the standard JSR- 257. The Nokia 6131 NFC SDK contains the Nokia 6131 NFC phone emulator, APIs, example MIDlets, and documentation. The SDK can be used in two ways: standalone or as an SDK in Eclipse. The standalone version can be launched from the command line or from the Windows Start menu. The emulator offers MIDP 2.0 support, security domain emulation, Bluetooth emulation, and support for the Unified Emulator Interface (UEI). The SDK installation package includes a Nokia SDK Plug-in that enables SDK use and MIDlet development in the Eclipse integrated development environment (IDE) as well as Nokia Connectivity Framework (NCF) Lite, which offers a fast and easy communication environment for the emulators. This SDK can be used with the following tool setups: - WTK 2.2 or later - Carbide.j 1.5 - Eclipse 3.1.1 and 3.2 The SDK also works with other versions of the IDEs listed above, but they have not been fully tested. Note: Carbide.j 1.5 is not compatible with Eclipse 3.2. New features in the Nokia 6131 NFC SDK 1.1: ============ NOTE: The Mifare Standard API is fully compatible with the implementation in the Nokia 6131 NFC mobile phone software version 5.10 or later. There may be incompatibilities with older mobile phone software versions. - Branding Configuration API support added - Web Services (JAXP) API 1.0 (JSR-172) implementation - New example MIDlet for P2P - New example MIDlet for Branding Configuration - New example MIDlet for Mifare Standard API - New example MIDlet for demonstrating the usage of the Nokia 6131 NFC internal secure element placed on an external reader - Users Guide: Added Chapter 5, "Managing the applets on the secure element of Nokia 6131 NFC" - Mifare Standard API: Mifare 1k and 4k tags can be accessed using the Mifare Standard API. The API supports direct tag writing and reading as well as more structured access methods via MFSector and MFBlock interfaces. See the Nokia 6131 NFC SDK: Programmer's Guide version 1.1. for more information. - Support for the Nokia 6131 NFC in external reader: the virtual tag and internal secure element of the emulator can be routed to a real Nokia 6131 NFC in an external card reader. For the internal Mifare 4k tag, select "External reader" in the internal tag configuration dialog. Note that the SDK does not currently support connection to Mifare 4k of Nokia 6131 NFC with an Omnikey Cardman reader. You can still connect to actual Mifare 4k tags with the Cardman reader. You can connect to Mifare 4k of Nokia 6131 NFC with the NXP CL RD701 reader. For the internal smart card, select "External Omnikey Reader" in the Internal SecureCard configuration dialog. Currently the SDK supports smart card access only with the Omnikey Cardman reader. See the User's Guide for more information. Bug fixes in the Nokia 6131 NFC SDK 1.1: ============ - Documentation of SimpleTagConnection corrected in Programmer's Guide - References to unsupported Location API removed - Corrections to Programmer's Guide about JSR-257 security permissions - ISO14443Connection now supports also 7816 javacard (Nokia 6131 NFC), previously only JCOP 3.0 - The emulator now correctly remembers internal secure card settings - PushRegistry calls on emulator now do not throw an exception for "ndef:" and "secure-element:" protocols, but callbacks are never executed - TicketingExample: bugs fixed - APDU Exchange now works on the emulator when using real smart cards - The emulator now can make NDEF connection to the Smart Cafe 3.0 card in the external reader (only with NXP CL RD 701 reader, not with Omnikey Cardman) - JSR-257 extensions are now documented in javadoc pages - The emulator now returns the same system property values as the mobile phone - The emulator now does not report it supports the VISUAL_TAG feature Features: ========= The SDK supports the following Java Specification Requests (JSRs): - Connected Limited Device Configuration 1.1 (JSR-139) - Mobile Information Device Profile 2.0 (JSR-118) - Java(tm) Technology for Wireless Industry (JSR-185) - Wireless Messaging API 1.1 (JSR-120) - Wireless Messaging API 2.0 (JSR-205) - Mobile Media API (JSR-135) - Java(tm) APIs for Bluetooth (JSR-82) - PDA Optional Packages for the J2ME(tm) Platform (JSR-75, FileConnection and PIM) - Mobile 3D Graphics API for J2ME(tm) 1.1 Maintenance Release (JSR-184) - J2ME(tm) Web Services Specification JAXP 1.0 (JSR-172) - Scalable 2D Vector Graphics API for J2ME(tm) (JSR-226) - Contactless Communication API (JSR-257) Additionally, Nokia UI API 1.1 is supported. Note: Security and Trust Services API for J2METM (JSR-177) is included in the Nokia 6131 NFC SDK. However, it is recommended to not to use the JSR- 177 due to the reason that Nokia 6131 NFC mobile phone does not support the JSR-177. The SDK is based on the Prototype SDK 4.0 Series 40 240x320 emulator. Multiple emulator instances running on the same PC will automatically recognize each other and support exchange of information via the Wireless Messaging API and Bluetooth communication. The NFC peer-to-peer connection in emulation is not supported. The emulator in this SDK emulates the UI of Nokia Series 40 devices, including the general look, key layout, key definitions, error messages, display and rendering, soft keys, and menu selection. However, there may be differences between the behavior and the look and feel of the emulator and a Nokia 6131 NFC mobile phone. Virtual card simulator: The virtual card simulator can simulate various types of TAGs and secure elements (Smart Cards). The preconfigured TAGs are based on: Mifare UL/Type 2, Mifare 1k, and Mifare 4k tags. The simulated TAGs are empty by default, but the user can, at any state, save the content. Once the content is saved it is stored on the hard drive. The user can load existing TAGs whether the TAG is saved earlier or custom made. The user can also edit the TAG content by dragging the card to the favorite hex- editor. Remember to save the card before opening it with the hex-editor. The "touching" of the tag is simulated with the following movements: a virtual card is attached to the SDK by dragging the appropriate card on top of the emulator skin or by double-clicking the card or by right- clicking and selecting the attach option. The virtual card is detached by double- clicking or by right-clicking the card and selecting the detach option. System Requirements: =================== Basic requirements: - Microsoft Windows XP (SP2) - Java(tm) 2 SDK, Standard Edition 1.4.2_0x or - Java(tm) 2 SDK, Standard Edition 1.5.x Issues with Java(tm) versions: ===================== Eclipse 3.2 may use JDK 1.5 as Compiler compliance level. This level cannot be used when compiling Java ME MIDlets. Make sure the Compiler compliance level is set as 1.4. Java(tm) 6 (1.6.x) is not supported. The following problems may occur if Java 6 is used: - Errors when starting a MIDlet - Errors when uninstalling SDK Known Issues: =============== NFC Card support: - URL comparison is not correct. It does not compare semantics of the URLs (compares prefixes of the contents directly). This may cause problems if one does not use TargetProperties.getUrl() and uses "handmade" URLs instead. - throwing does not match with the device (ContactlessException / IOException / MFStandardException). - Reading/writing several tags at the same time may cause authentication problems. Solution: Use only one card at a time. External reader: - If the external reader (Omnikey, Pegoda) does not work, check from Windows Task Manager that no MIDP.exe is running and restart the emulator. The external reader is locked to the first emulator instance. - Note that if either the internal secure card or the internal tag of the emulator are mapped to the external reader, applications do not get TargetDetected calls from DiscoveryManager. Omnikey reader: - The Omnikey reader does not respond to tags if the wrong system driver is installed. Solution: Verify from the Windows Device manager that CardMan 5x21 is used as the Omnikey driver, not a general USB smart card reader. Change the driver if needed by right-clicking the wrong driver. Select "Update driver.." and choose "Install from a list or location (Advanced)." Click Next and choose "Don't search. I will choose the driver to install." Click Next and press "Have Disk..." to browse for the correct driver. - Currently connection to the Java(tm) smart card with Mifare 4k emulation, like in the Nokia 6131 NFC, is not possible with the Omnikey Cardman readers. Emulator: - The MIDP.EXE may crash occasionally when the emulator is closing. Solution: None. The emulator will be closed anyway; only the crash notification will be shown. - The MIDlet cannot be restarted if the MIDlet uses targetListeners and the TargetListeners are not removed. - Command priority on the emulator is different than on the mobile phone (command set for the MSKey is displayed on the Options list, and the MSKey option is set to one of the other priority commands). Also, there are a few Form Layout differences between the mobile phone and the emulator: Text Fields have the incorrect size on the emulator and they act as Text Boxes. For String Items, the size is incorrect - it is the size of the text, not the size set with SetLayout. Eclipse integration: - When using the SDK with Eclipse you may need to create a new workspace for it if you have used an older version of the SDK in your existing workspace. - If Eclipse cannot find the SDK classes, check that the SDK appears in the "Installer JREs" page in configuration and that the "Nokia SDK Plug-in properties" in project settings points to the right SDK. If either is missing, choose "Browse" from "Nokia SDK Plug-in properties" and select the installation directory of the SDK. Other Issues: - The Real-life mode security setting requires in all cases that the Emulator is launched in managed OTA mode. This means Real Lifemode is not usable directly from Start menu nor IDE links. It is recommended to not use this mode. However, if you accidently change the security mode to Real Life, you can always change it back by launching bin/prefs.exe and selecting other security mode. - Manager.playTone works on the mobile phone, but does not play tones in the emulator. - Emulator's Internal SecureCard mapped to the Nokia 6131 NFC in the external Omnikey reader: Note that if you have configured the internal securecard to the external Omnikey reader, but do not have a supported reader connected and a Nokia 6131 NFC in the reader, the emulator will revert to using the default internal securecard. - KeyA returns always logical zeros when read. Contents of the key can be viewed using hex- editor. - User-created cards are at the transport configuration. * Mf1k/Mf4k keyA and keyB are FF FF FF FF FF FF * Mf1k/Mf4k access bits are FF 07 80 69 => Note: keyB is readable and cannot be used as an authentication key. - If the user writes incorrectly formatted data to 1k/4k sector trailers, corresponding sectors are considered as corrupted (=>blocked). The user can recover from this by: 1) Using the "reload" option, if the current version in the disk is not in a corrupted state (user has saved corrupted data). 2) Dragging the card to the hex editor and manually editing corrupted parts. After this, save the file and use the "reload" option. 3) Delete the corrupted card and create a new one using a pop-up menu from the card simulator. - Incorrect writes of OTP areas in ultra light can be fixed using the same technique. - The internal secure element is a simulated one. The implementation of the SDK does not contain the actual functionality of the real secure element. Also, implementations - by the end user - of simulated elements are not valid for actual smart cards. Note that you can use a real secure element by placing it on a connected Omnikey Cardman reader. - Overall performance of the SDK in dual- core/hyperthreading systems is poor. With the current release it is recommended that dual- core/hyperthreading features are turned off. - When choosing a directory as the classpath for simulated secure cards, the directory will be scanned for suitable classes. If there is a large amount of files in the directory, the operation will take a moment. The emulator will show an information note about this to the user, because the UI is not responding during this operation. After the directory has been scanned, the emulator will resume normal operation. - Accessing tags with external readers is slower in the emulator than with a real Nokia 6131 NFC. - When using Nokia 6131 NFC in an external reader, set the phone's secure element activation level to "always active". - On the emulator, MFStandard writing fails if, during the same session, the wrong key is used after using the correct one. However, the phone keeps the correct key in memory and uses that key in case of wrong authentication, if the operation happens during the same session (while the tag hasn't been removed from the field). Copyright (c) 2001-2007 Nokia Corporation. All rights reserved. Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation. Includes Java(tm) technology from Sun Microsystems, Inc. Portions of this software are copyright by Sun Microsystems, Inc. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. Other product and company names mentioned herein may be trademarks or trade names of their respective owners.