Upload
pkrakesh
View
214
Download
0
Embed Size (px)
Citation preview
8/3/2019 mobileguide-0.5
1/99
Ubuntu Mobile Guide 1 / 99
Ubuntu Mobile Guide
8/3/2019 mobileguide-0.5
2/99
Ubuntu Mobile Guide
2 / 99
Copyright 2004, 2005, 2006 Canonical Ltd. and members of the Ubuntu Documentation Project
Credits and License
This document is maintained by the Ubuntu documentation team (https://wiki.ubuntu.com/DocumentationTeam). For a list of
contributors, see the contributors page
This document is made available under the Creative Commons ShareAlike 2.5 License (CC-BY-SA).
You are free to modify, extend, and improve the Ubuntu documentation source code under the terms of this license. All derivative
works must be released under this license.
This documentation is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE AS DESCRIBED IN THE DISCLAIMER.
A copy of the license is available here: Creative Commons ShareAlike License.
http://../common/C/contributors.xmlhttp://usr/share/ubuntu-docs/common/C/ccbysa.xmlhttp://usr/share/ubuntu-docs/common/C/ccbysa.xmlhttp://usr/share/ubuntu-docs/common/C/ccbysa.xmlhttp://../common/C/contributors.xml8/3/2019 mobileguide-0.5
3/99
Ubuntu Mobile Guide
3 / 99
COLLABORATORS
TITLE : REFERENCE :
Ubuntu Mobile Guide
ACTION NAME DATE SIGNATURE
WRITTEN BY October 15, 2007
REVISION HISTORY
NUMBER DATE DESCRIPTION NAME
8/3/2019 mobileguide-0.5
4/99
Ubuntu Mobile Guide
4 / 99
Contents
1 Introduction 12
2 Developer Blueprints 13
2.1 Application Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.2 Possible User Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3 Mobile User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Window Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5 Mobile Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6 Image Creation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7 Mobile Kernel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.8 Mobile Hardware Decode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.9 Gnome Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.10 Screen Keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.11 Mobile Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.12 Mobile Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.13 Power Management . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.14 Power Thermal Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.15 Power Policies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.16 Media Player . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.17 Utilities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.18 USB Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3 Setting up the Development Environment and Creating Images 51
3.1 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.2 Supported devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.3 Development Environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.4 Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
3.5 Install and Run Image Creator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.1 Instalation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.2 Creating an Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.5.2.1 Using the GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
8/3/2019 mobileguide-0.5
5/99
8/3/2019 mobileguide-0.5
6/99
Ubuntu Mobile Guide
6 / 99
5 Anatomy of a Python Application in UME 69
5.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.2 Application files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5.3 Application Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.4 Application auto-discovery via the .desktop file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
5.5 Executable file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.6 Main Python file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.7 Glade user interface file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.8 Icon file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
5.9 Sample make file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6 Using Glade and Python to create an Application for Ubuntu Mobile 73
6.1 Purpose . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736.2 Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.3 Prerequisites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.4 Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.5 Using Glade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.6 This Python programs structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.7 Creating the Hildon Program and Hildon Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
6.8 Importing the .glade file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.9 Reparenting to Hildon Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.10 Getting the menu and making it a Hildon Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.11 S ource . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.11.1 main.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
6.11.2 Makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
7 Porting Python Applications to Ubuntu Mobile 79
7.1 Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.2 Assumed Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.3 Get the Source Code and try it out on UME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797.4 Hildonize Step 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.5 Hildonize Step 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8 Porting C Applications to Ubuntu Mobile 85
8.1 Objective . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.2 Assumed Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.3 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.4 Get the source and try to compile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.5 Hildonizing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.5.1 Now on to the menu functions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8/3/2019 mobileguide-0.5
7/99
Ubuntu Mobile Guide
7 / 99
9 Application Development for UME - An Example 91
9.1 Showing the User Relevant Information Based on their Location . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.1.1 Flash UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.1.2 The GeoClue backend. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
10 Theming and Customization of UME 98
10.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
11 API References 99
11.1 D-Bus API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.2 GTK API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.3 Hildon API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
11.4 Gnome Developer Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8/3/2019 mobileguide-0.5
8/99
Ubuntu Mobile Guide
8 / 99
List of Figures
2.1 Hildon Desktop Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Mobile Internet Device UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.3 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.4 Mobile Internet Device UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5 Project Builder GUI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.6 Overview of Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7 Deliverables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.8 GNOME Mobile components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.9 Keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
2.10 Frequency Optimised Keyboard . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.11 Mobile Wireframe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.12 Thermal Control Software Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.13 Power Policy Management Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.14 API Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.1 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.2 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.3 Target . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3.4 Functional Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.5 Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.6 Default HTML UI with User Selected background . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
7.1 gPodder on Desktop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
7.2 gPodder UI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
7.3 gPodder UME Hildon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.1 Liferea . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.2 Liferea Hildonized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8/3/2019 mobileguide-0.5
9/99
Ubuntu Mobile Guide
9 / 99
List of Tables
2.1 Energy Focus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
2.2 Power Events Focus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8/3/2019 mobileguide-0.5
10/99
Ubuntu Mobile Guide
10 / 99
About This Guide
Conventions
The following notes will be used throughout the book:
Note
A note presents interesting, sometimes technical, pieces of information related to the surrounding discussion.
Tip
A tip offers advice or an easier way of doing something.
Caution
A caution alerts the reader to potential problems and helps avoid them.
Warning
A warning advises the reader of a hazard that may arise in a given scenario.
Cross-reference conventions for print will be displayed as follows:
Links to other documents or websites will look like this.
Note
PDF, HTML, and XHTML versions of this document will use hyperlinks to handle cross-referencing.
Type conventions will be displayed as follows:
File names or paths to directories will be shown in monospace.
Commands that you type at a Terminal command prompt will be shown as:
command to type
Options that you click, select, or choose in a user interface will look like this.
http://www.ubuntu.com/http://www.ubuntu.com/http://www.ubuntu.com/8/3/2019 mobileguide-0.5
11/99
Ubuntu Mobile Guide
11 / 99
Menu selections, mouse actions, and keyboard short-cuts:
A sequence of menu selections will be displayed as follows: File Open
Mouse actions shall assume a right-handed mouse configuration. The terms click and double-click refer to using the left
mouse button. The term right-click refers to using the right mouse button. The term middle-click refers to using the middlemouse button, pressing down on the scroll wheel, or pressing both the left and right buttons simultaneously, based on the design
of your mouse.
Keyboard shortcut combinations will be displayed as follows: Ctrl-N .Where the conventions for Control, Shift, and Alter-
nate keys will be Ctrl, Shift, and Alt, respectively, and shall mean the first key is to be held down while pressing the second
key.
Contributing and Feedback
This book is developed by the Ubuntu Documentation Team. You can contribute to this document by sending ideas or comments
to the Ubuntu Documentation Team mailing list. Information about the team, its mailing lists, projects, etc. can be found on theUbuntu Documentation Team Website.
If you see a problem with this document, or would like to make a suggestion, you can simply file a bug report at the Ubuntu
Bugtracker. Your help is vital to the success of our documentation!
Many thanks,
-Your Ubuntu Documentation Team
https://wiki.ubuntu.com/DocumentationTeamhttps://wiki.ubuntu.com/DocumentationTeamhttps://wiki.ubuntu.com/DocumentationTeamhttps://wiki.ubuntu.com/DocumentationTeamhttps://launchpad.net/products/ubuntu-doc/+bugshttps://launchpad.net/products/ubuntu-doc/+bugshttps://launchpad.net/products/ubuntu-doc/+bugshttps://launchpad.net/products/ubuntu-doc/+bugshttps://wiki.ubuntu.com/DocumentationTeamhttps://wiki.ubuntu.com/DocumentationTeam8/3/2019 mobileguide-0.5
12/99
Ubuntu Mobile Guide
12 / 99
Chapter 1
Introduction
Welcome to the Ubuntu Mobile Guide
It contains information on how to use and how to develop software for the Ubuntu Mobile Edition
The Ubuntu Mobile and Embedded (UME) project aims to derive an operating system for mobile internet devices using Ubuntu
as a base. UME will extend Ubuntu by providing an infrastructure for mobile development, with all of the necessary components
integrated into the Ubuntu package archive, ready to install and run, or to tailor for custom mobile applications.
This guide assumes you have a basic understanding of your Ubuntu system. If you need detailed help installing Ubuntu, refer to
the Ubuntu Installation Guide.
The Mobile Teams area on Launchpad ishere
https://launchpad.net/~ubuntu-mobilehttps://launchpad.net/~ubuntu-mobile8/3/2019 mobileguide-0.5
13/99
Ubuntu Mobile Guide
13 / 99
Chapter 2
Developer Blueprints
Blueprints followed by Ubuntu Mobile developers during the creation of Ubuntu Mobile 7.10 Gutsy Edition. They provide an
insight into the thoughts and challenges they faced and are provided here as a historical record. Please consult the other chaptersin this manual for up-to-date instructions on any of the techniques they describe
2.1 Application Framework
Our major goal is to make it easy for distributions to package Hildon Desktop so that developers can have a quick-to-setup
environment for the development of plugins which do not need to be built against ARM such as Python plugins
Ubuntu Mobile and Embedded (UME) uses the Hildon Application Framework found in the Maemo project as the application
framework for the UME project. Mobile internet devices and tablets for which this distribution is targeted need an application
framework that can provide a way to create applications with a very consistent look and feel and be prepared to run and interface
nicely using restricted resources found on small devices like small resolution, little CPU power and storage. In addition, applica-
tions should be designed for touchscreen use, finger-friendly navigation, gestures, etc. Thus a specific UI framework, preparedfor this kind of demand is necessary.
Figure 2.1: Hildon Desktop Architecture
8/3/2019 mobileguide-0.5
14/99
Ubuntu Mobile Guide
14 / 99
The Hildon Application Framework is one of a few existing frameworks designed for small devices and is a good candidate for
tablet use. It has strong support from Nokia and has been separated from Maemo to become part of GNOME Mobile. This has
allowed the Ubuntu community and others to contribute in a way that benefits all users.
This is the step-by-step procedure to have the Hildon Desktop that will be used in the Ubuntu Mobile and Embedded project.
Warning: Having the mobile system running in a normal Gutsy installation is likely to cause problems, especially in this earlystage of development therefore, its safer to have a chroot environment, which is what is described below.
Prepare a gutsy chroot in ${DIR}:
$ sudo debootstrap --arch i386 gutsy ${DIR} http://archive.ubuntu.com/ubuntu
$ sudo mount --bind /tmp ${DIR}/tmp
$ sudo mount -t proc none ${DIR}/proc
$ sudo mount --bind /sys ${DIR}/sys
Everything should be ready, so:
$ sudo chroot ${DIR}
The meta-package ubuntu-mobile provides all the necessary packages and its dependencies so, inside the chroot:
Add the universe repository to /etc/apt/sources.list:
deb http://gb.archive.ubuntu.com/ubuntu/ gutsy main restricted universe
Update the repositories and install ubuntu-mobile:
$ sudo apt-get install ubuntu-mobile
Those are packages that are likely to be used when developing applications using the environment above so you can have the
hildon desktop shown in your normal desktop.
xserver-xephyr
Create a normal user inside the chroot
sudo adduser ume
Prepare the script that the user just created will use to start hildon desktop.
#!/bin/bash
PREFIX=/usr
THEME=${PREFIX}/share/themes/plankton
export DISPLAY=:1
export GTK2_RC_FILES=${THEME}/gtk-2.0/gtkrc:${THEME}/gtk-2.0/gtkrc.
maemo_af_desktop
export LANG=en_GB.UTF-8
export LC_ALL=en_GB.UTF-8
export LANGUAGE=en_GB.UTF-8
/usr/lib/libgconf2-4/gconfd-2 &
${PREFIX}/bin/matchbox-window-manager -display ${DISPLAY} \
-theme ${THEME}/matchbox/theme.xml \
-use_titlebar yes \
-use_desktop_mode plain \
-use_lowlight no \
-use_cursor yes \
8/3/2019 mobileguide-0.5
15/99
Ubuntu Mobile Guide
15 / 99
-use_super_modal yes &
${PREFIX}/lib/sapwood/sapwood-server &
exec ${PREFIX}/bin/hildon-desktop
Edit /etc/hildon-desktop/desktop.conf and remove or comment out the [Statusbar] session if necessary.
Enter the chroot start dbus
/etc/init.d/dbus restart
and su - to the user created above. Outside the chroot execute Xephyr like this:
Xephyr :1 -host-cursor -screen 800x480x16 -dpi 96 -ac
Execute the hildon-desktop script as the user you created above.
2.2 Possible User Applications
For the browser, Firefox will be used. There is already efforts to reduce its footprint and currently we are running an internal
version. If we need to fit the browser into a very small profile machine a possible alternative is Opera. In a operational level, both
are equivalent and can carry the same plugins.
The Maemo project just released a new browser, based on the gekko engine which is fully integrated into the hildon environment.
However we need a full xul-based solution so we are doing our own work on our own Firefox Embedded browser with:
Adobe Flash Player 9
Adobe PDF Reader
Java Runtime Environment(JRE)
For the Media player. Currently its being considered Helix. Possible option: mplayerThe player going to support both helix
and gstreamer simultaneously
For the Dictionary: Stardict seems to be the best option so far:
Small
Fast
Flexible
Bidirectional
Lots of languages available.
The interface needs work for usability and to better fit into Hildon.
For E-mail: The specification asks for Thunderbird which is a great email application but I think that a better alternative is
Clawswhich is a improved version of Sylpheed.
Lightweight
Fairly complete
Its already packed for Maemo so its easy for us to integrate.
http://www.mozilla.com/en-US/firefox/http://www.opera.com/http://www.opera.com/http://browser.garage.maemo.org/http://browser.garage.maemo.org/http://uk.real.com/player/http://uk.real.com/player/http://www.mplayerhq.hu/design7/news.htmlhttp://stardict.sourceforge.net/http://www.claws-mail.org/http://sylpheed.sraoss.jp/en/http://sylpheed.sraoss.jp/en/http://sylpheed.sraoss.jp/en/http://www.claws-mail.org/http://stardict.sourceforge.net/http://www.mplayerhq.hu/design7/news.htmlhttp://uk.real.com/player/http://browser.garage.maemo.org/http://www.opera.com/http://www.mozilla.com/en-US/firefox/8/3/2019 mobileguide-0.5
16/99
Ubuntu Mobile Guide
16 / 99
Theres a lot of plugins that we already have packaged like
news feed
baesian filter
spamassassin
acpi notifier (to blink a led if an email arrives, for instance)
smime
clamav
Disadvantages
None that I can see at this time.
Recently we were pointed to a new email client called Modest which will become (but, as far as I can tell, theres no official
position on that) the new email application for Maemo.
Advantages
It was created for Maemo so should be fairly easy for us to integrate.
Its still under heavy development;
It was created to be very light, adequate to a more limited hardware platform;
It Doesnt have all the possibilities as with Thunderbird or Claws and I understand that it will never have as its not the project
target.
For the Media Player
It is to be provided by Intel. It will use a simple frontend that will talk with Helix and gstreamer working as backends.
For the Camera
There are video capture applications (like xawtv, camE), programs that can read, record and process V4L devices like mplayer
and videolan which can also be used to process the stream in realtime using filters and programs like EffecTV, GePhexand
snapshot applications like Camorama. I couldnt find a single application that could do what we want, so I think that we could
use something like Camorama as base and add continous video processing. Maemo uses gstreamer as the backend and their
camera applications (which is closed) talks to it.
Possible applications: many (xawtv, camE, Camorama, mplayer, videolan).
There is one application being developed for the Google Summer of Code called Cheese that could be very handy. A Launchpad
project was created and the latest version available (0.13) was pushed.
It can capture video streams and stills.
Have a plugin system that can be used, and already is, to apply effects.
Uses gstreamer as the backend.
Its written in GTK.
Its far from complete.
It has severe bugs in interface with v4l2 and does not work at all with V4l.
As a matter of fact, so far I wasnt able to make it work with 3 different cameras.
http://modest.garage.maemo.org/http://docbook.wikiwikiweb.de/GePhexhttp://live.gnome.org/Cheesehttp://live.gnome.org/Cheesehttp://docbook.wikiwikiweb.de/GePhexhttp://modest.garage.maemo.org/8/3/2019 mobileguide-0.5
17/99
Ubuntu Mobile Guide
17 / 99
Ebook reader
Theres one FOSS champion: fbreader which is the one used by Maemo.
It can read a several formats like:
fb2 e-book format (style attributes are not supported yet).
HTML format (tables are not supported).
CHM format (tables are not supported).
plucker format (embedded images are supported, tables are not supported).
Palmdoc (aportis doc).
zTxt (Weasel format).
TCR (psion text) format.
RTF format (stylesheets and tables are not supported).
OEB format (css and tables are not supported).
OpenReader format (css and tables are not supported). Non-DRMed mobipocket format (tables are not supported).
Plain text format.
Disadvantages
Cant read DRMed books which can be a problem to commercial applications.
MikhailSobolev: DRM formats are mostly proprietary and their specifications are usually very well closed
A proprietary one, Mobipocket, seems to be an interesting option. They have a closed java lib that needs an UI. Thats the way
its used on the PepperPad.
It can handle DRMed ebooks.
Theres a limited number of formats supported. Currently only OpenEBook (OEB) besides itself.
Only for CHM there is alternatives like xchm and kchmviewer. Not very useful anyway. Theres others like dotReader but mostly
based on its own format or use Palmdoc/plucker only.
For IM
Pidgin (formerly known as Gaim) covers the specification out of the box with one exception, the Myspace IM protocol. There is
a plugin in the works, still alpha quality but it is already able to:
Send and receive instant messages
Buddy list support (basic support only)
Look up user information (in Get Info and tooltip text)
(Some) formatting of incoming instant messages
For Video Conferencing
Ekiga is the preferred application in the specification.
It covers the specification already.
Its a gnome application, so should not be difficult to integrate. Supports STUN.
http://docbook.wikiwikiweb.de/OpenReaderhttp://docbook.wikiwikiweb.de/MikhailSobolevhttp://docbook.wikiwikiweb.de/MikhailSobolevhttp://docbook.wikiwikiweb.de/PepperPadhttp://docbook.wikiwikiweb.de/PepperPadhttp://pidgin.im/pidgin/home/http://developer.pidgin.im/wiki/MySpaceIMhttp://ekiga.org/http://ekiga.org/http://developer.pidgin.im/wiki/MySpaceIMhttp://pidgin.im/pidgin/home/http://docbook.wikiwikiweb.de/PepperPadhttp://docbook.wikiwikiweb.de/MikhailSobolevhttp://docbook.wikiwikiweb.de/OpenReader8/3/2019 mobileguide-0.5
18/99
Ubuntu Mobile Guide
18 / 99
Its know to be problematic sometimes.
wengophone
A current option for Ekiga is wengophone
It can also work also as a IM client.
Using the Wengo service, calls to landlines and cellphones can be done.
Interface is based on Qt.
For an Office document viewer
Excluding PDF that can be read by Evince for instance, there is no FOSS software available to this kind of task but some very old
filters or format converters that only could be used with very old Microsoft formats. At this moment I can foresee 2 possibilities
related to FOSS software.
Include the appropriate filters into evince
Evince would become an universal viewer of sorts, handling all the viewing necessities in one place.
Disadvantage
It would be quite some work to integrate, say, the Abiword filters into it.
Modify the Office package of choice to have a simplified, read only mode, therefore using the same application for view and edit
files
Advantage
I guess that would be an easier task than modify Evince.
Disadvantage
Its inconvenient to load the office application just to view a file.
TextMaker Viewer
There will be a commercial product called TextMaker Viewer that fits very nicely but it does not exists yet and looks like to be
based on Qt.
For Casual Games
The specification asks for more action-packed games. Some suggestions, depending on the profile:
All-time favorites
Pingus
SuperTuxCart
SuperTux
Tux Racer
Frozen Bubble
Card games
PySol
Educational Games
http://www.openwengo.org/http://www.officeviewers.com/http://pingus.seul.org/welcome.htmlhttp://supertuxkart.berlios.de/http://supertux.lethargik.org/screenshots.htmlhttp://tuxracer.sourceforge.net/http://www.frozen-bubble.org/http://www.pysol.org/http://www.pysol.org/http://www.frozen-bubble.org/http://tuxracer.sourceforge.net/http://supertux.lethargik.org/screenshots.htmlhttp://supertuxkart.berlios.de/http://pingus.seul.org/welcome.htmlhttp://www.officeviewers.com/http://www.openwengo.org/8/3/2019 mobileguide-0.5
19/99
Ubuntu Mobile Guide
19 / 99
GCompris
If the machine can handle
Open Arena
Thunder&Lightning
Emulator
ScummVM
There is a huge selection available. It is just a matter of choosing.
RSS reader
Theres plenty of them available. The more suitable ones for our needs are Liferea and Straw. Both are quite equivalent but
Liferea is starting to make incursions to integrate with blogs which is an interesting feature. A second option is to use the one
integrated into the email reader. Both Thunderbird and Claws suggested above can do it.
For the Clock
This item is just a matter of choosing what gadget would fit best into the current home applet environment as the requirements
are quite common except for the fact that it requires the clock to run full screen but this should not be difficult to achieve. The
original Maemos panel clock or this clock applet can do that. Another option is GPEs clockthat is be an interesting option if
the GPE PIM described below is chosen.
For PIM
The GPEcan provide all the PIM needs easily. Some of the projects we can make use are:
Contacts
Calendar
Sketchbook
Voice Recorder
Today
Todo List
Time Tracker
Another option is Pimlico
For a Remote desktop client
Currently, we have tsclient which is a wrapper that actually runs rdesktop and vncviewer on demand. This covers the specification
with the exception of the listed functions:
Scaling an panning: needs to be implemented on the clients but, despite not being in upstream, this has been done before.
Stylus to Mouse click conversion is a matter of choosing input methods. There is no consensus around this yet and some
additional work might be necessary to give to the user a better visual feedback.
Other suggestions - TBD
Simple image manipulation
Should this be integrated with the media player?
Offline blogging client
http://www.gcompris.net/http://openarena.ws/http://tnlgame.net/http://www.scummvm.org/http://liferea.sourceforge.net/http://www.gnome.org/projects/straw/http://www.gnome.org/projects/straw/http://www.home.unix-ag.org/simon/files/n770/http://gpe.linuxtogo.org/projects/gpe-clock.shtmlhttp://gpe.linuxtogo.org/http://gpe.linuxtogo.org/projects/GPE-Contacts.shtmlhttp://gpe.linuxtogo.org/projects/GPE-calendar.shtmlhttp://gpe.linuxtogo.org/projects/gpe-sketchbook.shtmlhttp://gpe.linuxtogo.org/projects/GPE-soundbite.shtmlhttp://gpe.linuxtogo.org/projects/GPE-today.shtmlhttp://gpe.linuxtogo.org/projects/GPE-todo.shtmlhttp://gpe.linuxtogo.org/projects/gpe-timesheet.shtmlhttp://pimlico-project.org/http://freshmeat.net/projects/tsclient/http://www.rdesktop.org/http://www.rdesktop.org/http://freshmeat.net/projects/tsclient/http://pimlico-project.org/http://gpe.linuxtogo.org/projects/gpe-timesheet.shtmlhttp://gpe.linuxtogo.org/projects/GPE-todo.shtmlhttp://gpe.linuxtogo.org/projects/GPE-today.shtmlhttp://gpe.linuxtogo.org/projects/GPE-soundbite.shtmlhttp://gpe.linuxtogo.org/projects/gpe-sketchbook.shtmlhttp://gpe.linuxtogo.org/projects/GPE-calendar.shtmlhttp://gpe.linuxtogo.org/projects/GPE-Contacts.shtmlhttp://gpe.linuxtogo.org/http://gpe.linuxtogo.org/projects/gpe-clock.shtmlhttp://www.home.unix-ag.org/simon/files/n770/http://www.gnome.org/projects/straw/http://liferea.sourceforge.net/http://www.scummvm.org/http://tnlgame.net/http://openarena.ws/http://www.gcompris.net/8/3/2019 mobileguide-0.5
20/99
Ubuntu Mobile Guide
20 / 99
Simple html-capable wysiwyg editor and posting tool (ftp and common blogging APIs)
Voip client
Should be the same used for video conference?
Ekiga
Twinkle
OpenWengo
GPS software / Navigation software
GeoClue seems to be a good starting point and there is a Maemo port already.
Quick voice/audio recorder/audio notetaker
[...]
Image posting client (flickr/windows image posting wizard)
[...]
Packaging status
fbreader - pushed.
Cheese - pushed.
2.3 Mobile User Interface
Given the similarities in function and system characteristics to Nokia N-level hand-held devices, Nokias Hildon Application
Framework was selected as the underlying application/UI framework. The UME user interface will look markedly different and
be designed with user and OEM customization in mind.
Figure 2.2: Mobile Internet Device UI
System Characteristics
Low-power, hand-held mobile device
http://docbook.wikiwikiweb.de/OpenWengohttp://www.freedesktop.org/wiki/Software/GeoCluehttp://maemo.org/news/community/view/445e8586dc43867ee22def2915ee04cb.htmlhttp://maemo.org/news/community/view/445e8586dc43867ee22def2915ee04cb.htmlhttp://www.freedesktop.org/wiki/Software/GeoCluehttp://docbook.wikiwikiweb.de/OpenWengo8/3/2019 mobileguide-0.5
21/99
Ubuntu Mobile Guide
21 / 99
Screen dimension: 4.5" to 7"
Screen resolution: 800x480 up to 1024x600 (expected)
@512MB SSD, @512MB RAM (depending on model)
Limited or unknown hardware controls (UI needs to be able to do it all)
Mobile devices are not general purpose desktops. Generally they will have fewer applications than a desktop (~20 instead of
100s). It is assumed that the primary applications would be:
Browser
Multimedia apps (music, movie, photo)
Chat
Camera
Location/GPS
Games
Configuration applets
Design
The core components are those found in GNOME Mobile, including GTK, matchbox window manger, and the Hildon Application
Framework. The UME Home Screen consists of one or more panels containing panel widgets/applets, and a large open area
containing home widgets/applets. The panel at the top is called the "Marquee". It is present when applications are running and
contains the application menu applet and close application applet. The number of panel and home widgets is restrained by space
only. It will be possible to configure the order and location of widgets. The Maemo UI also has these elements. Below is animage showing these pieces:
8/3/2019 mobileguide-0.5
22/99
Ubuntu Mobile Guide
22 / 99
Figure 2.3: Interface
Mobile Internet Device UI
Figure 2.4: Mobile Internet Device UI
Hide the task navigator (a panel). (/etc/hildon-desktop/desktop.conf file change)
Create a new panel and place it at the top. (/etc/hildon-desktop/desktop.conf file change)
Add new plugins to our top panel (application menu and statusbar)
8/3/2019 mobileguide-0.5
23/99
8/3/2019 mobileguide-0.5
24/99
Ubuntu Mobile Guide
24 / 99
Utilities for creating live USB images of target file-systems for easy testing of multiple target file-systems
Developer uses project-builder to start a new project
Here we assume that:
The project is configured to work with a mccaslin type of device
The project is given a name myproject for future reference
The project is given a description of "My Samsung Q1 Ultra project"
The project creates a complete buildroot in /usr/src/myproject
$ sudo project-builder -c create-project \
--platform-name mccaslin \
--project-name "myproject" \
--project-path "/usr/src/myproject" \
--project-description "My Samsung Q1 Ultra project"
Developer uses project-builder to create a new target filesystem
Developer creates a new initial target device filesystem:
Since a project can create multiple target filesystems, the target is named target1
The new target filesystem is rooted at /usr/src/myproject/targets/target1/fs
$ sudo project-builder -c create-target \
--project-name "myproject" \
--target-name "target1"
Developer installs the Ubuntu-Mobile default set of packages for a full UI
Developer installs the "full-mobile-stack" functional set (fset)
The "full-mobile-stack" is a meta fset that depends on the Core, Infrastructure, GNOME-Mobile, Mobile-Applications, and
Power-Management fsets
After installing this fset, the target filesystem has enough functionality such that once installed on the target device, the device
can boot to the ubuntu-mobile installation and automatically startup into the hildon desktop with the standard set of ubuntu-
mobile applications
$ sudo project-builder -c install-fset \
--project-name myproject \
--target-name target1 \--fset-name "full-mobile-stack"
Developer tweaks the target filesystem as desired
The developer has the choice of building new mobile software from the project buildroot (which comes with the basic ubuntu-
mobile development packages installed), or building from their Gutsy host
The software will then need to be installed in the target filesystem. If building from the buildroot, then the target filesystem is
located at /targets/target1/fs, and if building from a Gutsy host, then the target filesystem is located at /usr/src/myproject/tar-
gets/target1/fs
Developer builds test the target filesystem on host system
Developer installs the Xephyr server in their workstation and starts a new Xephyr window
8/3/2019 mobileguide-0.5
25/99
Ubuntu Mobile Guide
25 / 99
The "full-mobile-stack" is a meta fset that depends on the Core, Infrastructure, GNOME-Mobile, Mobile-Applications, and
Power-Management fsets
$ sudo apt-get install xserver-xephyr
$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac &
Developer uses project-builder to chroot inside the target filesystem
Bind mounting /proc, /sys/, and /tmp
Copying over host network configuration files
Starting target daemons like dbus
Creating a fresh environment such that applications are not broke with host specific settings
$ sudo project-builder -c chroot-target \
--project-name myproject \
--target-name target1Password: XXXXX
#
Developer launches the hildon-desktop
# start-hildon-desktop &
Developer Creates an Installation Image
Project-builder provides several mechanisms for installing the new target filesystem on the device, including:
USB Install (boot a USB key that installs the target filesystem on the device)
Live USB (boot a working live image off a USB key)
Live RW USB (boot a working live image off a USB key that persist changes to the key)
ISO Install (user boots off a USB CD that installs the target filesystem on the device)
Live ISO (boot a working live image off a CD)
For this usage case, the developer creates an "Install USB" image and then writes the image to a USB key that shows up as
/dev/sdb on the developers workstation
$ sudo project-builder -c create-install-usb \--project-name myproject \
--target-name target1 \
--image-name live-usb.img
$ sudo dd if=/usr/src/myproject/targets/target1/image/live-usb.img of=/dev/sdb
Developer Installs the target filesystem on the device
Developer plugs in the USB key to the device and then boots device and enters the BIOS configuration and configures the boot
options to boot off a USB key
The device boots, automatically installs the target filesystem, and then shutdown
The developer unplugs the USB key and boots the device to see the running ubuntu-mobile stack
8/3/2019 mobileguide-0.5
26/99
Ubuntu Mobile Guide
26 / 99
Build system generates an image for a given device
The build system uses the project-builder command line capabilities to create target images
# Inside the build script....
# $PLATFORM is the name of the platform
# $BUILDROOT is the build working directory# $DEST is the directory to place the target image
# Delete any existing build project
project-builder -c delete-project --project-name build 2> /dev/null || true
# Kick off a clean project
project-builder -c create-project \
--platform-name $PLATFORM \
--project-name build \
--project-path $BUILDROOT \
--project-description "Build system"
# Install a new target in the project
project-builder -c create-install-usb \
--project-name build \
--target-name buildtarget \
--image-name install.img
# Install the standard mobile stack in the target
project-builder -c install-fset \
--project-name build \
--target-name buildtarget \
--fset-name "full-mobile-stack"
# generate the an install USB image
project-builder -c create-install-usb \
--project-name build \--target-name buildtarget \
--image-name install.img
mv $BUILDROOT/targets/buildtarget/image/live-usb.img $DEST
Implementation
The project-builder tool can be used as either a command line tool, or as a GUI if no command line arguments are provided. For
a list of available command line arguments, use the --help argument:
$ project-builder --help
Usage: project-builder [options]
Options:-c CMD, --command=CMD
Where CMD is one of: chroot-project, chroot-target,
create-install-iso, create-install-usb, create-live-
iso, create-live-usb, create-project, create-target,
delete-project, delete-target, install-fset, list-
fsets, list-platforms, list-projects, list-targets,
update-project, or update-target
--platform-name=PLATFORM_NAME
Platform name
--project-name=PROJECT_NAME
Project name
--project-description=PROJECT_DESC
Project description
--project-path=PROJECT_PATH
Project path
8/3/2019 mobileguide-0.5
27/99
Ubuntu Mobile Guide
27 / 99
-t TARGET_NAME, --target-name=TARGET_NAME
Target name
--fset-name=FSET_NAME
Feature set identifier
--image-name=IMAGE_NAME
Name to use for target image file-q, --quiet dont print status messages to stdout
-d, --enable-debug Enable additional debug package while installing fsets
-h, --help show this help message and exit
Examples:
project-builder --command=create-project \
--platform-name=mccaslin \
--project-name=MyProject \
--project-desc=Example project \
--project-path=/usr/src/projects/myproject
project-builder --command=delete-project \
--project-name=MyOtherProject
project-builder --command=create-target \
--project-name=MyProject \
--target-name=MyTarget
project-builder --command=delete-target \
--project-name=MyProject \
--target-name=MyOtherTarget
project-builder --command=install-fset \
--platform-name=mccaslin \
--project-name=MyProject \
--target-name=MyTarget \
--fset=Core \
project-builder --command=chroot-project \
--project-name=MyProject \
project-builder --command=chroot-target \
--project-name=MyProject \--target-name=MyTarget \
project-builder --command=update-target \
--project-name=MyProject \
--target-name=MyTarget \
project-builder --command=update-project \
--project-name=MyProject
GUI
8/3/2019 mobileguide-0.5
28/99
Ubuntu Mobile Guide
28 / 99
Figure 2.5: Project Builder GUI
8/3/2019 mobileguide-0.5
29/99
Ubuntu Mobile Guide
29 / 99
2.7 Mobile Kernel
This kernel will specify a kernel configuration optimized for the smaller and more restricted hardware that is typically used by
mobile and embedded devices.
The generic kernel configuration is intended to cater for the wide variety of hardware devices found on desktop and laptopsystems. As such, the configuration specifies a large variety of devices and subsystems (e.g. ATM, SCSI drivers, filesystems)
which are not necessary for the UME project.
Design and Implementation
A reduced-config UME flavour will be added to the i386 flavour. This flavour will have all unnecessary or impossible config
options stripped out of it.
A new "lpia" arch will be added to the linux-image, linux-ubuntu-modules and linux-restricted-modules packages. The UME
flavour will be added to these for the "lpia" arch specifically customized for the initially targeted devices.
Flavour-specific configurations will be added to the linux-image, linux-ubuntu-modules, and linux-restricted-modules package,
in order to make it easier to build device-specific out of tree code for only one flavour.
Various third party patches may need to be applied for specific configs, for example from http://www.linuxpowertop.org/ or toadd SDIO support to the mmc layer. These will be assessed by the Kernel Team on a case-by-case basis.
2.8 Mobile Hardware Decode
Future chipsets will have the ability to do hardware accelerated video decode of MPEG-2, MPEG-4 (part 2), H.264 (MPEG-4
part 10) and VC-1 (WMV)
8/3/2019 mobileguide-0.5
30/99
Ubuntu Mobile Guide
30 / 99
Figure 2.6: Overview of Architecture
Implementation of this spec will require a new package to provide the generic VA API in the form of libva. This library
communicates with the X server to find out which hardware specific driver will be needed and will then load that hardware
specific driver to do the actual work. libva will be open source licensed under a MIT style license.
8/3/2019 mobileguide-0.5
31/99
Ubuntu Mobile Guide
31 / 99
Figure 2.7: Deliverables
The hardware specific driver that libva will open will be provided as part of the graphics driver.
2.9 Gnome Components
GNOME Mobile is a SW stack that is a subset of the GNOME Desktop platform. The components were put together by Nokia
and other companies involved in creating embedded systems. Details of their work is here: Gnome Mobile
http://www.gnome.org/mobilehttp://www.gnome.org/mobile8/3/2019 mobileguide-0.5
32/99
Ubuntu Mobile Guide
32 / 99
Figure 2.8: GNOME Mobile components
Matchbox: Window Manager
Pango: Text Layout
Cairo: 2D Rendering
ATK: Accessibility Toolkit
Gnome VFS: Virtual FS
BlueZ: Bluetooth
Telepathy: IM/Presence
GConf: Configuration
DBUS: IPC
GStreamer: Multimedia
E-D-S: Contacts / Calendar
Avahi: Service Discovery
2.10 Screen Keyboard
For text input on the go, Ubuntu mobile and embedded edition features a highly configurable on-screen keyboard.
The following mock-ups are examples of what can be done with the onBoard code, not direct suggestions for final layouts.
QWERTY As boring and inefficient as it is, Qwerty is something people will expect. To reduce the space requirements numbers
and symbols should be moved to a separate layer. Qwerty keyboards on small devices are usually best used with the stylus as the
keys tend to be small.
Mobile phone inspirate A keyboard that looks and works like a mobile phone keypad takes up much less space but is also less
efficient in use. As on a mobile phone, there are several letters on each key. Press a key several times in a row or for a certaininterval to get the second and third letters. The advantage is many people are already highly skilled at this form of text input.
8/3/2019 mobileguide-0.5
33/99
Ubuntu Mobile Guide
33 / 99
Full sidepad This 5x7 key keypad contains all the letters in a typical alphabet plus some symbols and modifier keys. As with
Qwerty this keypad will likely require use of the stylus.
Figure 2.9: Keyboard
Frequency optimised sidepad This 4x5 keypad only has the 20 most commonly used letters of a given language in this case
English. The remaining 6 letters combined are only needed once every 5 keystrokes. These can be found on the sym layer
along with numbers and punctuation. Combinations of sym and shift yields 4 layers with 80 characters (of which 52+ are lower
and upper case alphabet). The advantage of this keyboard is that it is small but can still be operated efficiently with the thumb on
one hand.
8/3/2019 mobileguide-0.5
34/99
Ubuntu Mobile Guide
34 / 99
Figure 2.10: Frequency Optimised Keyboard
2.11 Mobile Browser
The Mobile Internet Browser for UME will be a finger-navigable browser based on Mozilla. We will start with a recent version
of the Mozilla libraries using a recent Firefox 2.0+ tag. The browser will be re-chromed to match the look and feel of other UME
applications according to the UI Style Guide
Rationale
A xul-based browser with high-standards compliance and a strong community is desireable. Mozilla is the most obvious choice.
The only concern with a Mozilla-based solution is the performance on a resource-constrained device.
Goals for the browser include the following:
xul-based
strong community
strong adherence to standards
standard for all mobile internet devices
supports plugins
supports extensions
finger-navigable user interface
based on best-of-breed existing solution (Firefox)
https://wiki.ubuntu.com/MobileAndEmbedded/UIStyleGuidehttps://wiki.ubuntu.com/MobileAndEmbedded/UIStyleGuide8/3/2019 mobileguide-0.5
35/99
Ubuntu Mobile Guide
35 / 99
Minimo was investigated but after discussions with the maintainer (Doug Turner) we agreed that a Firefox-Mozilla base would
be appropriate given our constraints and device characteristics.
The Mobile Internet Browser will be based on Gecko 1.8+. Mozilla will release a new version based on Gecko (1.9) in the late
part of the year (Oct or November). At that time we can consider the steps to move the browser to this base.
Mozilla engineers have suggested that there may be some form of "Mozilla Mobile" solution down the road. This will beinteresting to track, contribute to, and leverage.
Mozilla can not offer engineering help on the browser work but they are supportive of the effort.
Ideally we would get a solution that would be embraced by the Mozilla community and eventually adopted as the "Firefox
Mobile" solution. However, Firefox brand sharing is not something that happens in the short term.
Scope
The project encompasses all of the tasks needed to get a Mozilla-based browser ported to the Hildon framework and included in
Ubuntu-mobile distribution.
Design
Browser design is a mix of existing Firefox features, Hildon application framework constraints, and UI Style Guide recom-mendations. The browser user interface will be redesigned to accomodate finger navigation and the small mobile device screen
(800x480 to 1024x600). Design wireframes include the following. These are recommendations. Actual implementation can vary
somewhat and also be progressive -- changing and improving in time.
8/3/2019 mobileguide-0.5
36/99
Ubuntu Mobile Guide
36 / 99
Figure 2.11: Mobile Wireframe
Implementation
The following are the steps to completion of the mobile browser:
Selecting a branch of the Mozilla tree to use as the base browser. (Firefox 2.0.0.4 selected)
Build the project.
Re-brand and re-theme the browser, removing all reference to Firefox and all copyright material (e.g. help files). Make sure
that we are legally compliant with Mozilla guidelines.
Get the newly-named browser into Ubuntu-gutsy. (see Outstanding Issues below)
Begin porting to Hildon
Menu ported to top-left menu (replace Gtk calls)
Top-level window uses Hildon classes
Status bars and tabs at the bottom of the screen (hard task)
re-chrome other features
improve scrolling feature to be like wireframes with large thumb track
There is a lot of opportunity to divide and conquer the browser. We welcome help from any experts.
8/3/2019 mobileguide-0.5
37/99
Ubuntu Mobile Guide
37 / 99
2.12 Mobile Graphics
X11 2D User Mode Driver
Mesa/DRI 3D User Mode Driver
Generic DRM kernel module with new memory management code
DRM chipset specific kernel driver module
Design
The drivers will be dependent on the the new DRM Video Memory Manager as described by: Video Memory Manager Also the
driver will therefore be dependent on Mesa 7, recently made available in Gutsy. Meas 3D The drivers require X Server 1.3 or
newer.
2.13 Power Management
Power optimization for PC Architecture is vastly different from that for embedded systems such as ARM based PDAs or Cell
phones. This is because each embedded chipset has its own unique set of power management features that require a custom flavor
of linux built from the ground up. PC based chipsets already have a well established code base in linux, with existing hardware
interfaces such as ACPI and HAL; and as they have evolved from desktops into smaller, more portable systems, a wealth of
software packages have been created to optimize power. Each of these packages can be thought of as a power micro-policy
controller for a specific subsystem on a linux based platform. For instance cpufreq manages power for the CPU supsystem, or
the iwconfig interface manages device specific power for the Network (WLAN) subsystem. Currently all these micro-policy
managers function independantly of one another and with little or no information from the user domain. Thus there are two
things lacking in linux with regard to power. The first is a centralized policy manager which can gather input from ACPI, the
user, and running applications to generate a complete picture of how the device is being used. This information can be used
to create macro-policies which can selectively tune or override the systems micro-policy managers to achieve far greater power
optimization. The second piece missing is a scheme to create micro-policy managers for all power-hungry subsystems that dontcurrently support any form of control.
Architecture usage model
Where is the user and device (e.g. stationary vs moving, near to vs from from a power source, inside or outside
When is the device being used (e.g. night vs day)
How is the device being used (e.g. is the user listening to it, looking at it, controlling it)
What is the device being used for (e.g. using network, playing audio, displaying video, high vs low performance)
Micro-policy focus is on the subsystem and driver level
Groupings by power optimization capability
CPU (single or multi-core)
Network (LAN, WLAN, WWAN)
Storage (Harddisk, Flashdisk, DVDROM)
Human Interface Devices (Mouse, Keyboard, Touchscreen)
Video (LCD, Graphics card
Audio (Speakers, Headphones, AC97, HD Audio)
Wireless Connections (Bluetooth, GPS)
http://www.tungstengraphics.com/mm.pdfhttp://www.mesa3d.org/http://www.mesa3d.org/http://www.tungstengraphics.com/mm.pdf8/3/2019 mobileguide-0.5
38/99
Ubuntu Mobile Guide
38 / 99
Architecture
The power policy manager for linux is meant to be a universal, cross-platform framework for reducing power consumption in
linux based devices; with particular focus on handhelds. It is implemented in three parts: a configuration data layer, a micro
policy engine control layer, and a daemon that ties the two together.
Configuration Layer: Provides configuration element messages from a GUI, applications, and system agents which describe
the optimization potential in the system. e.g. user focus, device position, handling, and movement, and application needs.
The Configuration Element Interface (CEI), will be based on Dbus and can be used by applications or a GUI to provide usage
model information to our power manager daemon. Usage model info is intended to help us understand where, when, how, and
for what purpose the device is being used. These attributes can help us intelligently regulate power and performance to match
the users neds and expectations.
MPE Layer: Provides tunable element control access to all the subsysems on the platform. e.g. LCD brightness, Audio codec,
etc. The MPE Interface (MPI), will be used to control any subsystem micro-policy managers which are already available to
us. Subsystems are determined as a collection of devices which serve some common purpose that can be optimized for power
cleanly. Micro-policy engines will exist for each subsystem we intend to control.
PPM Daemon: Defines what groupings of configuration elements are configuratble from the GUI, and the mappings between
configuration and tunable elements.
Constraints
No dependence on knowledge of specific applications or drivers
Should exist entirely in user space so theres no kernel dependency
Use C as the default programming language
Leverage established linux protocols and interfaces wherever possible
No dependence on knowledge of specific applications or drivers
Should communicate with applications and GUI through a Dbus interface
Should use ACPI for system event notification
Configuration Input Layer
Configuration Element Interface (CEI)
The CEI will be implemented as a simple DBUS function call using the glib-dbus; wrappers. With this strategy, an xml file is
created which describes the function:
Using the dbus-binding-tool provided by glib we can then create a server and client header file that enables the usage of this
function. The function will look like this:
gboolean send_config_element(DBusGProxy*
proxy, char*
element, char*
target, char*
svalue,
int ivalue);
8/3/2019 mobileguide-0.5
39/99
Ubuntu Mobile Guide
39 / 99
Element: is the string name of a predefined config element that the PPM Daemon will accept.vers
target: is the specific hardware target of the config element (hda1 for instance if there are more than one hd)
svalue: is the string data value, which is designed to be general and user friendly (like low, med, high)
ivalue: is the numerical data value, which is designed to be very specific (like X percent or X kbps)
The PPM Daemon will act as the server and the single receiver of the function call, and any number of applications or a GUI can
act as clients by sending elements out through this function. The ppmd server is called through the DBUS server connection, and
therefore must have the proper configuration files in place for the DBUS daemon to allow it to run.
Configuration Element List
These data points represent very specific conditions which may affect power or performance. Some can be used immediately for
obvious purposes, but some are just there as placeholders for some future benefit. The user will likely never provide this infor-
mation manually at this level. Usage model data at this granularity will be provided by the system (ACPI, HAL, Applications,
or the GUI in the form of a macro). Each type of input can be broken down into a set of specific "configuration elements" which
are what is actually sent across DBUS.
User Focus
These refer to how the user will interact with the MID. These represent the only things that the user MUST tell us.
Visual Attention
no visual (e.g. listening to a playlist of music)
intermittent visual (listening to music and picking songs)
constant visual (e.g. watching a video, playing a game)
Aural Attention
no audio (e.g. without headphones in a public place)
intermittent audio (e.g. waiting for IM alert)
constant audio (e.g. listening to music or watching a video)
Device control
no interaction (e.g. watching a movie, or listening to a playlist of music)
intermitent interaction (e.g. browsing the web, pausing to read)
constant interaction (e.g. playing a game)
Target Battery Life
1 hour (e.g. just enough for a meeting or class)
2 hours (e.g. just enough to watch a movie) 4 hours (e.g. just enough for a plane ride)
8 hours (e.g. enough for a work day)
maximum (as much as possible)
Device Position
These refer to the physical position and state of the MID. They are things that for the most part the user will have to enter, but we
can work to make most of these automatically detected
Device movement
stationary
moving
8/3/2019 mobileguide-0.5
40/99
Ubuntu Mobile Guide
40 / 99
Config Element(string) Target(string) Value(string) Value(int)
videofocus lcdmon,extmon,exttv none,rare,intermittent,often,constantX ms (reaction time needed)
audiofocus speakers,headphones,ext none,rare,intermittent,often,constantX ms (reaction time needed)
userinput keypad,mouse,touchscr,cameranone,rare,intermittent,often,constantX ms (reaction time needed)
tgtbattlife all 1hour,2hour,4hour,8hour,max X minutes til off
Table 2.1: Energy Focus
* slowly (e.g. walking, jogging)
* intermittent high speed (e.g. in a car driving and stopping)
* constant high speed (e.g. in a plane or train)
Proximity/Accesstime to power source or wifi connectionDevice movement
Plugged in (ACPI Event)
* AC wall socket
* DC Car jack* DC Aeroplane jack
* DC Solar Charger
* External Battery
X minutes until power source/wifi available (ETA)
* immediately (e.g. in a car, at home, airport terminal)
* less than 20 (e.g. in transit between home and work)
* less than 120 (e.g. general mobile usage)
* less than 240 (e.g. a standard plane ride in coach)
* less than 480 (e.g. a standard college school day)
* very large (e.g. on a camping trip)
Device handling
is in a stable position (e.g. on a desk or on someones lap)
is being jostled (e.g. held while walking, or in a backpack)
Geographic Location (user input or GPS detection)
Country e.g. for cellular standards, radio freq ranges
Rural vs Urban e.g. likelihood of cell tower or recharge
Proximity to cell towers e.g. if one had a tower map
On Land vs Water e.g. likelihood of cell tower or recharge
Elevation e.g. too high for cellular
2.14 Power Thermal Optimizations
The platform thermal solution depends on the kernel framework for controlling the device performing state and monitor thermal
sensor for the platform. The kernel thermal monitoring and controlling mechanism is spread across acpi thermal driver and
non acpi thermal sensor driver, and the thermal algorithm are embedded in the kernel driver. The proposed patch is to extend
the thermal driver and unify various thermal sensing/controlling property through sysfs interface so that platform level thermal
related decision can be made at user space.
The current thermal zone driver is modified to expose thermal properties of platform through Sysfs. A new thermal Sysfs driver is
introduced which will export two interface for the platform specific sensor driver and component throttle driver. The cpu thermal
driver will work as it is, but will interface with the thermal Sysfs driver.
8/3/2019 mobileguide-0.5
41/99
Ubuntu Mobile Guide
41 / 99
Linux notebooks today use a combination of ACPI and native-device thermal control. System uses ACPI CRT/HOT trip point for
critical system shutdown, since on a handheld, shutdown and hibernate to disk (if one even exists) are likely to be synonymous.
Active trip points are of no use on systems which have no fans. That leaves the single PSV trip point. ACPI 2.0 can associate
(only) a processor throttling device with a trip point. But the processor is not expected to always be the dominant contributor
to thermal footprint on handhelds like it often is on notebooks. ACPI 2.0 includes the _TZD method to associate devices with
thermal zones. However, ACPI does not say anything about how to throttle non-processor devices so that must be handled bynative device drivers.
Design
Thermal monitoring will be done using inexpensive thermal sensors polled by a low-power EC.
Thermal management policy decisions will be made from user space, as the user has a comprehensive view of the platform.
The kernel provides only the mechanism to deliver thermal events to user space, and the mechanism for user space to commu-
nicate its throttling decisions to native device drivers.
Figure 2.12: Thermal Control Software Stack
The thermal management policy control application sits on top. It receives netlink messages from the kernel thermal zone driver.
It then implements device-specific thermal throttling via sysfs. Native device drivers supply the throttling controls in sysfs and
implement device-specific throttling functions.
The thermal zone module has two components a thermal zone sysfs driver and thermal zone sensor driver
The thermal zone sysfs driver is platform-independent, and handles all the sysfs interaction. The thermal zone sensor driver is
platform-dependent. It works closely with the platform BIOS and sensor driver, and has knowledge of sensor information in the
platform.
The thermal sysfs driver exports two interfaces
8/3/2019 mobileguide-0.5
42/99
Ubuntu Mobile Guide
42 / 99
(thermal_control_register()
and
thermal_control_deregister())
to component drivers, which the componentdrivers can call to register their control capability to the thermal zone sysfs driver.
The thermal sysfs drier also exports two interfaces:
* thermal_sensor_register() * thermal_sensor_deregister()
to the platform-specific sensor drivers, where the sensor drivers can use this interface to register their sensor capability. This
driver is responsible for all thermal Sysfs entries. It interacts with all the platform specific thermal sensor drivers and component
drivers to populate the sysfs entries. The thermal zone driver also provides a notification-of-temperature service to a component
driver. The thermal zone sensor driver as part of registration exposes its sensing and thermal zone capability.
Thermal Zone sensor driver
The thermal zone sensor driver provides all the platform-specific sensor information to the thermal sysfs driver. It is platform-specific in that it has prior information about the sensors present in the platform. The thermal zone driver directly maps the
ACPI 2.0 thermal zone definition. The thermal zone sensor driver also handles the interrupt notification from the sensor trips and
delivers it to user space through netlink socket. Component Throttle driver All the component drivers participating in the given
thermal zone can register with the thermal driver, each providing the set of thermal ops it can support. The thermal driver will
redirect all the control requests to the appropriate component drivers when the user programs the throttling level. Its is up to the
component driver to implement the thermal control. For example, a component driver associated with DRAM would slow down
the DRAM clock on throttling requests.
Thermal Zone Sysfs Property
The intent is that any combination of ACPI and native thermal zones may exist on a platform, but the generic sysfs interface looks
the same for all of them. Thus, the syntax of the files borrows heavily from the Linux hwmon subsystem. Each thermal zone
provides its current temperature and an indicator that can be used by user-space to see if the current temperature has changedsince the last read. If a critical trip point is present, its value is indicated here, as well as an alarm indicator showing whether it
has fired. If a passive trip point is present, its value is indicated here, as well as an alarm indicator showing whether it has fired.
There are symbolic links to the device nodes of the devices associated with the thermal zone. Those devices will export their
throttling controls under their device nodes.
Throttling Sysfs Properties
Devices that support throttling will have two additional properties associated with the device nodes: throttling and throttling_max.
A value of 0 means maximum performance, though no throttling. A value of throttling_ max means maximum power savings
in the deepest throttling state available before device state is lost. Events will be passed from the kernel to userspace using the
Linux netlink facility. Interrupts from the sensor or EC are delivered to user-space through a netlink socket.
sysfs ACPI Description R/W
temp1_input _TMP Current temerature RO
temp1_alarmTemperature change
occurredRW
temp1_crit _CRT Critical alarm temperature RO
temp1_crit_alarm Crtical alarm occurred RW
temp1_passive _PSV Passive alarm termperature RO
temp1_passive_alarm Passive alarm occurred RW
device_name1Link to device 1 associated
with zoneRO
device_name2Link to device 2 associated
with zoneRO
Table 2.2: Power Events Focus
8/3/2019 mobileguide-0.5
43/99
Ubuntu Mobile Guide
43 / 99
2.15 Power Policies
Power optimization for PC Architecture is vastly different from that for embedded systems such as ARM based PDAs or Cell
phones. This is because each embedded chipset has its own unique set of power management features that require a custom flavor
of linux built from the ground up. PC based chipsets already have a well established code base in linux, with existing hardwareinterfaces such as ACPI and HAL; and as they have evolved from desktops into smaller, more portable systems, a wealth of
software packages have been created to optimize power.
Each of these packages can be thought of as a power micro-policy controller for a specific subsystem on a linux based platform.
For instance cpufreq manages power for the CPU supsystem, or the iwconfig interface manages device specific power for the
Network (WLAN) subsystem. Currently all these micro-policy managers function independantly of one another and with little
or no information from the user domain. Thus there are two things lacking in linux with regard to power. The first is a centralized
policy manager which can gather input from ACPI, the user, and running applications to generate a complete picture of how the
device is being used. This information can be used to create macro-policies which can selectively tune or override the systems
micro-policy managers to achieve far greater power optimization. The second piece missing is a scheme to create micro-policy
managers for all power-hungry subsystems that dont currently support any form of control.
Macro-policy focus is on the usage model
Where is the user and device (e.g. stationary vs moving, near to vs from from a power source, inside or outside
When is the device being used (e.g. night vs day)
How is the device being used (e.g. is the user listening to it, looking at it, controlling it)
What is the device being used for (e.g. using network, playing audio, displaying video, high vs low performance)
Micro-policy focus is on the subsystem and driver level
Groupings by power optimization capability
CPU (single or multi-core)
Network (LAN, WLAN, WWAN)
Storage (Harddisk, Flashdisk, DVDROM)
Human Interface Devices (Mouse, Keyboard, Touchscreen)
Video (LCD, Graphics card
Audio (Speakers, Headphones, AC97, HD Audio)
Wireless Connections (Bluetooth, GPS)
Architecture
The power policy manager for linux is meant to be a universal, cross-platform framework for reducing power consumption inlinux based devices; with particular focus on handhelds. It is implemented in three parts: a configuration data layer, a micro
policy engine control layer, and a daemon that ties the two together.
Configuration Layer: Provides configuration element messages from a GUI, applications, and system agents which describe
the optimization potential in the system. e.g. user focus, device position, handling, and movement, and application needs.
The Configuration Element Interface (CEI), will be based on Dbus and can be used by applications or a GUI to provide usage
model information to our power manager daemon. Usage model info is intended to help us understand where, when, how, and
for what purpose the device is being used. These attributes can help us intelligently regulate power and performance to match
the users neds and expectations.
MPE Layer: Provides tunable element control access to all the subsysems on the platform. e.g. LCD brightness, Audio codec,
etc. The MPE Interface (MPI), will be used to control any subsystem micro-policy managers which are already available to
us. Subsystems are determined as a collection of devices which serve some common purpose that can be optimized for power
cleanly. Micro-policy engines will exist for each subsystem we intend to control.
8/3/2019 mobileguide-0.5
44/99
Ubuntu Mobile Guide
44 / 99
PPM Daemon: Defines what groupings of configuration elements are configuratble from the GUI, and the mappings between
configuration and tunable elements.
Figure 2.13: Power Policy Management Diagram
Constraints
No dependence on knowledge of specific applications or drivers
Should exist entirely in user space so theres no kernel dependency
Use C as the default programming language
2.16 Media Player
The media viewer application for mobile devices. This is not the spec for the underlying engine (e.g. gstreamer, helix, etc). The
media player for UME will have a finger-navigable UI capable of viewing photos, playing music and videos, and using either
the gstreamer or helix media engines with a common interface to them. The UI will follow the recommendations in the UI Style
Guide
Rationale
There are some existing media applications but none seem to cover all of the features needed and be tailored for a MID, so a
new UI is being written. The goal is to simplify the media management on the MID and provide a single place for viewing and
listening to media.
https://wiki.ubuntu.com/MobileAndEmbedded/UIStyleGuidehttps://wiki.ubuntu.com/MobileAndEmbedded/UIStyleGuidehttps://wiki.ubuntu.com/MobileAndEmbedded/UIStyleGuidehttps://wiki.ubuntu.com/MobileAndEmbedded/UIStyleGuide8/3/2019 mobileguide-0.5
45/99
Ubuntu Mobile Guide
45 / 99
Gstreamer and Helix media engines will be supported with dynamic discovery of the content types supported by whichever
engine is present at runtime. Helix support is being included primarily for DRM solutions.
The entire scope of media management is large, from the first time a user obtains some content to consuming it on the device.
The following section describes the full spectrum with the ones outside the scope of this application shown in red. Additional
functionality may be added as time and resources permit.Comments welcome.
Functional Specification
PC = non-mobile device, such as a Linux or Windows desktop
MID = Mobile Internet Device.
Content = music files (mp3, etc), movies (.mpg, etc), photos (.jpg, etc)
Media viewer = Multimedia application on MID
1. Content Management on the PC
(Currently not planned) There are a few choices for music management on the PC (e.g. Windows Media Player, ITunes,
Banshee). For movie and photo management, users often use the filesystem directly. Eventually a new "MID Content
Manager" application could be written.
2. Getting content to the device
2.1 Syncing
* Auto-sync with an application that manages content on the PC. This involves writing a new plugin or application
that pushes the content from one of the following applications to the MID when the MID is plugged in via USB.
* Only sync down (all content is pushed to MID. Any MID content changes are lost
* Sync in both directions: content is merged on PC and MID. Conflicts are resolved by asking user for preference.
* Auto-sync with a file directory on the PC (just file system). Application registered when MID is plugged in to
USB to auto-sync contents.
Manual-sync: Plug MID into USB port. MID file system exposed to PC. User drags/drops files from PC to the
MID file system.
*
Sharing
* Auto-detect other MIDs in area via bluetooth. Connect. Display shared content from each MID on other MID. User
can download content to their MID.
Receive email with content. Save content to MID filesystem.
User Download on MID
On MID, download content from internet via the browser
On MID, download/upload content from wired or wireless connection to remote filesystem over network
Content Management on MID
User can:
View content name, artist, album, length, genre, music format, times played, last played date/time
8/3/2019 mobileguide-0.5
46/99
Ubuntu Mobile Guide
46 / 99
View content as list
View content as thumbnails (album art for music, cover-art for movies or frame from movie, small image for photos)
View content as resizable thumbnails
View 3D-flipping album art
Select content
Select multiple files at the same time
Organize content folders, create new folders, name folders, move content between folders
* Assign content metadata: Name, Artist, Album, genre, cover art
* Auto-lookup music metadata online from CDDC: Name, artist, album, cover art
Create, delete, edit playlists
Sort music by: Name, Date, length, Artist, Album, genre, type (mp3, wav, etc)Slideshow
Create a slideshow of photos
Assign a music file to play when slideshow is started
Assign a music playlist to play when slideshow is started
Set the time delay between photo transitions
Set transition effect between pictures (fade, slide, etc)
Content Playback on MID
User can:
Play content
Pause content
Play content at double speed forward and backward
Play content at variable speed forward and backward
Jump to beginning of content
Jump to end of content
Stop content
View progress of content playbac