Qt Extended Improved

From Openmoko

Jump to: navigation, search


Community Resources

Qt Software cancelled the Qt Extended project on 3 March 2009 (Qt Software discontinues Qt Extended). The community created a fork of it and called it Qt Extended Improved:

Installing Qt Extended Improved on the FreeRunner

Install Qt Extended 4.4.3

There are no rootfs images for Qt Extended Improved, so first we need to install Qt Extended 4.4.3, then we can upgrade to Qt Extended Improved. Follow the instructions at Qt Extended 4.4.3.

Install Qt Extended Improved

Boot your FreeRunner into Qt Extended 4.4.3. Create a USB network connection between your workstation and the FreeRunner. Download the most recent pre-built tarball. Now you must unpack the tarball to a temporary directory and copy its contents to the FreeRunner's /opt/Trolltech/Qtopia directory:

mkdir temp
cd temp
tar -xzvf ../qt-extended-improved-bin-only-20090316.tar.gz 
scp -r *

this can be resumed in a simpler and quicker operation:

( dd if=../qt-extended-improved-bin-only-20090316.tar.gz ) | ( ssh "cd /opt/Trolltech/Qtopia/ && tar xzv" )

Reboot your FreeRunner and you should be running Qt Extended Improved.

Building Qt Extended Improved

First download a source tar ball from the git repository. Then make the build directory and set the environment variables. In this example, I write the environment variables to a file then I source the file.

mkdir -p /opt/QtExtended/build
cd /opt/QtExtended
tar -xzvf qt-extended-improved.tar.gz
echo "export QTOPIA_DEPOT_PATH=/opt/QtExtended/qt-extended-improved" >> setpaths 
echo "export QPEDIR=/opt/QtExtended/build/" >> setpaths
. setpaths

Install the toolchain:

cd /opt
wget http://qtextended.org/downloads/toolchains/arm920t-eabi.tgz
tar xzvf arm920t-eabi.tgz /

Do the linux three-step: configure, make, make install. Plus we build the sdk so we can make our own apps later, if we want.

$QTOPIA_DEPOT_PATH/configure -device neo -D _FORTIFY_SOURCE=0
make install
bin/qbuild sdk

The binaries are in the $QPEDIR/image directory. You can copy these to your freerunner over usb like this:

scp -r $QPEDIR/image/*

Compiling an Example Qt Extended App

First set those indispensable Qt environment variables:

. /opt/QtExtended/setpaths

Next create a directory /opt/Qtopia/build/myapps. Copy the example app. Rename the example app to something that makes sense (how about "example"!). Create the Makefile and build the example.

desktop# mkdir /opt/QtExtended/build/myapps
desktop# cd /opt/QtExtended/build/myapps
desktop# cp -R $QTOPIA_DEPOT_PATH/examples/application .
desktop# mv application example
desktop# cd example
desktop# $QPEDIR/bin/qbuild

Now you have an executable example. It won't execute on your workstation - you must secure copy it to your FreeRunner. Then secure shell into the FreeRunner, import the Qtopia environment variables and execute the app:

desktop# scp example root@freerunner:/home/root
root@'s password: 
example                                      100%    33KB  33.4KB/s   00:00    
desktop# ssh
root@freerunner's password: 
freerunner:~# . /opt/Trolltech/Qtopia/qpe.env 
freerunner:~# ./example

This is what you should see on the screen (click on image to zoom) : Qt extended sdk example screenshot.png


Create a .qpk file, an installable package:

 desktop# $QPEDIR/bin/qbuild packages

Create a packages.list file for the software installer and put it in the http server root:

 desktop# sudo $QTOPIA_DEPOT_PATH/bin/mkPackages /srv/www/htdocs/

Copy your new package to the http server root:

 desktop# sudo cp pkg/*.qpk /srv/www/htdocs/

On your phone, find Settings > Software Packages; press the Downloads tab; go to Options > Edit Servers; Options > New; then enter a name and URL of, or the URL for your web server. The software package manager should then be able to see $HTTPROOT/packages.list and install any packages you have.

mp3 Support

If you compile your own version of Qt Extended Improved, you can add mp3 support using this patch. Untar the file from your qt-extended-improved directory (it installs some files in the src tree) and patch using the patch file, eg:

desktop# cd $QTOPIA_DEPOT_PATH
desktop# tar -xzvf qt-extended-4.4.3-libmad.tar.gz
desktop# patch -p1 < qt-extended-4.4.3-libmad.patch

Now configure, build, etc.


If you encounter this error while compiling your example,

   In file included from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qglobal.h:58,
   from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qatomic.h:41,
   from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qvariant.h:41,
   from /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/QVariant:1,
   from /opt/QtExtended/build/myapps/example/.uic/ui_examplebase.h:13:
   /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qconfig.h:2:66: error: /opt/QtExtended/build/sdk/sdk/qtopiacore/qconfig-qpe.h: No such file or directory

edit /opt/QtExtended/build/sdk/qtopiacore/target/include/QtCore/qconfig.h and remove one /sdk/ from /opt/QtExtended/build/sdk/sdk/qtopiacore/qconfig-qpe.h at the top of the file.

A better solution which will work for building packages too is to symbolic link the second sdk to the first...

  cd $QPEDIR/sdk
  ln -s ../sdk sdk

Branches and Forks

There are various other branches and forks of qte/qtei that fix bugs or other things. List taken from http://lists.openmoko.org/pipermail/community/2009-April/046492.html

Major Distro Efforts

There are 3 major "distributions" for QtEI: karadogs, Radeks and Franky:

  • Karadog runs on 2.6.24 and is behind patches
  • Radek (based on karadog) is running on 2.6.28 and behind on


  • Franky is running based on Radek (patches included), but no binary

distro, just an install script.

Initial import of QTE 4.4.3 opensource release



QtEI on Debian by Radek.





Trac, Releases, sources and semi-official Roadmap by HouYu Li

KaraDog Main Trac Site.

Binary releases.

2010-04-20: web site broken.

Latest and Greatest

Franky Van Liedekerke's branch.


List of Issues.

Issues Fixed.

Install script and instructions. Execute the script on the Neo.

Lpotter's Branch


Personal tools