Hack-A-N900/Development Notes

aus Metalab Wiki, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Zur Navigation springenZur Suche springen

N900 Development Notes

Not meant as a public resources. Just cluttered notes (meaning written in a hurry) that src, cyphunk are sharing with each other for remote collaboration on a project.

SDK Types

Nokia have switch mental frames of thought for how they want to develop their phones and the result is a few different paths one must choose from.

  • Maemo Scratchbox
  • Maemo MADDE
  • Meego SDK

We have tried all 3 but are currently using MADDE which appears to have better Qt Creator integration than Scratchbox does. Also the Meego SDK is specific to n900 phones running Meego, which is not officially support yet. It works, but not well on 64 bit workstations.

Installing MADDE

Download and Install

There is one decent installation document[1] but it links to two different installers. Before getting to the installation steps the it links first to the "Nokia Qt SDK (Release Candidate)" installer but in the actual installation directions it tells you to download an install shell script from "MADDE downloads" in step 1. Both might work but we are using the "Nokia Qt SDK (Release Candidate)" installer http://www.forum.nokia.com/info/sw.nokia.com/id/e920da1a-5b18-42df-82c3-907413e525fb/Nokia_Qt_SDK.html

We installed this to ~/nokiaqtsdk, with the default setup. We checked the box to overwrite Qt Creator settings. After completed we created a local link to the QtCreator in the SDK so that we dont get mixed up with the various SDK's weve installed:

ln -s ~/nokiaqtsdk/QtCreator/bin/qtcreator ~/bin/qtcreator_nokiaqtsdk
ln -s ~/nokiaqtsdk/Maemo/4.6.2/bin/mad ~/bin/mad_nokiaqtsdk
ln -s ~/nokiaqtsdk/Maemo/4.6.2/bin/mad-admin ~/bin/mad-admin_nokiaqtsdk

Configure

After installation we used the "QtCreator integration for Linux" guide[2]. This will let you deploy applications to either the emulator or phone. For now lets just get the emulator working. Specifically we did the following (more details in the linked guide) from within the qtcreator_nokiaqtsdk:

Tools -> Options -> Qt4 -> Qt Versions

Make certain you have the following entries:

Version name: Simulator Qt for GCC (Nokia Qt SDK)
qmake location: /home/user/nokiaqtsdk/Simulator/Qt/gcc/bin/qmake

Version name: Qt for Fremantle PR1.2 Devices (Nokia Qt SDK)
qmake location: /home/user/nokiaqtsdk/Maemo/4.6.2/targets/fremantle-1030/bin/qmake

The "Debugging helper" status might show a red "X". If it does, click the "Rebuild" button for both of the above entries. This should be enough to start building example projects.

Compile Hello World

Simple example (src[3]). The following will create a hello world qt creator project called qthello in the current directory:

$ mad_nokiaqtsdk pscreate -l
$ mad_nokiaqtsdk pscreate -t qt_simple qthello

Open the qthello project in QtCreator. When you open it the first time, and when you create new projects for that matter, it will ask you to setup the targets. Be sure that you enable it for both "Qt for Fremantle PR1.2 Devices (Nokia Qt SDK)" and "Simulator Qt for GCC (Nokia Qt SDK)".


Installing libraries

There are the nokia closed-source libraries and other libraries from the community that you might want to use in your application. For example, I would like to use TpSession[4] which is an abstraction for the TelepathyQt4 API letting one manage sms's, phone calls, etc.

In Scratchbox

To install TpSession using scratchbox you need to install TelepathyQt4 on your workstation (for emulator), apt-get install libtelepathy-qt4-dev, and you need to install the nokia closed source libs for your target (requires serial number). Then compile TpSession (git clone https://vcs.maemo.org/git/tpsession) for your workstation and/or target. Then you have to copy the lib to the root dir of your target and add the location to the INCLUDES of the .pro file for the project. (thread discussion[5]). Command log for using lib on local emulator:

sudo apt-get install libtelepathy-qt4-dev libsqlite3-dev
git clone https://vcs.maemo.org/git/tpsession
cd tpsession/tpsession-0.1/
find ./ -name Makefile -exec rm -f {} \;
qmake && make && make install

Might need to edit the INCLUDES in projects .pro file. For using on a target you need to install the nokia closed source libs and recompile tpsession for the phone and then:

cp tpsession/libtpsession.so* <target_working_lib_dir>

In MADDE

Same steps as for scratchbox. I've tested this only with the emulator at the moment.

Qt API's

Saving Application Settings

[6]