oFono - Open Source Telephony
Copyright (C) 2008-2011 Intel Corporation. All rights reserved.
The overall goal of the oFono project is to create a telephony host stack
for embedded/mobile and desktop systems based on Linux.
It currently targets GSM/UMTS User Equipment (UE) based on 3GPP standards,
but is of course not limited to that. Extensions for other telephony systems
like CDMA/EVDO are more than welcome.
Within oFono there is clear abstraction between the application interfaces
based on D-Bus, the hardware level (via drivers) and the integration with
other system components (plugins). The whole architecture is modular and
The oFono stack will support the majority of the features from the 3GPP
specification, but not all of them. The whole standard is pretty complex
and some features are not used in any mobile network so far, some of them
are outdated and have no relevance anymore. This paragraph tries to give
some insights on what has been implemented so far, what is coming in the
future and especially what will not be part of oFono.
Current implemented features:
Currently there are two modem drivers available.
The "atmodem" driver handles hardware based on the 3GPP
TS 27.007 standard.
The "isimodem" driver handles Nokia based PhoNet modems.
The network registration interface contains support for
network detection. It also handles the automatic or manual
registration to a mobile network.
Additional information about the current network can be
easily retrieved and displayed to the user.
Network time indications
oFono includes support for receiving Network Identity and
Timezone (NITZ) indications, and handles processing of
this information via system-specific plugins.
An example network time plugin is provided that simply
prints out the received time information. A more advanced,
real-world plugin could automatically set the system time
based on the received information.
Voice call handling
The voice call interface handles simple call creation and
termination. It also supports 3way-calling and multi-party
This is only for voice control. It doesn't contain support
for the voice data path/routing.
Advanced voice call control
Features like COLR/CLIR/CLIP/COLP are supported by the
voice call handling interface.
The support for call forwarding and call waiting is also
Interfaces for call barring and advice of charge do exist,
but highly depend on if the operator supports them.
The call history is realized via a plugin interface and
not handled directly. This allows an easy integration with
storage systems like Evolution-Data-Server.
The storage of the SIM card is not used. The only supported
feature is to export the contacts stored on the SIM card to
some third-part entity.
SIM card storage is limited, slow and not flexible enough
for modem telephony applications.
Short message service
The SMS support for text messages is available. oFono
supports concatenated messages of up to 255 segments, UCS2 and
GSM alphabets as well as extended alphabets. Delivery
confirmations (Status Reports) are also supported.
Selection of SMS bearer settings is supported through the
'Bearer' property on the SmsManager interface.
SIM PIN handling
SIM PIN locks, network and service provider locks are
supported. The SIM Manager also handles retry counter for PIN,
PIN2, PUK and PUK2.
Cell broadcasts should be fully supported by oFono, but have
not been well tested. Base station name ids have been
confirmed to work.
GPRS data connections are fully supported by oFono. Multiple
active GPRS contexts are supported. IPv6 context support is
Radio Access Settings
The radio settings interface contains support for selecting
the access selection mode and used frequency bands, and allows
enabling and disabling fast dormancy on hardware that support
The Sim Toolkit interface handles the SAT commands. Sim Toolkit
relies on the SimToolkit agent not only to get confirmation
from the user but also to inform user of the SAT initiated
operation status. Information on the Sim Toolkit feature
list can be found in features.txt.
The Supplementary Services interface handles both recognized
supplementary service control string and user/network initiated
unstructured supplementary service data (USSD).
oFono provides a Location Reporting interface that enables
taking advantage of on-board GPS capabilities of modern modems.
oFono also provides an Assisted Satellite Navigation interface
that allows feeding assistance data to the GPS unit from the
network as well as E911 services.
Work in progress features:
IPv6 PS context support is under development.
To enable DialUp Networking (over Bluetooth or USB), and to
allow Bluetooth HandsFree / Headset support, oFono will expose
some 'fake' modem to enable the communication with car kits, or
Not implemented features:
SIM card storage
The SIM card storage will not be used by oFono. It is slow,
limited in size and flexibility. It is an outdated interface
that makes no sense in a modern telephony system.
Export of stored contacts from the SIM card is supported for
legacy reasons and to allow a smooth transition.
The WAP feature is outdated and using full Internet access
with an embedded browser is the future.
The MMS support should not be part of oFono itself. The best
idea is to implement a MMS service that runs in the user
session and uses oFono's SMS interface to listen for
Similar to the split between BlueZ and OBEX daemon.
Especially when it comes to image conversion and other tasks
that MMS support requires it is important to NOT do this as
a system daemon.
This is an Ericsson specific standard and not widely spread
across the handset manufactures.
Currently there are no plans to support this. The support
from the networks and available handsets are still limited.
This needs re-evaluation once such a service becomes more
A similar split like with MMS might be a good idea.