maemo SDK+ Installation Instructions for Debain GNU/Linux

Release Information

Project:           maemo SDK+ 
Version:           RC-1
Baseline:          None. This SDK is baseline neutral.
Date:              2008-11-27

This document explains how to install and set up the maemo SDK+ development environment on your Debian GNU/Linux computer. This document is targeted for maemo application developers.

This document covers the following steps:

  1. Understand
  2. Install maemo SDK+ build environment
  3. Setup maemo development targets
  4. Test maemo SDK+


The maemo SDK+ build environment is designed to use scratchbox version 2. This is installed separately from earlier versions of scratchbox. Also targets' files and configurations are stored elsewhere. Therefore the maemo SDK+ can coexist with an existing maemo SDK environment, such as scratchbox 1.0.8 'apophis' with maemo 4.1 'diablo', and these environments will not conflict.

IMPORTANT: There is no need to change or remove your existing scratchbox and maemo SDK environments.

The maemo SDK+ in itself does not contain any rootstraps. The same rootstraps are used than in maemo 'scirocco', maemo 'bora' and maemo 'chinook' releases.

This RC-1 version of Maemo SDK+ has been tested on several Ubuntu and Debian distributions running on 32bit i386 architecture. This document explains how to set up Maemo SDK+ on Debian.


The installation process requires networking access. Please, set up proxy settings first if your network access requires it.

In order to install maemo SDK+, set up the following entry to your /etc/apt/sources.list file on your Debian host. This will add the maemo-sdk repository. Note that you need to log in as root user in order to edit apt repositories.

If you have Debian Lenny, please, add the following line:

   deb debian-lenny free

If you have Debian Etch, please, add the following line:

   deb debian-etch free

Next, run the command 'apt-get update' using sudo to update available packages list:

   [Host:root] $ apt-get update

Now install the packages by running 'apt-get install maemo-sdk' using sudo. This will install the requisite packages:

   [Host:root] $ apt-get install maemo-sdk

The following packages will be installed:

   - maemo-sdk
      * metapackage with core utilities
   - maemo-libtool 1.5.26-2
      * libtool source which is compiled with target setup
   - sbrsh 7.6maemo1
      * run binaries on target device with automated mounting
   - sb2-qemu-arm 0.9.1-6
      * Qemu ARM CPU emulator (with some patches) 
   - scratchbox2
      * cross compilation environment


3.1 Build tools Distribution

Remark: maemo SDK+ RC-1 release adds a new command maemo-sdk which is capable of executing all maemo SDK+ administrator use cases. You can launch the tool simply by typing maemo-sdk on your host terminal. You can then select the operation from the menu and continue from that to more operation specific menu selections. Note that some operations may require that you run maemo-sdk under root. The old maemo-tools and maemo-rootstrap based interface is, however, still available and documented here.

It is recommended that all maemo software should be compiled using specific set of Debian/Etch tool set. maemo SDK+ provides a command maemo-tools install which will set up these Debian/Etch tools under /opt/maemo/dists directory. They will not interfere with tools already installed to your host, or, tools you will later install to your host. By providing an isolated set of tools we just veryfy that we can have uniform tool set regardless of the host environment.

You can later extend the build tool set by loging into the build tools environment by using command maemo-sdk enter tools etch. There you can use apt-get install command to add tools and the operations will not conflict with your host environment.

Please, note that this command will take some time to complete. In order to speed up the download you might want to add --mirror url option between maemo-tools and install where the url is the Debian mirror nearest to you. The list of Debian mirrors can be found here.

    [Host:root] maemo-tools install etch

3.2 Cross-compiler installation

You need a cross-compiler if you want to build software for maemo devices. There exists currently two versions of cross-compilers 2005q3 and 2007q3. At the moment 2005q3 is recommended. The maemo-sdk package should install 2005q3 toolchain by default. To check if you have it already installed run.

    maemo-sdk list toolchains

If the command did not report 2005q3 you need to install it manually by typing the following command in a root terminal:

    maemo-tools install-toolchain 2005q3

Again, please, note that the cross-compiler is a large package and it might take some time to download.


A rootstrap provides header files and libraries that match one or many maemo based product software images. These are required to build software that is compatible with a specific maemo based device, such as Nokia N800 or Nokia N810. Development targets are user specific.

The maemo SDK+ provides just the build environment and the tools to setup the relevant maemo development targets.

Use the rootstrap and development target that correspond to the operating system on your target Internet Tablet device. Currently the following development targets are available:

    - diablo4.1.1_armel
       * maemo 4.1.1 'diablo' armel SDK for OS2008
    - diablo4.1.1_i386
       * maemo 4.1.1 'diablo' i386 SDK for OS2008
    - diablo4.1_armel
       * maemo 4.1 'diablo' armel SDK for OS2008
    - diablo4.1_i386
       * maemo 4.1 'diablo' i386 SDK for OS2008
    - chinook40_armel
       * maemo 4.0 'chinook' armel SDK for OS2008
    - bora31_armel
       * maemo 3.1 'bora' armel SDK for OS2007
    - bora30_armel
       * maemo 3.0 'bora' armel SDK for OS2007
    - scirocco22_armel
       * maemo 2.2 'scirocco' armel SDK for OS2006
    - mistral20_armel
       * maemo 2.0 'mistral' armel SDK for OS2006

When started the maemo-rootstrap tool does not download the latest rootstrap index file from the server unless --reload option is given. This allows reinstalling rootstraps from cache offline. To update the rootstrap list, please, use it.

The maemo SDK+ itself does not contain any rootstraps. The same rootstraps are used than in releases maemo 'scirocco', maemo 'bora' and maemo 'chinook'.

4.1 Installing the latest maemo 4.1.1 'diablo' rootstrap

To develop for the current maemo 4.1.1 'diablo' (SDK for OS2008) you will need to install diablo environment with armel CPU emulation. Run the following command to setup maemo environment for the current user (please, do not install roostraps under root but as normal user):

   [Host] $ maemo-rootstrap install diablo4.1.1_armel

This will download the rootstrap, setup the development target and extract the rootstrap. The development target root will be located under the following directory:


You can now start development for maemo 4.1.1 'diablo'.

4.2 Installing the latest maemo 4.0 'chinook' rootstrap

To develop for an earlier maemo 4.0 'chinook' you will need to install chinook environment with armel CPU emulation. Run the following command to setup maemo environment for the current user:

   [Host] $ maemo-rootstrap install chinook40_armel

4.3 Installing all rootstraps

You may install all the available targets with the following command:

   [Host] $ maemo-rootstrap --reload install all

4.4 Using the menu interface in maemo-rootstrap

The maemo-rootstap manager can be used without arguments as well which gives you a menu based interface. Run the following command as user to setup development target:

   [Host] $ maemo-rootstrap

Select any development target listed in the menu to install it. Once you have installed the rootstraps that correspond to the operating system on your target Tablet device you are ready to start using the newly installed maemo SDK+.

Please, read the maemo SDK User Guide for more details.

4.5 Installing binary-only packages

The maemo-rootstap manager can install the Nokia binary-only packages as well. Run the following command as user to setup the binary packages for diablo4.1.1_armel roostrap:

   [Host] $ maemo-rootstrap bin-install diablo4.1.1_armel


After you have installed the SDK you can try a small test compilation with maemopad. In this example we are using maemo 4.1.1 'diablo' rootstraps.

Make sure that you have installed the Diablo armel rootstrap and using diablo4.1.1_armel as the default target. After that go to your normal linux home directory and run the following commands:

   [Host] $ mkdir -p ~/src/mytest
   [Host] $ cd ~/src/mytest
   [Host] $ sb2 apt-get update
   [Host] $ sb2 apt-get source maemopad
   [Host] $ cd maemopad-2.4
   [Host] $ sb2 dpkg-buildpackage -rfakeroot -d -b
   # compilation and package building should start normally now.
   # if configure fails please check that you have installed the right tools to your host

You should now have the maemopad .deb binary package in parent directory:

   [Host] $ ls -lt ..
   total 2
   -rw-r--r-- 1 you     you        512 2007-12-18 14:13 maemopad_2.4_armel.changes
   -rw-r--r-- 1 you     you      18318 2007-12-18 14:13 maemopad_2.4_armel.deb
   drwxr-xr-x 6 you     you       4096 2007-12-18 14:13 maemopad-2.4
   -rw-r--r-- 1 you     you        476 2007-11-29 18:14 maemopad_2.4.dsc
   -rw-r--r-- 1 you     you     383834 2007-11-29 18:14 maemopad_2.4.tar.gz

You can now try the newly compiled maemopad in the Internet Tablet. Just copy the maemopad_2.4_armel.deb file to the device and install it using the Application Manager.

On the other hand, if you want to install the package into the diablo4.1.1 rootstrap just go to the parent directory (note that sb2 ../maemopad_2.4_armel.deb does not work) and type the following.

   [Host] $ sb2 -eR dpkg -i maemopad_2.4_armel.deb

You might also want to play with the maemo SDK+ runtime emulation. Just start it by typing:

   [Host] $ maemo-runtime start diablo4.1.1_armel

When the start up procedure is complete you are ready to launch the maemopad application on your emulated runtime.

After installing the maemo SDK+ please also read the maemo SDK+ User Guide.

Happy Hacking !