Maemo

Maemo is a software platform that is mostly based on open source code and powers mobile devices such as the Nokia Internet Tablets. Maemo platform has been developed by Nokia in collaboration with many open source projects such as the Linux kernel, Debian, GNOME and many more.

If you want to build Cumulus for one of the Internet Tablets you have to install the Maemo SDK on your Linux PC.

Installation of Maemo SDK

Do download the Maemo SDK from hereMaemo 4 has to be used for the devices N800 & N810, Maemo 5 for the device N900. Follow the instructions to get installed it.

If you have successfully installed the SDK you can checkout Cumulus from Subversion into your scratchbox environment. Excecute the command:

svn co https://svn.kflog.org/svn/repos/cumulus/qt4/trunk

to get the latest version. In the root directory of your checkout you can find files with the names Makefile.Maemo4 and Makefile.Maemo5. Use one of them according to your current Maemo environment. In the makefile the following targets are defined:

  • all this target builds the Cumulus application
  • clean this target cleans the whole build area
  • dpkg this target builds a Debian package for Cumulus
  • dpkg_lang this target builds a Debian German language package for Cumulus

There are some more targets defined but these are the most important.

To build Cumulus you need too a Qt4.7 Framework installation. Look here where you can download it. This address is also a good help concerning all your questions to Qt and Maemo.

Building Cumulus in scratchbox

To build Cumulus in the scratchbox environment you have to adapt the make variable QT_LIBDIR in the makefile Makefile.Maemo[4/5]. It must point to your Qt library installation directory in the scratchbox. Cumulus needs for its package build the Qt libraries libQtCore, libQtGui and libQtNetwork. The tools in scratchbox are limited but you can also access the scratchbox content from the outside. E.g. if you have installed scratchbox under

/opt/scratchbox/users/<user>

you can access it from the outside via the path

/opt/scratchbox/users/<user>/home/<user>.

That is more convenient because now you can use your normal tool environment from your Linux desktop. Sometimes I got trouble with svn and ssh in scratchbox. Via the bypass I could overcome these problems.

Do execute the command make -f Makefile.Maemo[4/5] all

to build the Cumulus application. If you could compile and link it successfullly you can build the Debian package for the Tablet.

Do execute the command make -f Makefile.Maemo[4/5] dpkg

If all was ok then you can find the Debian package in the subdirectory dpkg. It carry a name like cumulus_<version>_armel.deb. Copy the package to your Tablet e.g. via scp. The package can be installed on your Tablet via the GUI Program Manager or by using the command line tool dpkg -i <cumulus-package> in a X-Terminal window.

Cumulus Debian Package

The Cumulus N8x0 Debian package includes beside the Cumulus application the necessary Qt Libraries libQtCore, libQtGui and libQtNetwork for the run-time. Cumulus is installed at the Tablet under the root path /opt/cumulus. The Qt libraries are installed in the subdirectory lib. Cumulus has a start script that will set the LD_LIBRARY_PATH variable to /opt/cumulus/lib. So is ensured that no conflicts will happen with other Qt installations.

The N900 uses the Qt libraries provided by Maemo 5. Therefore there is no need to add these libraries to the Debian package.

Cumulus adaptions for Maemo

  • To add special code only for Maemo the conditional defines #ifdef MAEMOMAEMO4 or MAEMO5 are used.
  • To handle screen saver switch off two functions osso_initialize and osso_display_blanking_pause from the library libosso are used.
  • To handle the GPS connection the services of the library LibLocation are used.
  • On Maemo 4 the Maemo GPS daemon is directly connected via its listening port 2947 and requested to send raw data in watcher mode.
  • On Maemo 5 the library LibLocation services are used to get the GPS data.
  • Furthermore Cumulus can directly connect Bluetooth GPS devices. That is useful to get full access to the NMEA raw data which is not provided by LibLocation services.
  • On the N8x0 tablets Cumulus can access GPS devices with serial interfaces in USB host mode via a RS232-USB gadget.
  • Due to the high screen resolution of 800×420 pixels and the small screen size often bigger fonts or pen width are used under Maemo.