Saturday, 21 July 2007

Getting Started with OpenMoko

My OpenMoko phone has been on order for a couple of weeks now, and while I'm waiting I thought I'd have a play with the development environment.

I'll add notes here as a record of what I've done to get things working.

There's a lot of good documentation on the openmoko wiki site already.
But that didn't stop me from hitting a few problems along the way. All my own fault really.
All the information is there on the wiki but it is spread over a number of pages. It's worth reading through as much of it as possible before you get started.

The first thing I did was update my Linux environment. I was using Kubuntu Dapper, and thought I'd better upgrade to Feisty Fawn to make life a bit easier.
(The upgrade was very easy and I had no problems at all!)

Then I started to follow the instructions here:
http://wiki.openmoko.org/wiki/MokoMakefile

As I said before. Don't be too eager to start following the instructions straight away. It's easy to miss something, and the builds can take a LONG time.

I followed the MokoMakefile instructions:
Set up OpenEmbedded according to this page: http://www.openembedded.org/wiki/OEandYourDistro

I used the Adept Package Manager to install

"openembedded-essential"
"automake" 1:1.10

I had to fix the link for /bin/sh as it was pointing to dash instead of bash.
(As mentioned on the MokoMakefile wiki page)

After doing the "make setup" you'll have a build/conf/local.conf file
I had to edit mine to fix a build problem

TARGET_FPU = ""

And I added
INHERIT += " rm_work"
to reduce the amount of disk space used.

I was quite shocked to find that I ran out of disk space the first time I tried to build the development image. I had at least 4GB free, and it used it all up.

So make sure you have plenty of spare space, and add the "rm_work" bit to your local.conf file.

My local.conf file now looks like this:

MACHINE = "x86"
DISTRO = "openmoko"
BUILD_ARCH = "i686"
INHERIT += " devshell"
INHERIT += " rm_work"
SRCDATE_eds-dbus = "now"
TARGET_FPU = ""

You should now be ready to build the development environment:

make openmoko-devel-image

This can take a lot of time. Allow a few hours!

I then followed the instructions and tried to build qemu next

make qemu

I got compilation errors because zlib.h couldn't be found.

I used Adept Package Manager to install zlib1g-dev which gave me zlib.h in /usr/include

The compilation got a bit further this time, but then it failed with this error:

Splash needs 'pngtopnm' and 'ppmtorgb3' - make sure that they're in $PATH.

I installed the netpbm package to fix that. Then I had problems with lynx. So I installed that too.

This time when I did "make qemu" it finished, and the emulator window popped up!
Hurrah!

You can run the emulator by typing "make run-qemu"



Pressing Enter moves you through the menu, and pressing space selects something.

I chose the first option and watched the boot sequence in the emulator window.



And then I got the OpenMoko GUI... :-)




That's enough for one blog post. I think I'll quit while I'm ahead.
(Apologies for the large images, I'll sort them out later)

No comments: