Streamlining Python Development: A Guide to a Modern Project Setup
Openmokast: An open mobile broadcasting software stack for handheld devices
1. Openmokast: An open
mobile broadcasting
software stack for
handheld devices
Presented at FOSSLC Summercamp 2009
Ottawa, Canada
by Jean-Michel Bouffard
<jean-michel.bouffard@crc.ca>
2. Summary
✔ Broadcasting to handheld problem
✔ The Openmoko platform
✔ Implementing open mobile broadcasting in the
Openmokast project
✔ Conclusion
2
3. Broadcasting to handheld problem
✔ Typical mobile phones only support applications that
use the network operator controlled infrastructures:
✔ CDMA2000 -> 1X, EV-DO
✔ GSM -> GPRS, EDGE, 3G
✔ For this reason, innovation in mobility is difficult
✔ Broadcasting networks and applications have
traditionally been ignored by network operators and
mobile devices manufacturers
ATSC-M/H
3
4. Broadcasting to handheld problem
✔ The solution to mobile innovation is to create open
phone project based on open source software
www.android.com www.openmoko.org www.trolltech.com
4
5. Broadcasting to handheld problem
✔ Each project implements a complete software stack
with a middleware for mobile services
www.openmoko.org www.android.com
www.trolltech.com
5
6. Broadcasting to handheld problem
✔ No stack supported broadcasting!
✔ The Openmokast project was launched to support the
creation of independent broadcast-enabled handsets
by studying the specific requirements for mobile
multimedia broadcasting (MMB) applications in the
context of the previously mentioned open platforms and
by integrating corresponding software building blocks
into them
6
7. The Openmoko platform
- Why?
✔ The Openmoko project was selected for preliminary
development for many reasons
✔ Completely open software stack based on Linux
✔ Only hardware components with open API are part of the
devices
✔ The complete specs and the CAD files for of the devices were
released under a CC license
✔ The hardware engineering process is openly discussed in the
project's mailing lists and wiki pages
✔ The community is largely involved
in the software development and
good communication was
established over different online
collaboration tools
7
8. The Openmoko platform
- What?
✔ The Openmoko project was initiated by FIC and
Openmoko, Inc. in novembre 2006
✔ The project covers two main areas
✔ Hardware devices design and engineering
✔ Software development
✔ The mission of the project is to “free your phone” by
allowing users to
✔ Add and modify the software to their needs
✔ Add new hardware components
✔ Have full access to the phone capabilities
8
9. The Openmoko platform
- Hardware
✔ Openmoko released two different devices so far
✔ A preliminary developer preview, the Neo 1973
✔ The current stable device, the Neo FreeRunner
Neo 1973 Neo FreeRunner
codename GTA01 codename GTA02
(released July 2007) (released July 2008)
9
10. The Openmoko platform
- Hardware specifications
✔ High resolution touch screen 2.84” (43mm x 58mm)
480x640 pixels
✔ 128MB SDRAM memory
✔ 256 MB integrated flash memory (expandable with
microSD or microSDHC card)
✔ microSD slot supporting up to 8GB SDHC cards
✔ Internal GPS module
✔ Bluetooth
✔ 802.11 b/g WiFi
✔ 400Mhz ARM processor
✔ 2 * 3D accelerometers
✔ 2 LEDs illuminating the two buttons on the rim of the
case (one bicolor [blue|orange] behind the power button,
1 unicolor [red] behind the aux button)
✔ Tri-band GSM and GPRS
✔ USB Host function with 500mA power, allowing to power
USB devices for short periods
10
11. The Openmoko platform
- Software architecture
✔ The typical software stack
for embedded devices can
be represented in Layers
as depicted here
✔ The middleware layer
provides:
✔ The standard services offered
to the applications by the operating system
✔ The communication link between the applications
✔ The middleware assures:
✔ Compatibility of the applications that uses the platform
✔ Interoperability between the applications
11
13. The Openmoko platform
- Software architecture
✔ Middleware services for Openmoko
✔ High level
✔ Usage, Event, Preferences, Context, Telephony,
Networking, PIM
✔ Low level
✔ Device Control, GSM
Defined and
implemented under the
FSO Framework at
FreeSmartPhone.org
13
14. The Openmoko platform
- Distributions
✔ The official Openmoko distribution is OM2008.12
✔ illume window manager
✔ opkg package management system based on the Itsy Package
Management System for embedded devices
14
15. The Openmoko platform
- Distributions
✔ Distributions can be
classified in three groups
✔ OM Inc. driven
✔ OM Community driven
✔ Non-OM driven
✔ OM community has
generated a large
contribution
✔ Other less significant
distributions were also
successfully ported for OM
devices
15
16. The Openmoko platform
- Applications
✔ Development for OM is really active in the community
✔ Main sources to find OM applications:
✔ Openmoko wiki's master application list for the Openmoko
smartphones
✔ http://wiki.openmoko.org/wiki/Applications
✔ 114 applications listed in 13 categories
✔ opkg - A software directory for Openmoko phones
✔ http://www.opkg.org/
✔ 79 applications listed in 10 categories
✔ Because OM2008.x is a full featured Linux based system
including a full X server, almost any Linux application could be
rebuilt and packaged for the distribution
16
17. The Openmoko platform
- Applications examples
✔ Numptyphysics
✔ Drawing puzzle game
✔ Use a physics engine
specifically written for games
✔ TangoGPS
✔ Fast and lightweight mapping
application
✔ Uses the FreeRunner hardware
✔ GPS for real-time positioning
✔ Wifi connection for maps updates
✔ Uses maps data from the
Openstreetmap project
17
18. The Openmoko platform
- Is it for you?
✔ The Openmoko project is still a “work in progress”
✔ Intended audience
✔ Linux users
✔ Software developers
✔ And ultimately, general consumers (the project is not there yet)
✔ Usability
✔ GSM voice calls functional but voice quality could be improved
✔ SMS messaging functional
✔ Wifi networking functional
✔ GPS functional
✔ Multimedia capabilities such as audio/video playout unstable
✔ Buggy Sleep/resume capabilities, hence battery life is limited
18
19. The Openmoko platform
- Possibilities
Neo FreeRunner
✔ Platform of choice for: +
Debian
✔ FOSS embedded development +
✔ Supports virtually any available high end Accton 802.11b/g
software technology from the wifi card
=
“Linux world” Portable network security
✔ Advanced hardware capabilities testing platform
✔ Embedded system integration
✔ Available hardware specifications
enables easy modifications
✔ OM is not a phone, it's a portable Linux computer
that just happen to have phoning capabilities
19
20. Openmokast project
- Scope
✔ Openmoko was selected as the first development
platform for the project
✔ The missing parts:
✔ Compatible (SDIO, USB or ???) broadcasting receiver
✔ Linux drivers for the receiver
✔ Broadcasting stack to control the receivers and access the
data
✔ Applications to decode the multimedia streams
✔ Nice integration inside the Neo FreeRunner
20
21. Openmokast project
- Hardware
✔ Compatible broadcasting receiver
✔ MTECH UDR-A3L T-DMB/DAB (Digital Multimedia/Audio
Boardcasting) USB Receiver for PC & Laptop
✔ Capable of receiving high quality audio and video mobile
broadcasting services
✔ Fully compliant to ETSI EN 300 401 (Eureka-147)
✔ RF frequency range:
✔ Band III: 174 to 240MHz
✔ China band III: 168.160 to 221.568MHz
✔ L band: 1452 to 1492MHz (UDR-A3L)
✔ Transmission mode: all modes with auto detection
✔ Channel decoding: single channel decoding
✔ Decoding capacity:
✔ Audio service: up to 384Kbps
✔ Video service: up to 1.5Mbps
✔ RF input connector: 50 ohms RF SMA connector
21
22. Openmokast project
- Hardware
✔ Internal USB test points can be
used to integrate a USB
component
✔ Schematics available from
http://openmoko.com
✔ Marked on FreeRunner schematic
as H-TP4901, H-TP4902, H-TP4903,
H-TP4904
✔ Configuration
✔ USB port must be switched from
device to host mode of operation
✔ USB power mode can be selected to
provide power to the device from the
FreeRunner battery
22
23. Openmokast project
- Drivers
✔ Linux drivers
✔ Analysis of the communication between the USB receiver and
its default Windows software was achieved using a USB sniffer
application
✔ The communication protocol was reimplemented on Linux
using:
✔ libusb-0.1 user space USB driver
✔ “libusb_augment” extension
23
24. Openmokast project
- Software
✔ Broadcasting software stack
✔ Based on a software previously developed at CRC
✔ C/C++
✔ User interface uses GUI library GTK+
✔ Control interface:
✔ Text console
✔ Telnet console
✔ DBus interface org.openmokast.Receiver
✔ Data interface:
✔ Standard UDP/IP or HTTP streams
✔ Decoder applications
✔ Any technology that can use either of the control/data interfaces
24
27. Openmokast project
- API
✔ Goals
✔ Make it possible to use broadcasting services from any
applications
✔ Offer an Broadcasting component that could be integrated in
an open middleware stack
✔ Technology
✔ D-Bus Inter-Process Communication (IPC) system
27
28. Openmokast project
- API
✔ D-Bus
✔ Used in many embedded and mobile software environment
such as LiMo, Freedesktop.org, Maemo, etc.
✔ Common in main desktop environments such as GNOME and
KDE 4.
✔ Provides a collection
of binding libraries for
common programming
languages such as C,
C++, Python, Java,
Vala, etc.
28
30. Openmokast project
- Integration
✔ The integration into the Openmokast device required
the design of a case extension based on the released
CAD from Openmoko, Inc.
30
31. Openmokast project
- Integration
✔ Extension prototypes were manufactured with a 3D
printer by Cimetrix (http://cimetrixsolutions.com/) at an
acceptable cost
31
33. Conclusion
- Future work
✔ Google Android
✔ Linux based but all applications
must be implemented in Java
✔ Currently ported for the Openmoko
FreeRunner
✔ An Android version of Openmokast
is currently in development
✔ Challenges
✔ Main broadcasting codecs are not
available
✔ Underlying Linux distribution is
missing common libraries
33
34. Conclusion
✔ More information at:
✔ Openmokast - Resources for Open Mobile Broadcast Devices
http://openmokast.org
✔ Openmoko - Open. Mobile. Free.
http://wiki.openmoko.org
✔ opkg - A software directory for Openmoko phones
http://www.opkg.org/
✔ Development tutorial:
✔ Getting started with open mobile development on the
Openmoko platform
http://www.fosslc.org/drupal/node/157
34