Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries. Thanks for all your past and future contributions.

S60 3rd SDK For Symbian OS, For C++, MR

From Wiki
Jump to: navigation, search
Article Metadata
Created: ilari.saukkonen (12 Jun 2007)
Last edited: hamishwillee (22 Oct 2012)




This release is a maintenance release (MR) fixing several issues withthe emulator and toolchain. The documentation set has also been updated. Apart from a few removals (see below) the API set is identical. The SDK contains only APIs where binary compatibility can be guaranteed. Some of the APIs not included in S60 3rd Edition SDK will be released separately. For example, Multimedia Framework (MMF) APIs will be released as an SDK plugin.

SDK Features Supported

  • This product requires free registration after 14 days of use.
  • Emulator for debugging applications.
  • Building tools and environment for emulator (WINSCW UDEB).
  • Building tools and environment for terminal deployment (GCCE, RVCT).
  • Symbian and S60 platform documentation, as specified below:
  • Help
  • Installation Guide
  • API set documentation
  • Platform security documentation including description of the modified development process
  • S60 Tools including
    • MBMViewer for viewing Symbian multibitmap images
    • SimPSY including tool for generating simulated locations
    • Svg2Svgt for converting SVG images to SVG-T format
    • Task Manager
    • Http Monitoring
    • System Event Generator
    • Emulator Configuration Tool
    • Command Line Interface for mobile content developers
    • Content Push to device through command line interface
    • Remote Logging API
  • Support for CodeWarrior version 3.1 for Symbian OS.
  • Support for Carbide.c++.
  • Visual Studio .NET 2003 is supported through Carbide.vs add-on available for download at Nokia Developer.
  • Emulator TCP/IP support using Winsock.

New Features

  • TRK support for on-device-debugging
  • Platform security support in examples
  • Platform security documentation
  • SIP client application development environment including SIP server emulator
  • Http monitoring tool
  • System event generator tool
  • New additional web browser in emulator
  • RealPlayer in emulator
  • Improved S60 API documentation
  • Support for context sensitive S60 API help in CodeWarrior 3.1
  • Documentation as a Carbide.c++ plugin

API Changes in MR

The following files have been removed. Corresponding functionality is not present in all (or in some) S60 devices:


System Requirements

Basic Requirements

  • Microsoft Windows XP SP2 or Microsoft Windows 2000 SP4
 Tested with Windows XP SP2.
  • IDE: CodeWarrior for Symbian OS v3.1
  • ARM RVCT compiler 2.2 build 503 or newer is supported. (Version 3.0 is not supported by SDK toolchain)
  • Minimum 1 GHz Pentium PC, 256 MB of memory
  • Up to 1.5 GB free disk space, other requirements as required by the IDE used.

Additional Requirements

  • Installation/uninstallation and using of the SDK requires local admin rights.
  • Active Perl 5.6.1 build 631 for SDK build tools. Newer or older versions of Perl may not be fully compatible with Symbian toolchain. Perl must be installed before using the SDK to build applications.
  • Java Runtime version 1.4.1_02 or later is required.
  • Casira hardware is required for Bluetooth connectivity emulation.

Changes Since Final Release

  • Flash Lite is removed from MR.

Known Issues and Deficiencies in this SDK Release

S60 APIs

  • Note that the Camera API implementation is device-specific. The Camera API provided in the S60 platform SDK is not compatible with e.g. Nokia devices. Camera APIs for specific devices will possibly be released later in Nokia Developer.
  • Although documented CCamera::NewL function taking MCameraObserver2 as a parameter will fail in devices. This overload is not yet implemented in Symbian OS 9.1.
  • The "Backup Server Client API" defined in babackup.h is deprecated and should not be used. To get backup state change notifications in your backup-aware application use the Publish And Subscribe key defined in Appendix A (taken from removed header sbdefs.h). For details about implementing backup aware applications see
  • The CommsDat::CMDBRecordBase::RecordFactoryLC method is not implemented. Using this function will cause linking error.
  • The SDP Codec API does not require any capabilities. It is incorrectly stated in the API reference documentation that the API requires NetworkControl and NetworkServices capabilities.
  • CAknPopupFieldList defined aknpopupfieldlist.h is deprecated and should not be used.
  • CalenInterimUtils class implementation defined in caleninterimutils.h will change in future S60 releases. It should not be used.
  • Header calnotification.h may be removed or changed in the future. It should not be used.
  • Header remconaddress.h may be removed or changed in the future. It should not be used.
  • Data Synchronization plug-in API and Device Management plug-in API have been removed.


  • The following headers are not in the SDK although classes/constants/enumerations included in them are documented:

Build Tools

  • MMP option to suppress warnings has no effect on linker-generated warnings.
  • Cannot make the .sis file when .pkg file name has non-Latin (e.g. Chinese, Japanese, Thai) characters.
  • "Bldmake plat" may fail if Visual C++ is not available.
  • The "Makmake project.mmp cw_ide" command may cause harmless warnings.
  • If SecureID is separately defined in the .mmp file, the GCCE toolchain may produce a wrong SecureID for the application. Use command "petran -dump s project.exe" to check generated SecureID.
 Run "bldmake bldfiles". 
 Locate "elf2e32" commands and edit "-sid" parameters, if wrong securid is set. 
 Run "abld build gcce urel" to build application.
  • Signsis does not work if no password is given on the commandline
  • Emulator freezes if files are deployed into \private\10003a3f\import\apps. Therefore, it is recommended to use
 following template to define _reg.rss resources in the .mmp file: 
   RESOURCE HelloWorldBasic_reg.rss
 #ifdef WINSCW
  • Compilation time options can be configured in the following
 configuration files:
 <SDK>\epoc32\tools\compilation_config\ and
  • To enable binary size optimization for GCCE target set the REL_OPTIMISATION value to e.g. -O2. Note, that this value will affect library dependency handling. Linker will fail with undefined symbols for certain cases. To correct the situation add libraries using the LIBRARY tag in you project's .mmp file. Some projects may fail to build with optimisation as required libraries are not part of S60 3rd Edition SDK. Use of lover level optmization (-O1) is recommemded.
  • In the SDK default configuration GCCE linker will not handle circular dependencies between static libraries when linking them into a single dll. To correct this problem change the following lines in file <SDK>\epoc32\tools\ :

PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCSTATLINK$Bld\)\\\\\$_\"\)", @StatLibList); To section: my $Plat = uc(&main::Plat); &main::Output(" \\\n\t-\(") if (@StatLibList && ($Plat eq "GCCE")); PrintList("\' \\\n\t\'\.\&Generic_Quote\(\"\\\$\(EPOCSTATLINK$Bld\)\\\\\$_\"\)", @StatLibList); &main::Output(" \\\n\t-\)") if (@StatLibList && ($Plat eq "GCCE"));

 As a last minute fix this was not included in SDK and is not properly system tested.


  • Executing ceddump.exe does not create a cedout.cfg file if the emulator is running.
  • IrDA is enabled and configured by default even if hardware is not present in the PC.
  • Nokia Connectivity Framework is supported for file-based SMS and MMS, but not for Bluetooth connections.
  • Bluetooth USB dongles are not supported. Casira hardware and/or BrainBoxes PCMCIA family devices can be used.


  • None of the documented CTRL-ALT-SHIFT-debug key combinations work.
  • WAP Push Files do not open in the emulator.
  • Epoc.exe process hangs if emulator is "turned off" in standby mode. Workaround: Kill process using Windows Task Manager.
  • To start debugging application go to "Installed" folder in the emulator and select the application to be debugged. Debuggee is started.
  • In the emulator, the value of the User::NTickCount() function advances every 5 ms (200 Hz) instead of every 1 ms (1000 Hz) as mentioned in the documentation.
  • When opening DRM content using File > Open, rights object (DRC) must be loaded before content (DCF).

- SIC (Service Indication) and DRC (Digital Rights) content cannot be 'pushed' to the SDK from NMIT (Nokia Mobile Internet Toolkit). Workaround: Save the SIC and DRC content in NMIT by using the Save Binary option, and then File > Open them using the SDK.

  • Emulated memory card size is not correctly shown when using "Virtual MMC" feature in emulator utilities menu.
  • Emulated events are not acknowledged by emulator UI in all situations. Events need to be catched programmatically.

Emulator Applications

  • Camera is not supported by the S60 emulator.
  • The Message application does not allow Chinese names in the recipient field.
  • Some tiff images are not supported.
  • RealPlayer supports playing 3gp and mp4 files. Real Video 10, 9, 8 can also be played, video part is displayed but the audio part may suffer distortions. Other formats are not supported in the S60 emulator.


  • Brctlsample does not work in the emulator, but is fully functional in a device.


  • Installation to non default folder creates extra folders to the C: drive.
  • SDK uninstall does not remove SDK entries from installationRegistry.xml.
  • It is recommended to install the SDK to default location.

S60 Tools

  • Multiple JRE installation confuses the svg2svgt installer. Workaround: Add JRE (1.4.2 or newer) folder to PATH, before running the installer, after installation JRE installation folder can be removed from PATH.
  • Route point longitude is different in Utilities > Route and in SimPsyConfigurator.
  • You need at least two PCs to run SIP Applications. Minimum configuration:
    • PC1: S60 Emulator running Client application using SIP + SIP Server Emulator
    • PC2: S60 Emulator running Client application using SIP
  • SIP Server emulator can also reside on a third computer. When using SIP Server Emulator at the same PC with S60 emulator, SIP Profile configured on this S60 emulator must include SIP Proxy set to the same server address and SIP Realm as configured for SIP Registrar (e.g. the IP address of the machine where both run).

Appendix A sbdefs.h contents:

Declaration of Types and Constants for Secure Backup and Restore
Copyright (c) 2004-2005 Symbian Software Ltd. All rights reserved.
#ifndef __SBDEFS_H__
#define __SBDEFS_H__
#include <e32std.h>
#include <f32file.h>
namespace conn
/** Secure Backup and Restore publish and subscribe key
Secure Backup and Restore uses a Publish and Subscribe key to publish
the current backup / restore state.
The key is a system key so the category to be used when subscribing is KUidSystemCategoryValue
The key to be used is KUidBackupRestoreKey.
The value is a bit-wise OR of a TBURPartType value and a TBackupIncType value
This means that a normal state (i.e. non-backup or restore) is EBURNormal | ENoBackup but
If the key has not been set (i.e. == 0) then no backup or restore is in progress either
const TUint KUidBackupRestoreKey = 0x10202792 ;
/** TBURPartType Bitmask
const TUint KBURPartTypeMask = 0xff;
enum TBURPartType
The backup / restore state of a device.
EBURUnset = 0x00000000, /*!< 0x00000000: The backup / restore mode has not been set */
EBURNormal = 0x00000001, /*!< 0x00000001: The device as a whole is not engaged in a backup or restore */
EBURBackupFull = 0x00000002, /*!< 0x00000002: The device as a whole is engaged in a backup of all components data */
EBURBackupPartial = 0x00000004, /*!< 0x00000004: The device as a whole is engaged in a backup of selected components data */
EBURRestoreFull = 0x00000008, /*!< 0x00000008: The device as a whole is engaged in a restore of all components data */
EBURRestorePartial = 0x00000010 /*!< 0x00000010: The device as a whole is engaged in a restore of all components data */
/** TBackupIncType Bitmask
const TUint KBackupIncTypeMask = 0xffffff00;
enum TBackupIncType
The type of a backup.
ENoBackup = 0x00000000, /*!< 0x00000000: No backup is in progress */
EBackupBase = 0x00000100, /*!< 0x00000100: The backup is a base backup, i.e. it includes all files / data */
EBackupIncrement = 0x00000200 /*!< 0x00000200: The backup is an incremental backup, i.e. it includes only files / data that have changed since a previous backup */
} // end namespace

Copyright (c) 2001-2006 Nokia Corporation. All rights reserved. Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation.

This page was last modified on 22 October 2012, at 05:26.
148 page views in the last 30 days.