oFono – Open Source Telephony

                   June 2009

                   Denis Kenzior

                     OSCON ...
Agenda


•   What is Telephony?
•   What is GSM?
•   Past Approaches
•   oFono
•   Questions




       Intel Confidential...
What is Telephony?


•   Definition: The use or operation of an apparatus (as a
    telephone) for transmission of sounds ...
Product Categorization


•   Plain old telephony system




       Intel Confidential        Software and Services Group
 ...
Product Categorization


•   Desktop devices




       Intel Confidential   Software and Services Group
                 ...
Product Categorization


•   Mobile Telephony Devices




       Intel Confidential      Software and Services Group
     ...
Convergence


•   Line between “Mobile” and “Desktop” telephony is blurring
    – Laptops / Netbooks with 3G
    – Mobile ...
Understanding GSM


•   GSM – Global System for Mobile communications
•   Used by 80% of the mobile market
•   3 Billion s...
Understanding GSM


•   Voice
•   Data
•   Fax
•   General Packet Radio Service (GPRS)
•   Supplementary Services
•   Shor...
What makes GSM so hard?


•   Voluminous specifications
    –   Call Handling
    –   Supplementary Services
    –   SMS
 ...
What makes GSM really hard?


•   Backwards Compatibility
    – Several evolutions of the spec
    – Each adds new capabil...
Past Approaches: Qt Extended (Qtopia)


•   Developed by Trolltech (now Nokia)
•   Dual license (GPL / Commercial)
•   Emb...
Past approaches: FSO


• Aims to provide fully Open Source mobile phones
• Open Hardware
• Open Source OS & applications
 ...
Why reinvent the wheel?


• Qtopia
  –   Custom IPC, broadcast based, no point to point
  –   Too slow
  –   Too heavy
  –...
Introducing oFono


•   oFono is a core system daemon
    – DBUS API

• Launched by Intel & Nokia on May, 2009
• Licensed ...
oFono: Architecture




  Intel Confidential   Software and Services Group
                                               ...
oFono: Philosophy


•   Support for all kinds of devices
    –   Desktop
    –   Notebook / Netbook
    –   MID / Mobile P...
Broad Support


•   Support multiple technologies
    – AT Commands
    – Library / Socket APIs
    – AT command-like inte...
Keep experts where they belong


•   oFono
    –   Takes care of core logic
    –   Addresses all Telephony aspects that a...
API so good, anyone can use it


•   Consistent
    – Naming conventions
    – Similar structure
•   Minimal
    –   No Bl...
All Interfaces look alike


•   Methods
•   Properties
    – Readonly
    – Readwrite
•   Signals
    – Emitted when event...
Make it extendable


•   Plug-ins can:
    –   Add new modem adaptations
    –   Storage backend for call history
    –   ...
Make UI writer’s job easier


•   Multiple user interfaces can be active at the same time
    – All applications will be i...
Make UI writer easily replaceable


•   UI should be easy to replace
    – Branding
    – Customization
    – Look & Feel
...
Standards Compliance


•   Take care of magic MMI incantations (22.030)
    –   Registration
    –   Activation
    –   In...
Take care of the gory details


•   Read & Write appropriate entries to the SIM
    –   Subscriber Numbers
    –   Message...
Take care of the really gory details


•   Service Provider Display
    – Support Mobile Virtual Network Operators (MVNO)
...
Welcome to the 21st Century


•   Don’t use SIM for Contacts
    –   Limited storage
    –   Limited attribute length
    ...
Peer Collaboration

•   oFono plugin for BlueZ
    – Provides server-side Handsfree Profile capability

•   oFono plugin f...
Current Development


•   Network Registration
•   Voice Calls
•   Supplementary Services
    –   Call Waiting, Hold, Mult...
Future Work


•   Cell Broadcast
•   USSD
•   Message Waiting Indicators
•   GPRS
    – PPP
    – Vendor specific

•   Pow...
Questions?


•   Website
    – http://ofono.org

•   Code
    – http://git.kernel.org/?p=network/ofono/ofono.git;a=summary...
Legal Information

INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION
WITH INTEL® PRODUCTS. EXCEPT AS PROVIDED IN INTE...
Upcoming SlideShare
Loading in …5
×

oFono ‐ Open Source Telephony

2,434 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,434
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
41
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

oFono ‐ Open Source Telephony

  1. 1. oFono – Open Source Telephony June 2009 Denis Kenzior OSCON 2009
  2. 2. Agenda • What is Telephony? • What is GSM? • Past Approaches • oFono • Questions Intel Confidential Software and Services Group ‹#›
  3. 3. What is Telephony? • Definition: The use or operation of an apparatus (as a telephone) for transmission of sounds as electrical signals between widely removed points • Today it is much more than that: – POTS – Mobile Telephony – IP Telephony Intel Confidential Software and Services Group ‹#›
  4. 4. Product Categorization • Plain old telephony system Intel Confidential Software and Services Group ‹#›
  5. 5. Product Categorization • Desktop devices Intel Confidential Software and Services Group ‹#›
  6. 6. Product Categorization • Mobile Telephony Devices Intel Confidential Software and Services Group ‹#›
  7. 7. Convergence • Line between “Mobile” and “Desktop” telephony is blurring – Laptops / Netbooks with 3G – Mobile Phones with WiFi – Mobile Internet Devices (MID) • Power Management • Standards, Carrier Compliance • Comprehensive solution for Mobile Telephony missing – Start with the best candidate: GSM Intel Confidential Software and Services Group ‹#›
  8. 8. Understanding GSM • GSM – Global System for Mobile communications • Used by 80% of the mobile market • 3 Billion subscribers • 212 Countries • Digital Voice & Data network Intel Confidential Software and Services Group ‹#›
  9. 9. Understanding GSM • Voice • Data • Fax • General Packet Radio Service (GPRS) • Supplementary Services • Short Messaging Service (SMS) • Cell Broadcast (CB) • Enhanced SMS (EMS) • Multimedia Messaging Service (MMS) • Location Services • (U)SIM Application Toolkit ( USAT / STK ) Intel Confidential Software and Services Group ‹#›
  10. 10. What makes GSM so hard? • Voluminous specifications – Call Handling – Supplementary Services – SMS – Cell Broadcast – USSD – Sim Toolkit • Vendor / Carrier Enhancements – Enhanced SMS (EMS) – Smart Messaging – WAP – OTA • Technological / Storage Limitations – Number, kind of calls – SIM Filesystem Intel Confidential Software and Services Group ‹#›
  11. 11. What makes GSM really hard? • Backwards Compatibility – Several evolutions of the spec – Each adds new capabilities, but does not deprecate old ones • Every bit counts – 7 Bit alphabet – Packing / Unpacking – Binary data structures • Broken Hardware Intel Confidential Software and Services Group ‹#›
  12. 12. Past Approaches: Qt Extended (Qtopia) • Developed by Trolltech (now Nokia) • Dual license (GPL / Commercial) • Embedded Application Platform • Fairly Comprehensive Telephony solution – Modem adaptation layer – Modem simulation – Voice / Data, GPRS, SMS / CB – Sim Toolkit support – Custom IPC system based • Not quite GCF ready out of the box Intel Confidential Software and Services Group ‹#›
  13. 13. Past approaches: FSO • Aims to provide fully Open Source mobile phones • Open Hardware • Open Source OS & applications – Similar in scope to Qtopia – Device management APIs – Telephony APIs – Contacts APIs – GPS / Locality • Telephony based on frameworkd / ogsmd / gsmd – Provides low-level procedural APIs over DBUS, Python based – Modem Adaptation layer – Handles Voice / Data calls, SMS & Cell Broadcast • Really not GCF ready Intel Confidential Software and Services Group ‹#›
  14. 14. Why reinvent the wheel? • Qtopia – Custom IPC, broadcast based, no point to point – Too slow – Too heavy – Too complex • FSO – Does not really consider multiple backend implementations – Only mobile phone useage, no desktop use cases – Logic pushed onto the application – Standards compliance an afterthought – Too slow • Need something for the 21st century Intel Confidential Software and Services Group ‹#›
  15. 15. Introducing oFono • oFono is a core system daemon – DBUS API • Launched by Intel & Nokia on May, 2009 • Licensed under GPL v2 – Core and plug-ins are always Open Source • Plug-ins can be licensed under GPL or GPL compatible (e.g. certain versions of BSD) • Client applications can choose any license Intel Confidential Software and Services Group ‹#›
  16. 16. oFono: Architecture Intel Confidential Software and Services Group ‹#›
  17. 17. oFono: Philosophy • Support for all kinds of devices – Desktop – Notebook / Netbook – MID / Mobile Phone – Other embedded devices • Fast and Light • Easy to use, powerful API • Easy to extend • Command line & graphical interfaces possible • User Interface easy to replace, logic in the daemon • Focus on standards compliance from the start • Ready for the 21st century Intel Confidential Software and Services Group ‹#›
  18. 18. Broad Support • Support multiple technologies – AT Commands – Library / Socket APIs – AT command-like interfaces • Bluetooth Handsfree devices • Support multiple devices simultaneously – USB modems – Serial Modems – Bluetooth devices – Simulated Devices Intel Confidential Software and Services Group ‹#›
  19. 19. Keep experts where they belong • oFono – Takes care of core logic – Addresses all Telephony aspects that are “Hard to get it right” – Stable and Standards based – Take care of hardware / vendor idiosyncrasies – Take care of compliance – Telephony experts go here • UI has different focus – Animations – Ease of use – Graphic Design – UI experts go here, not telephony experts Intel Confidential Software and Services Group ‹#›
  20. 20. API so good, anyone can use it • Consistent – Naming conventions – Similar structure • Minimal – No Bloat, no more than one way of accomplishing a task – It is easier to add than to change – Most important things first – Feature creep is bad • Complete – Accomplish everything a typical UI can • Easy to use Intel Confidential Software and Services Group ‹#›
  21. 21. All Interfaces look alike • Methods • Properties – Readonly – Readwrite • Signals – Emitted when events of interest happen • Two special methods dealing with properties – dict GetProperties() – SetProperty(string property, variant value) • Special signal dealing with properties – PropertyChanged(string property, variant value) Intel Confidential Software and Services Group ‹#›
  22. 22. Make it extendable • Plug-ins can: – Add new modem adaptations – Storage backend for call history – Write to the SIM – Read from the SIM – Send SMS – Receive SMS • Plug-ins are also first-class citizens: – Add new (unofficial) D-Bus APIs – Example: Datagrams over SMS Intel Confidential Software and Services Group ‹#›
  23. 23. Make UI writer’s job easier • Multiple user interfaces can be active at the same time – All applications will be informed via DBUS signals when something has changed • UI tasks can be logically separated – Dialer – Settings – SMS Client • UI Applications do not need to be resident • State is kept by the daemon – State query is fast Intel Confidential Software and Services Group ‹#›
  24. 24. Make UI writer easily replaceable • UI should be easy to replace – Branding – Customization – Look & Feel • Can be Open Source or proprietary license Intel Confidential Software and Services Group ‹#›
  25. 25. Standards Compliance • Take care of magic MMI incantations (22.030) – Registration – Activation – Interrogation – Deactivation – Erasure • Unrecognized Requests are – Checked for validity – Passed onto the network in the form of a USSD Intel Confidential Software and Services Group ‹#›
  26. 26. Take care of the gory details • Read & Write appropriate entries to the SIM – Subscriber Numbers – Message Waiting Indications – Service Numbers – Mailbox Numbers – Call Forwarding Settings – Outgoing Call History – Incoming Call History – Cell Broadcast Identifiers Intel Confidential Software and Services Group ‹#›
  27. 27. Take care of the really gory details • Service Provider Display – Support Mobile Virtual Network Operators (MVNO) – Files on the SIM control how the operator is displayed • EFspn • EFspdi • EFspni • Operator Display – Operator lists outdated – Broadcasting the name is not good enough – Enhanced Operator Name • EFpnn • EFpnni • EFopl Intel Confidential Software and Services Group ‹#›
  28. 28. Welcome to the 21st Century • Don’t use SIM for Contacts – Limited storage – Limited attribute length – Limited set of attributes – Management details tend to bleed through into UX – SyncML is just better • Don’t use SIM for SMS – Limited space – Out-of-space conditions Intel Confidential Software and Services Group ‹#›
  29. 29. Peer Collaboration • oFono plugin for BlueZ – Provides server-side Handsfree Profile capability • oFono plugin for ConnMan – Planned – Will provide network management of 3G connection • Future – Time / Timezone settings – Modem emulator • DUN • Serial Port Profile – OTA Intel Confidential Software and Services Group ‹#›
  30. 30. Current Development • Network Registration • Voice Calls • Supplementary Services – Call Waiting, Hold, Multiparty – User Determined User Busy – Explicit Call Transfer – Call Forwarding – Call Settings – Call Barring – Advice of Charge • SMS – Send – Receive • SIM Phonebook export using vCard 3.0 Intel Confidential Software and Services Group ‹#›
  31. 31. Future Work • Cell Broadcast • USSD • Message Waiting Indicators • GPRS – PPP – Vendor specific • Power Management Intel Confidential Software and Services Group ‹#›
  32. 32. Questions? • Website – http://ofono.org • Code – http://git.kernel.org/?p=network/ofono/ofono.git;a=summary • Mailing List – ofono@ofono.org • IRC – #ofono on freenode.net Intel Confidential Software and Services Group ‹#›
  33. 33. Legal Information INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH INTEL® PRODUCTS. EXCEPT AS PROVIDED IN INTEL'S TERMS AND CONDITIONS OF SALE FOR SUCH PRODUCTS, INTEL ASSUMES NO LIABILITY WHATSOEVER, AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY RELATING TO SALE AND/OR USE OF INTEL PRODUCTS, INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT, OR OTHER INTELLECTUAL PROPERTY RIGHT. Intel may make changes to specifications, product descriptions, and plans at any time, without notice. All dates provided are subject to change without notice. Intel is a trademark of Intel Corporation in the U.S. and other countries. *Other names and brands may be claimed as the property of others. Copyright © 2009, Intel Corporation. All rights are protected. Intel Confidential Software and Services Group ‹#›

×