View source for QtMoko

From Openmoko

Jump to: navigation, search

You do not have permission to edit this page, for the following reasons:

  • The action you have requested is limited to users in the group: Administrators.
  • You must confirm your email address before editing pages. Please set and validate your email address through your user preferences.

You can view and copy the source of this page:

Return to QtMoko.

Personal tools

QtMoko is a Debian based distribution for the Neo FreeRunner. The phone and user interface are based on Qt Extended Improved formerly known as Qtopia. The QtMoko wiki can be found here.


Further information on QtMoko and the current state of development can be found on

Sourceforge Download

Download the following files from radekp download to you desktop computer: Download

This downloadable QtMoko-Image does not need the installation procedure of the following sections:

  • OpenMobile Installer is a zip-file that contains images.
  • The installation processes flashes Qi and other images
  • you have to create to partitions 1=FAT 2=SWAP on your SD-Card (e.g. 2GB SD, Partition 1: FAT16, Partition 2: 128MB as swap - fdisk type 82)
  • download and unpack the file on the FAT-partition of your Mirco-SD card.
  • Insert Mirco-SD in your freerunner and boot from SD-Card (press Power & AUX-Button together to get boot menue)
  • Select boot from Mirco-SD and after 3 automatic reboots and flashing the QtMoko is installed including Navit.


If you flash the FreeRunner with a kernel image from QtMoko, then you must install the kernel and the root file system with dfu-util.

NOTE: You need a fully charged Freerunner for installation.

Installation on SD card with Qi

Installing QtMoko on your microSD Card depends on the Bootloader you are using, uBoot or Qi.

If you have Qi installed then you can install QtMoko on the SD card. This seems to be useful if you want to work with different distribution and you can change the distribution just by changing the Mirco SD card in your FreeRunner.

NOTE: Installation in NAND-Memory with Qi is possible without errors, but with an installed bootloader Qi the boot process will terminate (with Qi installed by Android, which is modified). Install a non-Android Qi version or u-Boot instead!

If you use Qi, you only need an ext2 partition into your µSD Card where you uncompress the root filesystem image file qtmoko-debian-v26.tar.gz. In this case Qi Bootloader is going to look for the kernel image into the /boot directory for file named uImage-GTA02.bin .

Installation in NAND Memory with u-Boot

If you have Qi or Android (with a modified Qi) installed on your Freerunner then install u-boot again as a bootloader by downloading a u-boot-binary on otherwise the boot process will terminate and you have to install u-Boot.

All versions of the GTA02 (Neo FreeRunner) that have been sold to the public are version 5 hardware, so look for a file with "gta02" and "v5" in the name, for example: u-boot-gta02v5-1.3.1.bin (linked U-Boot-Version from 31.Jan 2010):

 sudo dfu-util -a u-boot -R -D u-boot-gta02v5-1.3.1.bin

Installation of Kernel and Root-FS NAND-Memory

Switch off your FreeRunner and press the AUX and Power-On button at the same time. Your FreeRunner is showing the following U-Boot Menu:

  *** BOOT MENU (NOR) ***
  Boot from Mirco SD (FAT/ext2)
  Set Console to USB
  Set Console to Serial
  Power Off  

The FreeRunner will stay in this mode for only 30 sec. Within this time you have to start dfu-util. If you want to flash the kernel image (you will need to be root on your PC) then you have to start the following command in the 30sec your see the BOOT MENU (use kernel and rootfs from

# for the Neo FreeRunner:
dfu-util -d 0x1d50:0x5119 -a kernel -R -D  uImage-v24.bin

and finally the root fs with this one:

# for the Neo FreeRunner:
dfu-util -d 0x1d50:0x5119 -a rootfs -R -D qtmoko-debian-v24.jffs2

Preparations on the Connected PC/Laptop

  • To enable connections just by using the hostname openmoko edit the /etc/hosts and add line   openmoko
  • Enable internet connection via USB Networking so that the installation of packages will be possible.

First Boot

After finishing the installation without errors you have to start the FreeRunner and calibrate the touch screen. Then you see the installed QtMoko on your device.

QtMoko after first boot

First Login

If you want to login to your FreeRunner set up a network connection (see USB Networking) with USB cable and start:

  desktop# ssh -X -l root

The root password is empty so set it for security reason especially when you open the ssh-daemon on the WLAN network interface. Define root password as usual on a linux box with

  neo# passwd

If you have established the internet connection via USB cable then update the repository data:

  neo# apt-get update 

If you want to check if the internet connection is available on your freerunner ping the OpenMoko web server with:

  neo# ping
  neo# ping

If the first ping works and the second doesn't then check the DNS server settings (see USB Networking).

Setting Time and Date

Set the time and date on from your linux box with

ssh root@openmoko "date -us @`date -u +%s`"

sync the hardware clock with the system time to make your change persist over reboots:

# hwclock --systohc  
   DOES NOT WORK - no access to Hardware Clock

If you want to set the time with a NTP Client install the following package, if you have a network connection available (see USB Networking)

# apt-get install ntpdate
# ntpdate-debian

For further detail see Setting Date and Time.


Size Root File System

If you want to install e.g. Twinkle and Navit on QtMoko the size of internal NAND memory is not sufficient (Twinkle need > 100MB). By creating symbolic links some memory problems can be avoided.

NOTE: (Size Root Filesystem) Create symbolic links from root file system to SD-card to save internal memory.If some folders are symb-linked to SD-Card (with e.g. ext2 partition), e.g.
 # mkdir /media/card/share
 # mkdir /media/card/share/navit
 # ln -s /media/card/share/navit /usr/share/navit 

It recommended to use an ext2-partition. After creating symb-links install software.

Consider installing QtMoko on MircroSD instead with Qi, if you want to make use of debian applications that exceed NAND memory capacity.


If you want to login to your FreeRunner set up a network connection (see USB Networking) with USB cable and start:

  desktop# ssh -X -l root

or if hostname is defined in /etc/hosts

  desktop# ssh -X -l root openmoko

Installation of Applications

If you want to install applications (e.g. myapplication) login on your freerunner

 # apt-get install myapplication

Replace myapplication by the package name of application name you want to start, e.g. if you want to install the command line editor vim.

 # apt-get install vim


Navit Installation

If you want to install e.g. the application Navit, you have to install the following packages. Navit needs and X-Server and it will run under QX.

 # apt-get install flite
 # apt-get install unzip

The zip-package is necessary to unzip the package.

 # cd /media/card
 # mkdir download
 # cd download
 # wget
 # cd /

During unzip you will be asked to replace /opt/qtmoko/bin/ppp-network. This has to be done to solve problems with DNS over GPRS. Backup ppp-network file before unzipping

 # cp /opt/qtmoko/bin/ppp-network /opt/qtmoko/bin/ppp-network.bak
 # unzip /media/card/download/
 # rm /media/card/download/

Unzipping the file will overwrite the following files too:

NOTE: Unzip extracts and overwrites the network settings files mentioned above. Due to this fact the usb0 MAC address changes for the USB connection to your freerunner. E.g. under Ubuntu 10.04 the new network interface for usb0 has to configure again

Now you have to restart your Freerunner, but you can also try from the commandline of your neo:

 # echo 1 > /proc/sys/vm/overcommit_memory

After restart you can start Navit under QX.

Navit in QX Main Menu
Download Maps

Create a folder MapsNavit on your SD card

 # mkdir /media/card/MapsNavit

The navit QT package from the navit.xml is predefined for benelux maps and will try to load osm_benelux.bin that should be store at


If you want to use map for another country you can just store a downloaded Navit-Map in that folder and rename it osm_benelux.bin. If the map name should make sense, then you have to edit the navit.xml. See Navit-manual for details. You can find the navit.xml at:

 # /usr/share/navit/navit.xml

Create the folder .navit in the home directory on your FR and copy navit.xml to directory:

 # cd ~
 # mkdir .navit
 # cp /usr/share/navit/navit.xml .navit/navit.xml 

If you have the editor vim installed then edit the file at line 376 approx.:

 # vim ~/.navit/navit.xml

If you have downloaded the file germany.bin your mapset-tags should look like this:

 <!-- Mapset template for openstreetmaps -->
 <mapset enabled="yes">
   <map type="binfile" enabled="yes" data="/media/card/MapsNavit/germany.bin"/>
NOTE: Both MAPSET and MAP have to be enabled to work with the OSM-map in Navit.

Starting Navit
Launch Navit in QX
  • Open Main Menu by clicking on the green Q-Topia "Q"-Box.
  • Open Applications (4 Boxes, red, yellow, green, blue)
  • Scroll down and open QX
  • Select Navit
  • Click on the white Paper Icon on the bottom left to open the context menu of the QX application.
  • Select Launch to start Navit.
  • Exit with AUX-Button without stopping navit


Integrated VoIP-Client

QtMoko has an integrated VoIP-Client, which would be perfect to use a SIP-Account to do free of charge mobile communication world wide. But at the moment the integrated VoIP-Client does not work, due to some strange problems in Version v24 (see QtMoko-Wiki for current status of development).

Android on Freerunner has an integrated SIP-Client SipDroid that has strange audio problems as well (see ). Maybe there is an underlying problem the

have in common.


See Twinkle for further details or the official Website

  apt-get install twinkle

For installation of Twinkle your need 105MB. It would be necessary to install QtMoko on MircoSD.

Error: Installation of Twinkle with apt-get stops with errors (Test: 19.11.2010)

You can use Linphone ( instead, which will use 83MB.

  apt-get install linphone

See additional information on the OpenMoko-Linphone page.

PIM Storage and Import

As visible on QtMoko-Wiki Syncing Calendar data is not working at the moment. Some work has be done (Thanks to mossroy), so that iCal-Files (ics) can be imported to your QtMoko calendar via a perlscript Choose the current version from

  1. install the dependencis for the perl script (see
  2. Export the calendar in an iCal File (e.g. mycalendar.ics) and transfer this file to your Neo.
  3. import mycalendar.ics with scripts into your SQLite Database.


Delete Icons from Favorites in Task Manager

QtMoko Favorites

Add to Favorites

You might prefer some applications and you use them more frequent. Then you might want them to add to your favorites.

  • Go the application list and select (highlight, but do not start) application.
  • click on the paper icon on bottom left and select Add to Favorite.

Then you will have this Icon in the favorites menu (yellow star in main menu) too.

Delete from Favorites

A bit more difficult (i.e. more hidden in QtMoko) is to delete icons from the favorites menu.

  • start Task Manager in main menu by pressing the AUX-Button on you freerunner.
  • You will see the list of favorites
  • Select the application your want to remove from favorites (keep pressed for a few seconds on the application until the context menu appear. The icon you want to delete should not be selected before.
  • select delete from context menu and the icon disappears from favorites.

QX Favorites

Favorites in QX with Linphone-icon added

QX is the X-Server in QtMoko you can add favorites to the QX-Menu too by manual editing the files in:


The file


detemines the list of application you will see after starting QX. The file looks like this:

 list=navit, tangogps

The applicationsnames must exist and need an entry in the profiles.conf file. The file


defines the QX-settings for the application. E.g. navit needs the GPS-daemon to be started and the auto-dim function of the display is disabled. These settings can be defined for the applications individually. The file contain profile records like the following for tangogps and navit:

 init=gpsd /dev/ttySAC1

 init=gpsd /dev/ttySAC1

Add to QX-Favourites

You have installed or programmed an application with the name myapp. Test the application in the QX-terminal if it works properly. Now we add this application myapp to the application list in favourites.conf. We do this e.g. with vi:

 # vi /opt/qtmoko/etc/qx/favourites.conf

The file look like this (press "I" for switching to INSERT mode):

 list=navit, tangogps, myapp

add lines press ESC and :w for "write to file" and ":q" for "quit VI". Now we have to add a profile record for myapp in file profiles.conf. We do this e.g. with vi:

 # vi /opt/qtmoko/etc/qx/profiles.conf

The file is depended on your settings could look like this and e.g. the following lines (press "I" for switching to INSERT mode):


Then press "ESC" and ":w" for "write to file" and ":q" for "quit VI".

Remove QX-Favorites

You just have to remove the application name from the list of applications in:


You do not need to remove the application profile for your application in profiles.conf.

Error Handling and Workarounds

During the installations above, the following problem occured:

Xdialog Problem with

When encouter a GdK-Warning using Xdialog in scripts you can remove the warning with sed.

 sed 's/Gdk-WARNING ... locale not supported by C library//g

Embedded in a script it will work like this:

  Xdialog --title "INPUT BOX" \
     --inputbox "Enter URL:" 18 45 \
     "" 2> /tmp/inputbox.tmp.$$
  input=`cat /tmp/inputbox.tmp.$$`
  rm -f /tmp/inputbox.tmp.$$
  input=`echo $input | sed 's/Gdk-WARNING ... locale not supported by C library//g'`
  # remove invalid character from URL
  input=`echo $input | sed 's/[^a-zA-Z1-9\/:\. \-]//g'`
  case $retval in
      echo "Input string is '$input'";;
      echo "Cancel pressed.";;
      echo "Box closed.";;

To test this script on your freerunner, you have to start it from the terminal in QX. Source of the xdialog script is used from

Apt-Get Problem jffs2

[Apt-Get] (jffs2) Couldn't make mmap ...: (solved with the following workaround) If that happens regularly, create two scripts apt-start and apt-stop. These scripts are used before and after apt-get use.

Create an APT-START Script

  • start vi for the script apt-start
 # vi /bin/apt-start 
  • press "I" for insert and enter the following code:
 mount -t tmpfs none /var/cache/apt
 mkdir -p /var/cache/apt/archives/partial
 apt-get update
 echo "apt-get can now be used"
 echo "stop with apt-stop"
  • press ESC and then ":w"
  • press ":q" for quit.
  • make the script executable with chmod:
  chmod u+x /bin/apt-start

Create an APT-STOP Script

  • start vi for the script apt-stop.
 # vi /bin/apt-start 
  • press "I" for insert and enter the following code:
 umount /var/cache/apt
 echo "Now old settings for apt-get are restored"
  • press ESC and then ":w"
  • press ":q" for quit.
  • make the script executable with chmod:
  chmod u+x /bin/apt-stop

Usage of Scripts

If you to install software use the scripts before and after apt-get call:

 apt-get install mysoftware

Replace mysoftware with the package you want to install e.g. linphone.