by Gerald Boerner


JerryPhoto_8x8_P1010031 Nokia has been a player in the cell phone marketplace since its beginning. More recently, they have been marketing several smartphones powered by the Symbian OS. In the recent marketplace statistics, the Nokia smartphones had approximately the same marketshare as the iPhone, although the iPhone has been gaining market share recently. It has been updating its feature set, but has not gained on the top two smartphone OSs: iPhone and Android.  GLB


Cell phones rely on the strongest signal. So it’s not uncommon for the signal to hit a tower in another county,”
— Andrew Knapp

“When he canceled his cell phone he learned that the suspect had used the picture phone and had taken pictures of himself with the fire equipment,”
— James Conn

“If you feel someone suspicious is following you, the best thing to do is to talk on your cell phone, … Even if you just act as if someone is on the other end, it will make them think twice.”
— Arthur Mitchell

“Between cell phones, text-messaging, e-mails and computers, this tells us that if this was a more serious rumor or in a larger city, this kind of thing could really create huge problems.”
— Chris Campbell

“I didn’t want a period piece because embroidering is definitely not an art of the past, at least not yet. I suppose the story could be set anywhere between the 1960s and the present . . . but I did want to make sure no one used cell phones or worked on computers because that would ruin the sensual atmosphere.”
— Eleonore Faucher

“[He picked up the phone and began to make calls, aware that his firing would ripple far beyond his desk. Pottruck’s assistant of 15 years, Colleen Bagan-McGill, was driving through San Francisco with her husband and kids at the start of a long-awaited vacation when her cell phone rang.] How are you doing, honey? … I need to tell you something. I got fired this morning.”
— David Pottruck

“Reino and Las Vegas are parking innovators who have taken the industry forward by making parking as consumer-friendly as possible. This deployment is another milestone for the Peppercoin Small Transaction Suite and further demonstrates the potential to improve consumers’ experiences by letting them use their preferred payment devices-credit and debit cards, as well as cell phones — for transactions of all sizes in the physical world.”
— Mark Friedman

“The dynamic is unmistakable: fixed lines for phones have been declining at a three-percent rate for the last several years, while the number of Americans opting for cell phone calling keeps increasing. If you are a fixed line provider this trend means trouble. Many of the fixed mobile convergence strategies under consideration end up utilizing a smart phone or dual-mode VoWLAN/Cellular phone that works like a landline phone in the local area and then converts to cell phone calling.”
— Robert Rosenberg

History of Hand-Held Computers: The Symbian OS

nokia_n900 Symbian OS is an operating system (OS) designed for mobile devices and smartphones, with associated libraries, user interface, frameworks and reference implementations of common tools, originally developed by Symbian Ltd. It was a descendant of Psion’s EPOC and runs exclusively on ARM processors, although an unreleased x86 port existed.

In 2008, the former Symbian Software Limited was acquired by Nokia and a new independent non-profit organisation called the Symbian Foundation was established. Symbian OS and its associated user interfaces S60, UIQ and MOAP(S) were contributed by their owners to the foundation with the objective of creating the Symbian platform as a royalty-free, open source software. The platform has been designated as the successor to Symbian OS, following the official launch of the Symbian Foundation in April 2009. The Symbian platform was officially made available as open source code in February 2010.

Devices based on Symbian OS account for 46.9% of smartphone sales, making it the world’s most popular mobile operating system.


Symbian features pre-emptive multitasking and memory protection, like other operating systems (especially those created for use on desktop computers). EPOC’s approach to multitasking was inspired by VMS and is based on asynchronous server-based events.

Symbian OS was created with three systems design principles in mind:

  • the integrity and security of user data is paramount,
  • user time must not be wasted, and
  • all resources are scarce.

To best follow these principles, Symbian uses a microkernel, has a request-and-callback approach to services, and maintains separation between user interface and engine. The OS is optimised for low-power battery-based devices and for ROM-based systems (e.g. features like XIP and re-entrancy in shared libraries). Applications, and the OS itself, follow an object-oriented design: Model-view-controller (MVC).

Later OS iterations diluted this approach in response to market demands, notably with the introduction of a real-time kernel and a platform security model in versions 8 and 9.

There is a strong emphasis on conserving resources which is exemplified by Symbian-specific programming idioms such as descriptors and a cleanup stack. There are similar techniques for conserving disk space (though the disks on Symbian devices are usually flash memory). Furthermore, all Symbian programming is event-based, and the CPU is switched into a low power mode when applications are not directly dealing with an event. This is achieved through a programming idiom called active objects. Similarly the Symbian approach to threads and processes is driven by reducing overheads.

The Symbian kernel (EKA2) supports sufficiently-fast real-time response to build a single-core phone around it—that is, a phone in which a single processor core executes both the user applications and the signalling stack. This is a feature which is not available in Linux. This has allowed Symbian EKA2 phones to become smaller, cheaper and more power efficient than their predecessors


In the number of “smart mobile device” shipments, Symbian devices are the market leaders. Statistics published in February 2010 showed that the Symbian devices comprised a 47.2% share of the smart mobile devices shipped in in 2009, with RIM having 20.8%, Apple having 15.1% (through iPhone OS), Microsoft having 8.8% (through Windows CE and Windows Mobile) and Android having 4.7%. Other competitors include Palm OS, Qualcomm’s BREW, SavaJe, Linux and MontaVista Software.

Although the share of the global smartphone market dropped from 52.4% in 2008 to 47.2% in 2009, the shipment volume of Symbian devices grew 4.8%, from 74.9 million units to 78.5 million units.


The Symbian System Model contains the following layers, from top to bottom:

  • UI Framework Layer
  • Application Services Layer
    • Java ME
  • OS Services Layer
    • generic OS services
    • communications services
    • multimedia and graphics services
    • connectivity services
  • Base Services Layer
  • Kernel Services & Hardware Interface Layer

The Base Services Layer is the lowest level reachable by user-side operations; it includes the File Server and User Library, a Plug-In Framework which manages all plug-ins, Store, Central Repository, DBMS and cryptographic services. It also includes the Text Window Server and the Text Shell: the two basic services from which a completely functional port can be created without the need for any higher layer services.

Symbian has a microkernel architecture, which means that the minimum necessary is within the kernel to maximise robustness, availability and responsiveness. It contains a scheduler, memory management and device drivers, but other services like networking, telephony and filesystem support are placed in the OS Services Layer or the Base Services Layer. The inclusion of device drivers means the kernel is not a true microkernel. The EKA2 real-time kernel, which has been termed a nanokernel, contains only the most basic primitives and requires an extended kernel to implement any other abstractions.

Symbian is designed to emphasise compatibility with other devices, especially removable media file systems. Early development of EPOC led to adopting FAT as the internal file system, and this remains, but an object-oriented persistence model was placed over the underlying FAT to provide a POSIX-style interface and a streaming model. The internal data formats rely on using the same APIs that create the data to run all file manipulations. This has resulted in data-dependence and associated difficulties with changes and data migration.

There is a large networking and communication subsystem, which has three main servers called: ETEL (EPOC telephony), ESOCK (EPOC sockets) and C32 (responsible for serial communication). Each of these has a plug-in scheme. For example ESOCK allows different “.PRT” protocol modules to implement various networking protocol schemes. The subsystem also contains code that supports short-range communication links, such as Bluetooth, IrDA and USB.

There is also a large volume of user interface (UI) Code. Only the base classes and substructure were contained in Symbian OS, while most of the actual user interfaces were maintained by third parties. This is no longer the case. The three major UIs – S60, UIQ and MOAP – were contributed to Symbian in 2009. Symbian also contains graphics, text layout and font rendering libraries.

All native Symbian C++ applications are built up from three framework classes defined by the application architecture: an application class, a document class and an application user interface class. These classes create the fundamental application behaviour. The remaining required functions, the application view, data model and data interface, are created independently and interact solely through their APIs with the other classes.

Many other things do not yet fit into this model – for example, SyncML, Java ME providing another set of APIs on top of most of the OS and multimedia. Many of these are frameworks, and vendors are expected to supply plug-ins to these frameworks from third parties (for example, Helix Player for multimedia codecs). This has the advantage that the APIs to such areas of functionality are the same on many phone models, and that vendors get a lot of flexibility. But it means that phone vendors needed to do a great deal of integration work to make a Symbian OS phone.

Symbian includes a reference user-interface called “TechView”. It provides a basis for starting customisation and is the environment in which much Symbian test and example code runs. It is very similar to the user interface from the Psion Series 5 personal organizer and is not used for any production phone user interface.

Devices that use Symbian OS

On 16 November 2006, the 100 millionth smartphone running the OS was shipped.

  • The Ericsson R380, in 2000, was the first commercially available phone based on Symbian OS. As with the modern “FOMA” phones, this device was closed, and the user could not install new C++ applications. Unlike those, however, the R380 could not even run Java applications, and for this reason, some have questioned whether it can properly be termed a ‘smartphone’.
  • The UIQ interface was used for PDAs such as Sony Ericsson P800, P900, W950 and the RIZR Z8 and RIZR Z10.
  • The Nokia S60 interface is used in various phones, the first being the Nokia 7650. The Nokia N-Gage and Nokia N-Gage QD gaming/smartphone combos are also S60 platform devices. It was also used on other manufacturers’ phones such as the Siemens SX1 and Samsung SGH-Z600. Recently, more advanced devices using S60 include the Nokia 6xxx, the Nseries (except Nokia N8xx and N9xx), the Eseries and some models of the Nokia XpressMusic mobiles.
  • The Nokia 9210, 9300 and 9500 Communicator smartphones used the Nokia Series 80 interface.
  • The Nokia 7710 is the only device currently using the Nokia Series 90 interface.
  • Fujitsu, Mitsubishi, Sony Ericsson and Sharp developed phones for NTT DoCoMo in Japan, using an interface developed specifically for DoCoMo’s FOMA “Freedom of Mobile Access” network brand. This UI platform is called MOAP “Mobile Oriented Applications Platform” and is based on the UI from earlier Fujitsu FOMA models.

As of 21 July 2009, more than 250 million devices running Symbian OS had been shipped.

Developing on Symbian OS

The native language of Symbian is C++, although it is not a standard implementation. There were multiple platforms based upon Symbian OS that provided SDKs for application developers wishing to target Symbian OS devices – the main ones being UIQ and S60. Individual phone products, or families, often had SDKs or SDK extensions downloadable from the manufacturer’s website too. With the various UI platforms unified in the Symbian platform there should be less diversity between manufacturer’s SDKs from 2010 onwards.

The SDKs contain documentation, the header files and library files required to build Symbian OS software, and a Windows-based emulator (“WINS”). Up until Symbian OS version 8, the SDKs also included a version of the GCC compiler (a cross-compiler) required to build software to work on the device.

Symbian OS 9 and the Symbian platform use a new ABI and require a different compiler – a choice of compilers is available including a newer version of GCC (see external links below).

Unfortunately, Symbian C++ programming has a steep learning curve, as Symbian requires the use of special techniques such as descriptors and the cleanup stack. This can make even relatively simple programs harder to implement than in other environments. Moreover, it is questionable whether Symbian’s techniques, such as the memory management paradigm, are actually beneficial. It is possible that the techniques, developed for the much more restricted mobile hardware of the 1990s, simply cause unnecessary complexity in source code because programmers are required to concentrate on low-level routines instead of more application-specific features. It seems difficult, however, to make a move towards a more high-level and modern programming paradigm.

Symbian C++ programming is commonly done with an IDE. For previous versions of Symbian OS, the commercial IDE CodeWarrior for Symbian OS was favoured. The CodeWarrior tools were replaced during 2006 by Carbide.c++, an Eclipse-based IDE developed by Nokia. Carbide.c++ is offered in four different versions: Express, Developer, Professional, and OEM, with increasing levels of capability. Fully featured software can be created and released with the Express edition, which is free. Features such as UI design, crash debugging etc. are available in the other, charged-for, editions. Microsoft Visual Studio 2003 and 2005 are also supported through the Carbide.vs plugin.

Symbian’s flavour of C++ is very specialised. However, Symbian devices can also be programmed using Python, Java ME, Flash Lite, Ruby, .NET, Web Runtime (WRT) Widgets and Standard C/C++..

Visual Basic programmers can use NS Basic to develop apps for S60 3rd Edition and UIQ 3 devices.

In the past, Visual Basic, VB.NET, and C# development for Symbian were possible through AppForge Crossfire, a plugin for Microsoft Visual Studio. On 13 March 2007 AppForge ceased operations; Oracle purchased the intellectual property, but announced that they did not plan to sell or provide support for former AppForge products. Net60, a .NET compact framework for Symbian, which is developed by redFIVElabs, is sold as a commercial product. With Net60, VB.NET and C# (and other) source code is compiled into an intermediate language (IL) which is executed within the Symbian OS using a just-in-time compiler. (As of 18/1/10 RedFiveLabs has ceased development of Net60 with this announcement on their landing page: At this stage we are pursuing some options to sell the IP so that Net60 may continue to have a future.)

There is also a version of a Borland IDE for Symbian OS. Symbian OS development is also possible on Linux and Mac OS X using tools and techniques developed by the community, partly enabled by Symbian releasing the source code for key tools. A plugin that allows development of Symbian OS applications in Apple’s Xcode IDE for Mac OS X is available.

Once developed, Symbian applications need to find a route to customers’ mobile phones. They are packaged in SIS files which may be installed over-the-air, via PC connect, Bluetooth or on a memory card. An alternative is to partner with a phone manufacturer and have the software included on the phone itself. The SIS file route is more difficult for Symbian OS 9.x, because any application wishing to have any capabilities beyond the bare minimum must be signed via the Symbian Signed program. There are however various hacks, which allow installing unsigned programs with any capabilities to Symbian OS 9.x.

Introduction of the Symbian Signed system in which application developers need to pay in order to use some of the more attractive smartphone features (as contrasted to platforms like Palm OS and Windows Mobile) is making it an increasingly unpopular platform for Open Source projects, independent developers and small startups. This situation is worsened by the fragmentation of user interface systems (UIQ vs S60 vs MOAP), meaning that developers need to build and maintain multiple incompatible versions of their software if they want to target multiple devices which use the same underlying Symbian OS version.

Java ME applications for Symbian OS are developed using standard techniques and tools such as the Sun Java Wireless Toolkit (formerly the J2ME Wireless Toolkit). They are packaged as JAR (and possibly JAD) files. Both CLDC and CDC applications can be created with NetBeans. Other tools include SuperWaba, which can be used to build Symbian 7.0 and 7.0s programs using Java.

Nokia S60i phones can also run Python scripts when the interpreter Python for S60 is installed, with a custom made API that allows for Bluetooth support and such. There is also an interactive console to allow the user to write python scripts directly from the phone.

Background and biographical information is from Wikipedia articles on:

Wikipedia: Symbian OS…

Think Exist: Cell Phones…