<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.openmoko.org/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Chgros&amp;feedformat=atom</id>
		<title>Openmoko - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.openmoko.org/api.php?action=feedcontributions&amp;user=Chgros&amp;feedformat=atom"/>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Special:Contributions/Chgros"/>
		<updated>2013-05-24T15:21:17Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.19.6</generator>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2009-01-20T01:32:53Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* MokoMakefile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile does not install anything into your system (it can and should be started as normal user). MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both Om2008.8 (org.openmoko.asu.stable, openmoko-asu-image) and &amp;quot;Bleeding Edge&amp;quot; (org.openmoko.dev, openmoko-base-image) images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ncurses zlib (or libz) OpenSSL GTK++&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito bzip2&lt;br /&gt;
sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev&lt;br /&gt;
# To prevent errors in host validation&lt;br /&gt;
sudo apt-get install ca-certificates&lt;br /&gt;
# For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
# For building faster&lt;br /&gt;
sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
# For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
# On Ubuntu 8.04 and and Debian testing/unstable, the following was required instead of cogito&lt;br /&gt;
sudo apt-get install git-core&lt;br /&gt;
# Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
sudo dpkg-reconfigure dash&lt;br /&gt;
# Select No when it asks you to install dash as /bin/sh.&lt;br /&gt;
&lt;br /&gt;
# This may be needed only for ASU&lt;br /&gt;
sudo apt-get install libxtst-dev&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
&lt;br /&gt;
 wget [http://download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm http://download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm]&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
===== Mandriva =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;urpmi git help2man diffstat texi2html texinfo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Tested with Mandriva 2009.0. &amp;lt;tt&amp;gt;kernel-desktop-devel&amp;lt;/tt&amp;gt; of the current kernel is installed in advance, which installs compilers, binutils and many other general compilation tools.)&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir ~/moko ; cd ~/moko&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter.&lt;br /&gt;
If you ever want to move your $OMDIR to another location, you must run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make clobber ; make setup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to reinitialize the environment.  Yes, this will take a long time, so choose $OMDIR carefully.&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
&lt;br /&gt;
 wget [http://www.rwhitby.net/files/openmoko/Makefile http://www.rwhitby.net/files/openmoko/Makefile]&lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try&lt;br /&gt;
&lt;br /&gt;
 wget [http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile]&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
&lt;br /&gt;
If you want to make the &amp;quot;Bleeding Edge&amp;quot; (org.openmoko.dev, openmoko-base-image) image instead of the Om2008.8 image, see [[Distributions]], you need to edit your Makefile.  Read the top of the Makefile for details.&lt;br /&gt;
&lt;br /&gt;
Note that if you want to build FSO, you should use the FSO Makefile at http://downloads.freesmartphone.org rather than the MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
Set up the environment with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are building for the Neo1973 GTA01, then also do this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup-machine-om-gta01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are building for the FreeRunner GTA02, then also do this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup-machine-om-gta02&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
&lt;br /&gt;
Before starting a lengthy make process, check the [[#Tips|Tips]] section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/glibc/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update-makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be aware that any changes you previously made to the Makefile (like the git branch to use) are lost when executing ''update-makefile''.&lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update-makefile &amp;amp;&amp;amp; make setup update image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make clean-package-&amp;lt;foo&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory. You can then [[Flashing the Neo FreeRunner|flash these]].&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it in the Openmoko development Trac at https://docs.openmoko.org/trac/wiki/NewTicket or in #openmoko on [[Development_resources#IRC|IRC]].  If bitbake has started to run, then it's almost guaranteed that the problem is in the OE build recipes, *not* in the MokoMakefile itself (which is just a convenience wrapper around the OpenEmbedded build system).  Please do not report build recipe errors to the MokoMakefile author.&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help. The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;`env | grep -Ev '^(SHELL|TERM|OLDPWD|USER|USERNAME|PATH|EDITOR|LANG|HOME|DISPLAY|_)=' \&lt;br /&gt;
| sed 's/^\(.*\)=.*/unset \1/'`&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(you must include the backticks).&lt;br /&gt;
&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
On current Ubuntu/Debian unstable/testing boxes another trick is necessary. glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sysctl -w vm.mmap_min_addr=0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sysctl -w vm.mmap_min_addr=65536&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
&lt;br /&gt;
==== SVN Server Certificate Errors ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;NOTE: Fetch svn://svn.projects.openmoko.org/svnroot/;module=assassin;proto=https&lt;br /&gt;
Error validating server certificate for 'https://svn.projects.openmoko.org:443':&lt;br /&gt;
- The certificate is not issued by a trusted authority. Use the&lt;br /&gt;
fingerprint to validate the certificate manually!&lt;br /&gt;
Certificate information:&lt;br /&gt;
- Hostname: projects.openmoko.org&lt;br /&gt;
- Valid: from Thu, 05 Jun 2008 01:02:42 GMT until Tue, 02 Dec 2008 01:02:42 GMT&lt;br /&gt;
- Issuer: http://www.cacert.org, Root CA&lt;br /&gt;
- Fingerprint: a5:7d:4e:37:e8:94:ee:ba:c1:e8:e9:4b:33:cb:34:91:a9:6d:d3:84&lt;br /&gt;
(R)eject, accept (t)emporarily or accept (p)ermanently?&lt;br /&gt;
svn: OPTIONS of 'https://svn.projects.openmoko.org/svnroot/assassin':&lt;br /&gt;
Server certificate verification failed: issuer is not trusted (https://svn.projects.openmoko.org)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you haven't yet accepted the server certificate for the SVN server.  To remedy this, execute the following commands, and hit &amp;quot;p&amp;quot; (to permanently accept the certificate) when prompted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /tmp&lt;br /&gt;
svn co https://svn.projects.openmoko.org/svnroot/assassin&lt;br /&gt;
rm -rf assassin&lt;br /&gt;
cd -&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exposure_svn and Subversion 1.5.0 ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;NameError: global name 'log' is not defined&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a bug with subversion 1.5.0 -- downgrade to 1.4.x (or check out the latest subversion sources and use those as they're fixed) and re-fetch the sources.&lt;br /&gt;
&lt;br /&gt;
=== Fixes for distribution/environment-specific or isolated issues ===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
&lt;br /&gt;
* Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
* If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
&amp;lt;pre&amp;gt;rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
cd build&lt;br /&gt;
. ../setup-env&lt;br /&gt;
bitbake -crebuild &amp;lt;package&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
After that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
* For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building the whole &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
* Make sure you do not have . in your PATH, this causes an &amp;quot;unrecognized option -Qy&amp;quot; error when building g++spec&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]).&lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
&lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-om-gta01 : setup for GTA01 version of Neo1973&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-om-gta02 : setup for GTA02 version of FreeRunner&lt;br /&gt;
&lt;br /&gt;
; make build-package-package-index : Rebuild the package index&lt;br /&gt;
&lt;br /&gt;
== Developing with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $OMDIR/openmoko&lt;br /&gt;
quilt new descriptive-patch-name.patch&lt;br /&gt;
quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
...make the changes...&lt;br /&gt;
quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the&lt;br /&gt;
# quilt series file there&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make build-qemu&lt;br /&gt;
make flash-qemu-local&lt;br /&gt;
make run-qemu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $OMDIR/build&lt;br /&gt;
. ../setup-env&lt;br /&gt;
bitbake -c patch openmoko-messages&lt;br /&gt;
cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
''...make the changes...''&lt;br /&gt;
cd -&lt;br /&gt;
bitbake -c compile openmoko-messages&lt;br /&gt;
bitbake -c build openmoko-messages&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The compile step is only necessary if you already had the package compiled before patching it.&lt;br /&gt;
&lt;br /&gt;
Note: if you just use &amp;lt;tt&amp;gt;bitbake openmoko-messages&amp;lt;/tt&amp;gt; it will remove the sources after building!&lt;br /&gt;
&lt;br /&gt;
Note: You can use the '-f' switch to force a command to be run (e.g. ''bitbake -f -c compile openmoko-messages'' to force a compile run.&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $OMDIR/openmoko/&lt;br /&gt;
quilt new mycoolpackage.patch&lt;br /&gt;
mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
PV = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit autotools&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called '''packagename-packageversion''' (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.&lt;br /&gt;
&lt;br /&gt;
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$OMDIR/openmoko $ quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;quilt refresh&lt;br /&gt;
cd ..&lt;br /&gt;
make update image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an Openmoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
== Testimonials ==&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;, and &amp;quot;I have never been able to get a build to complete in the pure OE environment, whereas Mokomakefile for some reason builds fine.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Developer]]&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2009-01-20T01:31:57Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* SuSE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile does not install anything into your system (it can and should be started as normal user). MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both Om2008.8 (org.openmoko.asu.stable, openmoko-asu-image) and &amp;quot;Bleeding Edge&amp;quot; (org.openmoko.dev, openmoko-base-image) images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ncurses zlib (or libz) OpenSSL GTK++&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito bzip2&lt;br /&gt;
sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev&lt;br /&gt;
# To prevent errors in host validation&lt;br /&gt;
sudo apt-get install ca-certificates&lt;br /&gt;
# For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
# For building faster&lt;br /&gt;
sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
# For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
# On Ubuntu 8.04 and and Debian testing/unstable, the following was required instead of cogito&lt;br /&gt;
sudo apt-get install git-core&lt;br /&gt;
# Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
sudo dpkg-reconfigure dash&lt;br /&gt;
# Select No when it asks you to install dash as /bin/sh.&lt;br /&gt;
&lt;br /&gt;
# This may be needed only for ASU&lt;br /&gt;
sudo apt-get install libxtst-dev&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
&lt;br /&gt;
 wget [http://download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm http://download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm]&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
===== Mandriva =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;urpmi git help2man diffstat texi2html texinfo&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Tested with Mandriva 2009.0. &amp;lt;tt&amp;gt;kernel-desktop-devel&amp;lt;/tt&amp;gt; of the current kernel is installed in advance, which installs compilers, binutils and many other general compilation tools.)&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;mkdir ~/moko ; cd ~/moko&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter.&lt;br /&gt;
If you ever want to move your $OMDIR to another location, you must run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make clobber ; make setup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to reinitialize the environment.  Yes, this will take a long time, so choose $OMDIR carefully.&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wget http://www.rwhitby.net/files/openmoko/Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
&lt;br /&gt;
If you want to make the &amp;quot;Bleeding Edge&amp;quot; (org.openmoko.dev, openmoko-base-image) image instead of the Om2008.8 image, see [[Distributions]], you need to edit your Makefile.  Read the top of the Makefile for details.&lt;br /&gt;
&lt;br /&gt;
Note that if you want to build FSO, you should use the FSO Makefile at http://downloads.freesmartphone.org rather than the MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
Set up the environment with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are building for the Neo1973 GTA01, then also do this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup-machine-om-gta01&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you are building for the FreeRunner GTA02, then also do this&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup-machine-om-gta02&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
&lt;br /&gt;
Before starting a lengthy make process, check the [[#Tips|Tips]] section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/glibc/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update-makefile&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Be aware that any changes you previously made to the Makefile (like the git branch to use) are lost when executing ''update-makefile''.&lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make setup&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update-makefile &amp;amp;&amp;amp; make setup update image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make clean-package-&amp;lt;foo&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory. You can then [[Flashing the Neo FreeRunner|flash these]].&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it in the Openmoko development Trac at https://docs.openmoko.org/trac/wiki/NewTicket or in #openmoko on [[Development_resources#IRC|IRC]].  If bitbake has started to run, then it's almost guaranteed that the problem is in the OE build recipes, *not* in the MokoMakefile itself (which is just a convenience wrapper around the OpenEmbedded build system).  Please do not report build recipe errors to the MokoMakefile author.&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help. The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;`env | grep -Ev '^(SHELL|TERM|OLDPWD|USER|USERNAME|PATH|EDITOR|LANG|HOME|DISPLAY|_)=' \&lt;br /&gt;
| sed 's/^\(.*\)=.*/unset \1/'`&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(you must include the backticks).&lt;br /&gt;
&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
On current Ubuntu/Debian unstable/testing boxes another trick is necessary. glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sysctl -w vm.mmap_min_addr=0&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sudo sysctl -w vm.mmap_min_addr=65536&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
&lt;br /&gt;
==== SVN Server Certificate Errors ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;NOTE: Fetch svn://svn.projects.openmoko.org/svnroot/;module=assassin;proto=https&lt;br /&gt;
Error validating server certificate for 'https://svn.projects.openmoko.org:443':&lt;br /&gt;
- The certificate is not issued by a trusted authority. Use the&lt;br /&gt;
fingerprint to validate the certificate manually!&lt;br /&gt;
Certificate information:&lt;br /&gt;
- Hostname: projects.openmoko.org&lt;br /&gt;
- Valid: from Thu, 05 Jun 2008 01:02:42 GMT until Tue, 02 Dec 2008 01:02:42 GMT&lt;br /&gt;
- Issuer: http://www.cacert.org, Root CA&lt;br /&gt;
- Fingerprint: a5:7d:4e:37:e8:94:ee:ba:c1:e8:e9:4b:33:cb:34:91:a9:6d:d3:84&lt;br /&gt;
(R)eject, accept (t)emporarily or accept (p)ermanently?&lt;br /&gt;
svn: OPTIONS of 'https://svn.projects.openmoko.org/svnroot/assassin':&lt;br /&gt;
Server certificate verification failed: issuer is not trusted (https://svn.projects.openmoko.org)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you haven't yet accepted the server certificate for the SVN server.  To remedy this, execute the following commands, and hit &amp;quot;p&amp;quot; (to permanently accept the certificate) when prompted:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd /tmp&lt;br /&gt;
svn co https://svn.projects.openmoko.org/svnroot/assassin&lt;br /&gt;
rm -rf assassin&lt;br /&gt;
cd -&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exposure_svn and Subversion 1.5.0 ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;NameError: global name 'log' is not defined&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a bug with subversion 1.5.0 -- downgrade to 1.4.x (or check out the latest subversion sources and use those as they're fixed) and re-fetch the sources.&lt;br /&gt;
&lt;br /&gt;
=== Fixes for distribution/environment-specific or isolated issues ===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
&lt;br /&gt;
* Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
* If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
&amp;lt;pre&amp;gt;rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
cd build&lt;br /&gt;
. ../setup-env&lt;br /&gt;
bitbake -crebuild &amp;lt;package&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
After that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
* For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC)&lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
&amp;lt;pre&amp;gt;ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building the whole &amp;lt;code&amp;gt;image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
* Make sure you do not have . in your PATH, this causes an &amp;quot;unrecognized option -Qy&amp;quot; error when building g++spec&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]).&lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
&lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-om-gta01 : setup for GTA01 version of Neo1973&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-om-gta02 : setup for GTA02 version of FreeRunner&lt;br /&gt;
&lt;br /&gt;
; make build-package-package-index : Rebuild the package index&lt;br /&gt;
&lt;br /&gt;
== Developing with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $OMDIR/openmoko&lt;br /&gt;
quilt new descriptive-patch-name.patch&lt;br /&gt;
quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
...make the changes...&lt;br /&gt;
quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the&lt;br /&gt;
# quilt series file there&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;make build-qemu&lt;br /&gt;
make flash-qemu-local&lt;br /&gt;
make run-qemu&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $OMDIR/build&lt;br /&gt;
. ../setup-env&lt;br /&gt;
bitbake -c patch openmoko-messages&lt;br /&gt;
cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
''...make the changes...''&lt;br /&gt;
cd -&lt;br /&gt;
bitbake -c compile openmoko-messages&lt;br /&gt;
bitbake -c build openmoko-messages&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: The compile step is only necessary if you already had the package compiled before patching it.&lt;br /&gt;
&lt;br /&gt;
Note: if you just use &amp;lt;tt&amp;gt;bitbake openmoko-messages&amp;lt;/tt&amp;gt; it will remove the sources after building!&lt;br /&gt;
&lt;br /&gt;
Note: You can use the '-f' switch to force a command to be run (e.g. ''bitbake -f -c compile openmoko-messages'' to force a compile run.&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd $OMDIR/openmoko/&lt;br /&gt;
quilt new mycoolpackage.patch&lt;br /&gt;
mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
PV = &amp;quot;1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
inherit autotools&lt;br /&gt;
&lt;br /&gt;
SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called '''packagename-packageversion''' (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.&lt;br /&gt;
&lt;br /&gt;
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;$OMDIR/openmoko $ quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;quilt refresh&lt;br /&gt;
cd ..&lt;br /&gt;
make update image&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an Openmoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
== Testimonials ==&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;, and &amp;quot;I have never been able to get a build to complete in the pure OE environment, whereas Mokomakefile for some reason builds fine.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Application Developer]]&lt;br /&gt;
[[Category:System Developers]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Duke_Nukem_3D</id>
		<title>Duke Nukem 3D</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Duke_Nukem_3D"/>
				<updated>2008-10-25T20:08:54Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Legendary First Person Shooter. Rafa shared a simple duke nukem 3d port for Neo which can be played using the accelerometer :)&lt;br /&gt;
&lt;br /&gt;
* opkg install http://alasal.be/openmoko/repo/duke3d_0.1.1_armv4t.ipk&lt;br /&gt;
* [http://onlinedev.blogspot.com/2008/09/getting-duke-nukem-3d-on-your-neo.html HOWTO] about the package.&lt;br /&gt;
* Files: http://fz.hobby-site.org/om/duke-nukem-3d/&lt;br /&gt;
* Instructions: http://fz.hobby-site.org/om/duke-nukem-3d/readme-openmoko.txt&lt;br /&gt;
* Source Code released:http://fz.hobby-site.org/om/duke-nukem-3d/&lt;br /&gt;
* Instructions schematics: http://fz.hobby-site.org/om/duke-nukem-3d/how-to-play-duke.png&lt;br /&gt;
* Demo: http://www.youtube.com/watch?v=260Kpiqv9_U&lt;br /&gt;
&lt;br /&gt;
Note: Game will not run if you don't have accelerometers working properly (check with 'hexdump /dev/input/event2' and 'hexdump /dev/input/event3'. Also make sure PulseAudio isn't running: '/etc/init.d/pulseaudio stop', otherwise it will cause the following error: some people have reported that it will not run resulting in the error 'Unknown multivoc error' even when PulseAudio is not installed - waiting on a workaround. To use game without sound, edit ~/.duke3d/duke3d.cfg and change FXDevice = 0 to FXDevice = 13 under [Sound Setup]&lt;br /&gt;
&lt;br /&gt;
[[User:Chgros|Charles-Henri]]'s version:&lt;br /&gt;
* http://charles-henri.org/duke3d_1.0-r1_armv4t.opk&lt;br /&gt;
* http://charles-henri.org/duke3d-source.tar.gz&lt;br /&gt;
* http://charles-henri.org/Xglamo&lt;br /&gt;
&lt;br /&gt;
The buttons are:&lt;br /&gt;
 jump            escape&lt;br /&gt;
 prev weapon     next weapon&lt;br /&gt;
 open/accept     fire&lt;br /&gt;
&lt;br /&gt;
In menus, click to the left to go back.&lt;br /&gt;
In y/n menus, click &amp;quot;open&amp;quot; to accept / &amp;quot;escape&amp;quot; to cancel.&lt;br /&gt;
Saving / loading should work; to save, select a slot, use jump, prev weapon or next weapon to add a dummy name, then press accept.&lt;br /&gt;
&lt;br /&gt;
The Xglamo binary fixes [http://docs.openmoko.org/trac/ticket/1244 this bug].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{{ApplicationBox|&lt;br /&gt;
Name=[[Duke Nukem 3D]]|&lt;br /&gt;
Screenshot=Duke3d-openmoko.png|&lt;br /&gt;
Description=Legendary First Person Shooter.|&lt;br /&gt;
Homepage=http://maemo.org/downloads/product/OS2008/duke3d/|&lt;br /&gt;
TestedOn=|&lt;br /&gt;
PackageName=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Gaming]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/File:Duke3d-openmoko.png</id>
		<title>File:Duke3d-openmoko.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/File:Duke3d-openmoko.png"/>
				<updated>2008-10-06T18:51:38Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: uploaded a new version of &amp;quot;Image:Duke3d-openmoko.png&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screen shot of Duke Nukem 3D on Neo Freerunner&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/User:Chgros</id>
		<title>User:Chgros</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/User:Chgros"/>
				<updated>2008-10-06T06:32:54Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: New page: I'm a software engineer base in San Francisco. I've been hacking at the Duke Nukem 3D openmoko port.  Comments / Questions should be sent to charles-henri.gros at m4x dot org&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I'm a software engineer base in San Francisco.&lt;br /&gt;
I've been hacking at the [[Duke Nukem 3D]] openmoko port.&lt;br /&gt;
&lt;br /&gt;
Comments / Questions should be sent to charles-henri.gros at m4x dot org&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Duke_Nukem_3D</id>
		<title>Duke Nukem 3D</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Duke_Nukem_3D"/>
				<updated>2008-10-06T06:32:44Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Legendary First Person Shooter. Rafa shared a simple duke nukem 3d port for Neo which can be played using the accelerometer :)&lt;br /&gt;
&lt;br /&gt;
* opkg install http://alasal.be/openmoko/repo/duke3d_0.1.1_armv4t.ipk&lt;br /&gt;
* [http://onlinedev.blogspot.com/2008/09/getting-duke-nukem-3d-on-your-neo.html HOWTO] about the package.&lt;br /&gt;
* Files: http://fz.hobby-site.org/om/duke-nukem-3d/&lt;br /&gt;
* Instructions: http://fz.hobby-site.org/om/duke-nukem-3d/readme-openmoko.txt&lt;br /&gt;
* Instructions schematics: http://fz.hobby-site.org/om/duke-nukem-3d/how-to-play-duke.png&lt;br /&gt;
* Demo: http://www.youtube.com/watch?v=260Kpiqv9_U&lt;br /&gt;
&lt;br /&gt;
Note: Game will not run if you don't have accelerometers working properly (check with 'hexdump /dev/input/event2' and 'hexdump /dev/input/event3'. Also make sure PulseAudio isn't running: '/etc/init.d/pulseaudio stop', otherwise it will cause the following error: some people have reported that it will not run resulting in the error 'Unknown multivoc error' even when PulseAudio is not installed - waiting on a workaround. To use game without sound, edit ~/.duke3d/duke3d.cfg and change FXDevice = 0 to FXDevice = 13 under [Sound Setup]&lt;br /&gt;
&lt;br /&gt;
[[User:Chgros|Charles-Henri]]'s version:&lt;br /&gt;
* http://charles-henri.org/duke3d_1.0-r1_armv4t.opk&lt;br /&gt;
* http://charles-henri.org/duke3d-source.tar.gz&lt;br /&gt;
* http://charles-henri.org/Xglamo&lt;br /&gt;
&lt;br /&gt;
The buttons are:&lt;br /&gt;
 jump            escape&lt;br /&gt;
 prev weapon     next weapon&lt;br /&gt;
 open/accept     fire&lt;br /&gt;
&lt;br /&gt;
In menus, click to the left to go back.&lt;br /&gt;
In y/n menus, click &amp;quot;open&amp;quot; to accept / &amp;quot;escape&amp;quot; to cancel.&lt;br /&gt;
Saving / loading should work; to save, select a slot, use jump, prev weapon or next weapon to add a dummy name, then press accept.&lt;br /&gt;
&lt;br /&gt;
The Xglamo binary fixes [http://docs.openmoko.org/trac/ticket/1244 this bug].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{{ApplicationBox|&lt;br /&gt;
  Name=[[Duke Nukem 3D]]|&lt;br /&gt;
  Screenshot=Duke3d-openmoko.png|&lt;br /&gt;
  Description=Legendary First Person Shooter.|&lt;br /&gt;
  Homepage=http://maemo.org/downloads/product/OS2008/duke3d/|&lt;br /&gt;
  TestedOn=|&lt;br /&gt;
  PackageName=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Gaming]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Duke_Nukem_3D</id>
		<title>Duke Nukem 3D</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Duke_Nukem_3D"/>
				<updated>2008-10-06T00:37:14Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Legendary First Person Shooter. Rafa shared a simple duke nukem 3d port for Neo which can be played using the accelerometer :)&lt;br /&gt;
&lt;br /&gt;
* opkg install http://alasal.be/openmoko/repo/duke3d_0.1.1_armv4t.ipk&lt;br /&gt;
* [http://onlinedev.blogspot.com/2008/09/getting-duke-nukem-3d-on-your-neo.html HOWTO] about the package.&lt;br /&gt;
* Files: http://fz.hobby-site.org/om/duke-nukem-3d/&lt;br /&gt;
* Instructions: http://fz.hobby-site.org/om/duke-nukem-3d/readme-openmoko.txt&lt;br /&gt;
* Instructions schematics: http://fz.hobby-site.org/om/duke-nukem-3d/how-to-play-duke.png&lt;br /&gt;
* Demo: http://www.youtube.com/watch?v=260Kpiqv9_U&lt;br /&gt;
&lt;br /&gt;
Note: Game will not run if you don't have accelerometers working properly (check with 'hexdump /dev/input/event2' and 'hexdump /dev/input/event3'. Also make sure PulseAudio isn't running: '/etc/init.d/pulseaudio stop', otherwise it will cause the following error: some people have reported that it will not run resulting in the error 'Unknown multivoc error' even when PulseAudio is not installed - waiting on a workaround. To use game without sound, edit ~/.duke3d/duke3d.cfg and change FXDevice = 0 to FXDevice = 13 under [Sound Setup]&lt;br /&gt;
&lt;br /&gt;
Charles-Henri's version:&lt;br /&gt;
* http://charles-henri.org/duke3d&lt;br /&gt;
* http://charles-henri.org/duke3d.cfg&lt;br /&gt;
* http://charles-henri.org/Xglamo&lt;br /&gt;
* http://charles-henri.org/duke3d.tar.gz&lt;br /&gt;
&lt;br /&gt;
The buttons are:&lt;br /&gt;
 jump            escape&lt;br /&gt;
 prev weapon     next weapon&lt;br /&gt;
 open/accept     fire&lt;br /&gt;
&lt;br /&gt;
In menus, click to the left to go back.&lt;br /&gt;
In y/n menus, click &amp;quot;open&amp;quot; to accept / &amp;quot;escape&amp;quot; to cancel.&lt;br /&gt;
Saving / loading should work; to save, select a slot, use jump, prev weapon or next weapon to add a dummy name, then press accept.&lt;br /&gt;
&lt;br /&gt;
The Xglamo binary fixes [http://docs.openmoko.org/trac/ticket/1244 this bug].&lt;br /&gt;
&lt;br /&gt;
You'll also need to copy the provided duke3d.cfg in ~/.duke3d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{{ApplicationBox|&lt;br /&gt;
  Name=[[Duke Nukem 3D]]|&lt;br /&gt;
  Screenshot=Duke3d-openmoko.png|&lt;br /&gt;
  Description=Legendary First Person Shooter.|&lt;br /&gt;
  Homepage=http://maemo.org/downloads/product/OS2008/duke3d/|&lt;br /&gt;
  TestedOn=|&lt;br /&gt;
  PackageName=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Gaming]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/File:Duke3d-openmoko.png</id>
		<title>File:Duke3d-openmoko.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/File:Duke3d-openmoko.png"/>
				<updated>2008-10-06T00:36:41Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: Screen shot of Duke Nukem 3D on Neo Freerunner&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Screen shot of Duke Nukem 3D on Neo Freerunner&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Duke_Nukem_3D</id>
		<title>Duke Nukem 3D</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Duke_Nukem_3D"/>
				<updated>2008-10-05T23:30:08Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Legendary First Person Shooter. Rafa shared a simple duke nukem 3d port for Neo which can be played using the accelerometer :)&lt;br /&gt;
&lt;br /&gt;
* opkg install http://alasal.be/openmoko/repo/duke3d_0.1.1_armv4t.ipk&lt;br /&gt;
* [http://onlinedev.blogspot.com/2008/09/getting-duke-nukem-3d-on-your-neo.html HOWTO] about the package.&lt;br /&gt;
* Files: http://fz.hobby-site.org/om/duke-nukem-3d/&lt;br /&gt;
* Instructions: http://fz.hobby-site.org/om/duke-nukem-3d/readme-openmoko.txt&lt;br /&gt;
* Instructions schematics: http://fz.hobby-site.org/om/duke-nukem-3d/how-to-play-duke.png&lt;br /&gt;
* Demo: http://www.youtube.com/watch?v=260Kpiqv9_U&lt;br /&gt;
&lt;br /&gt;
Note: Game will not run if you don't have accelerometers working properly (check with 'hexdump /dev/input/event2' and 'hexdump /dev/input/event3'. Also make sure PulseAudio isn't running: '/etc/init.d/pulseaudio stop', otherwise it will cause the following error: some people have reported that it will not run resulting in the error 'Unknown multivoc error' even when PulseAudio is not installed - waiting on a workaround. To use game without sound, edit ~/.duke3d/duke3d.cfg and change FXDevice = 0 to FXDevice = 13 under [Sound Setup]&lt;br /&gt;
&lt;br /&gt;
Charles-Henri's version:&lt;br /&gt;
* http://charles-henri.org/duke3d&lt;br /&gt;
* http://charles-henri.org/duke3d.cfg&lt;br /&gt;
* http://charles-henri.org/Xglamo&lt;br /&gt;
* http://charles-henri.org/duke3d.tar.gz&lt;br /&gt;
&lt;br /&gt;
The buttons are:&lt;br /&gt;
 jump            escape&lt;br /&gt;
 prev weapon     next weapon&lt;br /&gt;
 open/accept     fire&lt;br /&gt;
&lt;br /&gt;
In menus, click to the left to go back.&lt;br /&gt;
In y/n menus, click &amp;quot;open&amp;quot; to accept / &amp;quot;escape&amp;quot; to cancel.&lt;br /&gt;
Saving / loading should work; to save, select a slot, use jump, prev weapon or next weapon to add a dummy name, then press accept.&lt;br /&gt;
&lt;br /&gt;
The Xglamo binary fixes [http://docs.openmoko.org/trac/ticket/1244 this bug].&lt;br /&gt;
&lt;br /&gt;
You'll also need to copy the provided duke3d.cfg in ~/.duke3d&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{{ApplicationBox|&lt;br /&gt;
  Name=[[Duke Nukem 3D]]|&lt;br /&gt;
  Screenshot=No-screenshot.png|&lt;br /&gt;
  Description=Legendary First Person Shooter.|&lt;br /&gt;
  Homepage=http://maemo.org/downloads/product/OS2008/duke3d/|&lt;br /&gt;
  TestedOn=|&lt;br /&gt;
  PackageName=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Gaming]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Duke_Nukem_3D</id>
		<title>Duke Nukem 3D</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Duke_Nukem_3D"/>
				<updated>2008-10-05T23:26:46Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Legendary First Person Shooter. Rafa shared a simple duke nukem 3d port for Neo which can be played using the accelerometer :)&lt;br /&gt;
&lt;br /&gt;
* opkg install http://alasal.be/openmoko/repo/duke3d_0.1.1_armv4t.ipk&lt;br /&gt;
* [http://onlinedev.blogspot.com/2008/09/getting-duke-nukem-3d-on-your-neo.html HOWTO] about the package.&lt;br /&gt;
* Files: http://fz.hobby-site.org/om/duke-nukem-3d/&lt;br /&gt;
* Instructions: http://fz.hobby-site.org/om/duke-nukem-3d/readme-openmoko.txt&lt;br /&gt;
* Instructions schematics: http://fz.hobby-site.org/om/duke-nukem-3d/how-to-play-duke.png&lt;br /&gt;
* Demo: http://www.youtube.com/watch?v=260Kpiqv9_U&lt;br /&gt;
&lt;br /&gt;
Note: Game will not run if you don't have accelerometers working properly (check with 'hexdump /dev/input/event2' and 'hexdump /dev/input/event3'. Also make sure PulseAudio isn't running: '/etc/init.d/pulseaudio stop', otherwise it will cause the following error: some people have reported that it will not run resulting in the error 'Unknown multivoc error' even when PulseAudio is not installed - waiting on a workaround. To use game without sound, edit ~/.duke3d/duke3d.cfg and change FXDevice = 0 to FXDevice = 13 under [Sound Setup]&lt;br /&gt;
&lt;br /&gt;
Charles-Henri's version:&lt;br /&gt;
* http://charles-henri.org/duke3d&lt;br /&gt;
* http://charles-henri.org/Xglamo&lt;br /&gt;
* http://charles-henri.org/duke3d.tar.gz&lt;br /&gt;
&lt;br /&gt;
The buttons are:&lt;br /&gt;
 jump            escape&lt;br /&gt;
 prev weapon     next weapon&lt;br /&gt;
 open/accept     fire&lt;br /&gt;
&lt;br /&gt;
In menus, click to the left to go back.&lt;br /&gt;
In y/n menus, click &amp;quot;open&amp;quot; to accept / &amp;quot;escape&amp;quot; to cancel.&lt;br /&gt;
Saving / loading should work; to save, select a slot, use jump, prev weapon or next weapon to add a dummy name, then press accept.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;onlyinclude&amp;gt;&lt;br /&gt;
{{ApplicationBox|&lt;br /&gt;
  Name=[[Duke Nukem 3D]]|&lt;br /&gt;
  Screenshot=No-screenshot.png|&lt;br /&gt;
  Description=Legendary First Person Shooter.|&lt;br /&gt;
  Homepage=http://maemo.org/downloads/product/OS2008/duke3d/|&lt;br /&gt;
  TestedOn=|&lt;br /&gt;
  PackageName=&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;/onlyinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Gaming]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-08-11T05:29:53Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Developing with MokoMakefile */ Build an application while keeping its sources&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
  # This may be needed only for ASU&lt;br /&gt;
  sudo apt-get install libxtst-dev&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2 (enabled by default)&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
Set up the environment with:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you are building for the Neo1973 GTA01, then also do this&lt;br /&gt;
  make setup-machine-neo&lt;br /&gt;
If you are building for the Freerunner GTA02, then also do this&lt;br /&gt;
  make setup-machine-freerunner&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Before starting a lengthy make process, check the [[#Tips|Tips]] section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko|flash these]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [[Development_resources#IRC|IRC]].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
 `env | grep -Ev '^(SHELL|TERM|OLDPWD|USER|USERNAME|PATH|EDITOR|LANG|HOME|DISPLAY|_)=' \&lt;br /&gt;
 | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backticks).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current Ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
==== SVN Server Certificate Errors ====&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: Fetch svn://svn.projects.openmoko.org/svnroot/;module=assassin;proto=https&lt;br /&gt;
Error validating server certificate for 'https://svn.projects.openmoko.org:443':&lt;br /&gt;
 - The certificate is not issued by a trusted authority. Use the&lt;br /&gt;
   fingerprint to validate the certificate manually!&lt;br /&gt;
Certificate information:&lt;br /&gt;
 - Hostname: projects.openmoko.org&lt;br /&gt;
 - Valid: from Thu, 05 Jun 2008 01:02:42 GMT until Tue, 02 Dec 2008 01:02:42 GMT&lt;br /&gt;
 - Issuer: http://www.cacert.org, Root CA&lt;br /&gt;
 - Fingerprint: a5:7d:4e:37:e8:94:ee:ba:c1:e8:e9:4b:33:cb:34:91:a9:6d:d3:84&lt;br /&gt;
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://svn.projects.openmoko.org/svnroot/assassin': Server certificate verification failed: issuer is not trusted (https://svn.projects.openmoko.org)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you haven't yet accepted the server certificate for the SVN server.  To remedy this, execute the following commands, and hit &amp;quot;p&amp;quot; (to permanently accept the certificate) when prompted:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
svn co https://svn.projects.openmoko.org/svnroot/assassin&lt;br /&gt;
rm -rf assassin&lt;br /&gt;
cd -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exposure_svn and Subversion 1.5.0 ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;quot;NameError: global name 'log' is not defined&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a bug with subversion 1.5.0 -- downgrade to 1.4.x (or check out the latest subversion sources and use those as they're fixed) and re-fetch the sources.&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
* Make sure you do not have . in your PATH, this causes an &amp;quot;unrecognized option -Qy&amp;quot; error when building g++spec&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-neo : setup for GTA01 version of Neo1973&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-freerunner : setup for GTA02 version of Freerunner&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c patch openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake -c build openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Note: if you just use &amp;lt;tt&amp;gt;bitbake openmoko-messages&amp;lt;/tt&amp;gt; it will remove the sources after building!&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called '''packagename-packageversion''' (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.&lt;br /&gt;
&lt;br /&gt;
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-08-10T01:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
  # This may be needed only for ASU&lt;br /&gt;
  sudo apt-get install libxtst-dev&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2 (enabled by default)&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
Set up the environment with:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you are building for the Neo1973 GTA01, then also do this&lt;br /&gt;
  make setup-machine-neo&lt;br /&gt;
If you are building for the Freerunner GTA02, then also do this&lt;br /&gt;
  make setup-machine-freerunner&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Before starting a lengthy make process, check the [[#Tips|Tips]] section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko|flash these]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [[Development_resources#IRC|IRC]].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
 `env | grep -Ev '^(SHELL|TERM|OLDPWD|USER|USERNAME|PATH|EDITOR|LANG|HOME|DISPLAY|_)=' \&lt;br /&gt;
 | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backticks).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current Ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
==== SVN Server Certificate Errors ====&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: Fetch svn://svn.projects.openmoko.org/svnroot/;module=assassin;proto=https&lt;br /&gt;
Error validating server certificate for 'https://svn.projects.openmoko.org:443':&lt;br /&gt;
 - The certificate is not issued by a trusted authority. Use the&lt;br /&gt;
   fingerprint to validate the certificate manually!&lt;br /&gt;
Certificate information:&lt;br /&gt;
 - Hostname: projects.openmoko.org&lt;br /&gt;
 - Valid: from Thu, 05 Jun 2008 01:02:42 GMT until Tue, 02 Dec 2008 01:02:42 GMT&lt;br /&gt;
 - Issuer: http://www.cacert.org, Root CA&lt;br /&gt;
 - Fingerprint: a5:7d:4e:37:e8:94:ee:ba:c1:e8:e9:4b:33:cb:34:91:a9:6d:d3:84&lt;br /&gt;
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://svn.projects.openmoko.org/svnroot/assassin': Server certificate verification failed: issuer is not trusted (https://svn.projects.openmoko.org)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you haven't yet accepted the server certificate for the SVN server.  To remedy this, execute the following commands, and hit &amp;quot;p&amp;quot; (to permanently accept the certificate) when prompted:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
svn co https://svn.projects.openmoko.org/svnroot/assassin&lt;br /&gt;
rm -rf assassin&lt;br /&gt;
cd -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exposure_svn and Subversion 1.5.0 ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;quot;NameError: global name 'log' is not defined&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a bug with subversion 1.5.0 -- downgrade to 1.4.x (or check out the latest subversion sources and use those as they're fixed) and re-fetch the sources.&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
* Make sure you do not have . in your PATH, this causes an &amp;quot;unrecognized option -Qy&amp;quot; error when building g++spec&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-neo : setup for GTA01 version of Neo1973&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-freerunner : setup for GTA02 version of Freerunner&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c unpack openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called '''packagename-packageversion''' (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.&lt;br /&gt;
&lt;br /&gt;
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_San_Francisco</id>
		<title>Openmoko Local Groups: San Francisco</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Openmoko_Local_Groups:_San_Francisco"/>
				<updated>2008-08-08T06:04:59Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Are there any other OpenMoko community members here?&lt;br /&gt;
&lt;br /&gt;
{|border=1&lt;br /&gt;
!Name&lt;br /&gt;
!Skills&lt;br /&gt;
!Interest&lt;br /&gt;
!Location&lt;br /&gt;
!Has Device&lt;br /&gt;
!Has Debug Board&lt;br /&gt;
|-&lt;br /&gt;
|[http://www.asheesh.org/ Asheesh Laroia]&lt;br /&gt;
|Programming, sysadminning&lt;br /&gt;
|Whatever it takes to enjoy using it every day ;-)&lt;br /&gt;
|San Francisco, CA (live and work in the city)&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:captain_morgan|Morgan]]&lt;br /&gt;
|programming/some hardware&lt;br /&gt;
|Hardware development&lt;br /&gt;
|Mountain View/Oakland, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:codyl|J.Cody]]&lt;br /&gt;
|programming&lt;br /&gt;
|Application development&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:csnellman|Carl Snellman]]&lt;br /&gt;
|Programming&lt;br /&gt;
|Application development/Location based services&lt;br /&gt;
|Palo Alto, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:krid|Dirk Bergstrom]]&lt;br /&gt;
|programming&lt;br /&gt;
|&amp;quot;Procmail&amp;quot; for incoming calls/messages; GPS tracking&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:samhiatt|Sam Hiatt]]&lt;br /&gt;
|Application Development&lt;br /&gt;
|FOSS, GIS/Navigation, Cartography&lt;br /&gt;
|Mountain View, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:xyphus|Marco Barreno]]&lt;br /&gt;
|programming&lt;br /&gt;
|Power user/app development&lt;br /&gt;
|Berkeley, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Elektrolott|Lothar]]&lt;br /&gt;
|programming&lt;br /&gt;
|Waiting for GTA02&lt;br /&gt;
|Morgan Hill, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:rabble|Rabble]]&lt;br /&gt;
|programming&lt;br /&gt;
|App Development &amp;amp; Geowanking&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:rtyler|R. Tyler Ballance]]&lt;br /&gt;
|Development&lt;br /&gt;
|Mobile Mono Applications&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:cfl|Cfl]]&lt;br /&gt;
|Software/Architecture&lt;br /&gt;
|Mobile Applications&lt;br /&gt;
|San Jose, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Pdesai|Pranav]]&lt;br /&gt;
|programming, linux, sysadmin.&lt;br /&gt;
|Applications, GPS, bluetooth&lt;br /&gt;
|Sunnyvale, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Michaelshiloh|Michael Shiloh]]&lt;br /&gt;
|Programmer, teacher&lt;br /&gt;
|Developer Relations and Evangelist for OpenMoko&lt;br /&gt;
|San Francisco, CA (live and work in the city)&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Maratgothix|Omar Green]]&lt;br /&gt;
|Architect/Technologist&lt;br /&gt;
|H/W, S/W, Intelligent services&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:mgoff|Michael Goff]]&lt;br /&gt;
|Software Programmer&lt;br /&gt;
|Applications&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:wisp|Joshua Layne]]&lt;br /&gt;
|Programming&lt;br /&gt;
|GPS/mapping/location aware apps, intelligent time/date mgmt&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:GrecoJava|David Pearson]]&lt;br /&gt;
|Software Programmer&lt;br /&gt;
|Applications&lt;br /&gt;
|Petaluma, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Rjt|Oldman]]&lt;br /&gt;
|Computer/Network Engineer&lt;br /&gt;
|System/Network Programming&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|-&lt;br /&gt;
|[[User:raels|raels]]&lt;br /&gt;
|Programming, Management, Technologist&lt;br /&gt;
|Applications, Linux compatible apps -- waiting for next HW release&lt;br /&gt;
|Half Moon Bay, CA&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:jonathan.tsai|Jonathan Tsai]]&lt;br /&gt;
|Software Engineering Grad Student [http://west.cmu.edu/ Carnegie Mellon West]&amp;lt;br&amp;gt;Participant of class project MobileAdvisor.org [http://www.mobileadvisor.org/ Join]&lt;br /&gt;
|OpenMoko Evaluator &lt;br /&gt;
|San Jose, CA&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:yochaigal|Yochai Gal]]&lt;br /&gt;
|Application Testing&lt;br /&gt;
|Linux Admin/Technician&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:wolfmanjm|Jim Morris]]&lt;br /&gt;
|Programming,Networks&lt;br /&gt;
|Ruby,remote access&lt;br /&gt;
|San Jose, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Vvaidy|Vijay Vaidyanathan]]&lt;br /&gt;
|Programming&lt;br /&gt;
|Command Line Phone!&lt;br /&gt;
|Los Altos, CA&lt;br /&gt;
|Y, FreeRunner&lt;br /&gt;
|N&lt;br /&gt;
|-&lt;br /&gt;
|[[User:WilliamMorgan|William Morgan]]&lt;br /&gt;
|programming&lt;br /&gt;
|apps, ruby&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]] (freerunner)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:Frang|Frang]]&lt;br /&gt;
|Software architect, large-scale distributed systems&lt;br /&gt;
|A new device to explore possibilities with.&lt;br /&gt;
|Palo Alto, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]] (freerunner)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:mmargushsf|Matthias Margush]]&lt;br /&gt;
|Programming&lt;br /&gt;
|Application programming, system testing, and documentation.&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]] (freerunner)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:ieatlint|Jeffrey Malone]]&lt;br /&gt;
|Programming&lt;br /&gt;
|app dev&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]]&lt;br /&gt;
| [[Image: MokoBox.jpg|center]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[[User:chgros|Charles-Henri Gros]]&lt;br /&gt;
|Programming (C/C++ mostly)&lt;br /&gt;
|Application development, phone calls&lt;br /&gt;
|San Francisco, CA&lt;br /&gt;
| [[Image: Moko.jpg|center]] (freerunner)&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko Local Groups]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Building_FSO</id>
		<title>Building FSO</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Building_FSO"/>
				<updated>2008-08-06T04:11:10Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Mandatory Packages */ Reformat: line breaks, wiki syntax&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Distributions|FSO}}&lt;br /&gt;
&lt;br /&gt;
'''FSO is an abbreviation for FreeSmartphone.Org'''&lt;br /&gt;
&lt;br /&gt;
[[Image:FSO UI main.png|right|thumb|home screen]]&lt;br /&gt;
&lt;br /&gt;
See [[OpenmokoFramework]] for more information.&lt;br /&gt;
&lt;br /&gt;
And [http://www.freesmartphone.org www.freesmartphone.org]&lt;br /&gt;
&lt;br /&gt;
And also [http://trac.freesmartphone.org trac.freesmartphone.org]&lt;br /&gt;
&lt;br /&gt;
''Note : The following is an essay in order to explain how to build FSO. Please mind the fact that it's a work in progress, done by someone fairly new to Open Embedded.''&lt;br /&gt;
&lt;br /&gt;
''This information is taken as is from [http://wiki.openembedded.net/index.php/OEandYourDistro#Using_OpenEmbedded_on_Linux_systems OpenEmbedded Wiki]. Some commentaries are voluntarily stripped in order to keep this page simple, please look on OE Wiki for more information.''&lt;br /&gt;
&lt;br /&gt;
= Getting Open Embedded =&lt;br /&gt;
&lt;br /&gt;
== Mandatory Packages ==&lt;br /&gt;
&lt;br /&gt;
=== Deb-based distributions ===&lt;br /&gt;
&lt;br /&gt;
 apt-get install ccache sed wget cvs subversion git-core monotone coreutils \&lt;br /&gt;
     unzip texi2html texinfo libsdl1.2-dev docbook-utils gawk&lt;br /&gt;
&lt;br /&gt;
=== rpm-based distributions ===&lt;br /&gt;
&lt;br /&gt;
 urpmi python python-devel python-psyco ccache patch m4 sed bison make wget bzip2 \&lt;br /&gt;
 cvs gawk glibc-devel gcc-c++ subversion sharutils coreutils docbook-utils openjade \&lt;br /&gt;
 quilt pcre-devel unzip&lt;br /&gt;
&lt;br /&gt;
=== SuSE (9.1/9.2) instructions ===&lt;br /&gt;
Install [http://linux01.gwdg.de/apt4rpm/ apt4rpm], then follow Debian instructions.&lt;br /&gt;
&lt;br /&gt;
python-dev and python-spyco are not in suse apt repository. python-spyco is not mandatory, so one can ignore it. &lt;br /&gt;
I suppose python-devel (suse) is python-dev (debian).&lt;br /&gt;
&lt;br /&gt;
=== Fedora Core 2/3  ===&lt;br /&gt;
&lt;br /&gt;
 yum install python patch m4 sed make docbook* openjade glibc-devel xmlto&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fedora Core 4  ===&lt;br /&gt;
&lt;br /&gt;
Apart from the usual (native) development packages like gcc and binutils, you should check that you have the following RPM's installed: &lt;br /&gt;
&lt;br /&gt;
* bison&lt;br /&gt;
* ccache (not required, but advised to speed up building)&lt;br /&gt;
* docbook* packages&lt;br /&gt;
* libpcre&lt;br /&gt;
* m4&lt;br /&gt;
* make&lt;br /&gt;
* openjade&lt;br /&gt;
* patch&lt;br /&gt;
* PyQt&lt;br /&gt;
* python&lt;br /&gt;
* python-psyco&lt;br /&gt;
* sed&lt;br /&gt;
* xmlto&lt;br /&gt;
* quilt (not required as OE builds it by itself, but install it if you want to use gquilt)&lt;br /&gt;
&lt;br /&gt;
Use apt, synaptic, up2date or yum to automagically retrieve these packages or download and install them manually (lots of work).&lt;br /&gt;
&lt;br /&gt;
=== Fedora Core 5/6  ===&lt;br /&gt;
&lt;br /&gt;
Commands I used to install OE pre-requisites on FC5/6&lt;br /&gt;
&lt;br /&gt;
This long command will ensure all pre-requisites are installed (patch is 2.5.4, not 2.5.9, but appears to work).&lt;br /&gt;
&lt;br /&gt;
 su -c &amp;quot;yum install python m4 make wget curl ftp cvs monotone subversion tar bzip2 gzip \&lt;br /&gt;
 unzip python-psyco ccache perl texinfo texi2html diffstat openjade docbook-style-dsssl \&lt;br /&gt;
 docbook-style-xsl docbook-dtds docbook-utils sed bison bc glibc-devel gcc binutils pcre \&lt;br /&gt;
 pcre-devel git quilt groff linuxdoc-tools patch gcc gcc-c++ python-sqlite2 help2man&amp;quot;&lt;br /&gt;
&lt;br /&gt;
or download the metapackage http://www.openembedded.org/dl/packages/rpm/openembedded-essential-1.1-1.noarch.rpm (may be out of date).&lt;br /&gt;
&lt;br /&gt;
then do&lt;br /&gt;
&lt;br /&gt;
 su -c &amp;quot;yum localinstall openembedded-essential-1.1-1.noarch.rpm&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Fedora 7  ===&lt;br /&gt;
&lt;br /&gt;
This long command will ensure all pre-requisites are installed (patch is 2.5.4, not 2.5.9, but appears to work).&lt;br /&gt;
&lt;br /&gt;
 su -c &amp;quot;yum install python m4 make wget curl ftp cvs monotone subversion tar bzip2 gzip \&lt;br /&gt;
 unzip python-psyco ccache perl texinfo texi2html diffstat openjade docbook-style-dsssl \&lt;br /&gt;
 docbook-style-xsl docbook-dtds docbook-utils sed bison bc glibc-devel gcc binutils pcre \&lt;br /&gt;
 pcre-devel git quilt groff linuxdoc-tools patch linuxdoc-tools gcc gcc-c++ help2man&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== CentOS 4.4 / Red Hat Enterprise Linux 4  ===&lt;br /&gt;
&lt;br /&gt;
 yum install bison ccache coreutils cvs docbook-utils gawk git-core monotone \&lt;br /&gt;
 python quilt rpmlib sed subversion tetex texinfo unzip wget&lt;br /&gt;
&lt;br /&gt;
=== Gentoo instructions ===&lt;br /&gt;
&lt;br /&gt;
 emerge -n bitbake psyco ccache patch make sed dev-lang/python m4 bison cvs openjade \&lt;br /&gt;
 quilt sgmltools-lite docbook-xml-dtd docbook-dsssl-stylesheets xmlto docbook-sgml-utils \&lt;br /&gt;
 libpcre boost subversion monotone texi2html pysqlite diffstat&lt;br /&gt;
&lt;br /&gt;
=== Ark Linux 2007.1 ===&lt;br /&gt;
&lt;br /&gt;
 apt-get install devel-core diffstat texi2html cvs subversion git texinfo psyco monotone \&lt;br /&gt;
 python-devel python-encodings python-sqlite&lt;br /&gt;
&lt;br /&gt;
=== Arch Linux (Duke)  ===&lt;br /&gt;
&lt;br /&gt;
 sudo pacman -S psyco ccache patch make sed python m4 bison cvs quilt sgmltools-lite \&lt;br /&gt;
 docbook-xml xmlto pcre boost monotone jade git texinfo&lt;br /&gt;
&lt;br /&gt;
In Arch Linux the install command is in /bin/install. Since most of Linux distribution assume that install is located in /usr/bin/install, you have to create a symlink:&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /bin/install /usr/bin/install&lt;br /&gt;
&lt;br /&gt;
You can build BitBake by using this PKGBUILD:&lt;br /&gt;
 pkgname=bitbake&lt;br /&gt;
 pkgver=1.8.4&lt;br /&gt;
 pkgrel=1&lt;br /&gt;
 pkgdesc=&amp;quot;A simple tool for task execution derived from Gentoo's portage&amp;quot;&lt;br /&gt;
 url=&amp;quot;http://developer.berlios.de/projects/bitbake/&amp;quot;&lt;br /&gt;
 arch=('i686')&lt;br /&gt;
 license=('GPL' 'custom')&lt;br /&gt;
 depends=('python')&lt;br /&gt;
 source=(http://download.berlios.de/bitbake/${pkgname}-${pkgver}.tar.gz)&lt;br /&gt;
 md5sums=('508d9a61c635d469be8facc95151158b')&lt;br /&gt;
 &lt;br /&gt;
 build() {&lt;br /&gt;
   cd ${startdir}/src/${pkgname}-${pkgver}&lt;br /&gt;
   python setup.py install --root=${startdir}/pkg&lt;br /&gt;
 &lt;br /&gt;
   # Install vim extensions&lt;br /&gt;
   install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/contrib/vim/ftdetect/bitbake.vim \&lt;br /&gt;
                 ${startdir}/pkg/usr/share/vim/ftplugin/bitbake.vim&lt;br /&gt;
   install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/contrib/vim/syntax/bitbake.vim \&lt;br /&gt;
                 ${startdir}/pkg/usr/share/vim/syntax/bitbake.vim&lt;br /&gt;
 &lt;br /&gt;
   # Handle MIT license&lt;br /&gt;
   install -D -m644 ${startdir}/src/${pkgname}-${pkgver}/doc/COPYING.MIT \&lt;br /&gt;
                 ${startdir}/pkg/usr/share/licenses/${pkgname}/COPYING.MIT&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
= Repository Checkout =&lt;br /&gt;
&lt;br /&gt;
== Bitbake ==&lt;br /&gt;
&lt;br /&gt;
Go to the base directory of your [[OpenEmbedded]] environment and checkout bitbake:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /stuff/&lt;br /&gt;
$ svn co svn://svn.berlios.de/bitbake/branches/bitbake-1.8/ bitbake&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
'''NOTE:''' for proxy handling, see [http://subversion.tigris.org/faq.html#proxy SVN FAQ]&lt;br /&gt;
&lt;br /&gt;
== Open Embedded ==&lt;br /&gt;
&lt;br /&gt;
=== Obtaining OpenEmbedded ===&lt;br /&gt;
Next, you'll need to obtain the actual Openembedded database. The OE database store all the OE metadata: build classes, configuration files, and packages. Then you can extract from this database the development branch(es) you want.&lt;br /&gt;
&lt;br /&gt;
The Openembedded database is a [http://www.venge.net/monotone/ Monotone] database, which is the current SCM (Source Code Management) system for Openembedded. You can find monotone binaries and documentation at [http://www.venge.net/monotone/ Monotone official site].&lt;br /&gt;
&lt;br /&gt;
To obtain Openembedded:&lt;br /&gt;
# Go to the base directory of your Openembedded environment&lt;br /&gt;
 $ cd /stuff/&lt;br /&gt;
# Download and bunzip2 the OE database snapshot. '''Note: Unfortunately some monotone versions differ in database format. Check [http://www.openembedded.org/snapshots Snapshots] and download the one matching your monotone version.'''&lt;br /&gt;
 $ wget http://www.openembedded.org/snapshots/OE.mtn.bz2&lt;br /&gt;
 $ bunzip2 -d OE.mtn.bz2&lt;br /&gt;
This is the database you'll be using for all the work.&lt;br /&gt;
&lt;br /&gt;
If you run into a problem at this stage, check to make sure you have version 0.32 (or newer) of monotone installed.&lt;br /&gt;
&lt;br /&gt;
If you get further troubles in using monotone, there are two ways out:&lt;br /&gt;
&lt;br /&gt;
* use the [http://openembedded.org/snapshots/ latest OE snapshot]&lt;br /&gt;
* use a static monotone image&lt;br /&gt;
&lt;br /&gt;
Then you can checkout your local copy of the Openembedded tree.&lt;br /&gt;
 $ cd /stuff&lt;br /&gt;
 $ mtn --db=/stuff/OE.mtn checkout --branch=org.openembedded.dev&lt;br /&gt;
This extracts directories and files relating to the selected branch from the OE.mtn database and places them under &amp;lt;nowiki&amp;gt;/stuff/branchname&amp;lt;/nowiki&amp;gt; (i.e. in &amp;lt;nowiki&amp;gt;/stuff/org.openembedded.dev&amp;lt;/nowiki&amp;gt; in this guide)&lt;br /&gt;
&lt;br /&gt;
IMPORTANT NOTE ! If mtn complains about an outdated database, you can migrate it using the following command :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
mtn db migrate --db=/stuff/OE.mtn&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You'll then have to do the checkout.&lt;br /&gt;
=== Create local configuration ===&lt;br /&gt;
It's now time to create your local configuration.&lt;br /&gt;
While you could copy the default local.conf.sample like that:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ cd /stuff/&lt;br /&gt;
$ cp org.openembedded.dev/conf/local.conf.sample build/conf/local.conf&lt;br /&gt;
$ vi build/conf/local.conf&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It is actually recommended to start smaller and keep local.conf.sample in the background and add entries from there step-by-step as you understand and need them. Please, do not just edit build/conf/local.conf.sample but actually READ it.&lt;br /&gt;
&lt;br /&gt;
For building a .dev branch, in your &amp;lt;nowiki&amp;gt;local.conf&amp;lt;/nowiki&amp;gt; file, you should have at least the following three entries. Example for the Angstrom distribution and the Openmoko gta01 machine:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
BBFILES = &amp;quot;/stuff/org.openembedded.dev/packages/*/*.bb&amp;quot;&lt;br /&gt;
DISTRO = &amp;quot;angstrom-2008.1&amp;quot;&lt;br /&gt;
MACHINE = &amp;quot;om-gta01&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a Freerunner, using an openmoko distro, you'll do that :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
BBFILES = &amp;quot;/stuff/org.openembedded.dev/packages/*/*.bb&amp;quot;&lt;br /&gt;
DISTRO = &amp;quot;openmoko&amp;quot;&lt;br /&gt;
MACHINE = &amp;quot;om-gta02&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Don't forget to include the two following files :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
require conf/distro/include/fso-autorev.inc&lt;br /&gt;
require conf/distro/include/moko-autorev.inc&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Setup the environment ===&lt;br /&gt;
One of the four command sets below will need to be run every time you open a terminal for development. (You can automate this in ~/.profile, /etc/profile, or perhaps use a script to set the necessary variables for using [[BitBake]].)&lt;br /&gt;
&lt;br /&gt;
If you followed the recommendation above to use an uninstalled [[BitBake]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ export PATH=/stuff/bitbake/bin:$PATH&lt;br /&gt;
$ export BBPATH=/stuff/build:/stuff/org.openembedded.dev&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you installed [[BitBake]]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ export BBPATH=/stuff/build:/stuff/org.openembedded.dev&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative syntax for those using the tcsh shell (e.g FreeBSD):&lt;br /&gt;
 &amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
$ setenv PATH &amp;quot;/stuff/bitbake/bin:&amp;quot;$PATH&lt;br /&gt;
$ setenv BBPATH &amp;quot;/stuff/build:/stuff/org.openembedded.dev:&amp;quot;$BBPATH&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Start building =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
cd /stuff/build &amp;amp;&amp;amp; bitbake fso-image&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
[[category:Technical]]&lt;br /&gt;
[[Category:Software (non openmoko)]]&lt;br /&gt;
[[category:FSO]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
== GTK ==&lt;br /&gt;
&lt;br /&gt;
Currently GTK is not well supported in the FSO build. To use GTK applications you'll most likely have to install the gtk library, and the Openmoko theme.&lt;br /&gt;
&lt;br /&gt;
'''Step 1) Install the ipk-packages'''&lt;br /&gt;
&lt;br /&gt;
 opkg install moko-gtk-theme&lt;br /&gt;
 opkg install openmoko-icon-theme-standard2&lt;br /&gt;
&lt;br /&gt;
'''Step 2) Enable Theme'''&lt;br /&gt;
 &lt;br /&gt;
 ln -s /usr/share/themes/Moko/gtk-2.0/gtkrc /etc/gtk-2.0/gtkrc&lt;br /&gt;
&lt;br /&gt;
'''Step 3) Adjust fontsize and set icon theme'''&lt;br /&gt;
&lt;br /&gt;
 vi /etc/gtk-2.0/gtkrc&lt;br /&gt;
&lt;br /&gt;
Add the two lines:&lt;br /&gt;
 gtk-font-name = &amp;quot;Sans 5&amp;quot;&lt;br /&gt;
 gtk-icon-theme-name=&amp;quot;openmoko-standard&amp;quot;&lt;br /&gt;
&lt;br /&gt;
(Thanks to [[User:Jtickle | Jtickle]] for pointing out how to set the font size on the [[Getting_Started_FAQ]]-Page)&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-08-04T02:18:45Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Build issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
  # This may be needed only for ASU&lt;br /&gt;
  sudo apt-get install libxtst-dev&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
Set up the environment:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
If you are building for the Neo1973 GTA01, then also do this&lt;br /&gt;
  make setup-machine-neo&lt;br /&gt;
If you are building for the Freerunner GTA02, then also do this&lt;br /&gt;
  make setup-machine-freerunner&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Before starting a lengthy make process, check the Tips section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko|flash these]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [[Development_resources#IRC|IRC]].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
 `env | grep -Ev '^(SHELL|TERM|OLDPWD|USER|USERNAME|PATH|EDITOR|LANG|HOME|DISPLAY|_)=' \&lt;br /&gt;
 | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backticks).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current Ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
==== SVN Server Certificate Errors ====&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: Fetch svn://svn.projects.openmoko.org/svnroot/;module=assassin;proto=https&lt;br /&gt;
Error validating server certificate for 'https://svn.projects.openmoko.org:443':&lt;br /&gt;
 - The certificate is not issued by a trusted authority. Use the&lt;br /&gt;
   fingerprint to validate the certificate manually!&lt;br /&gt;
Certificate information:&lt;br /&gt;
 - Hostname: projects.openmoko.org&lt;br /&gt;
 - Valid: from Thu, 05 Jun 2008 01:02:42 GMT until Tue, 02 Dec 2008 01:02:42 GMT&lt;br /&gt;
 - Issuer: http://www.cacert.org, Root CA&lt;br /&gt;
 - Fingerprint: a5:7d:4e:37:e8:94:ee:ba:c1:e8:e9:4b:33:cb:34:91:a9:6d:d3:84&lt;br /&gt;
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://svn.projects.openmoko.org/svnroot/assassin': Server certificate verification failed: issuer is not trusted (https://svn.projects.openmoko.org)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you haven't yet accepted the server certificate for the SVN server.  To remedy this, execute the following commands, and hit &amp;quot;p&amp;quot; (to permanently accept the certificate) when prompted:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
svn co https://svn.projects.openmoko.org/svnroot/assassin&lt;br /&gt;
rm -rf assassin&lt;br /&gt;
cd -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exposure_svn and Subversion 1.5.0 ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;quot;NameError: global name 'log' is not defined&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a bug with subversion 1.5.0 -- downgrade to 1.4.x (or check out the latest subversion sources and use those as they're fixed) and re-fetch the sources.&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
* Make sure you do not have . in your PATH, this causes an &amp;quot;unrecognized option -Qy&amp;quot; error when building g++spec&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-neo : setup for GTA01 version of Neo1973&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-freerunner : setup for GTA02 version of Freerunner&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c unpack openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called '''packagename-packageversion''' (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.&lt;br /&gt;
&lt;br /&gt;
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-08-04T02:18:11Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Build issues */ Minor fixes and improvements (e.g. factored regex)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
  # This may be needed only for ASU&lt;br /&gt;
  sudo apt-get install libxtst-dev&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
Set up the environment:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
If you are building for the Neo1973 GTA01, then also do this&lt;br /&gt;
  make setup-machine-neo&lt;br /&gt;
If you are building for the Freerunner GTA02, then also do this&lt;br /&gt;
  make setup-machine-freerunner&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Before starting a lengthy make process, check the Tips section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko|flash these]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [[Development_resources#IRC|IRC]].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
  `env | grep -Ev '^(SHELL|TERM|OLDPWD|USER|USERNAME|PATH|EDITOR|LANG|HOME|DISPLAY|_)=' \&lt;br /&gt;
   | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backticks).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current Ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
==== SVN Server Certificate Errors ====&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: Fetch svn://svn.projects.openmoko.org/svnroot/;module=assassin;proto=https&lt;br /&gt;
Error validating server certificate for 'https://svn.projects.openmoko.org:443':&lt;br /&gt;
 - The certificate is not issued by a trusted authority. Use the&lt;br /&gt;
   fingerprint to validate the certificate manually!&lt;br /&gt;
Certificate information:&lt;br /&gt;
 - Hostname: projects.openmoko.org&lt;br /&gt;
 - Valid: from Thu, 05 Jun 2008 01:02:42 GMT until Tue, 02 Dec 2008 01:02:42 GMT&lt;br /&gt;
 - Issuer: http://www.cacert.org, Root CA&lt;br /&gt;
 - Fingerprint: a5:7d:4e:37:e8:94:ee:ba:c1:e8:e9:4b:33:cb:34:91:a9:6d:d3:84&lt;br /&gt;
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://svn.projects.openmoko.org/svnroot/assassin': Server certificate verification failed: issuer is not trusted (https://svn.projects.openmoko.org)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you haven't yet accepted the server certificate for the SVN server.  To remedy this, execute the following commands, and hit &amp;quot;p&amp;quot; (to permanently accept the certificate) when prompted:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
svn co https://svn.projects.openmoko.org/svnroot/assassin&lt;br /&gt;
rm -rf assassin&lt;br /&gt;
cd -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exposure_svn and Subversion 1.5.0 ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;quot;NameError: global name 'log' is not defined&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a bug with subversion 1.5.0 -- downgrade to 1.4.x (or check out the latest subversion sources and use those as they're fixed) and re-fetch the sources.&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
* Make sure you do not have . in your PATH, this causes an &amp;quot;unrecognized option -Qy&amp;quot; error when building g++spec&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-neo : setup for GTA01 version of Neo1973&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-freerunner : setup for GTA02 version of Freerunner&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c unpack openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called '''packagename-packageversion''' (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.&lt;br /&gt;
&lt;br /&gt;
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/MokoMakefile</id>
		<title>MokoMakefile</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/MokoMakefile"/>
				<updated>2008-08-04T01:58:29Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Build issues */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|MokoMakefile}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is a Makefile which saves lots of work when setting up an Openmoko build environment.&lt;br /&gt;
By automating the setup process of a new Openmoko build environment, it provides an environment which is configured the same for all the existing developers and should therefore be preferred over manual procedures or individual setup procedures.&lt;br /&gt;
It brings the same repeatability to build environment creation and maintenance as that which the BitBake scripts bring to [[OpenEmbedded]] ease and standardize the process of building OpenEmbedded.&lt;br /&gt;
&lt;br /&gt;
Unlike the manual process described at [[Building Openmoko from scratch]], MokoMakefile does not install anything into your system (it can and should be started as normal user).&lt;br /&gt;
MokoMakefile is a wrapper around all that is required to make it easy to set up and maintain a development environment that fully complies with the setup instructions published by Openmoko.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile is developed by [[User:RodWhitby|Rod Whitby]] - it is not an official product of Openmoko (although I would be happy for them to pick it up and use it internally).  If there is any discrepancy between the [[Openmoko2007.2#How_to_build|official Openmoko build instructions]], and the operation of the MokoMakefile, then you should consider the official instructions to be correct.&lt;br /&gt;
&lt;br /&gt;
The MokoMakefile is able to build both OM-2007.2 and QTopia-X11 images.&lt;br /&gt;
&lt;br /&gt;
MokoMakefile also builds the QEMU-based Neo1973 emulator as part of the build process and has make targets to install the Openmoko images into it and run it. These commands can also be used without downloading and building the whole Openmoko OpenEmbedded distribution. This part is described in [[Using QEMU with MokoMakefile]].&lt;br /&gt;
&lt;br /&gt;
== Requirements for building Openmoko ==&lt;br /&gt;
Independent on whether MokoMakefile or a manual process is used to setup an Openmoko build environment, there are several requirements which must be fulfilled in order for the Openmoko build to succeed:&lt;br /&gt;
&lt;br /&gt;
* RAM: The build host needs to have at least 512MB of RAM, and about the same amount of swap. Some packages built by OpenEmbedded like busybox are built by compiling all source files into one binary which causes gcc to grow beyond 300MB of size and no part of this memory may be on swap for the compile to finish in predictable time. For busybox, this can be turned off, but turning this off means that busybox will not as well optimized by gcc.&lt;br /&gt;
&lt;br /&gt;
* Disk space: You need about 12 GB of available disk space for the Openmoko build to succeed (see below for a tip on how to reduce this).&lt;br /&gt;
&lt;br /&gt;
* Time: The initial build takes at least 5 hours (on 2GHz core2duo without multiprocessor optimization) and may take several days on slower machines.&lt;br /&gt;
&lt;br /&gt;
=== Required software ===&lt;br /&gt;
&lt;br /&gt;
Some distribution specific hints on preparing your build host for building OpenEmbedded are on http://wiki.openembedded.net/index.php/OEandYourDistro but they may be outdated, incomplete and do not cover everything which Openmoko needs to build.&lt;br /&gt;
&lt;br /&gt;
A good guide is [[Building Openmoko from scratch#Build host prerequisites|the section on build host prerequisites]] in [[Building Openmoko from scratch]]&lt;br /&gt;
&lt;br /&gt;
If you forgot anything which OE needs itself, OE will tell you shortly after you start building, but it does not check build dependencies of Openmoko, so you either have to install them before starting or install them after the build failed. OpenEmbedded will continue where it stopped when you restart the build afterwards.&lt;br /&gt;
&lt;br /&gt;
==== Package requirements by distribution ====&lt;br /&gt;
Your distribution needs to provide these commands in order for OpenEmbedded to start building:&lt;br /&gt;
 subversion texi2html texinfo help2man&lt;br /&gt;
&lt;br /&gt;
Openmoko needs the development packages (with header files, development libraries and tools) in order to finish building:&lt;br /&gt;
 ncurses zlib (or libz) OpenSSL GTK++&lt;br /&gt;
&lt;br /&gt;
Because there are bugs in the interaction of QEMU and GCC-4, you'll need a copy of gcc-3.x installed as well.&lt;br /&gt;
&lt;br /&gt;
===== Debian / Ubuntu =====&lt;br /&gt;
  sudo apt-get install subversion build-essential help2man diffstat texi2html texinfo cvs gawk zip unzip cogito&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install libncurses5-dev zlib1g-dev libssl-dev libgtk2.0-dev &lt;br /&gt;
  # To prevent errors in host validation&lt;br /&gt;
  sudo apt-get install ca-certificates&lt;br /&gt;
  # For Openmoko 2007.2 using BitBake-1.8.8:&lt;br /&gt;
  sudo apt-get install python-pysqlite2 sqlite3 sqlite3-doc python-pysqlite2-dbg&lt;br /&gt;
  # For building faster&lt;br /&gt;
  sudo apt-get install quilt python-psyco ccache&lt;br /&gt;
  # For qemu, install a second compiler for bug avoidance; MokoMakefile knows to look for it.&lt;br /&gt;
  sudo apt-get install gcc-3.4 g++-3.4 libsdl1.2-dev lynx netpbm dosfstools&lt;br /&gt;
&lt;br /&gt;
  # On Ubuntu 8.04, the following was required instead of cogito&lt;br /&gt;
  sudo apt-get install git-core&lt;br /&gt;
  # Ubuntu links /bin/sh to /bin/dash, but some scripts fail because they use pushd and popd, which dash does not support&lt;br /&gt;
  sudo rm /bin/sh&lt;br /&gt;
  sudo ln -s /bin/bash /bin/sh&lt;br /&gt;
&lt;br /&gt;
  # This may be needed only for ASU&lt;br /&gt;
  sudo apt-get install libxtst-dev&lt;br /&gt;
&lt;br /&gt;
===== SuSE =====&lt;br /&gt;
For building Openmoko on 10.3, you need&lt;br /&gt;
 gcc-c++ ncurses-devel zlib-devel libopenssl-devel gtk2-devel subversion diffstat texinfo help2man&lt;br /&gt;
For MokoMakefile to not fail on compiling qemu-user, you need to use gcc33:&lt;br /&gt;
 wget download.opensuse.org/repositories/devel:/tools:/gcc/openSUSE_Factory/i586/{cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
 rpm -Uhv {cpp,gcc}33-3.3.3-41.8.i586.rpm&lt;br /&gt;
&lt;br /&gt;
See also the [[Talk:MokoMakefile#Building_on_SuSE_Linux_10.3-AMD64|Talk page on Building on SuSE Linux 10.3-AMD64]]&lt;br /&gt;
&lt;br /&gt;
10.1 and 10.2: same packages as 10.3, but install &amp;lt;code&amp;gt;openssl-devel&amp;lt;/code&amp;gt; instead of libopenssl-devel.&lt;br /&gt;
&lt;br /&gt;
==== For all distributions ====&lt;br /&gt;
As the QEMU-based neo1973 emulator is also built as part of the build process started by MokoMakefile, so you need gcc-3.3 and other packages for building QEMU installed. See [[Using QEMU with MokoMakefile#Build requirements|the build requirements section]] in [[Using QEMU with MokoMakefile]] for information on the required software.&lt;br /&gt;
&lt;br /&gt;
If you are having problems compiling QEMU and do not need it, you can disable building of QEMU by adding following line to build/conf/local.conf file:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Proxy =====&lt;br /&gt;
Users behind a proxy should ensure that their proxy is configured in their wgetrc file as the http_proxy environment variable is unset by MokoMakefile.&lt;br /&gt;
&lt;br /&gt;
== Building Openmoko with MokoMakefile ==&lt;br /&gt;
&lt;br /&gt;
=== Preparations ===&lt;br /&gt;
Create your $OMDIR directory (note that you can change ~/moko to any directory you like. If you have your ~moko dir mounted from a different file system, be sure to edit /etc/mtab to add the 'exec' permission to the file system, else bitbake will fail with error messages stating that /usr/bin/env is an invalid interpreter):&lt;br /&gt;
   mkdir ~/moko ; cd ~/moko&lt;br /&gt;
&lt;br /&gt;
=== MokoMakefile ===&lt;br /&gt;
Grab MokoMakefile:&lt;br /&gt;
   wget http://www.rwhitby.net/files/openmoko/Makefile &lt;br /&gt;
&lt;br /&gt;
If that doesn't work, try &lt;br /&gt;
&lt;br /&gt;
   wget http://svn.projects.openmoko.org/svnroot/mokomakefile/trunk/Makefile&lt;br /&gt;
&lt;br /&gt;
{{note|MokoMakefile uses BitBake 1.8.8 which requires python-sqlite2 and sqlite-3.3 or later. Users of SUSE Linux 10.1 can update to [http://download.opensuse.org/pub/opensuse/distribution/10.2/repo/oss/suse/i586/sqlite-3.3.8-14.i586.rpm the version of openSUSE 10.2]}}&lt;br /&gt;
&lt;br /&gt;
=== Environment ===&lt;br /&gt;
Set up the environment:&lt;br /&gt;
&lt;br /&gt;
   make setup&lt;br /&gt;
&lt;br /&gt;
If you want to make the ASU or FSO instead of the OM2007.2, see [[Distributions]], you need to edit your Makefile.  Change OM_GIT_BRANCH to one of the following:&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.dev        # OM2007.2&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.dev    # ASU&lt;br /&gt;
  OM_GIT_BRANCH := org.openmoko.asu.stable # ASU stable&lt;br /&gt;
  OM_GIT_BRANCH := org.openembedded.dev    # FSO&lt;br /&gt;
&lt;br /&gt;
If you are building for the Neo1973 GTA01, then also do this&lt;br /&gt;
  make setup-machine-neo&lt;br /&gt;
If you are building for the Freerunner GTA02, then also do this&lt;br /&gt;
  make setup-machine-freerunner&lt;br /&gt;
&lt;br /&gt;
=== Building ===&lt;br /&gt;
Before starting a lengthy make process, check the Tips section below for how to make Make multicore aware. You may want to modify the build/conf/local.conf file for your target (emulation/chroot) environment:&lt;br /&gt;
   make openmoko-devel-image&lt;br /&gt;
   (or use &amp;quot;make openmoko-qtopia-x11-image&amp;quot; if you're building the ASU)&lt;br /&gt;
   (or use &amp;quot;make fso-image&amp;quot; if you're building the FSO)&lt;br /&gt;
&lt;br /&gt;
''Hint:'' The images build with this command can be found under {$OMDIR}/build/tmp/deploy/images/neo1973&lt;br /&gt;
&lt;br /&gt;
This will set up the recommended directory structure as described in [[Building Openmoko from scratch]], will download all the required software (from the right places with the right versions), and will immediately start building an image.&lt;br /&gt;
&lt;br /&gt;
Once you have done this, you can choose to continue using the MokoMakefile to initiate your subsequent builds, or you can go into the build directory and run bitbake commands manually.  The choice is yours.&lt;br /&gt;
&lt;br /&gt;
==Updating the environment==&lt;br /&gt;
For easy maintenance of your build environment the following commands are available.&lt;br /&gt;
&lt;br /&gt;
1 - To update the MokoMakefile to the latest version:&lt;br /&gt;
   make update-makefile &lt;br /&gt;
&lt;br /&gt;
2 - To make sure that any recent changes to the build directory structure have been applied:&lt;br /&gt;
   make setup &lt;br /&gt;
&lt;br /&gt;
3 - To update the Openmoko repository checkout and the MokoMakefile patches to the latest version:&lt;br /&gt;
   make update&lt;br /&gt;
&lt;br /&gt;
A quick way to rebuild a new image with the latest updates:&lt;br /&gt;
   make update-makefile &amp;amp;&amp;amp; make setup update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
==Build issues==&lt;br /&gt;
First, make sure that the problem is reproducible after running&lt;br /&gt;
&lt;br /&gt;
 make update-makefile &amp;amp;&amp;amp; make setup &amp;amp;&amp;amp; make update&lt;br /&gt;
&lt;br /&gt;
then run&lt;br /&gt;
&lt;br /&gt;
 make clean-package-&amp;lt;foo&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(where you replace &amp;lt;foo&amp;gt; with the name of the package which is failing)&lt;br /&gt;
&lt;br /&gt;
and finally&lt;br /&gt;
&lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
With luck - you should now have images in your $omdir/build/tmp/deploy/glibc/images/neo1973/ directory.&lt;br /&gt;
You can then [[Flashing openmoko|flash these]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If not, and you can get the error to occur three times in a row after running that sequence of commands (including the update and setup steps) three times, then feel free to report it to rwhitby in #openmoko on [http://wiki.openmoko.org/wiki/Development_resources#IRC IRC].&lt;br /&gt;
&lt;br /&gt;
If you have chronic build problems, cleaning your environment variables and re-running the build from scratch may help.  The following script should remove all non-essential variables; you should also manually trim your path to the minimum.&lt;br /&gt;
  `env | grep -Ev '^SHELL=|^TERM=|^OLDPWD=|^USER=|^USERNAME=|^PATH=|^EDITOR=|^LANG=|^HOME=|^DISPLAY=|^_='  | sed 's/^\(.*\)=.*/unset \1/'`&lt;br /&gt;
&lt;br /&gt;
(you must include the backtics).&lt;br /&gt;
Note that on some boxes it is necessary to call &amp;quot;make&amp;quot; by typing &amp;quot;/usr/bin/make&amp;quot; afterwards.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On current ubuntu boxes another trick is necessary:&lt;br /&gt;
glibc_2.6.1 fails to build since it is unable to generate the necessary locales until you type in the following line:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=0&lt;br /&gt;
Note that this temporarily disables a new security vulnerability check that has entered /etc/sysctrl - but that makes problems with loads of applications.&lt;br /&gt;
To re-enable this check do the following:&lt;br /&gt;
 sudo sysctl -w vm.mmap_min_addr=65536&lt;br /&gt;
See the talk page of this article for more details on this solution.&lt;br /&gt;
&lt;br /&gt;
===Known MokoMakefile errors ===&lt;br /&gt;
==== SVN Server Certificate Errors ====&lt;br /&gt;
If you get an error like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NOTE: Fetch svn://svn.projects.openmoko.org/svnroot/;module=assassin;proto=https&lt;br /&gt;
Error validating server certificate for 'https://svn.projects.openmoko.org:443':&lt;br /&gt;
 - The certificate is not issued by a trusted authority. Use the&lt;br /&gt;
   fingerprint to validate the certificate manually!&lt;br /&gt;
Certificate information:&lt;br /&gt;
 - Hostname: projects.openmoko.org&lt;br /&gt;
 - Valid: from Thu, 05 Jun 2008 01:02:42 GMT until Tue, 02 Dec 2008 01:02:42 GMT&lt;br /&gt;
 - Issuer: http://www.cacert.org, Root CA&lt;br /&gt;
 - Fingerprint: a5:7d:4e:37:e8:94:ee:ba:c1:e8:e9:4b:33:cb:34:91:a9:6d:d3:84&lt;br /&gt;
(R)eject, accept (t)emporarily or accept (p)ermanently? svn: OPTIONS of 'https://svn.projects.openmoko.org/svnroot/assassin': Server certificate verification failed: issuer is not trusted (https://svn.projects.openmoko.org)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
It means you haven't yet accepted the server certificate for the SVN server.  To remedy this, execute the following commands, and hit &amp;quot;p&amp;quot; (to permanently accept the certificate) when prompted:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cd /tmp&lt;br /&gt;
svn co https://svn.projects.openmoko.org/svnroot/assassin&lt;br /&gt;
rm -rf assassin&lt;br /&gt;
cd -&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== exposure_svn and Subversion 1.5.0 ====&lt;br /&gt;
&lt;br /&gt;
If you get an error like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
&amp;quot;NameError: global name 'log' is not defined&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There's a bug with subversion 1.5.0 -- downgrade to 1.4.x (or check out the latest subversion sources and use those as they're fixed) and re-fetch the sources.&lt;br /&gt;
&lt;br /&gt;
===Fixes for distribution/environment-specific or isolated issues===&lt;br /&gt;
&lt;br /&gt;
Work-arounds for temporary or isolated problems can be found and should be added to the [[Talk:MokoMakefile|Discussion page]] which is associated with this page.  As they are fixed, they will be removed from that page.&lt;br /&gt;
&lt;br /&gt;
==Tips==&lt;br /&gt;
*Make sure umask is set to 0022 before you run &amp;quot;make setup&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*You can reduce the amount of consumed disk space significantly by adding&lt;br /&gt;
   INHERIT += &amp;quot;rm_work&amp;quot;&lt;br /&gt;
in your local.conf (e.g. ~/moko/build/conf/local.conf). This will remove the contents of each build/tmp/work/*/&amp;lt;package&amp;gt; directory after the corresponding package builds correctly. As of 10/16/07, this appears to be present in local.conf by default.&lt;br /&gt;
&lt;br /&gt;
*If a certain package does not build due to corrupted download or some such try to remove the sources and rebuild it.&lt;br /&gt;
 rm sources/&amp;lt;package&amp;gt;*&lt;br /&gt;
 cd build&lt;br /&gt;
 . ../setup-env&lt;br /&gt;
 bitbake -crebuild &amp;lt;package&amp;gt;&lt;br /&gt;
after that your build might just work again.&lt;br /&gt;
&lt;br /&gt;
*For people with multiple CPU's (or dual-core ones) this small patch might be useful to build things faster.&lt;br /&gt;
Edit the local.conf and add the following lines:&lt;br /&gt;
 PARALLEL_MAKE = &amp;quot;-j 4&amp;quot;&lt;br /&gt;
 BB_NUMBER_THREADS = &amp;quot;4&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Change the PARALLEL_MAKE and BB_NUMBER_THREADS values to something that suits better if it chokes your machine.&lt;br /&gt;
&lt;br /&gt;
* I have some problem with the parallel building, mkfs.jffs failed to build the image because the directory was modify while the building of the fs. [[User:Patrick.hetu|patrick.hetu]] 02:19, 27 May 2008 (UTC) &lt;br /&gt;
&lt;br /&gt;
* If you encounter an error related with the qemu-native package and not compiling for the qemu, you can edit the build/conf/local.conf file and add ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot; line to avoid the error.&lt;br /&gt;
&lt;br /&gt;
* To prevent building tons of locales, add a line like this to local.conf:&lt;br /&gt;
 GLIBC_GENERATE_LOCALES = &amp;quot;en_US.UTF-8 nl_NL.UTF-8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* To not build any binary locales at all, add this to local.conf:&lt;br /&gt;
 ENABLE_BINARY_LOCALE_GENERATION = &amp;quot;0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
* If you want to rebuild the package indexes (for instance, after compiling a new version of a package) without building &amp;lt;code&amp;gt;openmoko-devel-image&amp;lt;/code&amp;gt;, run &amp;lt;code&amp;gt;make build-package-package-index&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[User:Wurp]] will update this to be a little more comprehensible, but maybe it can help someone as-is in the meantime:&lt;br /&gt;
* If MokoMakefile always fails on some fetch in zlib, just find the binary somewhere, add it to the downloads or sources directory manually (create the .md5 matching file if necessary), and retry.&lt;br /&gt;
&lt;br /&gt;
* Make sure you do not have . in your PATH, this causes an &amp;quot;unrecognized option -Qy&amp;quot; error when building g++spec&lt;br /&gt;
&lt;br /&gt;
=== Useful commands ===&lt;br /&gt;
Here is the list (not complete) of useful MokoMakefile commands (actually make targets) and a short description of each one. These should be run inside $OMDIR directory.&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-image : build the full development image&lt;br /&gt;
&lt;br /&gt;
; make openmoko-devel-tools : build statically-linked [[dfu-util]] and [[openocd]] binaries&lt;br /&gt;
&lt;br /&gt;
; make openmoko-toolchain : builds [[toolchain]]&lt;br /&gt;
&lt;br /&gt;
; make qemu : builds qemu, downloads flash images from official repository, flashes qemu emulated Neo1973 and runs emulator (see also [[Openmoko under QEMU]]). &lt;br /&gt;
&lt;br /&gt;
; make qemu-local : same as ''make qemu'', but uses locally built images instead of official ones.&lt;br /&gt;
&lt;br /&gt;
; make run-qemu : runs qemu with usb keyboard ''(note: qemu must first be built!)''. This target starts the emulator with some predefined set of options. If you need to start it with other options (enable telnet, etc), see [[QEMU_command_line]].&lt;br /&gt;
&lt;br /&gt;
; make build-package-&amp;lt;package name&amp;gt; : buids ''&amp;lt;package name&amp;gt;'' package&lt;br /&gt;
&lt;br /&gt;
; make update-makefile : updates MokoMakefile&lt;br /&gt;
&lt;br /&gt;
; make clean-package-&amp;lt;foo&amp;gt;: cleans the &amp;quot;&amp;lt;foo&amp;gt;&amp;quot; package&lt;br /&gt;
&lt;br /&gt;
; make setup : to make sure that any recent changes to the build directory structure have been applied&lt;br /&gt;
   &lt;br /&gt;
; make update : to update the Openmoko repository checkout and the MokoMakefile patches to the latest version&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-neo : setup for GTA01 version of Neo1973&lt;br /&gt;
&lt;br /&gt;
; make setup-machine-freerunner : setup for GTA02 version of Freerunner&lt;br /&gt;
&lt;br /&gt;
==Developing with MokoMakefile==&lt;br /&gt;
&lt;br /&gt;
{{note|If using MokoMakefile with OM2007.2 then references to $OMDIR/openmoko should be replaced with $OMDIR/openembedded.  Also references to tmp/work/armv4t-linux should be replaced with tmp/work/fic-gta01-angstrom-linux-gnueabi}}&lt;br /&gt;
&lt;br /&gt;
For the following explanations $OMDIR is the directory where there Makefile puts all the stuff.&lt;br /&gt;
&lt;br /&gt;
To make in-tree changes and have them built and used by qemu:&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/openmoko&lt;br /&gt;
  quilt new descriptive-patch-name.patch&lt;br /&gt;
  quilt add trunk/src/name-of-file-to-change # do this for every file you are about to modify&lt;br /&gt;
  ...make the changes...&lt;br /&gt;
  quilt refresh # this creates a file in $OMDIR/patches/openmoko-HEAD/ and updates the quilt series file there&lt;br /&gt;
&lt;br /&gt;
Note: Do '''NOT''' use absolute paths as this confuses quilt and will get you a diff of the file against /dev/null!&lt;br /&gt;
&lt;br /&gt;
To build the changes and have them used by qemu:&lt;br /&gt;
&lt;br /&gt;
  make build-qemu&lt;br /&gt;
  make flash-qemu-local&lt;br /&gt;
  make run-qemu&lt;br /&gt;
&lt;br /&gt;
If you want to modify applications instead of the openmoko toolchain, this is what you have to do (example: openmoko-messages):&lt;br /&gt;
&lt;br /&gt;
  cd $OMDIR/build&lt;br /&gt;
  . ../setup-env&lt;br /&gt;
  bitbake -c unpack openmoko-messages&lt;br /&gt;
  cd tmp/work/armv4t-linux/openmoko-messages-0.0.1+svnnow-r2_2276/openmoko-messages/&lt;br /&gt;
  ''...make the changes...''&lt;br /&gt;
  cd -&lt;br /&gt;
  bitbake openmoko-messages&lt;br /&gt;
&lt;br /&gt;
Then continue with MokoMakefile usage.&lt;br /&gt;
&lt;br /&gt;
If you want to add an application to your openmoko distribution, do this:&lt;br /&gt;
All file edits should be done using quilt as described above. That way a patch can easily be submitted to the openmoko project.&lt;br /&gt;
First, create a directory that will correspond to your package and edit a '''.bb''' file in there:&lt;br /&gt;
  cd $OMDIR/openmoko/&lt;br /&gt;
  quilt new mycoolpackage.patch&lt;br /&gt;
  mkdir trunk/openembedded/packages/mycoolpackage&lt;br /&gt;
  quilt add trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
  quilt edit trunk/openembedded/packages/mycoolpackage/mycoolpackage_1.bb&lt;br /&gt;
&lt;br /&gt;
The file should have the following content:&lt;br /&gt;
  DESCRIPTION = &amp;quot;This is a cool package&amp;quot;&lt;br /&gt;
  SECTION = &amp;quot;username/mycoolpackage&amp;quot;&lt;br /&gt;
  PV = &amp;quot;1&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  inherit autotools&lt;br /&gt;
  &lt;br /&gt;
  SRC_URI = &amp;quot;http://www.example.com/download/mycoolpackage-1.tar.gz&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Explanation:&lt;br /&gt;
* DESCRIPTION - Just a short text explaining the package&lt;br /&gt;
* SECTION - I have no clue, but I'll use username/mycoolpackage for now&lt;br /&gt;
* PV - Package Version&lt;br /&gt;
* inherit autotools - The package can be compiled by './configure &amp;amp;&amp;amp; make &amp;amp;&amp;amp; make install' so we tell MokoMakefile to do it this way.&lt;br /&gt;
* SRC_URI = ... - This is the download location of the package source. It's imperative that the tar.gz contains a directory called '''packagename-packageversion''' (in this case: mycoolpackage-1) so that MokoMakefile can find it automatically or the build will fail.&lt;br /&gt;
&lt;br /&gt;
This is not all. We also need to tell MokoMakfile that it needs to build and include the package in the image. To do this, do&lt;br /&gt;
  $OMDIR/openmoko# quilt edit trunk/openembedded/packages/tasks/task-openmoko.bb&lt;br /&gt;
Here, increase the value '''PR''' by one and add '''mycoolpackage \''' (with the backslash!) just before the line reading '''#  update-alternatives \'''.&lt;br /&gt;
&lt;br /&gt;
Now run&lt;br /&gt;
  quilt refresh&lt;br /&gt;
  cd ..&lt;br /&gt;
  make update openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
And if everything's alright you should now have an OpenMoko image to flash to your phone or run in qemu as described above.&lt;br /&gt;
&lt;br /&gt;
=== Hello World application ===&lt;br /&gt;
&lt;br /&gt;
There is a [[Building a hello world application|Hello World!]] tutorial available too.&lt;br /&gt;
&lt;br /&gt;
==Testimonials==&lt;br /&gt;
MokoMakefile is recommended by 4 out of 4 new developers on #openmoko, with testimonials such as &amp;quot;For some reason last night I couldn't get my manual install of everything to work (bb complained about my bbpath I think) ... but with your makefile, it works great!&amp;quot;, &amp;quot;MokoMakefile rocks!&amp;quot;, &amp;quot;Wow this build system is nice - it just seems more polished than my gumstix toolchain buildroot system&amp;quot;, and &amp;quot;make openmoko-devel-image :) - no magic there&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Project page:&lt;br /&gt;
http://mokomakefile.projects.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Applications]]&lt;br /&gt;
[[Category:Application Developer]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Keyboard_Toggle</id>
		<title>Keyboard Toggle</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Keyboard_Toggle"/>
				<updated>2008-07-29T07:04:31Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* On the phone */ cpp-symlinks means you don't need to ln manually&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASU]] and [[OM2007.2]] Openmoko [[distributions]] have been designed to bring up an on-screen keyboard which supplies keystroke information to applications.  However, this requires the cooperation of the application, which is a problem for software designed with another X11 based phone stack in mind, or software which has been quickly ported from Linux desktop systems, because it will never bring up a keyboard for (possibly important) keystroke information.  It is also possible that the keyboard could be brought or remain up by accident when you don't want it there, or even software specifically designed with this functionality in mind may occasionally fail or become confused when an on screen keyboard is supposed to be available.&lt;br /&gt;
&lt;br /&gt;
== Alternatives ==&lt;br /&gt;
Alternatively, you can try connecting a [[Manually_using_Bluetooth#Being_able_to_use_HID_devices|bluetooth keyboard]] or USB keyboard (Only available with a special cable, or an extra special cable in the case of the older unpowered USB units.)&lt;br /&gt;
&lt;br /&gt;
== Reactivating the keyboard toggle under ASU ==&lt;br /&gt;
For advanced users using the [[ASU]] [[Distributions|distribution]], it may be worth your while to change the E17 theme information which prevents the 'qwerty' link in the upper left from showing.&lt;br /&gt;
&lt;br /&gt;
=== On the phone ===&lt;br /&gt;
Install the tools required to decompile and recompile E17 theme code.&lt;br /&gt;
&lt;br /&gt;
 opkg install libevas-saver-png edje-utils cpp cpp-symlinks libembryo-tests&lt;br /&gt;
&lt;br /&gt;
Decompile the theme, and edit the edc file&lt;br /&gt;
&lt;br /&gt;
 cd /usr/share/enlightenment/data/themes&lt;br /&gt;
 edje_decc illume.edj&lt;br /&gt;
 cd illume&lt;br /&gt;
 vi freerunner.edc&lt;br /&gt;
&lt;br /&gt;
Search for the text 'qwerty'.  This should take you to the section which defines the small 'qwerty' button in the upper left.&lt;br /&gt;
&lt;br /&gt;
* Under 'part { name: &amp;quot;kbd&amp;quot;;' change 'visible 0;' to 'visible 1;', and change 'relative: 1.0 1.0;' to 'relative: 0.0 1.0;'&lt;br /&gt;
* Under 'part { name: &amp;quot;kbdtext&amp;quot;;' change 'visible 0;' to 'visible 1;'&lt;br /&gt;
&lt;br /&gt;
And then recompile the .edj&lt;br /&gt;
&lt;br /&gt;
 sh build.sh&lt;br /&gt;
 mv illume.edj ../illume.edj&lt;br /&gt;
&lt;br /&gt;
=== Building a custom package ===&lt;br /&gt;
If that doesn't work, follow the instructions on [[Mokomakefile|building ASU from source]].  Unpack the source for the package 'illume-theme', edit its edc file using the same method described above, and then finish building the ipk.  You should be able to install this ipk, overiding the previous configuration.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading ===&lt;br /&gt;
If you upgrade, such as with opkg upgrade, you may have to perform the modification again.&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Keyboard_Toggle</id>
		<title>Keyboard Toggle</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Keyboard_Toggle"/>
				<updated>2008-07-29T06:57:08Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* On the phone */ Install cpp-symlinks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASU]] and [[OM2007.2]] Openmoko [[distributions]] have been designed to bring up an on-screen keyboard which supplies keystroke information to applications.  However, this requires the cooperation of the application, which is a problem for software designed with another X11 based phone stack in mind, or software which has been quickly ported from Linux desktop systems, because it will never bring up a keyboard for (possibly important) keystroke information.  It is also possible that the keyboard could be brought or remain up by accident when you don't want it there, or even software specifically designed with this functionality in mind may occasionally fail or become confused when an on screen keyboard is supposed to be available.&lt;br /&gt;
&lt;br /&gt;
== Alternatives ==&lt;br /&gt;
Alternatively, you can try connecting a [[Manually_using_Bluetooth#Being_able_to_use_HID_devices|bluetooth keyboard]] or USB keyboard (Only available with a special cable, or an extra special cable in the case of the older unpowered USB units.)&lt;br /&gt;
&lt;br /&gt;
== Reactivating the keyboard toggle under ASU ==&lt;br /&gt;
For advanced users using the [[ASU]] [[Distributions|distribution]], it may be worth your while to change the E17 theme information which prevents the 'qwerty' link in the upper left from showing.&lt;br /&gt;
&lt;br /&gt;
=== On the phone ===&lt;br /&gt;
Install the tools required to decompile and recompile E17 theme code.&lt;br /&gt;
&lt;br /&gt;
 opkg install libevas-saver-png edje-utils cpp cpp-symlinks libembryo-tests&lt;br /&gt;
 ln -s /lib/cpp /usr/bin/cpp&lt;br /&gt;
&lt;br /&gt;
Decompile the theme, and edit the edc file&lt;br /&gt;
&lt;br /&gt;
 cd /usr/share/enlightenment/data/themes&lt;br /&gt;
 edje_decc illume.edj&lt;br /&gt;
 cd illume&lt;br /&gt;
 vi freerunner.edc&lt;br /&gt;
&lt;br /&gt;
Search for the text 'qwerty'.  This should take you to the section which defines the small 'qwerty' button in the upper left.&lt;br /&gt;
&lt;br /&gt;
* Under 'part { name: &amp;quot;kbd&amp;quot;;' change 'visible 0;' to 'visible 1;', and change 'relative: 1.0 1.0;' to 'relative: 0.0 1.0;'&lt;br /&gt;
* Under 'part { name: &amp;quot;kbdtext&amp;quot;;' change 'visible 0;' to 'visible 1;'&lt;br /&gt;
&lt;br /&gt;
And then recompile the .edj&lt;br /&gt;
&lt;br /&gt;
 sh build.sh&lt;br /&gt;
 mv illume.edj ../illume.edj&lt;br /&gt;
&lt;br /&gt;
=== Building a custom package ===&lt;br /&gt;
If that doesn't work, follow the instructions on [[Mokomakefile|building ASU from source]].  Unpack the source for the package 'illume-theme', edit its edc file using the same method described above, and then finish building the ipk.  You should be able to install this ipk, overiding the previous configuration.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading ===&lt;br /&gt;
If you upgrade, such as with opkg upgrade, you may have to perform the modification again.&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Main_Page"/>
				<updated>2008-07-28T21:17:46Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: Linkify Neo Freerunner&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div style=&amp;quot;margin-top: -70px&amp;quot;&amp;gt;{{Languages|Main Page}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;DIV ALIGN=center&amp;gt;&amp;lt;big&amp;gt;'''[[Openmoko]]™ - Open. Mobile. Free.'''&amp;lt;/big&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/DIV&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;font color=75d806&amp;gt;Introduction to Openmoko&amp;lt;/font&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:OpenmokoFramework08.png|250px|left|Openmoko Software Stack|thumb]]&lt;br /&gt;
&lt;br /&gt;
[[Openmoko]]™, born as a [http://en.wikipedia.org/wiki/Free_software Free Software] project under  [[License| GPL and LGPL license]], is dedicated to delivering an open software stack on mobile platforms. [[Openmoko]] shipped its first product, the Neo 1973, on July 9 2007; and then turned into a start-up company with one aim: create great mobile products using the Openmoko stack: Open. Mobile. Free.&lt;br /&gt;
&lt;br /&gt;
The [[NeoSoftwareStack|Openmoko stack]], which includes a full [[Host-based development with Xoo and Xephyr|X server]], allows users and developers to transform mobile hardware platforms into unique products. Our licence gives developers and users freedom from the &amp;quot;iron to the eyeballs,&amp;quot; freedom to cosmetically customize their device or radically remix it;  change the wallpaper or rebuild the entire house! It grants them the freedom, for example, to transform a phone into a medical device or point of sale device or the freedom to simply install their own favorite software. Beyond freeing the software on our devices we have also released our CAD files under Creative Commons ShareAlike. By freeing the software under GPL, we enable the community of FOSS developers to &amp;quot;make it new.&amp;quot; By freeing the [http://downloads.openmoko.org/CAD/ CAD] files we give industrial designers and engineers this same opportunity.&lt;br /&gt;
&lt;br /&gt;
{{mainpage}}&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==&amp;lt;font color=75d806&amp;gt;Openmoko Products&amp;lt;/font&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
[[Image:Freerunner02.gif|thumb|150px]]&lt;br /&gt;
The first Openmoko product, the [[Neo 1973]], sold exclusively through [http://www.openmoko.com/store.html Openmoko Online Shop]. It sold out in early February 2008. &lt;br /&gt;
&lt;br /&gt;
Openmoko started selling the [[Neo FreeRunner]] (GTA02), the second generation of Neo, on July 3, 2008.&lt;br /&gt;
It is available through the&lt;br /&gt;
[http://www.openmoko.com/store.html Openmoko Online Shop]&lt;br /&gt;
or national distributers.&lt;br /&gt;
Group purchases provide a discount and extra goodies.&lt;br /&gt;
Find a buying group at [[GroupSales]].&lt;br /&gt;
If you've just received your FreeRunner, check out [[Getting Started with your Neo FreeRunner]] for tips.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear:both&amp;quot;&amp;gt;{{Bar}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;font color=75d806&amp;gt;Join Openmoko development&amp;lt;/font&amp;gt;==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;6&amp;quot; width=100%&lt;br /&gt;
! width=50% style=&amp;quot;background:#ff6600;border-left:5px solid white;border-right:5px solid white;border-top:0px solid white; border:1px solid #ff6600; &amp;quot; | &amp;lt;font color=&amp;quot;white&amp;quot; &amp;gt;Developer Guides&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=50% style=&amp;quot;background:#ff6600;border-left:5px solid white;border-right:5px solid white;border-top:0px solid white; border:1px solid #ff6600;&amp;quot; |&amp;lt;font color=&amp;quot;white&amp;quot; &amp;gt;Test / Emulation and share project&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;background:#333333;border-left:5px solid white;border-right:5px solid white;border-bottom:0px solid white; border:1px solid #cccccc; &amp;quot; | &lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Developer &amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[Toolchain|toolchain usage]]&lt;br /&gt;
* &amp;lt;font color=white&amp;gt;VMware&amp;lt;/font&amp;gt;&lt;br /&gt;
* [[Python|python intro]]&lt;br /&gt;
* [[Openmoko under QEMU]] &lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;System Integration and customizing a distribution&amp;lt;/font&amp;gt;===&lt;br /&gt;
* [[OpenEmbedded|OE-The distribution building framework]]&lt;br /&gt;
* [[MokoMakefile|Building Openmoko using the MokoMakefile ]]&lt;br /&gt;
* [[Opkg|Opkg]]&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Low level / system development&amp;lt;/font&amp;gt;===&lt;br /&gt;
* &amp;lt;font color=white&amp;gt;Low-Level&amp;lt;/font&amp;gt;&lt;br /&gt;
* [[u-boot]]  &amp;lt;font color=white&amp;gt;-The bootloader we use, including docs to our modifications&amp;lt;/font&amp;gt;&lt;br /&gt;
* [[kernel]]  &amp;lt;font color=white&amp;gt;-The Linux Kernel we use, including docs to our modifications&amp;lt;/font&amp;gt;&lt;br /&gt;
* [[gsmd]] &amp;lt;font color=white&amp;gt; -the GSM daemon managing the GSM Modem&amp;lt;/font&amp;gt;&lt;br /&gt;
* [[agpsd]] &amp;lt;font color=white&amp;gt;-the AGPS (Assisted GPS) daemon&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;background:#333333;border-left:5px solid white;border-right:5px solid white;border-bottom:0px solid white; border:1px solid #cccccc; &amp;quot; |&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Test&amp;lt;/font&amp;gt;===&lt;br /&gt;
*[[Test Cases]]&lt;br /&gt;
&amp;lt;font color=white&amp;gt; ※&amp;lt;/font&amp;gt; [[:Category: Test |  See More About Test]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Emulation&amp;lt;/font&amp;gt;===&lt;br /&gt;
*[[Getting Openmoko working on host with Xephyr]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Publish your project&amp;lt;/font&amp;gt;===&lt;br /&gt;
*[[CommunityRepository|Publish Your Project]]&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Distributions&amp;lt;/font&amp;gt;===&lt;br /&gt;
*[[Distributions]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;font color=75d806&amp;gt;Openmoko community&amp;lt;/font&amp;gt;==&lt;br /&gt;
Anyone can join the Openmoko project and contribute to designing open products.  Join us and collaborate through any of the [[Development resources | project resources]], including this Openmoko Wiki. See the [[Help:Contents | wiki editing help]]page for information on making contributions to this wiki. &lt;br /&gt;
&lt;br /&gt;
You can start by using the [[introduction]] page, photos, videos and Openmoko Wiki Official Index Page. As always, the usual [[FAQ | Frequently Asked Questions]] (FAQ),  [http://lists.openmoko.org/mailman/listinfo/| mailing list] pages and [[Discussion_Forums| Discussion Forums]] are helpful. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;4&amp;quot; cellpadding=&amp;quot;6&amp;quot; width=100%&lt;br /&gt;
! width=50% style=&amp;quot;background:#ff6600;border-left:5px solid white;border-right:5px solid white;border-top:0px solid white; border:1px solid #ff6600; &amp;quot; | &amp;lt;font color=&amp;quot;white&amp;quot; &amp;gt;In News&amp;lt;/font&amp;gt;&lt;br /&gt;
! width=50% style=&amp;quot;background:#ff6600;border-left:5px solid white;border-right:5px solid white;border-top:0px solid white; border:1px solid #ff6600;&amp;quot; |&amp;lt;font color=&amp;quot;white&amp;quot; &amp;gt;Community &amp;amp; Events&amp;lt;/font&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;background:#333333;border-left:5px solid white;border-right:5px solid white;border-bottom:0px solid white; border:1px solid #cccccc; &amp;quot; | &lt;br /&gt;
===&amp;lt;font color=white&amp;gt;In the News&amp;lt;/font&amp;gt;===&lt;br /&gt;
*[[Getting Started with your Neo FreeRunner]]&lt;br /&gt;
*[[ASU Feature Plan]]&lt;br /&gt;
*[[CommunityRepository|Share your project]]&lt;br /&gt;
*[[GroupSales]]&lt;br /&gt;
*[[Why Openmoko|Why Openmoko is best: A Comparative Look]]&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Snapshot&amp;lt;/font&amp;gt;===&lt;br /&gt;
*&amp;lt;font color=white&amp;gt;You can always download the latest build here.&amp;lt;/font&amp;gt;&lt;br /&gt;
** &amp;lt;font color=white&amp;gt;For FreeRunner &amp;lt;/font&amp;gt;[http://buildhost.openmoko.org/daily/freerunner/ http://buildhost.openmoko.org/daily/freerunner/]&lt;br /&gt;
** &amp;lt;font color=white&amp;gt;For Neo 1973 the link is&amp;lt;/font&amp;gt; [http://buildhost.openmoko.org/daily/neo1973/ http://buildhost.openmoko.org/daily/neo1973/]&lt;br /&gt;
** &amp;lt;font color=white&amp;gt;Tools , like dfu-util and openocd :&amp;lt;/font&amp;gt;[http://buildhost.openmoko.org/daily/tools/ http://buildhost.openmoko.org/daily/tools/]&lt;br /&gt;
*&amp;lt;font color=white&amp;gt;Reviews of the daily snapshot build are [[Snapshot_review|here]] and the recommended kernel and root image from the review will always be available [http://downloads.openmoko.org/recommended/ here].&amp;lt;/font&amp;gt;&lt;br /&gt;
&amp;lt;font color=white&amp;gt;Note that the recommended set is not always the latest, but is the most stable, reliable, and functional.&amp;lt;/font&amp;gt;&lt;br /&gt;
|valign=&amp;quot;top&amp;quot; style=&amp;quot;background:#333333;border-left:5px solid white;border-right:5px solid white;border-bottom:0px solid white; border:1px solid #cccccc; &amp;quot; |&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt; Community Update&amp;lt;/font&amp;gt;===&lt;br /&gt;
&amp;lt;font color=white&amp;gt;For the latest status updates, see [[Community_Updates|Community Updates]]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=ffffff&amp;gt; ※&amp;lt;/font&amp;gt;[[:Category:Community|  See More About Community...]]&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Get the overview of wiki&amp;lt;/font&amp;gt;===&lt;br /&gt;
*&amp;lt;font color=white&amp;gt;To get the overview of Openmoko Wiki, see [[Openmoko Wiki Official Index Page]].&amp;lt;/font&amp;gt;&lt;br /&gt;
===&amp;lt;font color=white&amp;gt;Events&amp;lt;/font&amp;gt;===&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Openmoko Education/zh tw]]&lt;br /&gt;
*[[Events:FOSDEM 2008]]&lt;br /&gt;
*[[OpenLab]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;font color=ffffff&amp;gt; ※&amp;lt;/font&amp;gt;[[:Category:Event|  See More About Event...]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Information| ]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Keyboard_Toggle</id>
		<title>Keyboard Toggle</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Keyboard_Toggle"/>
				<updated>2008-07-28T04:31:39Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* On the phone */ Fixed instructions: no illume subdirectory before decompilation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [[ASU]] and [[OM2007.2]] Openmoko [[distributions]] have been designed to bring up an on-screen keyboard which supplies keystroke information to applications.  However, this requires the cooperation of the application, which is a problem for software designed with another X11 based phone stack in mind, or software which has been quickly ported from Linux desktop systems, because it will never bring up a keyboard for (possibly important) keystroke information.  It is also possible that the keyboard could be brought or remain up by accident when you don't want it there, or even software specifically designed with this functionality in mind may occasionally fail or become confused when an on screen keyboard is supposed to be available.&lt;br /&gt;
&lt;br /&gt;
== Alternatives ==&lt;br /&gt;
Alternatively, you can try connecting a [[Manually_using_Bluetooth#Being_able_to_use_HID_devices|bluetooth keyboard]] or USB keyboard (Only available with a special cable, or an extra special cable in the case of the older unpowered USB units.)&lt;br /&gt;
&lt;br /&gt;
== Reactivating the keyboard toggle under ASU ==&lt;br /&gt;
For advanced users using the [[ASU]] [[Distributions|distribution]], it may be worth your while to change the E17 theme information which prevents the 'qwerty' link in the upper left from showing.&lt;br /&gt;
&lt;br /&gt;
=== On the phone ===&lt;br /&gt;
Install the tools required to decompile and recompile E17 theme code.&lt;br /&gt;
&lt;br /&gt;
 opkg install libevas-saver-png edje-utils cpp&lt;br /&gt;
 ln -s /lib/cpp /usr/bin/cpp&lt;br /&gt;
&lt;br /&gt;
Decompile the theme, and edit the edc file&lt;br /&gt;
&lt;br /&gt;
 cd /usr/share/enlightenment/data/themes&lt;br /&gt;
 edje_decc illume.edj&lt;br /&gt;
 cd illume&lt;br /&gt;
 vi freerunner.edc&lt;br /&gt;
&lt;br /&gt;
Search for the text 'qwerty'.  This should take you to the section which defines the small 'qwerty' button in the upper left, which has been disabled by the developers with a 'visible 0' entry.  Comment it out, and replace it with 'visible 1'.  Then rebuild the theme.&lt;br /&gt;
&lt;br /&gt;
 ./build.sh&lt;br /&gt;
&lt;br /&gt;
=== Building a custom package ===&lt;br /&gt;
If that doesn't work, follow the instructions on [[Mokomakefile|building ASU from source]].  Unpack the source for the package 'illume-theme', edit its edc file using the same method described above, and then finish building the ipk.  You should be able to install this ipk, overiding the previous configuration.&lt;br /&gt;
&lt;br /&gt;
=== Upgrading ===&lt;br /&gt;
If you upgrade, such as with opkg upgrade, you may have to perform the modification again.&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Flashing_the_Neo_FreeRunner</id>
		<title>Flashing the Neo FreeRunner</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Flashing_the_Neo_FreeRunner"/>
				<updated>2008-07-28T01:26:39Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Flashing the Kernel */ Short boot to NOR instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As Openmoko development continues, Openmoko regularly releases updated versions of the Openmoko root filesystem, the kernel, and the[[Bootloader| U-Boot]]. These may be programmed into the Flash memory of Neo FreeRunner. You can use the USB cable and Openmoko provided tool to flash Neo FreeRunner.&lt;br /&gt;
&lt;br /&gt;
{{note|The Openmoko software team builds images daily. If you want to use the latest images, you can download the image from the daily build, but we recommend you download the most stable image from http://downloads.openmoko.org/releases/Freerunner/. Images here have been tested by the test team.&lt;br /&gt;
&lt;br /&gt;
See [[Latest Images]] for more information about the different images available.}}&lt;br /&gt;
{{note|If you have a working image that you're happy with but want to try something different, you should probably do a [[Pre-Flash Backup]], although it looks like the method on that page may not entirely work.}}&lt;br /&gt;
&lt;br /&gt;
===Download the DFU-util===&lt;br /&gt;
&lt;br /&gt;
==== from GNU/Linux ====&lt;br /&gt;
&lt;br /&gt;
You can download the flashing tool for a GNU/Linux host from: &lt;br /&gt;
http://downloads.openmoko.org/releases/Freerunner/dfu-util&lt;br /&gt;
&lt;br /&gt;
On the GNU/Linux host you can use the following command to download the dfu-util:&lt;br /&gt;
 wget http://downloads.openmoko.org/releases/Freerunner/dfu-util&lt;br /&gt;
&lt;br /&gt;
Afterwards you have to change the rights on the file:&lt;br /&gt;
 chmod a+x dfu-util&lt;br /&gt;
&lt;br /&gt;
==== from Windows ====&lt;br /&gt;
&lt;br /&gt;
You can download the flashing tool for a Windows host from: [http://projects.openmoko.org/frs/?group_id=166&amp;amp;release_id=162 http://projects.openmoko.org/frs/?group_id=166&amp;amp;release_id=162] (see installation instructions at [[Dfu-util-windows]])&lt;br /&gt;
&lt;br /&gt;
==== Using dfu-util ====&lt;br /&gt;
&lt;br /&gt;
Dfu-util will be used like this, to write an image file to a (predefined) &amp;quot;partition name&amp;quot; (referred to as ''Altsetting'' in dfu-util help/manual) :&lt;br /&gt;
&lt;br /&gt;
 ./dfu-util -a (partion name) -R -D (download image file name)&lt;br /&gt;
&lt;br /&gt;
{{note| The meaning of the parameters you specified:&lt;br /&gt;
-a  --alt alt : Specify the Altsetting of the DFU interface by name or by number&amp;lt;br&amp;gt;&lt;br /&gt;
-R  --reset : Issue USB Reset signalling once we're finished&amp;lt;br&amp;gt;&lt;br /&gt;
-D  --download file : Write firmware from&amp;lt;file&amp;gt; into device &amp;lt;br&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Flashing the Kernel===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0%; margin:0em 0em 1em 0em; border:0px solid #ffffff; background:#ffffff; width:100%;floating=&amp;quot;center&amp;quot;;font-weight: normal; &amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#ffffff;border-left:1px solid #ffffff;border-right:1px ; border-top:2px solid #ffffff; border:1px solid #ffffff; width:75%;font-weight: normal; &amp;quot; |  &lt;br /&gt;
&amp;lt;div align=&amp;quot;left&amp;quot;&amp;gt;&lt;br /&gt;
[[Image:menu15.jpg|thumb|Log into U-Boot in NOR Flash, connect your Neo with Linux Host via USB cable]]&lt;br /&gt;
&lt;br /&gt;
The Neo FreeRunner needs to be at the NOR uBoot menu for flashing. For more information on booting, see [[Booting the Neo FreeRunner| booting the Neo Freerunner]] (in short: press and hold aux then power). Log into the NOR uBoot menu and just stay there, do not select or enter any item in menu. Now you will be able to flash, make backups of your Freerunner or query the Freerunner with dfu-util.&lt;br /&gt;
&lt;br /&gt;
'''Then''', connect your Neo to the GNU/Linux or Windows host via USB cable.&lt;br /&gt;
&lt;br /&gt;
You can download the kernel from &lt;br /&gt;
http://downloads.openmoko.org/releases/Freerunner/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==== from GNU/Linux ====&lt;br /&gt;
&lt;br /&gt;
Type in the following command in the terminal on a GNU/Linux host. On some systems you need to be root before this will work and on Ubuntu you must preface the command with &amp;quot;sudo&amp;quot; or you will get the following error: &amp;quot;Cannot claim interface: could not claim interface 2: Operation not permitted&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 sudo ./dfu-util -a kernel -R -D uImage-2.6.24+git20080424-om-gta02.bin&lt;br /&gt;
&lt;br /&gt;
==== from Windows ====&lt;br /&gt;
&lt;br /&gt;
Type in the following command in the console on a Windows host:&lt;br /&gt;
&lt;br /&gt;
 dfu-util -a kernel -R -D uImage-2.6.24+git20080424-om-gta02.bin&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Press Enter to execute the command.&lt;br /&gt;
&lt;br /&gt;
When flashing succeeds the following will be shown:&lt;br /&gt;
&lt;br /&gt;
 status(0) = No error condition is present&lt;br /&gt;
 Done!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Flashing the Root Filesystem ===&lt;br /&gt;
You can download the root filesystem from:&lt;br /&gt;
http://downloads.openmoko.org/releases/Freerunner/&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== from GNU/Linux ====&lt;br /&gt;
&lt;br /&gt;
Type the following command in the terminal of a GNU/Linux host. On some systems you will need to be root.&lt;br /&gt;
&lt;br /&gt;
 ./dfu-util -a rootfs -R -D openmoko-devel-image-fic-gta02.jffs2&lt;br /&gt;
&lt;br /&gt;
==== from Windows ====&lt;br /&gt;
&lt;br /&gt;
Type the following command in the console of a Windows host.&lt;br /&gt;
&lt;br /&gt;
 dfu-util -a rootfs -R -D openmoko-devel-image-fic-gta02.jffs2&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
When flashing succeeds the following will be shown:&lt;br /&gt;
&lt;br /&gt;
 status(0) = No error condition is present&lt;br /&gt;
 Done!&lt;br /&gt;
&lt;br /&gt;
=== Flashing u-boot ===&lt;br /&gt;
 dfu-util -a u-boot -R -D uboot-gta02v5-latest.bin&lt;br /&gt;
&lt;br /&gt;
[[Category:Flashing Openmoko| ]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Latest_Images</id>
		<title>Latest Images</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Latest_Images"/>
				<updated>2008-07-28T01:18:08Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* ASU (April|August Software Update) qtopia-based Image */ Prettier link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended to summarize in one place the various images you can try out on your Openmoko Neo FreeRunner (GTA02) or 1973 (GTA01).  Note however, that some of these are works in progress and may not have even released any files yet.  Nothing is guaranteed to work.  Proceed at your own risk.&lt;br /&gt;
&lt;br /&gt;
;See [[Distributions]] for a chart comparing the features of the various images.&lt;br /&gt;
&lt;br /&gt;
Michael Lauer's blog also has an entry comparing the distributions: [http://www.vanille-media.de/site/index.php/2008/06/28/gtk-asu-fso-tmtla/ GTK, ASU, FSO? TMTLA!]&lt;br /&gt;
&lt;br /&gt;
Instructions on flashing your FreeRunner or 1973 are provided at [[Flashing the Neo FreeRunner]] and [[Getting Started with your Neo1973]], respectively.&lt;br /&gt;
----&lt;br /&gt;
==2007.2 GTK Image==&lt;br /&gt;
The latest most stable release should reside here:&lt;br /&gt;
[http://buildhost.openmoko.org/releases/Freerunner/ http://buildhost.openmoko.org/releases/Freerunner/]&lt;br /&gt;
&lt;br /&gt;
*You can download the latest daily builds here:&lt;br /&gt;
**For Neo FreeRunner [http://buildhost.openmoko.org/daily/freerunner/ http://buildhost.openmoko.org/daily/freerunner/]&lt;br /&gt;
***Look for files of the form: Openmoko-openmoko-devel-image-glibc-ipk-P1-Snapshot-YYYYMMDD-om-gta02.rootfs.tar.gz&lt;br /&gt;
***and: openmoko-devel-image-om-gta02.tar.gz&lt;br /&gt;
**For Neo 1973 the link is [http://buildhost.openmoko.org/daily/neo1973/ http://buildhost.openmoko.org/daily/neo1973/]&lt;br /&gt;
***Look for files of the form: openmoko-devel-image-om-gta01.tar.gz&lt;br /&gt;
***and: Openmoko-openmoko-devel-image-glibc-ipk-P1-Snapshot-YYYYMMDD-om-gta01.rootfs.tar.gz&lt;br /&gt;
**Tools, like dfu-util and openocd [http://buildhost.openmoko.org/daily/tools/ http://buildhost.openmoko.org/daily/tools/]&lt;br /&gt;
&lt;br /&gt;
Several videos of this stack by [http://uk.youtube.com/user/freeyourphone Youtube user freeyourphone]&lt;br /&gt;
and [http://uk.youtube.com/watch?v=U05kZfURPig&amp;amp;NR=1 video review by BVB Tech]&lt;br /&gt;
=== ScaredyCat ===&lt;br /&gt;
Users may have heard of &amp;quot;ScaredyCat&amp;quot; images. These are usable images created by [http://blog.automated.it/category/openmoko/ Andy Powell] and are currently based on the 2007.02 software stack.&lt;br /&gt;
&lt;br /&gt;
 Hey, all file names are with &amp;quot;gta01&amp;quot; !&lt;br /&gt;
 Is this an error and they are gta02 (FR) ??&lt;br /&gt;
&lt;br /&gt;
 scroll down a bit, or search for gta02 on the page.  they're there, just not on the first page. (ozzloy)&lt;br /&gt;
&lt;br /&gt;
http://buildhost.automated.it/OM2007.2/&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==ASU (April|August Software Update) qtopia-based Image==&lt;br /&gt;
There has not been a recommended release of the ASU yet. You may wish to review the [[ASU_Feature_Plan|ASU feature plan]] or some [http://dos.jogger.pl/2008/06/29/asu-to-przyszlosc/ screenshots]&lt;br /&gt;
&lt;br /&gt;
*You can download the latest daily builds here:&lt;br /&gt;
**For Neo FreeRunner [http://buildhost.openmoko.org/daily/freerunner/ http://buildhost.openmoko.org/daily/freerunner/]&lt;br /&gt;
***Look for files of the form: openmoko-qtopia-x11-image-om-gta02.tar.gz&lt;br /&gt;
***and: Openmoko-openmoko-qtopia-x11-image-glibc-ipk-P1-Snapshot-YYYYMMDD-om-gta02.rootfs.tar.gz&lt;br /&gt;
**For Neo 1973 the link is [http://buildhost.openmoko.org/daily/neo1973/ http://buildhost.openmoko.org/daily/neo1973/]&lt;br /&gt;
***Look for files of the form: openmoko-qtopia-x11-image-om-gta01.tar.gz&lt;br /&gt;
***and: Openmoko-openmoko-qtopia-x11-image-glibc-ipk-P1-Snapshot-YYYYMMDD-om-gta01.rootfs.tar.gz&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==FSO (FreeSmartPhone.org) Image==&lt;br /&gt;
Milestone 1 is here: [http://downloads.openmoko.org/framework/milestone1/ http://downloads.openmoko.org/framework/milestone1/]&lt;br /&gt;
&lt;br /&gt;
[http://www.youtube.com/watch?v=toPe0S8QpJY Video of FSO Milestone 1]&lt;br /&gt;
&lt;br /&gt;
Browse the source: [http://trac.freesmartphone.org:8000/trac-example/browser http://trac.freesmartphone.org:8000/trac-example/browser] &lt;br /&gt;
&lt;br /&gt;
Learn more at its wiki page: [[OpenmokoFramework]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Qtopia image from qtopia.net==&lt;br /&gt;
[http://www.qtopia.net/modules/mydownloads/index.php Qtopia.net images] for the &lt;br /&gt;
*Neo FreeRunner&lt;br /&gt;
**[http://www.qtopia.net/modules/mydownloads/visit.php?lid=67 Freerunner flash image] (qtopia-4.3.2-gta02-flash.tgz) &amp;lt;-- a tarball with both a rootfs and kernel&lt;br /&gt;
**and the [http://www.qtopia.net/modules/mydownloads/visit.php?lid=68 root file system (ficgta02-qtopia-developer-rootfs.tgz)]&lt;br /&gt;
*Neo 1973&lt;br /&gt;
**[http://qtopia.net/downloads/neo/qtopia-4.3.2-gta01-flash.tgz Neo 1973 flash image] (qtopia-4.3.2-gta01-flash.tgz) &amp;lt;-- a tarball with both a rootfs and kernel&lt;br /&gt;
**[http://www.qtopia.net/modules/mydownloads/visit.php?lid=39 Neo 1973 root file system] (Link temporarily broken.)&lt;br /&gt;
**A Neo 1973 image is also available from here [http://buildhost.automated.it/OM2007.2/openmoko-qtopia-image-om-gta01.tar.gz openmoko-qtopia-image-om-gta01.tar.gz]&lt;br /&gt;
*[http://www.qtopia.net/modules/mydownloads/viewcat.php?cid=6 Alternate download page]&lt;br /&gt;
*You might also try [http://trolltech.com/developer/downloads/qtopia/qtopia-source-gpl ftp.trolltech.com snapshots]&lt;br /&gt;
&lt;br /&gt;
Addtional packages can be added from the Trolltech feed for this image, found at&lt;br /&gt;
http://qtopia.net/packages/feed/4.3.2/neo/&lt;br /&gt;
To get to these packages, you need to add the feed as a source in the Qtopia package manager.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==SHR (Stable Hybrid Release) Image==&lt;br /&gt;
The Stable Hybrid Release (SHR) is intended to be a combination of the&lt;br /&gt;
FSO, some of the 2007.2 GTK software, and the ASU that provides all of&lt;br /&gt;
the functionality of the 2007.2 software, but with the stability of&lt;br /&gt;
the FSO and the new GUI toolkits provided by the ASU. It will probably&lt;br /&gt;
be based on an ASU build, with the FSO software and GTK end-user apps&lt;br /&gt;
added.&lt;br /&gt;
&lt;br /&gt;
The SHR doesn't exist anywhere but in a few people's heads at the moment (2008-07-05).  Hopefully, all the work in it will be integrated back into one of the other releases, and it will cease to exist.  The point is to get us a release with stable calls &amp;amp; suspend/resume, plus access to all those other nifty apps we had on 2007.2 and the ASU.&lt;br /&gt;
&lt;br /&gt;
Learn more at its wiki page: [[Stable_Hybrid_Release]]&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Debian==&lt;br /&gt;
See [[Debian]].&lt;br /&gt;
&lt;br /&gt;
==Copying a jffs2 image to ext2 to boot from microSD==&lt;br /&gt;
If you want to copy a rootfs jffs2 to a ext2 filesystem on an microSD card, see [[Userspace root image#Mounting the JFFS2 image on a loop back device (Block Memory MTD Emulation) | this]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Users_Repositories</id>
		<title>Users Repositories</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Users_Repositories"/>
				<updated>2008-07-27T18:34:12Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Unofficial builds */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you can find prebuilt kernels and root file systems.&lt;br /&gt;
&lt;br /&gt;
=Official downloads=&lt;br /&gt;
&lt;br /&gt;
==Recent/latest builds==&lt;br /&gt;
* Framework Testing Images&lt;br /&gt;
:http://downloads.openmoko.org/framework/&lt;br /&gt;
* OM2007.2 &lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/images/neo1973/?C=M;O=D&lt;br /&gt;
* OM2007.1 (Obsolete)&lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.1/tmp/deploy/images/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==Snapshots [http://downloads.openmoko.org/snapshots/]==&lt;br /&gt;
* 2007.11 - the latest (2nd Dec) snapshot ([http://lists.openmoko.org/pipermail/community/2007-December/011980.html from Mickey])&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.11/images/&lt;br /&gt;
* 2007.08 snapshot, as announced by Sean on August 19&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.08/images/&lt;br /&gt;
&lt;br /&gt;
==Daily==&lt;br /&gt;
* Unstable Daily-builds&lt;br /&gt;
:http://buildhost.openmoko.org/daily/&lt;br /&gt;
&lt;br /&gt;
==[[CommunityRepository|Community repository]]==&lt;br /&gt;
:http://downloads.openmoko.org/community-repository/&lt;br /&gt;
&lt;br /&gt;
=Unofficial builds=&lt;br /&gt;
&lt;br /&gt;
==[[User:ChooseOpen|ChooseOpen]]==&lt;br /&gt;
:http://chooseopen.com/openmoko/build/2007.2/?M=D&lt;br /&gt;
:http://chooseopen.com/openmoko/build/qtopia/?M=D (Qtopia)&lt;br /&gt;
&lt;br /&gt;
==[[User:Kevin_Dean|Kevin_Dean]]==&lt;br /&gt;
:http://downloads.openmoko.org/recommended/&lt;br /&gt;
:Latest recommended [[Snapshot review|snapshot review]]&lt;br /&gt;
&lt;br /&gt;
==[[User:ScaredyCat|ScaredyCat]]==&lt;br /&gt;
:http://buildhost.automated.it/OM2007.2/?M=D&lt;br /&gt;
&lt;br /&gt;
ScaredyCat also has a ipkg repository for 2007.2 where e.g. gpe-filemanager and a lot more (e.g. ntpd) can be installed from. On the Neo do:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/opkg&lt;br /&gt;
 wget http://buildhost.automated.it/scaredycat.conf &lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install gpe-filemanager&lt;br /&gt;
 opkg install gpe-timesheet&lt;br /&gt;
 opkg install gpe-todo&lt;br /&gt;
 opkg install mysql&lt;br /&gt;
 opkg install mtpaint&lt;br /&gt;
 opkg install sqlite&lt;br /&gt;
 opkg install ntp&lt;br /&gt;
 #(you get the idea)&lt;br /&gt;
 /etc/init.d/xserver-nodm restart    # to make the new applications appear in the menu&lt;br /&gt;
&lt;br /&gt;
=='''mwester''' unofficial builds==&lt;br /&gt;
:http://moko.mwester.net/&lt;br /&gt;
&lt;br /&gt;
==celtune==&lt;br /&gt;
:http://rabenfrost.net/celtune/?C=M;O=D&lt;br /&gt;
:http://rabenfrost.net/celtune/ipk/&lt;br /&gt;
&lt;br /&gt;
Celtune offers Standard-Builds (.jffs2, .tar.gz, .bin, .ipk) and several special-images with additional packages (e.g. monster-images,navigation-images,...)&lt;br /&gt;
For more info take a look at http://rabenfrost.net/celtune/1-NEWS-WARNING-INFO &lt;br /&gt;
You can find images, kernels and packages for other devices too on http://rabenfrost.net/celtune/ (e.g. HTC-Blueangel, Asus730W ...)&lt;br /&gt;
A huge number of packages is located at http://rabenfrost.net/celtune/ipk/  &lt;br /&gt;
Use the following line to add celtune's feed to your neo: &lt;br /&gt;
 cd /etc/opkg &amp;amp;&amp;amp; wget http://rabenfrost.net/celtune/celtune-rabenfrost.conf&lt;br /&gt;
&lt;br /&gt;
If you want to add a link, it would be nice to enforce a standard format of these feeds so that they can be browsed automatically.&lt;br /&gt;
&lt;br /&gt;
=== Angstrom Repository ===&lt;br /&gt;
If there's a package you need that is missing from the feeds listed above you can search the Angstrom repo [http://www.angstrom-distribution.org/repo/ here].&lt;br /&gt;
&lt;br /&gt;
To add the unstable Angstrom feed, update your /etc/ipkg/base-feeds.conf to include a line:&lt;br /&gt;
&lt;br /&gt;
 src/gz base http://www.angstrom-distribution.org/unstable/feed/armv4t/base/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Users_Repositories</id>
		<title>Users Repositories</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Users_Repositories"/>
				<updated>2008-07-27T18:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* - (2007.2) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you can find prebuilt kernels and root file systems.&lt;br /&gt;
&lt;br /&gt;
=Official downloads=&lt;br /&gt;
&lt;br /&gt;
==Recent/latest builds==&lt;br /&gt;
* Framework Testing Images&lt;br /&gt;
:http://downloads.openmoko.org/framework/&lt;br /&gt;
* OM2007.2 &lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/images/neo1973/?C=M;O=D&lt;br /&gt;
* OM2007.1 (Obsolete)&lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.1/tmp/deploy/images/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==Snapshots [http://downloads.openmoko.org/snapshots/]==&lt;br /&gt;
* 2007.11 - the latest (2nd Dec) snapshot ([http://lists.openmoko.org/pipermail/community/2007-December/011980.html from Mickey])&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.11/images/&lt;br /&gt;
* 2007.08 snapshot, as announced by Sean on August 19&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.08/images/&lt;br /&gt;
&lt;br /&gt;
==Daily==&lt;br /&gt;
* Unstable Daily-builds&lt;br /&gt;
:http://buildhost.openmoko.org/daily/&lt;br /&gt;
&lt;br /&gt;
==[[CommunityRepository|Community repository]]==&lt;br /&gt;
:http://downloads.openmoko.org/community-repository/&lt;br /&gt;
&lt;br /&gt;
=Unofficial builds=&lt;br /&gt;
&lt;br /&gt;
==[[User:ChooseOpen|ChooseOpen]]==&lt;br /&gt;
:http://chooseopen.com/openmoko/build/2007.2/?M=D&lt;br /&gt;
:http://chooseopen.com/openmoko/build/qtopia/?M=D (Qtopia)&lt;br /&gt;
&lt;br /&gt;
==[[User:Kevin_Dean|Kevin_Dean]]==&lt;br /&gt;
:http://downloads.openmoko.org/recommended/&lt;br /&gt;
:Latest recommended [[Snapshot review|snapshot review]]&lt;br /&gt;
&lt;br /&gt;
==[[User:ScaredyCat|ScaredyCat]]==&lt;br /&gt;
:http://buildhost.automated.it/OM2007.2/?M=D&lt;br /&gt;
&lt;br /&gt;
ScaredyCat also has a ipkg repository for 2007.2 where e.g. gpe-filemanager and a lot more (e.g. ntpd) can be installed from. On the Neo do:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/opkg&lt;br /&gt;
 wget http://buildhost.automated.it/scaredycat.conf &lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install gpe-filemanager&lt;br /&gt;
 opkg install gpe-timesheet&lt;br /&gt;
 opkg install gpe-todo&lt;br /&gt;
 opkg install mysql&lt;br /&gt;
 opkg install mtpaint&lt;br /&gt;
 opkg install sqlite&lt;br /&gt;
 opkg install ntp&lt;br /&gt;
 #(you get the idea)&lt;br /&gt;
 /etc/init.d/xserver-nodm restart    # to make the new applications appear in the menu&lt;br /&gt;
&lt;br /&gt;
=='''mwester''' unofficial builds==&lt;br /&gt;
:http://moko.mwester.net/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==celtune==&lt;br /&gt;
:http://rabenfrost.net/celtune/?C=M;O=D&lt;br /&gt;
:http://rabenfrost.net/celtune/ipk/&lt;br /&gt;
&lt;br /&gt;
Celtune offers Standard-Builds (.jffs2, .tar.gz, .bin, .ipk) and several special-images with additional packages (e.g. monster-images,navigation-images,...)&lt;br /&gt;
For more info take a look at http://rabenfrost.net/celtune/1-NEWS-WARNING-INFO &lt;br /&gt;
You can find images, kernels and packages for other devices too on http://rabenfrost.net/celtune/ (e.g. HTC-Blueangel, Asus730W ...)&lt;br /&gt;
A huge number of packages is located at http://rabenfrost.net/celtune/ipk/  &lt;br /&gt;
Use the following line to add celtune's feed to your neo: &lt;br /&gt;
 cd /etc/opkg &amp;amp;&amp;amp; wget http://rabenfrost.net/celtune/celtune-rabenfrost.conf&lt;br /&gt;
&lt;br /&gt;
If you want to add a link, it would be nice to enforce a standard format of these feeds so that they can be browsed automatically.&lt;br /&gt;
&lt;br /&gt;
=== Angstrom Repository ===&lt;br /&gt;
If there's a package you need that is missing from the feeds listed above you can search the Angstrom repo [http://www.angstrom-distribution.org/repo/ here].&lt;br /&gt;
&lt;br /&gt;
To add the unstable Angstrom feed, update your /etc/ipkg/base-feeds.conf to include a line:&lt;br /&gt;
&lt;br /&gt;
 src/gz base http://www.angstrom-distribution.org/unstable/feed/armv4t/base/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Users_Repositories</id>
		<title>Users Repositories</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Users_Repositories"/>
				<updated>2008-07-27T18:33:04Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* ChooseOpen */ Fixed broken links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you can find prebuilt kernels and root file systems.&lt;br /&gt;
&lt;br /&gt;
=Official downloads=&lt;br /&gt;
&lt;br /&gt;
==Recent/latest builds==&lt;br /&gt;
* Framework Testing Images&lt;br /&gt;
:http://downloads.openmoko.org/framework/&lt;br /&gt;
* OM2007.2 &lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/images/neo1973/?C=M;O=D&lt;br /&gt;
* OM2007.1 (Obsolete)&lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.1/tmp/deploy/images/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==Snapshots [http://downloads.openmoko.org/snapshots/]==&lt;br /&gt;
* 2007.11 - the latest (2nd Dec) snapshot ([http://lists.openmoko.org/pipermail/community/2007-December/011980.html from Mickey])&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.11/images/&lt;br /&gt;
* 2007.08 snapshot, as announced by Sean on August 19&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.08/images/&lt;br /&gt;
&lt;br /&gt;
==Daily==&lt;br /&gt;
* Unstable Daily-builds&lt;br /&gt;
:http://buildhost.openmoko.org/daily/&lt;br /&gt;
&lt;br /&gt;
==[[CommunityRepository|Community repository]]==&lt;br /&gt;
:http://downloads.openmoko.org/community-repository/&lt;br /&gt;
&lt;br /&gt;
=Unofficial builds=&lt;br /&gt;
&lt;br /&gt;
==[[User:ChooseOpen|ChooseOpen]]==&lt;br /&gt;
:http://chooseopen.com/openmoko/build/2007.2/?M=D&lt;br /&gt;
:http://chooseopen.com/openmoko/build/qtopia/?M=D (Qtopia)&lt;br /&gt;
&lt;br /&gt;
==[[User:Kevin_Dean|Kevin_Dean]]==&lt;br /&gt;
:http://downloads.openmoko.org/recommended/&lt;br /&gt;
:Latest recommended [[Snapshot review|snapshot review]]&lt;br /&gt;
&lt;br /&gt;
==[[User:ScaredyCat|ScaredyCat]]==&lt;br /&gt;
:http://buildhost.automated.it/OM2007.2/?M=D&lt;br /&gt;
&lt;br /&gt;
ScaredyCat also has a ipkg repository for 2007.2 where e.g. gpe-filemanager and a lot more (e.g. ntpd) can be installed from. On the Neo do:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/opkg&lt;br /&gt;
 wget http://buildhost.automated.it/scaredycat.conf &lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install gpe-filemanager&lt;br /&gt;
 opkg install gpe-timesheet&lt;br /&gt;
 opkg install gpe-todo&lt;br /&gt;
 opkg install mysql&lt;br /&gt;
 opkg install mtpaint&lt;br /&gt;
 opkg install sqlite&lt;br /&gt;
 opkg install ntp&lt;br /&gt;
 #(you get the idea)&lt;br /&gt;
 /etc/init.d/xserver-nodm restart    # to make the new applications appear in the menu&lt;br /&gt;
&lt;br /&gt;
=='''mwester''' unofficial builds==&lt;br /&gt;
:http://moko.mwester.net/&lt;br /&gt;
&lt;br /&gt;
==- (2007.2)==&lt;br /&gt;
:http://www.totalueberwachung.de/~alphaone/openmoko-build/glibc/images/fic-gta01/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==celtune==&lt;br /&gt;
:http://rabenfrost.net/celtune/?C=M;O=D&lt;br /&gt;
:http://rabenfrost.net/celtune/ipk/&lt;br /&gt;
&lt;br /&gt;
Celtune offers Standard-Builds (.jffs2, .tar.gz, .bin, .ipk) and several special-images with additional packages (e.g. monster-images,navigation-images,...)&lt;br /&gt;
For more info take a look at http://rabenfrost.net/celtune/1-NEWS-WARNING-INFO &lt;br /&gt;
You can find images, kernels and packages for other devices too on http://rabenfrost.net/celtune/ (e.g. HTC-Blueangel, Asus730W ...)&lt;br /&gt;
A huge number of packages is located at http://rabenfrost.net/celtune/ipk/  &lt;br /&gt;
Use the following line to add celtune's feed to your neo: &lt;br /&gt;
 cd /etc/opkg &amp;amp;&amp;amp; wget http://rabenfrost.net/celtune/celtune-rabenfrost.conf&lt;br /&gt;
&lt;br /&gt;
If you want to add a link, it would be nice to enforce a standard format of these feeds so that they can be browsed automatically.&lt;br /&gt;
&lt;br /&gt;
=== Angstrom Repository ===&lt;br /&gt;
If there's a package you need that is missing from the feeds listed above you can search the Angstrom repo [http://www.angstrom-distribution.org/repo/ here].&lt;br /&gt;
&lt;br /&gt;
To add the unstable Angstrom feed, update your /etc/ipkg/base-feeds.conf to include a line:&lt;br /&gt;
&lt;br /&gt;
 src/gz base http://www.angstrom-distribution.org/unstable/feed/armv4t/base/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Users_Repositories</id>
		<title>Users Repositories</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Users_Repositories"/>
				<updated>2008-07-27T18:21:35Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Official downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you can find prebuilt kernels and root file systems.&lt;br /&gt;
&lt;br /&gt;
=Official downloads=&lt;br /&gt;
&lt;br /&gt;
==Recent/latest builds==&lt;br /&gt;
* Framework Testing Images&lt;br /&gt;
:http://downloads.openmoko.org/framework/&lt;br /&gt;
* OM2007.2 &lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/images/neo1973/?C=M;O=D&lt;br /&gt;
* OM2007.1 (Obsolete)&lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.1/tmp/deploy/images/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==Snapshots [http://downloads.openmoko.org/snapshots/]==&lt;br /&gt;
* 2007.11 - the latest (2nd Dec) snapshot ([http://lists.openmoko.org/pipermail/community/2007-December/011980.html from Mickey])&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.11/images/&lt;br /&gt;
* 2007.08 snapshot, as announced by Sean on August 19&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.08/images/&lt;br /&gt;
&lt;br /&gt;
==Daily==&lt;br /&gt;
* Unstable Daily-builds&lt;br /&gt;
:http://buildhost.openmoko.org/daily/&lt;br /&gt;
&lt;br /&gt;
==[[CommunityRepository|Community repository]]==&lt;br /&gt;
:http://downloads.openmoko.org/community-repository/&lt;br /&gt;
&lt;br /&gt;
=Unofficial builds=&lt;br /&gt;
&lt;br /&gt;
==[[User:ChooseOpen|ChooseOpen]]==&lt;br /&gt;
:http://chooseopen.com:81/openmoko/build/2007.2/?M=D&lt;br /&gt;
:http://chooseopen.com:81/openmoko/build/qtopia/?M=D (Qtopia)&lt;br /&gt;
&lt;br /&gt;
==[[User:Kevin_Dean|Kevin_Dean]]==&lt;br /&gt;
:http://downloads.openmoko.org/recommended/&lt;br /&gt;
:Latest recommended [[Snapshot review|snapshot review]]&lt;br /&gt;
&lt;br /&gt;
==[[User:ScaredyCat|ScaredyCat]]==&lt;br /&gt;
:http://buildhost.automated.it/OM2007.2/?M=D&lt;br /&gt;
&lt;br /&gt;
ScaredyCat also has a ipkg repository for 2007.2 where e.g. gpe-filemanager and a lot more (e.g. ntpd) can be installed from. On the Neo do:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/opkg&lt;br /&gt;
 wget http://buildhost.automated.it/scaredycat.conf &lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install gpe-filemanager&lt;br /&gt;
 opkg install gpe-timesheet&lt;br /&gt;
 opkg install gpe-todo&lt;br /&gt;
 opkg install mysql&lt;br /&gt;
 opkg install mtpaint&lt;br /&gt;
 opkg install sqlite&lt;br /&gt;
 opkg install ntp&lt;br /&gt;
 #(you get the idea)&lt;br /&gt;
 /etc/init.d/xserver-nodm restart    # to make the new applications appear in the menu&lt;br /&gt;
&lt;br /&gt;
=='''mwester''' unofficial builds==&lt;br /&gt;
:http://moko.mwester.net/&lt;br /&gt;
&lt;br /&gt;
==- (2007.2)==&lt;br /&gt;
:http://www.totalueberwachung.de/~alphaone/openmoko-build/glibc/images/fic-gta01/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==celtune==&lt;br /&gt;
:http://rabenfrost.net/celtune/?C=M;O=D&lt;br /&gt;
:http://rabenfrost.net/celtune/ipk/&lt;br /&gt;
&lt;br /&gt;
Celtune offers Standard-Builds (.jffs2, .tar.gz, .bin, .ipk) and several special-images with additional packages (e.g. monster-images,navigation-images,...)&lt;br /&gt;
For more info take a look at http://rabenfrost.net/celtune/1-NEWS-WARNING-INFO &lt;br /&gt;
You can find images, kernels and packages for other devices too on http://rabenfrost.net/celtune/ (e.g. HTC-Blueangel, Asus730W ...)&lt;br /&gt;
A huge number of packages is located at http://rabenfrost.net/celtune/ipk/  &lt;br /&gt;
Use the following line to add celtune's feed to your neo: &lt;br /&gt;
 cd /etc/opkg &amp;amp;&amp;amp; wget http://rabenfrost.net/celtune/celtune-rabenfrost.conf&lt;br /&gt;
&lt;br /&gt;
If you want to add a link, it would be nice to enforce a standard format of these feeds so that they can be browsed automatically.&lt;br /&gt;
&lt;br /&gt;
=== Angstrom Repository ===&lt;br /&gt;
If there's a package you need that is missing from the feeds listed above you can search the Angstrom repo [http://www.angstrom-distribution.org/repo/ here].&lt;br /&gt;
&lt;br /&gt;
To add the unstable Angstrom feed, update your /etc/ipkg/base-feeds.conf to include a line:&lt;br /&gt;
&lt;br /&gt;
 src/gz base http://www.angstrom-distribution.org/unstable/feed/armv4t/base/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Users_Repositories</id>
		<title>Users Repositories</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Users_Repositories"/>
				<updated>2008-07-27T18:19:50Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: Reformatted using headings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here you can find prebuilt kernels and root file systems.&lt;br /&gt;
&lt;br /&gt;
=Official downloads=&lt;br /&gt;
&lt;br /&gt;
==Recent/latest builds==&lt;br /&gt;
* Framework Testing Images&lt;br /&gt;
:http://downloads.openmoko.org/framework/&lt;br /&gt;
* OM2007.2 &lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/images/neo1973/?C=M;O=D&lt;br /&gt;
* OM2007.1 (Obsolete)&lt;br /&gt;
:http://buildhost.openmoko.org/OM2007.1/tmp/deploy/images/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==Snapshots [http://downloads.openmoko.org/snapshots/]==&lt;br /&gt;
* 2007.11 - the latest (2nd Dec) snapshot ([http://lists.openmoko.org/pipermail/community/2007-December/011980.html from Mickey])&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.11/images/&lt;br /&gt;
* 2007.08 snapshot, as announced by Sean on August 19&lt;br /&gt;
:http://downloads.openmoko.org/snapshots/2007.08/images/&lt;br /&gt;
&lt;br /&gt;
==Daily==&lt;br /&gt;
* Unstable Daily-builds&lt;br /&gt;
:http://buildhost.openmoko.org/daily/&lt;br /&gt;
&lt;br /&gt;
=Unofficial builds=&lt;br /&gt;
&lt;br /&gt;
==[[User:ChooseOpen|ChooseOpen]]==&lt;br /&gt;
:http://chooseopen.com:81/openmoko/build/2007.2/?M=D&lt;br /&gt;
:http://chooseopen.com:81/openmoko/build/qtopia/?M=D (Qtopia)&lt;br /&gt;
&lt;br /&gt;
==[[User:Kevin_Dean|Kevin_Dean]]==&lt;br /&gt;
:http://downloads.openmoko.org/recommended/&lt;br /&gt;
:Latest recommended [[Snapshot review|snapshot review]]&lt;br /&gt;
&lt;br /&gt;
==[[User:ScaredyCat|ScaredyCat]]==&lt;br /&gt;
:http://buildhost.automated.it/OM2007.2/?M=D&lt;br /&gt;
&lt;br /&gt;
ScaredyCat also has a ipkg repository for 2007.2 where e.g. gpe-filemanager and a lot more (e.g. ntpd) can be installed from. On the Neo do:&lt;br /&gt;
&lt;br /&gt;
 cd /etc/opkg&lt;br /&gt;
 wget http://buildhost.automated.it/scaredycat.conf &lt;br /&gt;
 opkg update&lt;br /&gt;
 opkg install gpe-filemanager&lt;br /&gt;
 opkg install gpe-timesheet&lt;br /&gt;
 opkg install gpe-todo&lt;br /&gt;
 opkg install mysql&lt;br /&gt;
 opkg install mtpaint&lt;br /&gt;
 opkg install sqlite&lt;br /&gt;
 opkg install ntp&lt;br /&gt;
 #(you get the idea)&lt;br /&gt;
 /etc/init.d/xserver-nodm restart    # to make the new applications appear in the menu&lt;br /&gt;
&lt;br /&gt;
=='''mwester''' unofficial builds==&lt;br /&gt;
:http://moko.mwester.net/&lt;br /&gt;
&lt;br /&gt;
==- (2007.2)==&lt;br /&gt;
:http://www.totalueberwachung.de/~alphaone/openmoko-build/glibc/images/fic-gta01/?C=M;O=D&lt;br /&gt;
&lt;br /&gt;
==celtune==&lt;br /&gt;
:http://rabenfrost.net/celtune/?C=M;O=D&lt;br /&gt;
:http://rabenfrost.net/celtune/ipk/&lt;br /&gt;
&lt;br /&gt;
Celtune offers Standard-Builds (.jffs2, .tar.gz, .bin, .ipk) and several special-images with additional packages (e.g. monster-images,navigation-images,...)&lt;br /&gt;
For more info take a look at http://rabenfrost.net/celtune/1-NEWS-WARNING-INFO &lt;br /&gt;
You can find images, kernels and packages for other devices too on http://rabenfrost.net/celtune/ (e.g. HTC-Blueangel, Asus730W ...)&lt;br /&gt;
A huge number of packages is located at http://rabenfrost.net/celtune/ipk/  &lt;br /&gt;
Use the following line to add celtune's feed to your neo: &lt;br /&gt;
 cd /etc/opkg &amp;amp;&amp;amp; wget http://rabenfrost.net/celtune/celtune-rabenfrost.conf&lt;br /&gt;
&lt;br /&gt;
If you want to add a link, it would be nice to enforce a standard format of these feeds so that they can be browsed automatically.&lt;br /&gt;
&lt;br /&gt;
=== Angstrom Repository ===&lt;br /&gt;
If there's a package you need that is missing from the feeds listed above you can search the Angstrom repo [http://www.angstrom-distribution.org/repo/ here].&lt;br /&gt;
&lt;br /&gt;
To add the unstable Angstrom feed, update your /etc/ipkg/base-feeds.conf to include a line:&lt;br /&gt;
&lt;br /&gt;
 src/gz base http://www.angstrom-distribution.org/unstable/feed/armv4t/base/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/SHR_Development</id>
		<title>SHR Development</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/SHR_Development"/>
				<updated>2008-07-22T01:46:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Building openmoko-dialer3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Building openmoko-dialer3 ==&lt;br /&gt;
Currently this is the only package of any size being developed for SHR, and it's the only one with any instructions.  If you start another SHR project (please check with [[User:Wurp|Bobby]] before starting one), put instructions for working on the project here!&lt;br /&gt;
&lt;br /&gt;
=== Before beginning ===&lt;br /&gt;
You must build openembedded before you can build SHR packages.  The easiest way is to go to http://wiki.openmoko.org/wiki/Mokomakefile and build using the instructions for FSO.&lt;br /&gt;
&lt;br /&gt;
The rest of these instructions are written assuming that you used Mokomakefile and that the directory you downloaded the base Makefile into (using wget) is $MOKO.&lt;br /&gt;
&lt;br /&gt;
You must also download the SHR code using subversion.  See http://projects.openmoko.org/projects/shr.  We will refer to the directory to which you downloaded the project as $SHRSVN.  (This directory should contain $SHRSVN/packages/openmoko-dialer3.bb)&lt;br /&gt;
&lt;br /&gt;
=== Set up your BBPATH ===&lt;br /&gt;
&lt;br /&gt;
  export BBPATH=.:$MOKO/openembedded/:$MOKO/bitbake/:$MOKO/:$SHRSVN/trunk/packages/&lt;br /&gt;
&lt;br /&gt;
=== Set up the CACHE ===&lt;br /&gt;
&lt;br /&gt;
  export CACHE=tmp/cache&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Set up your local.conf ===&lt;br /&gt;
Cd to your selected build directory.&lt;br /&gt;
&lt;br /&gt;
Create a directory under your current directory called 'conf'.&lt;br /&gt;
&lt;br /&gt;
  cp $MOKO/openembedded/conf/local.conf conf/local.conf.&lt;br /&gt;
&lt;br /&gt;
Append the following lines to your local.conf:&lt;br /&gt;
  BBFILES += &amp;quot;$SHRSVN/trunk/packages/*.bb $MOKO/openembedded/packages/*/*.bb&amp;quot;&lt;br /&gt;
  SELECTED_OPTIMIZATION = &amp;quot;-Os -g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Note: Spaces are important in your bitbake conf files!  You must have spaces before &amp;amp; after the = or +=''&lt;br /&gt;
&lt;br /&gt;
=== Add your cross-compiler to your PATH ===&lt;br /&gt;
&lt;br /&gt;
  export PATH=$MOKO/build/tmp/cross/bin/:$MOKO/build/tmp/staging/x86_64-linux/usr/bin:$PATH&lt;br /&gt;
&lt;br /&gt;
=== Run bitbake ===&lt;br /&gt;
&lt;br /&gt;
  bitbake openmoko-dialer3&lt;br /&gt;
&lt;br /&gt;
=== To recompile, and only recompile ===&lt;br /&gt;
&lt;br /&gt;
   bitbake -c compile -b $SHRSVN/trunk/packages/openmoko-dialer3.bb&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
&lt;br /&gt;
==== General ====&lt;br /&gt;
One thing to try is to unset all environment variables not listed in this page.  LIBPATH and INCLUDE can be particularly troublesome.&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:SHR]]&lt;br /&gt;
[[Category:SHR Devel]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Change_matchbox_keyboard_layout</id>
		<title>Change matchbox keyboard layout</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Change_matchbox_keyboard_layout"/>
				<updated>2008-07-21T00:57:32Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Change matchbox keyboard layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Change_keyboard_layout}}&lt;br /&gt;
&lt;br /&gt;
== Change matchbox keyboard layout ==&lt;br /&gt;
&lt;br /&gt;
If you have the matchbox-keyboard installed (see [[Switching_Keyboards#Matchbox_keyboard|here]] for installation instructions) you can change the layout.&lt;br /&gt;
In /usr/share/matchbox-keyboard/ are the keyboard-files in xml format&lt;br /&gt;
just take one an copy it to your home-directory&lt;br /&gt;
&lt;br /&gt;
 mkdir /home/root/.matchbox&lt;br /&gt;
 cp /usr/share/matchbox-keyboard/keyboard.xml /home/root/.matchbox/&lt;br /&gt;
&lt;br /&gt;
so now you can change the layout of the keyboard by changing this file&lt;br /&gt;
you could add also more than one layout in that file and you can change this on-the-fly by using&lt;br /&gt;
this button on your keyboard [-&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
for example here is my keyboard.xml with german QWERTZ layout, numblock layout and default layout&lt;br /&gt;
just copy it to your home directory, rename it to keyboard.xml and have fun &lt;br /&gt;
&lt;br /&gt;
[[Image:Keyboard.xml]]&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;keyboard&amp;gt;&lt;br /&gt;
 &amp;lt;options&amp;gt;&lt;br /&gt;
 &amp;lt;/options&amp;gt;&lt;br /&gt;
 &amp;lt;layout id=&amp;quot;german keyboard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Esc&amp;quot; action=&amp;quot;escape&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;^&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;°&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;!&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display='&amp;quot;' /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;²&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;§&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;³&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;$&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;5&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;%&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;6&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;&amp;amp;amp;amp;&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;7&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;/&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;{&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;8&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;(&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;[&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;9&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;)&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;]&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;=&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;}&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;?&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;ß&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;\&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;'&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
  &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;default display=&amp;quot;⌫&amp;quot; action=&amp;quot;backspace&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Home&amp;quot; action=&amp;quot;home&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;PgUp&amp;quot; action=&amp;quot;pageup&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;↹&amp;quot; action=&amp;quot;tab&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;q&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Q&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;@&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;w&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;W&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;mod1 display=&amp;quot;€&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;default    display=&amp;quot;e&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;E&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;r&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;R&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;t&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;T&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;z&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Z&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;u&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;U&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;i&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;I&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;o&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;O&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;p&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;P&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;ü&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Ü&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;+&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;*&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;~&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;◀┛&amp;quot; action=&amp;quot;return&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;default display=&amp;quot;End&amp;quot; action=&amp;quot;end&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;PgDn&amp;quot; action=&amp;quot;pagedown&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Caps&amp;quot; action=&amp;quot;modifier:caps&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;a&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;A&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;s&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;S&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;d&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;D&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;f&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;F&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;g&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;G&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;h&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;H&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;j&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;J&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;k&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;K&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;l&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;L&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;ö&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Ö&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;ä&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Ä&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;#&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;'&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;◀┛&amp;quot; action=&amp;quot;return&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Shift&amp;quot; action=&amp;quot;modifier:shift&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;&amp;amp;amp;lt;&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;&amp;amp;amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;|&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;y&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Y&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;x&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;X&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;c&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;C&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;v&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;V&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;b&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;B&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;n&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;N&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;m&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;M&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1 display=&amp;quot;µ&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;,&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;;&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;:&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;-&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;_&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Shift&amp;quot; action=&amp;quot;modifier:shift&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;default display=&amp;quot;Strg&amp;quot; action=&amp;quot;modifier:ctrl&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;default display=&amp;quot;[-&amp;gt;]&amp;quot; action=&amp;quot;modifier:layout&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Alt&amp;quot; action=&amp;quot;modifier:alt&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;9500&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot; &amp;quot; action=&amp;quot;space&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Alt Gr&amp;quot; action=&amp;quot;modifier:mod1&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;↑&amp;quot; action=&amp;quot;up&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;↓&amp;quot; action=&amp;quot;down&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;←&amp;quot; action=&amp;quot;left&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;→&amp;quot; action=&amp;quot;right&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;/layout&amp;gt;&lt;br /&gt;
 &amp;lt;layout id=&amp;quot;numpad keyboard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Num&amp;quot; action=&amp;quot;modifier:caps&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;/&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;*&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;-&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;7&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Pos 1&amp;quot; action=&amp;quot;home&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;8&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;↑&amp;quot; action=&amp;quot;up&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;9&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Bild ↑&amp;quot; action=&amp;quot;pageup&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;+&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;←&amp;quot; action=&amp;quot;left&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;5&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;6&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;→&amp;quot; action=&amp;quot;right&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;+&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Ende&amp;quot; action=&amp;quot;end&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;↓&amp;quot; action=&amp;quot;down&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Bild ↓&amp;quot; action=&amp;quot;pagedown&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;◀┛&amp;quot; action=&amp;quot;return&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;,&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Entf&amp;quot; action=&amp;quot;delete&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;[-&amp;gt;]&amp;quot; action=&amp;quot;modifier:layout&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;/layout&amp;gt;&lt;br /&gt;
 &amp;lt;layout id=&amp;quot;default keyboard&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Esc&amp;quot; action=&amp;quot;escape&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;`&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;1&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;!&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;2&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display='&amp;quot;' /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;½&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;3&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;£&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;mod1    display=&amp;quot;¾&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;4&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;$&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;5&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;%&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;6&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;^&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;7&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;&amp;amp;amp;&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;8&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;*&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;9&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;(&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;0&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;)&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;-&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;_&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;=&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;+&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;default display=&amp;quot;Bksp&amp;quot; action=&amp;quot;backspace&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Home&amp;quot; action=&amp;quot;home&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;PgUp&amp;quot; action=&amp;quot;pageup&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Tab&amp;quot; action=&amp;quot;tab&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;q&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Q&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;w&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;W&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;mod1 display=&amp;quot;ë&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;default    display=&amp;quot;e&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;E&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;r&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;R&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;t&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;T&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;y&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Y&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;u&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;U&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;i&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;I&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;o&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;O&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;p&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;P&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;{&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;[&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;}&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;]&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;\&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;|&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;End&amp;quot; action=&amp;quot;end&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;PgDn&amp;quot; action=&amp;quot;pagedown&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Caps&amp;quot; action=&amp;quot;modifier:caps&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;a&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;A&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;s&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;S&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;d&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;D&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;f&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;F&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;g&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;G&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;h&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;H&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;j&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;J&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;k&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;K&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;l&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;L&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;;&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;:&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;#&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;~&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Ret&amp;quot; action=&amp;quot;return&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Shift&amp;quot; action=&amp;quot;modifier:shift&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;z&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;Z&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;x&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;X&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;c&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;C&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;v&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;V&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;b&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;B&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;n&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;N&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key obey-caps='true'&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;m&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;M&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;,&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;&amp;amp;amp;lt;&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;.&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;&amp;amp;amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;/&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;?&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Shift&amp;quot; action=&amp;quot;modifier:shift&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;row&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;[-&amp;gt;]&amp;quot; action=&amp;quot;modifier:layout&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;äëö&amp;quot; action=&amp;quot;modifier:mod1&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key fill=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Ctrl&amp;quot; action=&amp;quot;modifier:ctrl&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;Alt&amp;quot; action=&amp;quot;modifier:alt&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key width=&amp;quot;12000&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot; &amp;quot; action=&amp;quot;space&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;@&amp;quot; /&amp;gt;&lt;br /&gt;
         &amp;lt;shifted display=&amp;quot;'&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
        &amp;lt;default display=&amp;quot;↑&amp;quot; action=&amp;quot;up&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;↓&amp;quot; action=&amp;quot;down&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;←&amp;quot; action=&amp;quot;left&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;key&amp;gt;&lt;br /&gt;
         &amp;lt;default display=&amp;quot;→&amp;quot; action=&amp;quot;right&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/key&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;4000&amp;quot;  extended=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;space width=&amp;quot;500&amp;quot; extended=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/row&amp;gt;&lt;br /&gt;
 &amp;lt;/layout&amp;gt;&lt;br /&gt;
 &amp;lt;/keyboard&amp;gt;&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Booting_the_Neo_FreeRunner_from_SD_via_U-Boot</id>
		<title>Booting the Neo FreeRunner from SD via U-Boot</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Booting_the_Neo_FreeRunner_from_SD_via_U-Boot"/>
				<updated>2008-07-20T05:10:05Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Partioning the SD card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the steps described to boot your system from an SD card.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot; style=&amp;quot;padding: 2%; margin:0em 0em 1em 0em; border:1px solid #F9D163; background:#FCE9B4; width:100%&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Some versions of u-boot don't work properly for booting from SD card. [http://buildhost.automated.it/u-boot-good-for-sd-boot-r13_0_2632_0.bin This old one works], and a u-boot from January 2008 or later should also work. Be careful when flashing u-boot as you can brick your device. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 1: Change your kernel settings ==&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' The default kernel config as of 2008-02-10 includes the CONFIG_MMC_S3C=y line and also includes built-in support for the ext3 filesystem. The default 2.6.22.5 kernel (and higher) may therefore be used for SD-booting as long as your card is formatted as ext3 (not ext2).&lt;br /&gt;
&lt;br /&gt;
Kernel building is supposed to be done through OpenEmbedded. If you use the MokoMakefile open up $OMDIR/openmoko/trunk/oe/packages/linux/linux-gta01/defconfig-2.6.21.6-fic-gta01. If you are building OM-2007.2 open $OEDIR/openembedded/packages/linux/linux-openmoko/defconfig-2.6.22.5-fic-gta01.&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' That kernel version may change in future releases.&lt;br /&gt;
&lt;br /&gt;
Now find the line saying:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_MMC_S3C=m&lt;br /&gt;
&lt;br /&gt;
and change it to:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_MMC_S3C=y&lt;br /&gt;
&lt;br /&gt;
If you want to use an ext2 file system on the SD, also find the line saying:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_EXT2_FS=m&lt;br /&gt;
&lt;br /&gt;
and change it to:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_EXT2_FS=y&lt;br /&gt;
&lt;br /&gt;
If you're using MokoMakfile, you can clean out your last kernel build (forcing a new build) by running:&lt;br /&gt;
&lt;br /&gt;
 make clean-package-linux-openmoko&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 2: Acquiring a tarfile rootfs ==&lt;br /&gt;
&lt;br /&gt;
There are two ways of acquiring an rootfs image as a tar archive. You can either build it on your own using the OpenEmbedded Distribution. Or download it from the openmoko buildhost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Possibility 1: Downloading the rootfs tar from the Openmoko buildhost ===&lt;br /&gt;
&lt;br /&gt;
The needed tar archives are automatically build during the daily creation of the new rootfs and kernel images on the Openmoko buildhost.&lt;br /&gt;
&lt;br /&gt;
You need to distinguish between the Neo1973 and the Freerunner device here, because they need slightly different images and kernels.&lt;br /&gt;
&lt;br /&gt;
* Freerunner&lt;br /&gt;
** http://buildhost.openmoko.org/daily/freerunner/&lt;br /&gt;
* Neo1973&lt;br /&gt;
** http://buildhost.openmoko.org/daily/neo1973/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Possibility 2: Building a tarfile distribution using OpenEmbedded ===&lt;br /&gt;
&lt;br /&gt;
Another possibility to get a tar archive of your rootfs is to build it on your own with the OpenEmbedded environment.&lt;br /&gt;
&lt;br /&gt;
To build OM-2007.2 you need to add &amp;quot;tar&amp;quot; to the image types in your ''local.conf'':&lt;br /&gt;
&lt;br /&gt;
 IMAGE_FSTYPES = &amp;quot;jffs2 tar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After that build a new image by issuing:&lt;br /&gt;
 &lt;br /&gt;
 bitbake openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
or if you are using the MokoMakefile: &lt;br /&gt;
 &lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
After the process finished there will be a ''OpenMoko-....tar'' in the deploy directory, which is your newly created rootfs archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Prepare the SD card ==&lt;br /&gt;
&lt;br /&gt;
=== Partioning the SD card ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately the uboot loader can only read from FAT partitions. Therefore the kernel needs to be stored in a partition with this filesystem.&lt;br /&gt;
Nevertheless we want to store our rootfs in an ext3 (or ext2) filesystem. To acomplish this the sd-card needs to be partitioned into to different parts. &lt;br /&gt;
This example shows how to do this using the fdisk utility. Feel free to use the partitioning utility of your liking for this task.&lt;br /&gt;
&lt;br /&gt;
 fdisk /dev/mmcblk0&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' The device file might differ on your system. If you are not sure about it, you may check your kernel message log by calling ''dmesg'' to find the correct device.&lt;br /&gt;
&lt;br /&gt;
We will now create a 8 mb partition for our kernel and another one for the rootfs which will take up all the remaining space.&lt;br /&gt;
&lt;br /&gt;
   Command (m for help): d&lt;br /&gt;
   Selected partition 1&lt;br /&gt;
   Command (m for help): n&lt;br /&gt;
   Command action&lt;br /&gt;
      e   extended&lt;br /&gt;
      p   primary partition (1-4)&lt;br /&gt;
   p&lt;br /&gt;
   Partition number (1-4): 1&lt;br /&gt;
   First cylinder (1-983, default 1):&lt;br /&gt;
   Using default value 1&lt;br /&gt;
   Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M&lt;br /&gt;
   Command (m for help): n&lt;br /&gt;
   Command action&lt;br /&gt;
      e   extended&lt;br /&gt;
      p   primary partition (1-4)&lt;br /&gt;
   p&lt;br /&gt;
   Partition number (1-4): 2&lt;br /&gt;
   First cylinder (18-983, default 18):&lt;br /&gt;
   Using default value 18&lt;br /&gt;
   Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):&lt;br /&gt;
   Using default value 983&lt;br /&gt;
   Command (m for help): w&lt;br /&gt;
   The partition table has been altered!&lt;br /&gt;
   Calling ioctl() to re-read partition table.&lt;br /&gt;
   Syncing disks.&lt;br /&gt;
&lt;br /&gt;
=== Formatting the SD card ===&lt;br /&gt;
&lt;br /&gt;
As already mentioned we need the first partition to be formatted with the FAT filesystem. Just issue the following command to create this fs:&lt;br /&gt;
&lt;br /&gt;
 mkfs.vfat /dev/mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
The second partition is about to be formatted with ext3 (For ext2 to work you need to make sure you compiled the kernel with the correct configuration):&lt;br /&gt;
&lt;br /&gt;
 mkfs.ext3 /dev/mmcblk0p2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Populate SD card ==&lt;br /&gt;
&lt;br /&gt;
Your sd card is now ready to be filled up with the rootfs and the needed kernel to boot.&lt;br /&gt;
&lt;br /&gt;
Mount the second partition of your SD card somewhere and put the image on it:&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mmcblk0p2 /mnt/moko&lt;br /&gt;
 tar -C /mnt/moko/ -xvf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' As always in this guide the device name as well as the rootfs name needs to be adjusted to your device and filename structure&lt;br /&gt;
&lt;br /&gt;
The next step is to mount the first partition of the sd card and install the kernel on it.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mmcblk0p1 /mnt/mokokernel&lt;br /&gt;
 cp uImage-fic-gta01-latest.bin /mnt/mokokernel/uImage.bin&lt;br /&gt;
&lt;br /&gt;
Make sure your kernel is called ''uImage.bin'' after copying it to the card.&lt;br /&gt;
&lt;br /&gt;
Unmount both the rootfs partition and the kernel partition and make sure all remaining buffers are written to it:&lt;br /&gt;
&lt;br /&gt;
 umount /mnt/moko&lt;br /&gt;
 umount /mnt/mokokernel&lt;br /&gt;
 sync&lt;br /&gt;
&lt;br /&gt;
== Step 4: Add uboot boot entry ==&lt;br /&gt;
&lt;br /&gt;
Dependent on the revision of the phone and the partition type (ext2/ext3) you are using it might be necessary to add an entry to the bootmenu, to be able to boot the system of your sd card.&lt;br /&gt;
If you are using a Freerunner and have created an ext2 partition you should be able to boot from the card right out of the box, because a boot menu entry for this should already exist in the NAND boot menu.&lt;br /&gt;
In any other case you should at least make sure the needed entry exists in your menu before proceeding.&lt;br /&gt;
You will need to enter the uboot shell of the NAND boot menu for this. A description on how to connect to the uboot loader shell can be found in this article: [[Uboot#Boot_menu]]. Details on howto get into the NAND boot menu can be found in the appendix of this article [[#Entering NAND bootmenu (GTA02)]].&lt;br /&gt;
&lt;br /&gt;
After you read these two references you should be connected to your NAND uboot shell right now. The first thing to do is to set the boot menu timeout to a really high value. Unfortunately if you don't do this, the boot loader will continue booting after the default timeout (60 seconds) even if you are connected to the uboot shell. Just enter the following command to the menu prompt:&lt;br /&gt;
&lt;br /&gt;
 setenv boot_menu_timeout 99999&lt;br /&gt;
&lt;br /&gt;
This will set the timeout to 99999 seconds which should definitely enough time for us finish whatever work we want accomplish in the boot loader shell.&lt;br /&gt;
&lt;br /&gt;
Now we will make sure a appropriate menu item for booting from sd exists, or create it otherwise. You can print the defined boot loader environment by issuing the command: &lt;br /&gt;
&lt;br /&gt;
 printenv&lt;br /&gt;
&lt;br /&gt;
If it shows a line beginning with ''menu_'' followed by the commands which are just to follow in this guide, you do not need to create a new menu entry. In any other case please proceed with the following.&lt;br /&gt;
&lt;br /&gt;
It is important to distinguish between ext2 and ext3 root partitions at this point. Please make sure you are using the correct configuration based on the decisions you made earlier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for ext3 partitions:'''&lt;br /&gt;
&lt;br /&gt;
 setenv menu_9 Boot from microSD (FAT+ext3): setenv bootargs \${bootargs_base} rootfstype=ext3 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for ext2 partitions:'''&lt;br /&gt;
&lt;br /&gt;
 setenv menu_9 Boot from microSD (FAT+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' The backslashes (\) are important for uboot to set the command as new environment variable (menu_9) instead of just executing them as soon as enter is pressed&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' Copy and paste may not work. At least it did not work for me as I tried. You will have to type in the commandline manually.&lt;br /&gt;
&lt;br /&gt;
You are nearly done. Just issue a&lt;br /&gt;
&lt;br /&gt;
 printenv&lt;br /&gt;
&lt;br /&gt;
and verify that your newly created entry is correctly displayed (This time the backslashes are not displayed anyone).&lt;br /&gt;
&lt;br /&gt;
If everything looks fine enter&lt;br /&gt;
&lt;br /&gt;
 saveenv&lt;br /&gt;
&lt;br /&gt;
into the prompt and press enter. The new configuration should now be saved to the NAND.&lt;br /&gt;
&lt;br /&gt;
Shutdown your neo with the following command:&lt;br /&gt;
&lt;br /&gt;
 neo1973 power-off&lt;br /&gt;
&lt;br /&gt;
After you restarted the Neo and got back to the NAND boot menu you should be able to select your newly created menu entry and successfully boot into the rootfs from your sd card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Boot from SDHC ===&lt;br /&gt;
&lt;br /&gt;
As SDHC is currently not supported in u-boot you can't use the Booting from SD guide.&lt;br /&gt;
But there's a kind of workaround that is a good option to have at least your rootfs on the microSDHC:&lt;br /&gt;
&lt;br /&gt;
First you can follow Step 1 to get an kernel-image with mmc- and ext2-support. But instead of copying the image to the rootfs you will have to flash it to the Neo's internal NAND-Flash (using [[Dfu-util]]).&lt;br /&gt;
Now you can continue with Step 2 (like mentioned before you do not have to copy your uImage to the rootfs) and follow the instructions to Step 3.&lt;br /&gt;
Instead of the setenv commands in Step 3 you have to enter the following:&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv menu_5 Boot from SDHC: setenv  bootargs root=/dev/mmcblk0p1 console=tty0 rootdelay=5 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000&lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
And that's it!&lt;br /&gt;
Now you can use the newly created menu option &amp;quot;Boot from SDHC&amp;quot; to boot the internal kernel, using the root-filesystem on the microSDHC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Autoboot from SDHC ===&lt;br /&gt;
&lt;br /&gt;
Maybe you want to Boot automatically from SDHC: &lt;br /&gt;
Set a new Bootmenu Entry for booting from NAND first&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv menu_6 Boot from NAND: setenv bootargs \${bootargs_base} \${mtdparts}\; nand read.e 0x32000000 kernel\; bootm 0x32000000&lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
then Power-off, and enter the Bootmenu to test the new Entry.If you can boot from NAND, shutdown, enter Boot menu, connect to bootloader and set the (auto)bootcmd for boot from SDHC:&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv bootcmd setenv bootargs root=/dev/mmcblk0p1 rootdelay=10 console=tty0 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 &lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
Now you boot from SDHC everytime you press the Power-Button or reboot and if you like to boot from NAND -just use the bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing udev automount ===&lt;br /&gt;
&lt;br /&gt;
Udev automatically mounts the SD Card in /media/mmcblk0p1/ you can disable this with&lt;br /&gt;
&lt;br /&gt;
 echo /dev/mmcblk &amp;gt;&amp;gt; /etc/udev/mount.blacklist&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entering NAND bootmenu (GTA02)===&lt;br /&gt;
&lt;br /&gt;
If you want boot from NAND, please follow these steps&lt;br /&gt;
&lt;br /&gt;
# Hold the Power key&lt;br /&gt;
# After about 1 second hold the AUX key &lt;br /&gt;
# Hold both keys until the menu appears&lt;br /&gt;
# Release both keys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entering NOR bootmenu (GTA02)===&lt;br /&gt;
&lt;br /&gt;
If you want boot from NOR, please follow these steps&lt;br /&gt;
&lt;br /&gt;
# Hold the AUX key&lt;br /&gt;
# then Power Key together for power up GTA02&lt;br /&gt;
# Release AUX key after about 1 second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remarks on Kernel Parameters ===&lt;br /&gt;
&lt;br /&gt;
==== loglevel ====&lt;br /&gt;
&lt;br /&gt;
Some people suggested adding:&lt;br /&gt;
&lt;br /&gt;
 loglevel=8&lt;br /&gt;
&lt;br /&gt;
to the kernel command line. This makes the boot process extremely slow because &lt;br /&gt;
the framebuffer (the neo display in text mode) has to print out tons of lines of&lt;br /&gt;
debug messages like:&lt;br /&gt;
&lt;br /&gt;
 s3c2410-sdi s3c2410-sdi: ......&lt;br /&gt;
 mmc0: ....&lt;br /&gt;
&lt;br /&gt;
{{Languages|Booting_from_SD}}&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Booting_the_Neo_FreeRunner_from_SD_via_U-Boot</id>
		<title>Booting the Neo FreeRunner from SD via U-Boot</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Booting_the_Neo_FreeRunner_from_SD_via_U-Boot"/>
				<updated>2008-07-20T05:01:30Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Step 3: Populate SD card */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are the steps described to boot your system from an SD card.&lt;br /&gt;
&lt;br /&gt;
{| cellspacing=&amp;quot;5&amp;quot; cellpadding=&amp;quot;0&amp;quot; style=&amp;quot;padding: 2%; margin:0em 0em 1em 0em; border:1px solid #F9D163; background:#FCE9B4; width:100%&amp;quot; &lt;br /&gt;
| &lt;br /&gt;
Some versions of u-boot don't work properly for booting from SD card. [http://buildhost.automated.it/u-boot-good-for-sd-boot-r13_0_2632_0.bin This old one works], and a u-boot from January 2008 or later should also work. Be careful when flashing u-boot as you can brick your device. &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 1: Change your kernel settings ==&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' The default kernel config as of 2008-02-10 includes the CONFIG_MMC_S3C=y line and also includes built-in support for the ext3 filesystem. The default 2.6.22.5 kernel (and higher) may therefore be used for SD-booting as long as your card is formatted as ext3 (not ext2).&lt;br /&gt;
&lt;br /&gt;
Kernel building is supposed to be done through OpenEmbedded. If you use the MokoMakefile open up $OMDIR/openmoko/trunk/oe/packages/linux/linux-gta01/defconfig-2.6.21.6-fic-gta01. If you are building OM-2007.2 open $OEDIR/openembedded/packages/linux/linux-openmoko/defconfig-2.6.22.5-fic-gta01.&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' That kernel version may change in future releases.&lt;br /&gt;
&lt;br /&gt;
Now find the line saying:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_MMC_S3C=m&lt;br /&gt;
&lt;br /&gt;
and change it to:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_MMC_S3C=y&lt;br /&gt;
&lt;br /&gt;
If you want to use an ext2 file system on the SD, also find the line saying:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_EXT2_FS=m&lt;br /&gt;
&lt;br /&gt;
and change it to:&lt;br /&gt;
&lt;br /&gt;
 CONFIG_EXT2_FS=y&lt;br /&gt;
&lt;br /&gt;
If you're using MokoMakfile, you can clean out your last kernel build (forcing a new build) by running:&lt;br /&gt;
&lt;br /&gt;
 make clean-package-linux-openmoko&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 2: Acquiring a tarfile rootfs ==&lt;br /&gt;
&lt;br /&gt;
There are two ways of acquiring an rootfs image as a tar archive. You can either build it on your own using the OpenEmbedded Distribution. Or download it from the openmoko buildhost.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Possibility 1: Downloading the rootfs tar from the Openmoko buildhost ===&lt;br /&gt;
&lt;br /&gt;
The needed tar archives are automatically build during the daily creation of the new rootfs and kernel images on the Openmoko buildhost.&lt;br /&gt;
&lt;br /&gt;
You need to distinguish between the Neo1973 and the Freerunner device here, because they need slightly different images and kernels.&lt;br /&gt;
&lt;br /&gt;
* Freerunner&lt;br /&gt;
** http://buildhost.openmoko.org/daily/freerunner/&lt;br /&gt;
* Neo1973&lt;br /&gt;
** http://buildhost.openmoko.org/daily/neo1973/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Possibility 2: Building a tarfile distribution using OpenEmbedded ===&lt;br /&gt;
&lt;br /&gt;
Another possibility to get a tar archive of your rootfs is to build it on your own with the OpenEmbedded environment.&lt;br /&gt;
&lt;br /&gt;
To build OM-2007.2 you need to add &amp;quot;tar&amp;quot; to the image types in your ''local.conf'':&lt;br /&gt;
&lt;br /&gt;
 IMAGE_FSTYPES = &amp;quot;jffs2 tar&amp;quot;&lt;br /&gt;
&lt;br /&gt;
After that build a new image by issuing:&lt;br /&gt;
 &lt;br /&gt;
 bitbake openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
or if you are using the MokoMakefile: &lt;br /&gt;
 &lt;br /&gt;
 make openmoko-devel-image&lt;br /&gt;
&lt;br /&gt;
After the process finished there will be a ''OpenMoko-....tar'' in the deploy directory, which is your newly created rootfs archive&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Prepare the SD card ==&lt;br /&gt;
&lt;br /&gt;
=== Partioning the SD card ===&lt;br /&gt;
&lt;br /&gt;
Unfortunately the uboot loader can only read from FAT partitions. Therefore the kernel needs to be stored in a partition with this filesystem.&lt;br /&gt;
Nevertheless we want to store our rootfs in an ext3 (or ext2) filesystem. To acomplish this the sd-card needs to be partitioned into to different parts. &lt;br /&gt;
This example shows how to do this using the fdisk utility. Feel free to use the partitioning utitlity of your likings for this task.&lt;br /&gt;
&lt;br /&gt;
 fdisk /dev/mmcblk0&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' The device bane might differ on your system. If you are not sure about it, you may check your kernel message log by calling ''dmesg'' to find the correct device. &lt;br /&gt;
&lt;br /&gt;
We will now create a 8 mb partition for our kernel and another one for the rootfs which will take up all the remaining space.&lt;br /&gt;
&lt;br /&gt;
   Command (m for help): d&lt;br /&gt;
   Selected partition 1&lt;br /&gt;
   Command (m for help): n&lt;br /&gt;
   Command action&lt;br /&gt;
      e   extended&lt;br /&gt;
      p   primary partition (1-4)&lt;br /&gt;
   p&lt;br /&gt;
   Partition number (1-4): 1&lt;br /&gt;
   First cylinder (1-983, default 1):&lt;br /&gt;
   Using default value 1&lt;br /&gt;
   Last cylinder or +size or +sizeM or +sizeK (1-983, default 983): +8M&lt;br /&gt;
   Command (m for help): n&lt;br /&gt;
   Command action&lt;br /&gt;
      e   extended&lt;br /&gt;
      p   primary partition (1-4)&lt;br /&gt;
   p&lt;br /&gt;
   Partition number (1-4): 2&lt;br /&gt;
   First cylinder (18-983, default 18):&lt;br /&gt;
   Using default value 18&lt;br /&gt;
   Last cylinder or +size or +sizeM or +sizeK (18-983, default 983):&lt;br /&gt;
   Using default value 983&lt;br /&gt;
   Command (m for help): w&lt;br /&gt;
   The partition table has been altered!&lt;br /&gt;
   Calling ioctl() to re-read partition table.&lt;br /&gt;
   Syncing disks.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Formatting the SD card ===&lt;br /&gt;
&lt;br /&gt;
As already mentioned we need the first partition to be formatted with the FAT filesystem. Just issue the following command to create this fs:&lt;br /&gt;
&lt;br /&gt;
 mkfs.vfat /dev/mmcblk0p1&lt;br /&gt;
&lt;br /&gt;
The second partition is about to be formatted with ext3 (For ext2 to work you need to make sure you compiled the kernel with the correct configuration):&lt;br /&gt;
&lt;br /&gt;
 mkfs.ext3 /dev/mmcblk0p2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Step 3: Populate SD card ==&lt;br /&gt;
&lt;br /&gt;
Your sd card is now ready to be filled up with the rootfs and the needed kernel to boot.&lt;br /&gt;
&lt;br /&gt;
Mount the second partition of your SD card somewhere and put the image on it:&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mmcblk0p2 /mnt/moko&lt;br /&gt;
 tar -C /mnt/moko/ -xvf openmoko-devel-image-fic-gta01-20070313022035.rootfs.tar&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' As always in this guide the device name as well as the rootfs name needs to be adjusted to your device and filename structure&lt;br /&gt;
&lt;br /&gt;
The next step is to mount the first partition of the sd card and install the kernel on it.&lt;br /&gt;
&lt;br /&gt;
 mount /dev/mmcblk0p1 /mnt/mokokernel&lt;br /&gt;
 cp uImage-fic-gta01-latest.bin /mnt/mokokernel/uImage.bin&lt;br /&gt;
&lt;br /&gt;
Make sure your kernel is called ''uImage.bin'' after copying it to the card.&lt;br /&gt;
&lt;br /&gt;
Unmount both the rootfs partition and the kernel partition and make sure all remaining buffers are written to it:&lt;br /&gt;
&lt;br /&gt;
 umount /mnt/moko&lt;br /&gt;
 umount /mnt/mokokernel&lt;br /&gt;
 sync&lt;br /&gt;
&lt;br /&gt;
== Step 4: Add uboot boot entry ==&lt;br /&gt;
&lt;br /&gt;
Dependent on the revision of the phone and the partition type (ext2/ext3) you are using it might be necessary to add an entry to the bootmenu, to be able to boot the system of your sd card.&lt;br /&gt;
If you are using a Freerunner and have created an ext2 partition you should be able to boot from the card right out of the box, because a boot menu entry for this should already exist in the NAND boot menu.&lt;br /&gt;
In any other case you should at least make sure the needed entry exists in your menu before proceeding.&lt;br /&gt;
You will need to enter the uboot shell of the NAND boot menu for this. A description on how to connect to the uboot loader shell can be found in this article: [[Uboot#Boot_menu]]. Details on howto get into the NAND boot menu can be found in the appendix of this article [[#Entering NAND bootmenu (GTA02)]].&lt;br /&gt;
&lt;br /&gt;
After you read these two references you should be connected to your NAND uboot shell right now. The first thing to do is to set the boot menu timeout to a really high value. Unfortunately if you don't do this, the boot loader will continue booting after the default timeout (60 seconds) even if you are connected to the uboot shell. Just enter the following command to the menu prompt:&lt;br /&gt;
&lt;br /&gt;
 setenv boot_menu_timeout 99999&lt;br /&gt;
&lt;br /&gt;
This will set the timeout to 99999 seconds which should definitely enough time for us finish whatever work we want accomplish in the boot loader shell.&lt;br /&gt;
&lt;br /&gt;
Now we will make sure a appropriate menu item for booting from sd exists, or create it otherwise. You can print the defined boot loader environment by issuing the command: &lt;br /&gt;
&lt;br /&gt;
 printenv&lt;br /&gt;
&lt;br /&gt;
If it shows a line beginning with ''menu_'' followed by the commands which are just to follow in this guide, you do not need to create a new menu entry. In any other case please proceed with the following.&lt;br /&gt;
&lt;br /&gt;
It is important to distinguish between ext2 and ext3 root partitions at this point. Please make sure you are using the correct configuration based on the decisions you made earlier.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for ext3 partitions:'''&lt;br /&gt;
&lt;br /&gt;
 setenv menu_9 Boot from microSD (FAT+ext3): setenv bootargs \${bootargs_base} rootfstype=ext3 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&lt;br /&gt;
'''Boot entry for ext2 partitions:'''&lt;br /&gt;
&lt;br /&gt;
 setenv menu_9 Boot from microSD (FAT+ext2): setenv bootargs \${bootargs_base} rootfstype=ext2 root=/dev/mmcblk0p2 rootdelay=5 \${mtdparts} ro\; mmcinit\; fatload mmc 1 0x32000000 \${sd_image_name}\; bootm 0x32000000&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' The backslashes (\) are important for uboot to set the command as new environment variable (menu_9) instead of just executing them as soon as enter is pressed&lt;br /&gt;
&lt;br /&gt;
'''''Note:''''' Copy and paste may not work. At least it did not work for me as I tried. You will have to type in the commandline manually.&lt;br /&gt;
&lt;br /&gt;
You are nearly done. Just issue a&lt;br /&gt;
&lt;br /&gt;
 printenv&lt;br /&gt;
&lt;br /&gt;
and verify that your newly created entry is correctly displayed (This time the backslashes are not displayed anyone).&lt;br /&gt;
&lt;br /&gt;
If everything looks fine enter&lt;br /&gt;
&lt;br /&gt;
 saveenv&lt;br /&gt;
&lt;br /&gt;
into the prompt and press enter. The new configuration should now be saved to the NAND.&lt;br /&gt;
&lt;br /&gt;
Shutdown your neo with the following command:&lt;br /&gt;
&lt;br /&gt;
 neo1973 power-off&lt;br /&gt;
&lt;br /&gt;
After you restarted the Neo and got back to the NAND boot menu you should be able to select your newly created menu entry and successfully boot into the rootfs from your sd card.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Appendix ==&lt;br /&gt;
&lt;br /&gt;
=== Boot from SDHC ===&lt;br /&gt;
&lt;br /&gt;
As SDHC is currently not supported in u-boot you can't use the Booting from SD guide.&lt;br /&gt;
But there's a kind of workaround that is a good option to have at least your rootfs on the microSDHC:&lt;br /&gt;
&lt;br /&gt;
First you can follow Step 1 to get an kernel-image with mmc- and ext2-support. But instead of copying the image to the rootfs you will have to flash it to the Neo's internal NAND-Flash (using [[Dfu-util]]).&lt;br /&gt;
Now you can continue with Step 2 (like mentioned before you do not have to copy your uImage to the rootfs) and follow the instructions to Step 3.&lt;br /&gt;
Instead of the setenv commands in Step 3 you have to enter the following:&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv menu_5 Boot from SDHC: setenv  bootargs root=/dev/mmcblk0p1 console=tty0 rootdelay=5 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000&lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
And that's it!&lt;br /&gt;
Now you can use the newly created menu option &amp;quot;Boot from SDHC&amp;quot; to boot the internal kernel, using the root-filesystem on the microSDHC.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Autoboot from SDHC ===&lt;br /&gt;
&lt;br /&gt;
Maybe you want to Boot automatically from SDHC: &lt;br /&gt;
Set a new Bootmenu Entry for booting from NAND first&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv menu_6 Boot from NAND: setenv bootargs \${bootargs_base} \${mtdparts}\; nand read.e 0x32000000 kernel\; bootm 0x32000000&lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
then Power-off, and enter the Bootmenu to test the new Entry.If you can boot from NAND, shutdown, enter Boot menu, connect to bootloader and set the (auto)bootcmd for boot from SDHC:&lt;br /&gt;
&lt;br /&gt;
 GTA01Bv4 # setenv bootcmd setenv bootargs root=/dev/mmcblk0p1 rootdelay=10 console=tty0 neo1973-nand:0x00040000(u-boot),0x00004000(u-boot_env),0x00200000(kernel),0x000a0000(splash)\; nand read.e 0x32000000 kernel\; bootm 0x32000000 &lt;br /&gt;
 GTA01Bv4 # saveenv&lt;br /&gt;
&lt;br /&gt;
Now you boot from SDHC everytime you press the Power-Button or reboot and if you like to boot from NAND -just use the bootmenu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fixing udev automount ===&lt;br /&gt;
&lt;br /&gt;
Udev automatically mounts the SD Card in /media/mmcblk0p1/ you can disable this with&lt;br /&gt;
&lt;br /&gt;
 echo /dev/mmcblk &amp;gt;&amp;gt; /etc/udev/mount.blacklist&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entering NAND bootmenu (GTA02)===&lt;br /&gt;
&lt;br /&gt;
If you want boot from NAND, please follow these steps&lt;br /&gt;
&lt;br /&gt;
# Hold the Power key&lt;br /&gt;
# After about 1 second hold the AUX key &lt;br /&gt;
# Hold both keys until the menu appears&lt;br /&gt;
# Release both keys&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Entering NOR bootmenu (GTA02)===&lt;br /&gt;
&lt;br /&gt;
If you want boot from NOR, please follow these steps&lt;br /&gt;
&lt;br /&gt;
# Hold the AUX key&lt;br /&gt;
# then Power Key together for power up GTA02&lt;br /&gt;
# Release AUX key after about 1 second&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Remarks on Kernel Parameters ===&lt;br /&gt;
&lt;br /&gt;
==== loglevel ====&lt;br /&gt;
&lt;br /&gt;
Some people suggested adding:&lt;br /&gt;
&lt;br /&gt;
 loglevel=8&lt;br /&gt;
&lt;br /&gt;
to the kernel command line. This makes the boot process extremely slow because &lt;br /&gt;
the framebuffer (the neo display in text mode) has to print out tons of lines of&lt;br /&gt;
debug messages like:&lt;br /&gt;
&lt;br /&gt;
 s3c2410-sdi s3c2410-sdi: ......&lt;br /&gt;
 mmc0: ....&lt;br /&gt;
&lt;br /&gt;
{{Languages|Booting_from_SD}}&lt;br /&gt;
&lt;br /&gt;
[[Category:System Developers]]&lt;br /&gt;
[[Category:Guides]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Neo_FreeRunner_Wifi</id>
		<title>Neo FreeRunner Wifi</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Neo_FreeRunner_Wifi"/>
				<updated>2008-07-20T03:27:45Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;To get wlan working on your Freerunner, you can follow these steps:&lt;br /&gt;
&lt;br /&gt;
1. create and edit a suitable /etc/wpa_supplicant/wpa_supplicant.conf   (use your favourite search engine to find the syntax)&lt;br /&gt;
&lt;br /&gt;
2. execute &lt;br /&gt;
 ifup eth0&lt;br /&gt;
&lt;br /&gt;
3. execute&lt;br /&gt;
 wpa_supplicant -ieth0 -c/etc/wpa_supplicant/wpa_supplicant.conf -B&lt;br /&gt;
(-B for running as daemon)&lt;br /&gt;
&lt;br /&gt;
4. get a IP via dhcp: &lt;br /&gt;
 udhcpc eth0&lt;br /&gt;
&lt;br /&gt;
That's it, your wlan should now work!&lt;br /&gt;
&lt;br /&gt;
==Using /etc/network/interfaces==&lt;br /&gt;
&lt;br /&gt;
Another way is to use /etc/network/interfaces&lt;br /&gt;
&lt;br /&gt;
For instance, for WEP:&lt;br /&gt;
&lt;br /&gt;
* Using wireless tools:&lt;br /&gt;
&lt;br /&gt;
 iface eth0 inet dhcp&lt;br /&gt;
    wireless-key my_wep_key&lt;br /&gt;
    wireless-essid my_essid&lt;br /&gt;
&lt;br /&gt;
* Using wpa_supplicant (this allows more authentication methods).&lt;br /&gt;
&lt;br /&gt;
 iface eth0 inet dhcp&lt;br /&gt;
    wpa-wep-key0 my_wep_key&lt;br /&gt;
    wpa-key-mgmt NONE&lt;br /&gt;
    wpa-ssid my_essid&lt;br /&gt;
&lt;br /&gt;
Using a wpa_supplicant.conf file:&lt;br /&gt;
 iface eth0 inet dhcp&lt;br /&gt;
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
Then just run:&lt;br /&gt;
 ifup eth0&lt;br /&gt;
&lt;br /&gt;
You'll get a lot of messages, like &amp;lt;tt&amp;gt;ioctl[SIOCSIWENCODEEXT]: Operation not supported&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;sed: unrecognized option `--quiet'&amp;lt;/tt&amp;gt;, they appear to be harmless. The &amp;quot;--quiet&amp;quot; error message can be avoided by replacing &amp;quot;sed --quiet&amp;quot; with &amp;quot;sed -n&amp;quot; in /etc/wpa_supplicant/*.sh&lt;br /&gt;
&lt;br /&gt;
== Known good wpa-supplicant version? ==&lt;br /&gt;
&lt;br /&gt;
Is the 0.6.3-r1 broken? I don't get anything to work with these instructions via usage of wpa_supplicant, but WEP works via direct interfaces changes (wireless-essid/wireless-key settings).&lt;br /&gt;
&lt;br /&gt;
== Sample wpa_supplicant.conf ==&lt;br /&gt;
&lt;br /&gt;
 ctrl_interface=/var/run/wpa_supplicant&lt;br /&gt;
 eapol_version=1&lt;br /&gt;
 ap_scan=1&lt;br /&gt;
 &lt;br /&gt;
 # WPA2:&lt;br /&gt;
 network={&lt;br /&gt;
        ssid=&amp;quot;your ssid&amp;quot;&lt;br /&gt;
        scan_ssid=1&lt;br /&gt;
        proto=RSN&lt;br /&gt;
        key_mgmt=WPA-PSK&lt;br /&gt;
        pairwise=CCMP TKIP&lt;br /&gt;
        group=TKIP CCMP&lt;br /&gt;
        psk=&amp;quot;secret key&amp;quot;&lt;br /&gt;
        priority=50&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # WPA:&lt;br /&gt;
 network={&lt;br /&gt;
       ssid=&amp;quot;your_ssid&amp;quot;&lt;br /&gt;
       scan_ssid=1&lt;br /&gt;
       psk=&amp;quot;secret key&amp;quot;&lt;br /&gt;
       priority=10&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # WEP:&lt;br /&gt;
 network={&lt;br /&gt;
      ssid=&amp;quot;your_ssid&amp;quot;&lt;br /&gt;
      scan_ssid=1&lt;br /&gt;
      key_mgmt=NONE&lt;br /&gt;
      wep_tx_keyidx=0&lt;br /&gt;
      wep_key0=&amp;quot;secret key&amp;quot;&lt;br /&gt;
      priority=8&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # Open:&lt;br /&gt;
 network={&lt;br /&gt;
      ssid=&amp;quot;your ssid&amp;quot;&lt;br /&gt;
      key_mgmt=NONE&lt;br /&gt;
      priority=5&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== A very ugly /etc/init.d/wlan startscript ==&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 #&lt;br /&gt;
 # wlan	This shell script starts and stops wlan.&lt;br /&gt;
 #&lt;br /&gt;
 # processname: wlan&lt;br /&gt;
 &lt;br /&gt;
 # Source function library.&lt;br /&gt;
 #. /etc/rc.d/init.d/functions&lt;br /&gt;
 # &amp;quot;written&amp;quot; by HdR&lt;br /&gt;
 &lt;br /&gt;
 RETVAL=0&lt;br /&gt;
 prog=&amp;quot;wlan&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
 # test -f /etc/default/$prog &amp;amp;&amp;amp; . /etc/default/$prog&lt;br /&gt;
 &lt;br /&gt;
 start() {&lt;br /&gt;
 	echo -n &amp;quot;Starting $prog: &amp;quot;&lt;br /&gt;
 	ifconfig eth0 up&lt;br /&gt;
 	wpa_supplicant -ieth0 -c/etc/wpa_supplicant/wpa_supplicant.conf -B&lt;br /&gt;
 	sleep 10&lt;br /&gt;
 	udhcpc eth0&lt;br /&gt;
 	RETVAL=$?&lt;br /&gt;
 	return $RETVAL&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 stop() {&lt;br /&gt;
 	# Stop daemons.&lt;br /&gt;
 	echo -n &amp;quot;Shutting down $prog: &amp;quot;&lt;br /&gt;
         killall wpa_supplicant&lt;br /&gt;
 	ifconfig eth0 down&lt;br /&gt;
 #        killproc gpsd&lt;br /&gt;
 	RETVAL=$?&lt;br /&gt;
 	return $RETVAL&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 # See how we were called.&lt;br /&gt;
 case &amp;quot;$1&amp;quot; in&lt;br /&gt;
   start)&lt;br /&gt;
 	start&lt;br /&gt;
 	;;&lt;br /&gt;
   stop)&lt;br /&gt;
 	stop&lt;br /&gt;
 	;;&lt;br /&gt;
   restart|reload)&lt;br /&gt;
 	stop&lt;br /&gt;
 	start&lt;br /&gt;
 	RETVAL=$?&lt;br /&gt;
 	;;&lt;br /&gt;
   *)&lt;br /&gt;
 	echo &amp;quot;Usage: $0 {start|stop|restart}&amp;quot;&lt;br /&gt;
 	exit 1&lt;br /&gt;
 esac&lt;br /&gt;
 &lt;br /&gt;
 exit $RETVAL&lt;br /&gt;
&lt;br /&gt;
== An alternative way to automate ==&lt;br /&gt;
Add the wpa_supplicant details to /etc/network/interfaces:&lt;br /&gt;
&lt;br /&gt;
 iface eth0 inet dhcp&lt;br /&gt;
 wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf&lt;br /&gt;
&lt;br /&gt;
Now `ifup eth0` will start up wpa_supplicant and udhcpc for you, and `ifdown eth0` will stop them, in theory at least. In practise udhcpc can time out before wpa_supplicant has finished connecting to the access point, and if udhcpc has failed to get an address ifdown exits without stopping wpa_supplicant and bringing down the interface.&lt;br /&gt;
&lt;br /&gt;
== Comments ==&lt;br /&gt;
&lt;br /&gt;
The alternative method seems to work reliably on the FR/ GTA02, I couldn't get the manual method to work when WPA/PSK is involved. Also you must do ifdown usb0 before the ifup eth0. Then you also need to setup the resolv.conf manually as it does not seem to get the dns server from the dhcp server. If the dhcp fails during ifup eth0, then you can run udhcpc eth0 manually it usually gets the dhcp address the second time around.&lt;br /&gt;
&lt;br /&gt;
I use a script called u...&lt;br /&gt;
 # u&lt;br /&gt;
 ifdown usb0&lt;br /&gt;
 ifup eth0 &lt;br /&gt;
 echo nameserver xx.xx.xx.xx &amp;gt;/etc/resolv.conf&lt;br /&gt;
&lt;br /&gt;
This usually works&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[July 19, 2008]&lt;br /&gt;
I've had repeated success with:&lt;br /&gt;
 # ifconfig eth0 up&lt;br /&gt;
 # iwconfig eth0 essid any&lt;br /&gt;
 # iwconfig eth0 key '...'&lt;br /&gt;
 # iwconfig eth0 essid '...'&lt;br /&gt;
 # udhcpc eth0&lt;br /&gt;
 # ifconfig usb0 down; ifconfig usb0 up&lt;br /&gt;
&lt;br /&gt;
Hope that helps someone.&lt;br /&gt;
&lt;br /&gt;
The following may be helpful in order to scan available networks :&lt;br /&gt;
 # iwlist eth0 scan&lt;br /&gt;
&lt;br /&gt;
[[Category:GTA02 Hardware]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Getting_Started_with_your_Neo_FreeRunner</id>
		<title>Getting Started with your Neo FreeRunner</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Getting_Started_with_your_Neo_FreeRunner"/>
				<updated>2008-07-20T02:54:35Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: Removed shell prompts, allowing copy/paste to command line&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Getting Started with your Neo FreeRunner}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0%; margin:0em 0em 1em 0em; background:#eeeeee; width:100%;floating=&amp;quot;center&amp;quot;; &amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#fcfcfc; width:75% &amp;quot; |  &lt;br /&gt;
 &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;&lt;br /&gt;
Thank you for purchasing this Developer release of Neo FreeRunner. The [[Neo FreeRunner]] phone is the second hardware platform to take advantage of [[Openmoko]]. This guide will help you get to know your Neo FreeRunner and how to start using your Neo FreeRunner.&amp;lt;/p&amp;gt;&lt;br /&gt;
! style=&amp;quot;background:#fcfcfc; width:25% &amp;quot; |&lt;br /&gt;
[[Image:Freerunner box.png|200px|thumb|Neo FreeRunner Package]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Package Contents ==&lt;br /&gt;
&lt;br /&gt;
[[Image:GTA02ALL.png|left|400px|thumb|Inside the package]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Neo FreeRunner&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Stylus&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Battery&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Charger&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  USB Cable (A -&amp;gt; Mini-B 5-pole)&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  microSD Card 512MB &amp;amp; SD adapter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up the hardware, getting to know the Neo FreeRunner physically ==&lt;br /&gt;
&lt;br /&gt;
===Installing the Micro-SD card, the SIM card, and the Battery ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align-center&amp;gt;&lt;br /&gt;
&amp;lt;table width=&amp;quot;80%&amp;quot; style=&amp;quot;clear: both; border: 1px solid #ffffff; border-collapse: collapse; padding: 0.2em; margin: 0; font-size: 100%; margin: 0 1px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 50%; white-space: nowrap; padding: 4px 1em 0 0.5em; border-right: 1px solid #ffffff;&amp;quot;&amp;gt;[[Image:menu13.jpg|233px|thumb|Open the case like this.|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding: 1px 1em 0; background: #ffffff;&amp;quot;&amp;gt;[[Image:menu14.jpg|250px|thumb|Opening !|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding: 1px 1em 0; background: #ffffff;&amp;quot;&amp;gt;[[Image:menu11.jpg|260px|thumb|Put the SIM card and SD card here.|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 50%; white-space: nowrap; padding: 4px 1em 0 0.5em; border-right: 1px solid #ffffff;&amp;quot;&amp;gt;[[Image:menu12.jpg|233px|thumb|Finally, put in the battery.|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Remove the rear cover of the Neo FreeRunner by first holding the Neo FreeRunner on the side and then use your fingernail to prise off the rear cover at the slot on top of the device.&lt;br /&gt;
# Now you should be able to locate the combined SIM and Micro-SD card holder at the bottom of the battery compartment.&lt;br /&gt;
# Unlock the SIM card holder by sliding the metal clip down, towards the USB socket, with your fingernail. Use caution, as these parts are delicate and could be damaged by forcing them in the wrong direction.&lt;br /&gt;
# Lift up on the SIM card holder.&lt;br /&gt;
# The Micro-SD card holder is held in place by a latch on either side.  It is easiest to open the Micro-SD card holder by releasing these latches one at a time rather than by lifting from the middle, as lifting from the middle tends to increase the latching pressure.  A small screwdriver or knife can be used for this.&lt;br /&gt;
# Insert the Micro-SD card into the Micro-SD card holder. Note that on the inside of metal part of the holder there are little holding tabs for the card. Slide the card in these holders (on the metal part) before closing the card holder. Note that the electrical contacts should face down and towards the edge of the Neo Freerunner.&lt;br /&gt;
# Close the Micro-SD card holder, making sure that both latches of the holder are securely fastened.&lt;br /&gt;
# Insert the SIM card into the SIM card holder, taking care to slide inside the two metal tabs in the cover. Note that the electrical contacts should face down and that the cut corner should be closest to the external GPS Antenna Socket.&lt;br /&gt;
# Close the SIM card holder and lock it by sliding the metal clip towards the external GPS Antenna Socket on the FreeRunner.&lt;br /&gt;
# Insert the battery into the battery compartment, aligning the electrical contacts on the battery with the electrical contacts in the battery compartment.  Insert the side with the electrical contacts first.&lt;br /&gt;
# Replace the rear cover on the FreeRunner.&lt;br /&gt;
&lt;br /&gt;
[[Image:FR_SIM_SD_open.jpg|457px|thumb|SIM and SD holders open, with cards in place|center]]&lt;br /&gt;
&lt;br /&gt;
[[http://video.google.de/videoplay?docid=-8343770443102960945 A short video]] is also available. It was shot using the previous version of the Neo, but the installation procedures remains the same.&lt;br /&gt;
&lt;br /&gt;
===Charging the Neo FreeRunner===&lt;br /&gt;
&lt;br /&gt;
When using the Neo FreeRunner for the first time, you should charge the battery completely. The battery can be charged using the provided charger (at 1000mA) or from a powered USB port capable of providing 500mA worth of current.  Most computers will be able to charge the FreeRunner without any problems.&lt;br /&gt;
&lt;br /&gt;
Charging an empty battery at 100mA takes 12~15 hours, at 500mA takes 2,5~3,5 hours, and at 1000mA takes 1.5~2.5 hours. (90%~100%) [to be confirmed]&lt;br /&gt;
&lt;br /&gt;
Make sure that the battery never discharges completely. This is an issue because the internal charging circuitry can not be turned on until the FreeRunner has booted, and booting through USB power alone does not work. Should the battery become completely discharged, your options are:&lt;br /&gt;
- Use external stand-alone charger (compatible with the Nokia BL-5C battery)&lt;br /&gt;
- Boot the FreeRunner with an alternative battery, or with a spare GTA01 or GTA02 battery, plug USB power, then switch to the empty battery.&lt;br /&gt;
- Boot the FreeRunner with a 4.5VDC external power source (steady hand and great care involved), plug USB power, then insert the empty battery.&lt;br /&gt;
&lt;br /&gt;
===Buttons and connectors===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;80%&amp;quot; style=&amp;quot;clear: both; border-collapse: collapse&amp;quot;  valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 25px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 370px&amp;quot;&amp;gt;[[Image:menu9.jpg|370px|thumb|Power Button, USB and external GPS Antenna (left to right)|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 25px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 370px&amp;quot;&amp;gt;[[Image:menu8.jpg|370px|thumb|AUX Button and phone jack (left to right)|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Power'''&lt;br /&gt;
Tapping the power button exits the current application.&lt;br /&gt;
&lt;br /&gt;
Holding the power button brings up a menu allowing you to:&lt;br /&gt;
* Power on and off the GPS, wifi, GSM, and bluetooth antennae&lt;br /&gt;
* Change power management mode to:&lt;br /&gt;
** Dim first then lock&lt;br /&gt;
** Dim only, don't lock&lt;br /&gt;
** Disabled&lt;br /&gt;
* Lock the screen&lt;br /&gt;
* Shutdown the device.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Aux'''&lt;br /&gt;
&lt;br /&gt;
Holding the Aux button brings up a menu allowing you to:&lt;br /&gt;
&lt;br /&gt;
* Hide and show the title bar (Fullscreen toggle)&lt;br /&gt;
* Alternate wide or tall display modes (Swap Orientation)&lt;br /&gt;
* Save the content of the screen as an image file (Screenshot)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Unlocking the screen===&lt;br /&gt;
&lt;br /&gt;
When the screen is locked, you should see a Matrix-style green graphic with the Openmoko symbol in the middle of the bottom of the screen along with lock and unlock symbols.  If you drag the Openmoko symbol to the unlock symbol at the top then the screen will become unlocked.&lt;br /&gt;
&lt;br /&gt;
== Making your first phone call: Menus and Applications ==&lt;br /&gt;
&lt;br /&gt;
''Note:'' this section describes the interface used by the &amp;quot;2007.2&amp;quot; image, which is the current default image for Openmoko.&lt;br /&gt;
&lt;br /&gt;
====Today Page====&lt;br /&gt;
&amp;lt;!-- [[Image:Todaypage_reduced_false.png|right|200px|]] --&amp;gt;&lt;br /&gt;
The first thing after you boot Openmoko should be the &amp;quot;Today&amp;quot; page.  This is your home page.  In the top row, you see icons that indicate the status of the phone.  The second row are quick links to commonly-used applications such as the dialer.  The main body of the screen is your home page, displaying a clock and other useful information.  The bottom row consists of three tabs representing Today (the page you're viewing now), Launch Task Page, and Running Tasks Page.&lt;br /&gt;
&lt;br /&gt;
See [[Today/2007.2]] for more information about the Today page and customization.&amp;lt;br clear=all /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Launch Task Page====&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page displays a menu of available applications.  You may choose a category of applications to display to simplify the screen, or choose to display them all.&lt;br /&gt;
&lt;br /&gt;
Current categories are [[PIM Suite]], [[Applications]], [[Games]], [[Utilities]], and All.&lt;br /&gt;
&lt;br /&gt;
====Running Tasks Page====&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page displays currently-running tasks.  Any individual task may be terminated by selecting it and then clicking on the garbage-can icon to close it.  All tasks may be terminated by clicking on any one of them and then clicking on the &amp;quot;folder&amp;quot; icon in the upper right (expect this to change in future releases).  Any task may be rejoined by selecting it and then selecting the &amp;quot;return&amp;quot; icon at the middle top.&lt;br /&gt;
&lt;br /&gt;
====Exiting an Application====&lt;br /&gt;
&lt;br /&gt;
Any time an application is running, you can simply click the device's power button and the application will exit, returning you to the Today page.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can switch tasks at any time by clicking the menu of tasks at the far upper-left of the screen, which will display a list of running tasks, allowing you to select one.&lt;br /&gt;
&lt;br /&gt;
(''Note:'' If the task menu is not shown, use the [[#Aux|Aux]] button to bring up the Aux menu, and select &amp;quot;Toggle Fullscreen&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
===Adjusting the Volume===&lt;br /&gt;
&lt;br /&gt;
As of this writing, there is no way to adjust the volume from the screen.&lt;br /&gt;
&lt;br /&gt;
For now, run the terminal application or [[Getting_Started_with_your_Neo_FreeRunner#Connect_to_the_Neo_FreeRunner_By_USB_Networking|log in via usb]], and run the [[alsamixer]] application.  The mixer is simpler than it looks.  Just use the left and right arrow keys to select &amp;quot;headphone&amp;quot; or &amp;quot;PCM&amp;quot; and use the up and down arrow keys to adjust the volume.  You can also adjust your microphone volume with the &amp;quot;mic2&amp;quot; adjustment.  Press ESC when finished.  Then exit the terminal application or log out of the USB login.&lt;br /&gt;
&lt;br /&gt;
You may need to update configuration files in /usr/share/openmoko/scenarios/ to make the microphone setting permanent.  Use&lt;br /&gt;
 alsactl -f ''path-to-statefile'' store&lt;br /&gt;
to do this.&lt;br /&gt;
&lt;br /&gt;
The default files are as follows (in /usr/share/openmoko/scenarios/): &lt;br /&gt;
:gsmhandset.state&lt;br /&gt;
:gsmheadset.state&lt;br /&gt;
:gsmspeakerout.state&lt;br /&gt;
:headset.state&lt;br /&gt;
:stereoout.state&lt;br /&gt;
&lt;br /&gt;
These correspond to the various Sound Profiles accessible in the Debug Tool under Applications.&lt;br /&gt;
&lt;br /&gt;
One way to increase the volume of the microphone is to do the following:&lt;br /&gt;
# ssh into your Freerunner&lt;br /&gt;
# vi /usr/share/openmoko/scenarios/gsmhandset.state&lt;br /&gt;
# search for &amp;quot;Mic2&amp;quot;&lt;br /&gt;
# change to &amp;quot;value 3&amp;quot;&lt;br /&gt;
[[Freerunner_Hardware_Issues]]&lt;br /&gt;
&lt;br /&gt;
==Getting into your new Linux box==&lt;br /&gt;
&lt;br /&gt;
===Connect with and log in the Neo FreeRunner===&lt;br /&gt;
&lt;br /&gt;
Connect the Neo FreeRunner to your Linux computer using the standard mini-USB to USB cable provided.&lt;br /&gt;
&lt;br /&gt;
With the device connected, &lt;br /&gt;
 modprobe usbnet&lt;br /&gt;
(if necessary) and configure usb0 interface (as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifconfig usb0 192.168.0.200 netmask 255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your eth0 interface is also in the same 'range' (e.g. 192.168.0.105) then you can do the following:&lt;br /&gt;
&lt;br /&gt;
1. ping the Neo with&lt;br /&gt;
 # ping -I usb0 192.168.0.202&lt;br /&gt;
2. add a route to your Neo (adjust your firewall if necessary):&lt;br /&gt;
 # /sbin/route add -host 192.168.0.202/32 dev usb0&lt;br /&gt;
3 log in to the Neo with empty password&lt;br /&gt;
 # ssh root@192.168.0.202&lt;br /&gt;
&lt;br /&gt;
You will eventually want to setup your computer so that it automatically connects the Neo FreeRunner to the Internet when it is plugged in. This is discussed in the [[USB_Networking]] section, which you should see if the procedure above fails.&lt;br /&gt;
&lt;br /&gt;
===Use the package manager===&lt;br /&gt;
&lt;br /&gt;
There are three layers to the software on the FreeRunner:&lt;br /&gt;
&lt;br /&gt;
* uBoot: Think of u-boot as a combination of the BIOS and Grub on a PC.&lt;br /&gt;
* Kernel: The Linux kernel&lt;br /&gt;
* Root Filesystem: The rest of the system&lt;br /&gt;
&lt;br /&gt;
In order to keep the FreeRunner up-to-date with the latest features and bug-fixes, it is advisable update the software at regular intervals. There are two main methods of doing this: using the package manager opkg (discussed in this section) or [[Flashing the Neo FreeRunner|flashing  the device]].&lt;br /&gt;
&lt;br /&gt;
uboot, the kernel and the root filesystem can all be flashed to update them. For uboot, this is the only possibility. The advantage of flashing the kernel, rather than using opkg seems to be speed. The disadvantage of flashing the root file system is that it wipes out all local modifications, including /home. If /home is moved to the SD disk, this is no longer a problem.&lt;br /&gt;
&lt;br /&gt;
Assuming that your FreeRunner can access the internet (see above), the kernel and other packages can be updated with&lt;br /&gt;
&lt;br /&gt;
 # opkg update&lt;br /&gt;
 # opkg upgrade&lt;br /&gt;
&lt;br /&gt;
The first updates the repository information, telling opkg what packages are available. The second upgrades all packages for which a newer version is available. '''At the moment, some signature files are missing (404 errors), which opkg complains about, but this is cosmetic.'''  The repositories will still update with the missing signature files.  &lt;br /&gt;
&lt;br /&gt;
Note that running opkg upgrade on a factory-fresh phone will upgrade dropbear (the ssh software) and various xserver packages, and neither upgrades elegantly while in use, so either upgrade dropbear from the FreeRunner's terminal and then upgrade the rest via ssh, or upgrade the xserver packages via ssh and then upgrade the rest from the FreeRunner's terminal.  For example, go to the FreeRunner terminal and type:&lt;br /&gt;
&lt;br /&gt;
 # opkg install dropbear&lt;br /&gt;
&lt;br /&gt;
which will upgrade it to the latest version.  Then connect to the FreeRunner via ssh and type:&lt;br /&gt;
&lt;br /&gt;
 # opkg upgrade&lt;br /&gt;
&lt;br /&gt;
If you do your first upgrade in two installments like this, it will go more smoothly.&lt;br /&gt;
&lt;br /&gt;
It will be possible in the future to update uboot with opkg, but this has not yet been implemented&lt;br /&gt;
&lt;br /&gt;
=== Installing multimedia, web browsing and other applications ===&lt;br /&gt;
&lt;br /&gt;
There are many applications you can install - check out the [[Repositories]] for a list of packages.&lt;br /&gt;
&lt;br /&gt;
The calendar can be installed with&lt;br /&gt;
&lt;br /&gt;
 opkg install openmoko-dates2&lt;br /&gt;
&lt;br /&gt;
For a Media Player:&lt;br /&gt;
&lt;br /&gt;
 opkg install openmoko-mediaplayer2&lt;br /&gt;
 wget http://abraxa.dyndns.org:81/random/openmoko-mediaplayer-theme.tar.bz2&lt;br /&gt;
 tar xjf openmoko-mediaplayer-theme.tar.bz2 -C /usr/share/themes/Moko/gtk-2.0&lt;br /&gt;
 rm openmoko-mediaplayer-theme.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you want a basic image viewer, have a look at the one from the gpe suite:&lt;br /&gt;
&lt;br /&gt;
 opkg install gpe-icons gpe-gallery&lt;br /&gt;
&lt;br /&gt;
To obtain the standard web browser, use:&lt;br /&gt;
&lt;br /&gt;
 opkg install openmoko-browser2&lt;br /&gt;
&lt;br /&gt;
An alternative browser, minimo, offers many more features.  &lt;br /&gt;
First download and unpack it on your GNU/Linux host:&lt;br /&gt;
&lt;br /&gt;
 wget http://www.ginguppin.de/files/minimo.tar.bz2&lt;br /&gt;
 tar jvxf minimo.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Copy it over to the FreeRunner:&lt;br /&gt;
 scp minimo_* root@openmoko:/tmp&lt;br /&gt;
&lt;br /&gt;
Then on the FreeRunner:&lt;br /&gt;
 opkg install /tmp/minimo_0.02\+cvs20070626-r0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
You'll probably also want to [[Switching Keyboards|change the keyboard]] including the [[Switching Keyboards#How_to_add_a_keyboard_toggle_button|keyboard toggle applet]]&lt;br /&gt;
&lt;br /&gt;
You'll probably also want to [[Switching Keyboards|change the keyboard]] including the [[Switching Keyboards#How_to_add_a_keyboard_toggle_button|keyboard toggle applet]]&lt;br /&gt;
&lt;br /&gt;
=== Accessing the microSD card ===&lt;br /&gt;
&lt;br /&gt;
Mounted at /media/card by default.&lt;br /&gt;
&lt;br /&gt;
If you have multiple partitions on the card, the first (/dev/mmcblk0p1) will be mounted at /media/card, the second at /media/mmcblk0p2, the third at /media/mmcblk0p3 etc.&lt;br /&gt;
&lt;br /&gt;
=== Importing contacts ===&lt;br /&gt;
&lt;br /&gt;
If you can export your contacts to VCard format, either multiple files or single file containing all of them, you may use the script on [[Import Vcf Contacts]] page to bring them to Neo.&lt;br /&gt;
&lt;br /&gt;
==The next steps==&lt;br /&gt;
&lt;br /&gt;
Congratulations for setting up your Neo FreeRunner. There are many more ressources to help free your phone: &lt;br /&gt;
&lt;br /&gt;
===Customize the interface: clock, keyboard...===&lt;br /&gt;
&lt;br /&gt;
The stock [[Openmoko2007.2]] image flashed onto the Neo FreeRunner is really just the bare bones. For example, you don't have the clock and the quick-launch icons showing. Here's how you can change that:&lt;br /&gt;
&lt;br /&gt;
 # dbus-launch gconftool-2 -t boolean -s /desktop/poky/interface/reduced false&lt;br /&gt;
 # /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
If you rather have a regular clock instead of the digital one, do this instead:&lt;br /&gt;
&lt;br /&gt;
 # dbus-launch gconftool-2 -t boolean -s /desktop/poky/interface/reduced false&lt;br /&gt;
 # dbus-launch gconftool-2 -t boolean -s /desktop/poky/interface/digital_clock false&lt;br /&gt;
 # /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
More information about today screen customization at [[Today/2007.2]].&lt;br /&gt;
&lt;br /&gt;
With either clock, you may wish to set the correct [[Date]] and [[Timezone]].&lt;br /&gt;
&lt;br /&gt;
Also, if you prefer having a full keyboard, using matchbox's qwerty keybord, see [http://www.ginguppin.de/node/15 these instructions]. Then you may also see [http://lists.openmoko.org/pipermail/community/2008-July/021296.html these], which describe a way to add an applet allowing the showing/hiding of that keyboard.&lt;br /&gt;
&lt;br /&gt;
===GPS, GPRS and WLAN===&lt;br /&gt;
&lt;br /&gt;
See [[GTA02 WLAN]] about wifi. See [[Manually using GPRS]]. &lt;br /&gt;
&lt;br /&gt;
Simple guide to get going with GPS:&lt;br /&gt;
&lt;br /&gt;
 # opkg install gpsd&lt;br /&gt;
 # echo &amp;quot;GPS_DEV=\&amp;quot;/dev/ttySAC1\&amp;quot;&amp;quot; &amp;gt; /etc/default/gpsd&lt;br /&gt;
&lt;br /&gt;
and restart gpsd, the gps daemon, with&lt;br /&gt;
&lt;br /&gt;
 # /etc/init.d/gpsd restart&lt;br /&gt;
&lt;br /&gt;
To test GPS, you can use agpsui:&lt;br /&gt;
&lt;br /&gt;
 # opkg install openmoko-agpsui&lt;br /&gt;
&lt;br /&gt;
For a nice map, try tangoGPS:&lt;br /&gt;
&lt;br /&gt;
 # opkg install http://www.tangogps.org/downloads/tangogps_0.9.2-r1_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
More information on [[GPS]] page.&lt;br /&gt;
&lt;br /&gt;
According to some [http://lists.openmoko.org/pipermail/support/2008-July/000003.html posts], GPRS might be broken currently (2007.2), though. There are also critical [[GPS Problems]]. To install the updates when they become available, you will probably want to learn about [[Booting the Neo FreeRunner]] and [[Flashing the Neo FreeRunner]].&lt;br /&gt;
&lt;br /&gt;
=== The community ===&lt;br /&gt;
==== Mailing lists ====&lt;br /&gt;
&lt;br /&gt;
There are several [[http://lists.openmoko.org/mailman/listinfo/ Mailing lists]]&lt;br /&gt;
&lt;br /&gt;
There is an active community mailing list.&lt;br /&gt;
You may ask for help on the support mailing list : more details at https://lists.openmoko.org/mailman/listinfo/support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An excellent tool for searching all the openmoko mailing lists is http://openmoko.markmail.org/&lt;br /&gt;
&lt;br /&gt;
==== The wiki ====&lt;br /&gt;
&lt;br /&gt;
If you want to know more about the Neo FreeRunner then you can get more information in the following topics:&lt;br /&gt;
&lt;br /&gt;
* [[GTA02 Openness]]&lt;br /&gt;
* [[Neo FreeRunner]]&lt;br /&gt;
* [[Neo FreeRunner GTA02 Hardware]]&lt;br /&gt;
* [[FreeRunner/Buttons and LEDs]]&lt;br /&gt;
* [[Latest Images]]&lt;br /&gt;
* [[Distributions]]&lt;br /&gt;
&lt;br /&gt;
To search this wiki with Google, use the following search term:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;search term&amp;gt; site:http://wiki.openmoko.org/wiki/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Blogs ====&lt;br /&gt;
&lt;br /&gt;
The [http://planet.openmoko.org/ collection of blogs on OpenMoko].&lt;br /&gt;
&lt;br /&gt;
==== Other documents ====&lt;br /&gt;
&lt;br /&gt;
* http://quickstart.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:GTA02 Hardware]]&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:User Guides]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Getting_Started_with_your_Neo_FreeRunner</id>
		<title>Getting Started with your Neo FreeRunner</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Getting_Started_with_your_Neo_FreeRunner"/>
				<updated>2008-07-20T02:53:21Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Installing multimedia, web browsing and other applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Languages|Getting Started with your Neo FreeRunner}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;2&amp;quot; style=&amp;quot;padding: 0%; margin:0em 0em 1em 0em; background:#eeeeee; width:100%;floating=&amp;quot;center&amp;quot;; &amp;quot;&lt;br /&gt;
! style=&amp;quot;background:#fcfcfc; width:75% &amp;quot; |  &lt;br /&gt;
 &amp;lt;p align=&amp;quot;left&amp;quot;&amp;gt;&lt;br /&gt;
Thank you for purchasing this Developer release of Neo FreeRunner. The [[Neo FreeRunner]] phone is the second hardware platform to take advantage of [[Openmoko]]. This guide will help you get to know your Neo FreeRunner and how to start using your Neo FreeRunner.&amp;lt;/p&amp;gt;&lt;br /&gt;
! style=&amp;quot;background:#fcfcfc; width:25% &amp;quot; |&lt;br /&gt;
[[Image:Freerunner box.png|200px|thumb|Neo FreeRunner Package]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Package Contents ==&lt;br /&gt;
&lt;br /&gt;
[[Image:GTA02ALL.png|left|400px|thumb|Inside the package]]&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Neo FreeRunner&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Stylus&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Battery&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  Charger&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  USB Cable (A -&amp;gt; Mini-B 5-pole)&lt;br /&gt;
: [[Image:Circle２.gif|10px]]  microSD Card 512MB &amp;amp; SD adapter&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;clear: both&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Setting up the hardware, getting to know the Neo FreeRunner physically ==&lt;br /&gt;
&lt;br /&gt;
===Installing the Micro-SD card, the SIM card, and the Battery ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div align-center&amp;gt;&lt;br /&gt;
&amp;lt;table width=&amp;quot;80%&amp;quot; style=&amp;quot;clear: both; border: 1px solid #ffffff; border-collapse: collapse; padding: 0.2em; margin: 0; font-size: 100%; margin: 0 1px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 50%; white-space: nowrap; padding: 4px 1em 0 0.5em; border-right: 1px solid #ffffff;&amp;quot;&amp;gt;[[Image:menu13.jpg|233px|thumb|Open the case like this.|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding: 1px 1em 0; background: #ffffff;&amp;quot;&amp;gt;[[Image:menu14.jpg|250px|thumb|Opening !|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot; style=&amp;quot;background: #ffffff&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;padding: 1px 1em 0; background: #ffffff;&amp;quot;&amp;gt;[[Image:menu11.jpg|260px|thumb|Put the SIM card and SD card here.|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 50%; white-space: nowrap; padding: 4px 1em 0 0.5em; border-right: 1px solid #ffffff;&amp;quot;&amp;gt;[[Image:menu12.jpg|233px|thumb|Finally, put in the battery.|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Remove the rear cover of the Neo FreeRunner by first holding the Neo FreeRunner on the side and then use your fingernail to prise off the rear cover at the slot on top of the device.&lt;br /&gt;
# Now you should be able to locate the combined SIM and Micro-SD card holder at the bottom of the battery compartment.&lt;br /&gt;
# Unlock the SIM card holder by sliding the metal clip down, towards the USB socket, with your fingernail. Use caution, as these parts are delicate and could be damaged by forcing them in the wrong direction.&lt;br /&gt;
# Lift up on the SIM card holder.&lt;br /&gt;
# The Micro-SD card holder is held in place by a latch on either side.  It is easiest to open the Micro-SD card holder by releasing these latches one at a time rather than by lifting from the middle, as lifting from the middle tends to increase the latching pressure.  A small screwdriver or knife can be used for this.&lt;br /&gt;
# Insert the Micro-SD card into the Micro-SD card holder. Note that on the inside of metal part of the holder there are little holding tabs for the card. Slide the card in these holders (on the metal part) before closing the card holder. Note that the electrical contacts should face down and towards the edge of the Neo Freerunner.&lt;br /&gt;
# Close the Micro-SD card holder, making sure that both latches of the holder are securely fastened.&lt;br /&gt;
# Insert the SIM card into the SIM card holder, taking care to slide inside the two metal tabs in the cover. Note that the electrical contacts should face down and that the cut corner should be closest to the external GPS Antenna Socket.&lt;br /&gt;
# Close the SIM card holder and lock it by sliding the metal clip towards the external GPS Antenna Socket on the FreeRunner.&lt;br /&gt;
# Insert the battery into the battery compartment, aligning the electrical contacts on the battery with the electrical contacts in the battery compartment.  Insert the side with the electrical contacts first.&lt;br /&gt;
# Replace the rear cover on the FreeRunner.&lt;br /&gt;
&lt;br /&gt;
[[Image:FR_SIM_SD_open.jpg|457px|thumb|SIM and SD holders open, with cards in place|center]]&lt;br /&gt;
&lt;br /&gt;
[[http://video.google.de/videoplay?docid=-8343770443102960945 A short video]] is also available. It was shot using the previous version of the Neo, but the installation procedures remains the same.&lt;br /&gt;
&lt;br /&gt;
===Charging the Neo FreeRunner===&lt;br /&gt;
&lt;br /&gt;
When using the Neo FreeRunner for the first time, you should charge the battery completely. The battery can be charged using the provided charger (at 1000mA) or from a powered USB port capable of providing 500mA worth of current.  Most computers will be able to charge the FreeRunner without any problems.&lt;br /&gt;
&lt;br /&gt;
Charging an empty battery at 100mA takes 12~15 hours, at 500mA takes 2,5~3,5 hours, and at 1000mA takes 1.5~2.5 hours. (90%~100%) [to be confirmed]&lt;br /&gt;
&lt;br /&gt;
Make sure that the battery never discharges completely. This is an issue because the internal charging circuitry can not be turned on until the FreeRunner has booted, and booting through USB power alone does not work. Should the battery become completely discharged, your options are:&lt;br /&gt;
- Use external stand-alone charger (compatible with the Nokia BL-5C battery)&lt;br /&gt;
- Boot the FreeRunner with an alternative battery, or with a spare GTA01 or GTA02 battery, plug USB power, then switch to the empty battery.&lt;br /&gt;
- Boot the FreeRunner with a 4.5VDC external power source (steady hand and great care involved), plug USB power, then insert the empty battery.&lt;br /&gt;
&lt;br /&gt;
===Buttons and connectors===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table width=&amp;quot;80%&amp;quot; style=&amp;quot;clear: both; border-collapse: collapse&amp;quot;  valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 25px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 370px&amp;quot;&amp;gt;[[Image:menu9.jpg|370px|thumb|Power Button, USB and external GPS Antenna (left to right)|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 25px&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;width: 370px&amp;quot;&amp;gt;[[Image:menu8.jpg|370px|thumb|AUX Button and phone jack (left to right)|center]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Power'''&lt;br /&gt;
Tapping the power button exits the current application.&lt;br /&gt;
&lt;br /&gt;
Holding the power button brings up a menu allowing you to:&lt;br /&gt;
* Power on and off the GPS, wifi, GSM, and bluetooth antennae&lt;br /&gt;
* Change power management mode to:&lt;br /&gt;
** Dim first then lock&lt;br /&gt;
** Dim only, don't lock&lt;br /&gt;
** Disabled&lt;br /&gt;
* Lock the screen&lt;br /&gt;
* Shutdown the device.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;'''Aux'''&lt;br /&gt;
&lt;br /&gt;
Holding the Aux button brings up a menu allowing you to:&lt;br /&gt;
&lt;br /&gt;
* Hide and show the title bar (Fullscreen toggle)&lt;br /&gt;
* Alternate wide or tall display modes (Swap Orientation)&lt;br /&gt;
* Save the content of the screen as an image file (Screenshot)&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Unlocking the screen===&lt;br /&gt;
&lt;br /&gt;
When the screen is locked, you should see a Matrix-style green graphic with the Openmoko symbol in the middle of the bottom of the screen along with lock and unlock symbols.  If you drag the Openmoko symbol to the unlock symbol at the top then the screen will become unlocked.&lt;br /&gt;
&lt;br /&gt;
== Making your first phone call: Menus and Applications ==&lt;br /&gt;
&lt;br /&gt;
''Note:'' this section describes the interface used by the &amp;quot;2007.2&amp;quot; image, which is the current default image for Openmoko.&lt;br /&gt;
&lt;br /&gt;
====Today Page====&lt;br /&gt;
&amp;lt;!-- [[Image:Todaypage_reduced_false.png|right|200px|]] --&amp;gt;&lt;br /&gt;
The first thing after you boot Openmoko should be the &amp;quot;Today&amp;quot; page.  This is your home page.  In the top row, you see icons that indicate the status of the phone.  The second row are quick links to commonly-used applications such as the dialer.  The main body of the screen is your home page, displaying a clock and other useful information.  The bottom row consists of three tabs representing Today (the page you're viewing now), Launch Task Page, and Running Tasks Page.&lt;br /&gt;
&lt;br /&gt;
See [[Today/2007.2]] for more information about the Today page and customization.&amp;lt;br clear=all /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Launch Task Page====&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page displays a menu of available applications.  You may choose a category of applications to display to simplify the screen, or choose to display them all.&lt;br /&gt;
&lt;br /&gt;
Current categories are [[PIM Suite]], [[Applications]], [[Games]], [[Utilities]], and All.&lt;br /&gt;
&lt;br /&gt;
====Running Tasks Page====&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
This page displays currently-running tasks.  Any individual task may be terminated by selecting it and then clicking on the garbage-can icon to close it.  All tasks may be terminated by clicking on any one of them and then clicking on the &amp;quot;folder&amp;quot; icon in the upper right (expect this to change in future releases).  Any task may be rejoined by selecting it and then selecting the &amp;quot;return&amp;quot; icon at the middle top.&lt;br /&gt;
&lt;br /&gt;
====Exiting an Application====&lt;br /&gt;
&lt;br /&gt;
Any time an application is running, you can simply click the device's power button and the application will exit, returning you to the Today page.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can switch tasks at any time by clicking the menu of tasks at the far upper-left of the screen, which will display a list of running tasks, allowing you to select one.&lt;br /&gt;
&lt;br /&gt;
(''Note:'' If the task menu is not shown, use the [[#Aux|Aux]] button to bring up the Aux menu, and select &amp;quot;Toggle Fullscreen&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
===Adjusting the Volume===&lt;br /&gt;
&lt;br /&gt;
As of this writing, there is no way to adjust the volume from the screen.&lt;br /&gt;
&lt;br /&gt;
For now, run the terminal application or [[Getting_Started_with_your_Neo_FreeRunner#Connect_to_the_Neo_FreeRunner_By_USB_Networking|log in via usb]], and run the [[alsamixer]] application.  The mixer is simpler than it looks.  Just use the left and right arrow keys to select &amp;quot;headphone&amp;quot; or &amp;quot;PCM&amp;quot; and use the up and down arrow keys to adjust the volume.  You can also adjust your microphone volume with the &amp;quot;mic2&amp;quot; adjustment.  Press ESC when finished.  Then exit the terminal application or log out of the USB login.&lt;br /&gt;
&lt;br /&gt;
You may need to update configuration files in /usr/share/openmoko/scenarios/ to make the microphone setting permanent.  Use&lt;br /&gt;
 alsactl -f ''path-to-statefile'' store&lt;br /&gt;
to do this.&lt;br /&gt;
&lt;br /&gt;
The default files are as follows (in /usr/share/openmoko/scenarios/): &lt;br /&gt;
:gsmhandset.state&lt;br /&gt;
:gsmheadset.state&lt;br /&gt;
:gsmspeakerout.state&lt;br /&gt;
:headset.state&lt;br /&gt;
:stereoout.state&lt;br /&gt;
&lt;br /&gt;
These correspond to the various Sound Profiles accessible in the Debug Tool under Applications.&lt;br /&gt;
&lt;br /&gt;
One way to increase the volume of the microphone is to do the following:&lt;br /&gt;
# ssh into your Freerunner&lt;br /&gt;
# vi /usr/share/openmoko/scenarios/gsmhandset.state&lt;br /&gt;
# search for &amp;quot;Mic2&amp;quot;&lt;br /&gt;
# change to &amp;quot;value 3&amp;quot;&lt;br /&gt;
[[Freerunner_Hardware_Issues]]&lt;br /&gt;
&lt;br /&gt;
==Getting into your new Linux box==&lt;br /&gt;
&lt;br /&gt;
===Connect with and log in the Neo FreeRunner===&lt;br /&gt;
&lt;br /&gt;
Connect the Neo FreeRunner to your Linux computer using the standard mini-USB to USB cable provided.&lt;br /&gt;
&lt;br /&gt;
With the device connected, &lt;br /&gt;
 modprobe usbnet&lt;br /&gt;
(if necessary) and configure usb0 interface (as root):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ifconfig usb0 192.168.0.200 netmask 255.255.255.0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If your eth0 interface is also in the same 'range' (e.g. 192.168.0.105) then you can do the following:&lt;br /&gt;
&lt;br /&gt;
1. ping the Neo with&lt;br /&gt;
 # ping -I usb0 192.168.0.202&lt;br /&gt;
2. add a route to your Neo (adjust your firewall if necessary):&lt;br /&gt;
 # /sbin/route add -host 192.168.0.202/32 dev usb0&lt;br /&gt;
3 log in to the Neo with empty password&lt;br /&gt;
 # ssh root@192.168.0.202&lt;br /&gt;
&lt;br /&gt;
You will eventually want to setup your computer so that it automatically connects the Neo FreeRunner to the Internet when it is plugged in. This is discussed in the [[USB_Networking]] section, which you should see if the procedure above fails.&lt;br /&gt;
&lt;br /&gt;
===Use the package manager===&lt;br /&gt;
&lt;br /&gt;
There are three layers to the software on the FreeRunner:&lt;br /&gt;
&lt;br /&gt;
* uBoot: Think of u-boot as a combination of the BIOS and Grub on a PC.&lt;br /&gt;
* Kernel: The Linux kernel&lt;br /&gt;
* Root Filesystem: The rest of the system&lt;br /&gt;
&lt;br /&gt;
In order to keep the FreeRunner up-to-date with the latest features and bug-fixes, it is advisable update the software at regular intervals. There are two main methods of doing this: using the package manager opkg (discussed in this section) or [[Flashing the Neo FreeRunner|flashing  the device]].&lt;br /&gt;
&lt;br /&gt;
uboot, the kernel and the root filesystem can all be flashed to update them. For uboot, this is the only possibility. The advantage of flashing the kernel, rather than using opkg seems to be speed. The disadvantage of flashing the root file system is that it wipes out all local modifications, including /home. If /home is moved to the SD disk, this is no longer a problem.&lt;br /&gt;
&lt;br /&gt;
Assuming that your FreeRunner can access the internet (see above), the kernel and other packages can be updated with&lt;br /&gt;
&lt;br /&gt;
 # opkg update&lt;br /&gt;
 # opkg upgrade&lt;br /&gt;
&lt;br /&gt;
The first updates the repository information, telling opkg what packages are available. The second upgrades all packages for which a newer version is available. '''At the moment, some signature files are missing (404 errors), which opkg complains about, but this is cosmetic.'''  The repositories will still update with the missing signature files.  &lt;br /&gt;
&lt;br /&gt;
Note that running opkg upgrade on a factory-fresh phone will upgrade dropbear (the ssh software) and various xserver packages, and neither upgrades elegantly while in use, so either upgrade dropbear from the FreeRunner's terminal and then upgrade the rest via ssh, or upgrade the xserver packages via ssh and then upgrade the rest from the FreeRunner's terminal.  For example, go to the FreeRunner terminal and type:&lt;br /&gt;
&lt;br /&gt;
 # opkg install dropbear&lt;br /&gt;
&lt;br /&gt;
which will upgrade it to the latest version.  Then connect to the FreeRunner via ssh and type:&lt;br /&gt;
&lt;br /&gt;
 # opkg upgrade&lt;br /&gt;
&lt;br /&gt;
If you do your first upgrade in two installments like this, it will go more smoothly.&lt;br /&gt;
&lt;br /&gt;
It will be possible in the future to update uboot with opkg, but this has not yet been implemented&lt;br /&gt;
&lt;br /&gt;
=== Installing multimedia, web browsing and other applications ===&lt;br /&gt;
&lt;br /&gt;
There are many applications you can install - check out the [[Repositories]] for a list of packages.&lt;br /&gt;
&lt;br /&gt;
The calendar can be installed with&lt;br /&gt;
&lt;br /&gt;
 # opkg install openmoko-dates2&lt;br /&gt;
&lt;br /&gt;
For a Media Player:&lt;br /&gt;
&lt;br /&gt;
 # opkg install openmoko-mediaplayer2&lt;br /&gt;
 # wget http://abraxa.dyndns.org:81/random/openmoko-mediaplayer-theme.tar.bz2&lt;br /&gt;
 # tar xjf openmoko-mediaplayer-theme.tar.bz2 -C /usr/share/themes/Moko/gtk-2.0&lt;br /&gt;
 # rm openmoko-mediaplayer-theme.tar.bz2&lt;br /&gt;
&lt;br /&gt;
If you want a basic image viewer, have a look at the one from the gpe suite:&lt;br /&gt;
&lt;br /&gt;
 # opkg install gpe-icons gpe-gallery&lt;br /&gt;
&lt;br /&gt;
To obtain the standard web browser, use:&lt;br /&gt;
&lt;br /&gt;
 # opkg install openmoko-browser2&lt;br /&gt;
&lt;br /&gt;
An alternative browser, minimo, offers many more features.  &lt;br /&gt;
First download and unpack it on your GNU/Linux host:&lt;br /&gt;
&lt;br /&gt;
 $ wget http://www.ginguppin.de/files/minimo.tar.bz2&lt;br /&gt;
 $ tar jvxf minimo.tar.bz2&lt;br /&gt;
&lt;br /&gt;
Copy it over to the FreeRunner:&lt;br /&gt;
 $ scp minimo_* root@openmoko:/tmp&lt;br /&gt;
&lt;br /&gt;
Then on the FreeRunner:&lt;br /&gt;
 # opkg install /tmp/minimo_0.02\+cvs20070626-r0_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
You'll probably also want to [[Switching Keyboards|change the keyboard]] including the [[Switching Keyboards#How_to_add_a_keyboard_toggle_button|keyboard toggle applet]]&lt;br /&gt;
&lt;br /&gt;
=== Accessing the microSD card ===&lt;br /&gt;
&lt;br /&gt;
Mounted at /media/card by default.&lt;br /&gt;
&lt;br /&gt;
If you have multiple partitions on the card, the first (/dev/mmcblk0p1) will be mounted at /media/card, the second at /media/mmcblk0p2, the third at /media/mmcblk0p3 etc.&lt;br /&gt;
&lt;br /&gt;
=== Importing contacts ===&lt;br /&gt;
&lt;br /&gt;
If you can export your contacts to VCard format, either multiple files or single file containing all of them, you may use the script on [[Import Vcf Contacts]] page to bring them to Neo.&lt;br /&gt;
&lt;br /&gt;
==The next steps==&lt;br /&gt;
&lt;br /&gt;
Congratulations for setting up your Neo FreeRunner. There are many more ressources to help free your phone: &lt;br /&gt;
&lt;br /&gt;
===Customize the interface: clock, keyboard...===&lt;br /&gt;
&lt;br /&gt;
The stock [[Openmoko2007.2]] image flashed onto the Neo FreeRunner is really just the bare bones. For example, you don't have the clock and the quick-launch icons showing. Here's how you can change that:&lt;br /&gt;
&lt;br /&gt;
 # dbus-launch gconftool-2 -t boolean -s /desktop/poky/interface/reduced false&lt;br /&gt;
 # /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
If you rather have a regular clock instead of the digital one, do this instead:&lt;br /&gt;
&lt;br /&gt;
 # dbus-launch gconftool-2 -t boolean -s /desktop/poky/interface/reduced false&lt;br /&gt;
 # dbus-launch gconftool-2 -t boolean -s /desktop/poky/interface/digital_clock false&lt;br /&gt;
 # /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
More information about today screen customization at [[Today/2007.2]].&lt;br /&gt;
&lt;br /&gt;
With either clock, you may wish to set the correct [[Date]] and [[Timezone]].&lt;br /&gt;
&lt;br /&gt;
Also, if you prefer having a full keyboard, using matchbox's qwerty keybord, see [http://www.ginguppin.de/node/15 these instructions]. Then you may also see [http://lists.openmoko.org/pipermail/community/2008-July/021296.html these], which describe a way to add an applet allowing the showing/hiding of that keyboard.&lt;br /&gt;
&lt;br /&gt;
===GPS, GPRS and WLAN===&lt;br /&gt;
&lt;br /&gt;
See [[GTA02 WLAN]] about wifi. See [[Manually using GPRS]]. &lt;br /&gt;
&lt;br /&gt;
Simple guide to get going with GPS:&lt;br /&gt;
&lt;br /&gt;
 # opkg install gpsd&lt;br /&gt;
 # echo &amp;quot;GPS_DEV=\&amp;quot;/dev/ttySAC1\&amp;quot;&amp;quot; &amp;gt; /etc/default/gpsd&lt;br /&gt;
&lt;br /&gt;
and restart gpsd, the gps daemon, with&lt;br /&gt;
&lt;br /&gt;
 # /etc/init.d/gpsd restart&lt;br /&gt;
&lt;br /&gt;
To test GPS, you can use agpsui:&lt;br /&gt;
&lt;br /&gt;
 # opkg install openmoko-agpsui&lt;br /&gt;
&lt;br /&gt;
For a nice map, try tangoGPS:&lt;br /&gt;
&lt;br /&gt;
 # opkg install http://www.tangogps.org/downloads/tangogps_0.9.2-r1_armv4t.ipk&lt;br /&gt;
&lt;br /&gt;
More information on [[GPS]] page.&lt;br /&gt;
&lt;br /&gt;
According to some [http://lists.openmoko.org/pipermail/support/2008-July/000003.html posts], GPRS might be broken currently (2007.2), though. There are also critical [[GPS Problems]]. To install the updates when they become available, you will probably want to learn about [[Booting the Neo FreeRunner]] and [[Flashing the Neo FreeRunner]].&lt;br /&gt;
&lt;br /&gt;
=== The community ===&lt;br /&gt;
==== Mailing lists ====&lt;br /&gt;
&lt;br /&gt;
There are several [[http://lists.openmoko.org/mailman/listinfo/ Mailing lists]]&lt;br /&gt;
&lt;br /&gt;
There is an active community mailing list.&lt;br /&gt;
You may ask for help on the support mailing list : more details at https://lists.openmoko.org/mailman/listinfo/support&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An excellent tool for searching all the openmoko mailing lists is http://openmoko.markmail.org/&lt;br /&gt;
&lt;br /&gt;
==== The wiki ====&lt;br /&gt;
&lt;br /&gt;
If you want to know more about the Neo FreeRunner then you can get more information in the following topics:&lt;br /&gt;
&lt;br /&gt;
* [[GTA02 Openness]]&lt;br /&gt;
* [[Neo FreeRunner]]&lt;br /&gt;
* [[Neo FreeRunner GTA02 Hardware]]&lt;br /&gt;
* [[FreeRunner/Buttons and LEDs]]&lt;br /&gt;
* [[Latest Images]]&lt;br /&gt;
* [[Distributions]]&lt;br /&gt;
&lt;br /&gt;
To search this wiki with Google, use the following search term:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;search term&amp;gt; site:http://wiki.openmoko.org/wiki/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Blogs ====&lt;br /&gt;
&lt;br /&gt;
The [http://planet.openmoko.org/ collection of blogs on OpenMoko].&lt;br /&gt;
&lt;br /&gt;
==== Other documents ====&lt;br /&gt;
&lt;br /&gt;
* http://quickstart.openmoko.org/&lt;br /&gt;
&lt;br /&gt;
[[Category:GTA02 Hardware]]&lt;br /&gt;
[[Category:Guides]]&lt;br /&gt;
[[Category:User Guides]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Switching_Keyboards_on_Om_2007.2</id>
		<title>Switching Keyboards on Om 2007.2</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Switching_Keyboards_on_Om_2007.2"/>
				<updated>2008-07-20T02:49:48Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* How to install it? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fix Default==&lt;br /&gt;
&lt;br /&gt;
To add/change the key layout on the default keypad (I added a &amp;gt; and a / to the 1 key), edit &lt;br /&gt;
/etc/multitap-pad/im-multipress.conf &lt;br /&gt;
&lt;br /&gt;
 [keys]&lt;br /&gt;
 KP_0 = +;=;/;\\&lt;br /&gt;
 KP_1 = .;,;/;&amp;gt;;-;?;!;@;:;(;)&lt;br /&gt;
 KP_2 = a;b;c;2&lt;br /&gt;
 KP_3 = d;e;f;3&lt;br /&gt;
 KP_4 = g;h;i;4&lt;br /&gt;
 KP_5 = j;k;l;5&lt;br /&gt;
 KP_6 = m;n;o;6&lt;br /&gt;
 KP_7 = p;q;r;s;7&lt;br /&gt;
 KP_8 = t;u;v;8&lt;br /&gt;
 KP_9 = w;x;y;z;9&lt;br /&gt;
 KP_10 = A;B;C;2&lt;br /&gt;
 KP_11 = D;E;F;3&lt;br /&gt;
 KP_12 = G;H;I;4&lt;br /&gt;
 KP_13 = J;K;L;5&lt;br /&gt;
 KP_14 = M;N;O;6&lt;br /&gt;
 KP_15 = P;Q;R;S;7&lt;br /&gt;
 KP_16 = T;U;V;8&lt;br /&gt;
 KP_17 = W;X;Y;Z;9[code]&lt;br /&gt;
&lt;br /&gt;
==Matchbox keyboard==&lt;br /&gt;
&lt;br /&gt;
Another keyboard is available: matchbox-keyboard. It is a full QWERTY keyboard. This howto is based on a blog entry which can be found [http://www.ginguppin.de/node/15 here]&lt;br /&gt;
&lt;br /&gt;
===What does the keyboard look like?===&lt;br /&gt;
&lt;br /&gt;
[[Image:Complete_QWERTY_Keyboard_On_The_Freerunner_screenshot.png|none|thumb|260px|Screenshot of the keyboard applet]]&lt;br /&gt;
&lt;br /&gt;
===Considerations===&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* All keys can be generated&lt;br /&gt;
* Takes up less space than the keypad (multitap-pad), leaving more space for the application&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* You pretty much have to use a stylus.  With difficulty you can hit keys with the corner of a fingernail.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How to install it?===&lt;br /&gt;
&lt;br /&gt;
If you use a ScaredyCat release (http://buildhost.automated.it/OM2007.2/), use the following:&lt;br /&gt;
&lt;br /&gt;
 opkg remove -force-depends multitap-pad&lt;br /&gt;
 opkg install matchbox-keyboard-inputmethod&lt;br /&gt;
 opkg install matchbox-keyboard-im&lt;br /&gt;
 opkg install matchbox-keyboard-applet&lt;br /&gt;
&lt;br /&gt;
Otherwise, you'll have to download the ipk files from [http://www.ginguppin.de/files/keyboard-ipk.tar.bz2 here]. Assuming you have a working internet connection on your Freerunner, you can do the following:&lt;br /&gt;
&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 mkdir matchbox-keyboard&lt;br /&gt;
 cd matchbox-keyboard&lt;br /&gt;
 wget http://www.ginguppin.de/files/keyboard-ipk.tar.bz2&lt;br /&gt;
 tar -jxf keyboard-ipk.tar.bz2&lt;br /&gt;
 opkg remove -force-depends multitap-pad&lt;br /&gt;
 opkg install matchbox-keyboard-inputmethod*.ipk&lt;br /&gt;
 opkg install matchbox-keyboard-im*.ipk&lt;br /&gt;
 opkg install matchbox-keyboard-applet*.ipk&lt;br /&gt;
 cd ..&lt;br /&gt;
 rm -rf matchbox-keyboard&lt;br /&gt;
&lt;br /&gt;
After that you'll have to restart the X server:&lt;br /&gt;
 /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
===How to add a keyboard toggle button===&lt;br /&gt;
&lt;br /&gt;
To add a button to enable showing / hiding the keyboard, edit &amp;lt;tt&amp;gt;/etc/matchbox/session&amp;lt;/tt&amp;gt;. In the list of applets after &amp;lt;tt&amp;gt;--end-applets&amp;lt;/tt&amp;gt;, add &amp;lt;tt&amp;gt;keyboard&amp;lt;/tt&amp;gt;, and restart your X server&lt;br /&gt;
&lt;br /&gt;
===How to switch between matchbox-keyboard and multitap-pad===&lt;br /&gt;
&lt;br /&gt;
If you want to keep the multitap keyboard, but also be able to start up the matchbox-keyboard, you can follow these ugly instructions:&lt;br /&gt;
&lt;br /&gt;
First you must install matchbox-keyboard.&lt;br /&gt;
 opkg install matchbox-keyboard&lt;br /&gt;
&lt;br /&gt;
Do the following (from the terminal or an ssh session with DISPLAY=:0.0):&lt;br /&gt;
 killall multitap-pad&lt;br /&gt;
 matchbox-keyboard &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
(If you type the above commands with multitap, you have to leave off the redirection of matchbox-keyboard output, since several of the keys you need are missing.)&lt;br /&gt;
&lt;br /&gt;
Caveats:  When you start the matchbox-keyboard, it stays up all the time.  This will (among other things) prevent you from unlocking, since the keyboard covers the openmoko logo at the bottom of the lock screen.  You will need to:&lt;br /&gt;
# nohup multitap-pad -d &amp;amp;&lt;br /&gt;
# killall matchbox-keyboard&lt;br /&gt;
to close it down, and at least get the matchbox keyboard going again.  You should do that any time you're going to leave the neo alone for any length of time, so you can unlock it later.&lt;br /&gt;
&lt;br /&gt;
To make sure you don't end up removing all your keyboard input capability, you can create a new .desktop file in /usr/share/applications/ for starting and closing the keyboard.  This is pretty easy to do by copying and editing an existing .desktop file.&lt;br /&gt;
&lt;br /&gt;
==Switch back to the original Openmoko keypad==&lt;br /&gt;
&lt;br /&gt;
If you for whatever reason need to switch back, here are the steps:&lt;br /&gt;
 opkg remove matchbox-keyboard-inputmethod matchbox-keyboard-im matchbox-keyboard-applet&lt;br /&gt;
 opkg install multitap-pad&lt;br /&gt;
&lt;br /&gt;
Comment or delete the following lines in /etc/gtk-2.0/gtk.immodules :&lt;br /&gt;
 #&amp;quot;/usr/lib/gtk-2.0/2.10.0/immodules/libmb-im-invoker.so&amp;quot;&lt;br /&gt;
 #&amp;quot;matchbox-im-invoker&amp;quot; &amp;quot;Virtual Keyboard&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now restart the xserver:&lt;br /&gt;
 /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Distributions</id>
		<title>Distributions</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Distributions"/>
				<updated>2008-07-20T02:40:43Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Features by Distribution */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a skeleton to try and get the strengths and weaknesses of the various distributions available for the Neo listed in one place.  See the [[Latest Images]] for information on where to find and download each distribution.&lt;br /&gt;
&lt;br /&gt;
Mickey Lauer has written a good overview of the various images available, [http://www.vanille-media.de/site/index.php/2008/06/28/gtk-asu-fso-tmtla/ GTK, ASU, FSO, TMTLA!].&lt;br /&gt;
&lt;br /&gt;
== Features by Distribution ==&lt;br /&gt;
{| border=1 |&lt;br /&gt;
| Feature || OM2007.2 || FSO || ASU || SHR || Qtopia&lt;br /&gt;
|-&lt;br /&gt;
| Description || The Openmoko 2007.2 Stack, utilizing GTK+ and assorted applications. 2007.2, since it was the 2nd iteration of the GTK+ user interface that we released in 2007. || The FSO Stack, also known as the Openmoko Framework initiative. This one is called FSO, because itýs an implementation of the freesmartphone.org APIs. You may also have seen the term Zhone which describes the framework testing user interface and is a minor part of this stack. || August Software Update.  The ASU Stack, the combination of a classical smartphone stack based on Trolltech's Qtopia ported to X11 and enhanced with an EFL-based launcher and new applications. You may have seen the term Illume which is the launcher of ASU. || Stable Hybrid Release, a combination of the FSO, some of the 2007.2 GTK software, and the ASU that provides all of the functionality of the 2007.2 software, but with the stability of the FSO. || The Qtopia distribution from Trolltech, it aims to provide a ready-to use image for Openmoko devices&lt;br /&gt;
|-&lt;br /&gt;
| Availability || [http://buildhost.openmoko.org/daily/ Official Buildhost] and [[MokoMakefile]] support for development builds || Now (Milestone 1) || August 2008 || No || Now&lt;br /&gt;
|-&lt;br /&gt;
| URL || ? || [http://trac.freesmartphone.org:8000/trac-example  Development tracker] || [http://buildhost.openmoko.org/daily/freerunner/  Releases are labled &amp;quot;openmoko-qtopia-X11&amp;quot; ] || [[Stable Hybrid Release]] || [http://www.qtopia.net/modules/mydownloads/viewcat.php?cid=6 Qtopia.net]&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| Connectivity&lt;br /&gt;
|-&lt;br /&gt;
| Telephony || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| SMS || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || No || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| GPRS || Not through UI || Not through UI || Not through UI || N/A || Not through UI&lt;br /&gt;
|-&lt;br /&gt;
| WiFi || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || No || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || Not through UI&lt;br /&gt;
|-&lt;br /&gt;
| VoIP || ?? || ?? || ?? || ?? || ??&lt;br /&gt;
|-&lt;br /&gt;
| Bluetooth || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || No || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| GPS || style=&amp;quot;background:lightgreen;&amp;quot; | Yes (1) || style=&amp;quot;background:lightgreen;&amp;quot; | Yes (1) || style=&amp;quot;background:lightgreen;&amp;quot; | Yes (1) || N/A || No&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| User Interaction&lt;br /&gt;
|-&lt;br /&gt;
| Stylus friendly || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| Finger friendly || Partly || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || No || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| Accelerometer || No || No || No || N/A || No&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| Applications&lt;br /&gt;
|-&lt;br /&gt;
| Terminal || Basic, but unusable due to lack of certain keyboard characters (unless you [[Switching_Keyboards#Matchbox_keyboard|install matchbox-keyboard]]) || No || No || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| PIM || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || No || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| Phonebook || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || No || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| Dialer || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || N/A || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
!colspan=6| Application Compatibility (Toolkits / Runtimes)&lt;br /&gt;
|-&lt;br /&gt;
| GTK+ || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || ? || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || No&lt;br /&gt;
|-&lt;br /&gt;
| QT/Qtopia || No || style=&amp;quot;background:lightgreen;&amp;quot; | Yes? || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || style=&amp;quot;background:lightgreen;&amp;quot; | Yes? || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
| Java || Jalimo? || ? || ? || ? || ?&lt;br /&gt;
|-&lt;br /&gt;
| Python || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || ? || style=&amp;quot;background:lightgreen;&amp;quot; | Yes || ? || style=&amp;quot;background:lightgreen;&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Footnotes:&lt;br /&gt;
&lt;br /&gt;
(1) works, but need additional software to be installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Distributions]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:FSO]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Switching_Keyboards_on_Om_2007.2</id>
		<title>Switching Keyboards on Om 2007.2</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Switching_Keyboards_on_Om_2007.2"/>
				<updated>2008-07-20T02:36:52Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* How to install it? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fix Default==&lt;br /&gt;
&lt;br /&gt;
To add/change the key layout on the default keypad (I added a &amp;gt; and a / to the 1 key), edit &lt;br /&gt;
/etc/multitap-pad/im-multipress.conf &lt;br /&gt;
&lt;br /&gt;
 [keys]&lt;br /&gt;
 KP_0 = +;=;/;\\&lt;br /&gt;
 KP_1 = .;,;/;&amp;gt;;-;?;!;@;:;(;)&lt;br /&gt;
 KP_2 = a;b;c;2&lt;br /&gt;
 KP_3 = d;e;f;3&lt;br /&gt;
 KP_4 = g;h;i;4&lt;br /&gt;
 KP_5 = j;k;l;5&lt;br /&gt;
 KP_6 = m;n;o;6&lt;br /&gt;
 KP_7 = p;q;r;s;7&lt;br /&gt;
 KP_8 = t;u;v;8&lt;br /&gt;
 KP_9 = w;x;y;z;9&lt;br /&gt;
 KP_10 = A;B;C;2&lt;br /&gt;
 KP_11 = D;E;F;3&lt;br /&gt;
 KP_12 = G;H;I;4&lt;br /&gt;
 KP_13 = J;K;L;5&lt;br /&gt;
 KP_14 = M;N;O;6&lt;br /&gt;
 KP_15 = P;Q;R;S;7&lt;br /&gt;
 KP_16 = T;U;V;8&lt;br /&gt;
 KP_17 = W;X;Y;Z;9[code]&lt;br /&gt;
&lt;br /&gt;
==Matchbox keyboard==&lt;br /&gt;
&lt;br /&gt;
Another keyboard is available: matchbox-keyboard. It is a full QWERTY keyboard. This howto is based on a blog entry which can be found [http://www.ginguppin.de/node/15 here]&lt;br /&gt;
&lt;br /&gt;
===What does the keyboard look like?===&lt;br /&gt;
&lt;br /&gt;
[[Image:Complete_QWERTY_Keyboard_On_The_Freerunner_screenshot.png|none|thumb|260px|Screenshot of the keyboard applet]]&lt;br /&gt;
&lt;br /&gt;
===Considerations===&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* All keys can be generated&lt;br /&gt;
* Takes up less space than the keypad (multitap-pad), leaving more space for the application&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* You pretty much have to use a stylus.  With difficulty you can hit keys with the corner of a fingernail.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How to install it?===&lt;br /&gt;
&lt;br /&gt;
If you use a ScaredyCat release (http://buildhost.automated.it/OM2007.2/), use the following:&lt;br /&gt;
&lt;br /&gt;
 opkg remove -force-depends multitap-pad&lt;br /&gt;
 opkg install matchbox-keyboard-inputmethod&lt;br /&gt;
 opkg install matchbox-keyboard-im&lt;br /&gt;
 opkg install matchbox-keyboard-applet&lt;br /&gt;
&lt;br /&gt;
Otherwise, you'll have to download the ipk files from [http://www.ginguppin.de/files/keyboard-ipk.tar.bz2 here]. Assuming you have a working internet connection on your Freerunner, you can do the following:&lt;br /&gt;
&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 mkdir matchbox-keyboard&lt;br /&gt;
 cd matchbox-keyboard&lt;br /&gt;
 wget http://www.ginguppin.de/files/keyboard-ipk.tar.bz2&lt;br /&gt;
 tar -jxf keyboard-ipk.tar.bz2&lt;br /&gt;
 opkg remove -force-depends multitap-pad&lt;br /&gt;
 opkg install matchbox-keyboard-inputmethod*.ipk&lt;br /&gt;
 opkg install matchbox-keyboard-im*.ipk&lt;br /&gt;
 opkg install matchbox-keyboard-applet*.ipk&lt;br /&gt;
 cd ..&lt;br /&gt;
 rm -rf matchbox-keyboard&lt;br /&gt;
&lt;br /&gt;
===How to add a keyboard toggle button===&lt;br /&gt;
&lt;br /&gt;
To add a button to enable showing / hiding the keyboard, edit &amp;lt;tt&amp;gt;/etc/matchbox/session&amp;lt;/tt&amp;gt;. In the list of applets after &amp;lt;tt&amp;gt;--end-applets&amp;lt;/tt&amp;gt;, add &amp;lt;tt&amp;gt;keyboard&amp;lt;/tt&amp;gt;, and restart your X server&lt;br /&gt;
&lt;br /&gt;
===How to switch between matchbox-keyboard and multitap-pad===&lt;br /&gt;
&lt;br /&gt;
If you want to keep the multitap keyboard, but also be able to start up the matchbox-keyboard, you can follow these ugly instructions:&lt;br /&gt;
&lt;br /&gt;
First you must install matchbox-keyboard.&lt;br /&gt;
 opkg install matchbox-keyboard&lt;br /&gt;
&lt;br /&gt;
Do the following (from the terminal or an ssh session with DISPLAY=:0.0):&lt;br /&gt;
 killall multitap-pad&lt;br /&gt;
 matchbox-keyboard &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
(If you type the above commands with multitap, you have to leave off the redirection of matchbox-keyboard output, since several of the keys you need are missing.)&lt;br /&gt;
&lt;br /&gt;
Caveats:  When you start the matchbox-keyboard, it stays up all the time.  This will (among other things) prevent you from unlocking, since the keyboard covers the openmoko logo at the bottom of the lock screen.  You will need to:&lt;br /&gt;
# nohup multitap-pad -d &amp;amp;&lt;br /&gt;
# killall matchbox-keyboard&lt;br /&gt;
to close it down, and at least get the matchbox keyboard going again.  You should do that any time you're going to leave the neo alone for any length of time, so you can unlock it later.&lt;br /&gt;
&lt;br /&gt;
To make sure you don't end up removing all your keyboard input capability, you can create a new .desktop file in /usr/share/applications/ for starting and closing the keyboard.  This is pretty easy to do by copying and editing an existing .desktop file.&lt;br /&gt;
&lt;br /&gt;
==Switch back to the original Openmoko keypad==&lt;br /&gt;
&lt;br /&gt;
If you for whatever reason need to switch back, here are the steps:&lt;br /&gt;
 opkg remove matchbox-keyboard-inputmethod matchbox-keyboard-im matchbox-keyboard-applet&lt;br /&gt;
 opkg install multitap-pad&lt;br /&gt;
&lt;br /&gt;
Comment or delete the following lines in /etc/gtk-2.0/gtk.immodules :&lt;br /&gt;
 #&amp;quot;/usr/lib/gtk-2.0/2.10.0/immodules/libmb-im-invoker.so&amp;quot;&lt;br /&gt;
 #&amp;quot;matchbox-im-invoker&amp;quot; &amp;quot;Virtual Keyboard&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now restart the xserver:&lt;br /&gt;
 /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	<entry>
		<id>http://wiki.openmoko.org/wiki/Switching_Keyboards_on_Om_2007.2</id>
		<title>Switching Keyboards on Om 2007.2</title>
		<link rel="alternate" type="text/html" href="http://wiki.openmoko.org/wiki/Switching_Keyboards_on_Om_2007.2"/>
				<updated>2008-07-20T02:31:33Z</updated>
		
		<summary type="html">&lt;p&gt;Chgros: /* Switch Keypad */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Fix Default==&lt;br /&gt;
&lt;br /&gt;
To add/change the key layout on the default keypad (I added a &amp;gt; and a / to the 1 key), edit &lt;br /&gt;
/etc/multitap-pad/im-multipress.conf &lt;br /&gt;
&lt;br /&gt;
 [keys]&lt;br /&gt;
 KP_0 = +;=;/;\\&lt;br /&gt;
 KP_1 = .;,;/;&amp;gt;;-;?;!;@;:;(;)&lt;br /&gt;
 KP_2 = a;b;c;2&lt;br /&gt;
 KP_3 = d;e;f;3&lt;br /&gt;
 KP_4 = g;h;i;4&lt;br /&gt;
 KP_5 = j;k;l;5&lt;br /&gt;
 KP_6 = m;n;o;6&lt;br /&gt;
 KP_7 = p;q;r;s;7&lt;br /&gt;
 KP_8 = t;u;v;8&lt;br /&gt;
 KP_9 = w;x;y;z;9&lt;br /&gt;
 KP_10 = A;B;C;2&lt;br /&gt;
 KP_11 = D;E;F;3&lt;br /&gt;
 KP_12 = G;H;I;4&lt;br /&gt;
 KP_13 = J;K;L;5&lt;br /&gt;
 KP_14 = M;N;O;6&lt;br /&gt;
 KP_15 = P;Q;R;S;7&lt;br /&gt;
 KP_16 = T;U;V;8&lt;br /&gt;
 KP_17 = W;X;Y;Z;9[code]&lt;br /&gt;
&lt;br /&gt;
==Matchbox keyboard==&lt;br /&gt;
&lt;br /&gt;
Another keyboard is available: matchbox-keyboard. It is a full QWERTY keyboard. This howto is based on a blog entry which can be found [http://www.ginguppin.de/node/15 here]&lt;br /&gt;
&lt;br /&gt;
===What does the keyboard look like?===&lt;br /&gt;
&lt;br /&gt;
[[Image:Complete_QWERTY_Keyboard_On_The_Freerunner_screenshot.png|none|thumb|260px|Screenshot of the keyboard applet]]&lt;br /&gt;
&lt;br /&gt;
===Considerations===&lt;br /&gt;
&lt;br /&gt;
Pros:&lt;br /&gt;
* All keys can be generated&lt;br /&gt;
* Takes up less space than the keypad (multitap-pad), leaving more space for the application&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* You pretty much have to use a stylus.  With difficulty you can hit keys with the corner of a fingernail.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===How to install it?===&lt;br /&gt;
&lt;br /&gt;
If you use a ScaredyCat release (http://buildhost.automated.it/OM2007.2/), use the following:&lt;br /&gt;
&lt;br /&gt;
 opkg remove -force-depends multitap-pad&lt;br /&gt;
 opkg install matchbox-keyboard-inputmethod&lt;br /&gt;
 opkg install matchbox-keyboard-im&lt;br /&gt;
 opkg install matchbox-keyboard-applet&lt;br /&gt;
&lt;br /&gt;
Otherwise, you'll have to download the ipk files from [http://www.ginguppin.de/files/keyboard-ipk.tar.bz2 here]. Assuming you have a working internet connection on your Freerunner, you can do the following:&lt;br /&gt;
&lt;br /&gt;
 cd /tmp&lt;br /&gt;
 mkdir matchbox-keyboard&lt;br /&gt;
 wget http://www.ginguppin.de/files/keyboard-ipk.tar.bz2&lt;br /&gt;
 tar -jxf keyboard-ipk.tar.bz2&lt;br /&gt;
 opkg remove -force-depends multitap-pad&lt;br /&gt;
 opkg install matchbox-keyboard-inputmethod*.ipk&lt;br /&gt;
 opkg install matchbox-keyboard-im*.ipk&lt;br /&gt;
 opkg install matchbox-keyboard-applet*.ipk&lt;br /&gt;
 cd ..&lt;br /&gt;
 rm -rf matchbox-keyboard&lt;br /&gt;
&lt;br /&gt;
===How to add a keyboard toggle button===&lt;br /&gt;
&lt;br /&gt;
To add a button to enable showing / hiding the keyboard, edit &amp;lt;tt&amp;gt;/etc/matchbox/session&amp;lt;/tt&amp;gt;. In the list of applets after &amp;lt;tt&amp;gt;--end-applets&amp;lt;/tt&amp;gt;, add &amp;lt;tt&amp;gt;keyboard&amp;lt;/tt&amp;gt;, and restart your X server&lt;br /&gt;
&lt;br /&gt;
===How to switch between matchbox-keyboard and multitap-pad===&lt;br /&gt;
&lt;br /&gt;
If you want to keep the multitap keyboard, but also be able to start up the matchbox-keyboard, you can follow these ugly instructions:&lt;br /&gt;
&lt;br /&gt;
First you must install matchbox-keyboard.&lt;br /&gt;
 opkg install matchbox-keyboard&lt;br /&gt;
&lt;br /&gt;
Do the following (from the terminal or an ssh session with DISPLAY=:0.0):&lt;br /&gt;
 killall multitap-pad&lt;br /&gt;
 matchbox-keyboard &amp;gt; /dev/null 2&amp;gt;&amp;amp;1 &amp;amp;&lt;br /&gt;
&lt;br /&gt;
(If you type the above commands with multitap, you have to leave off the redirection of matchbox-keyboard output, since several of the keys you need are missing.)&lt;br /&gt;
&lt;br /&gt;
Caveats:  When you start the matchbox-keyboard, it stays up all the time.  This will (among other things) prevent you from unlocking, since the keyboard covers the openmoko logo at the bottom of the lock screen.  You will need to:&lt;br /&gt;
# nohup multitap-pad -d &amp;amp;&lt;br /&gt;
# killall matchbox-keyboard&lt;br /&gt;
to close it down, and at least get the matchbox keyboard going again.  You should do that any time you're going to leave the neo alone for any length of time, so you can unlock it later.&lt;br /&gt;
&lt;br /&gt;
To make sure you don't end up removing all your keyboard input capability, you can create a new .desktop file in /usr/share/applications/ for starting and closing the keyboard.  This is pretty easy to do by copying and editing an existing .desktop file.&lt;br /&gt;
&lt;br /&gt;
==Switch back to the original Openmoko keypad==&lt;br /&gt;
&lt;br /&gt;
If you for whatever reason need to switch back, here are the steps:&lt;br /&gt;
 opkg remove matchbox-keyboard-inputmethod matchbox-keyboard-im matchbox-keyboard-applet&lt;br /&gt;
 opkg install multitap-pad&lt;br /&gt;
&lt;br /&gt;
Comment or delete the following lines in /etc/gtk-2.0/gtk.immodules :&lt;br /&gt;
 #&amp;quot;/usr/lib/gtk-2.0/2.10.0/immodules/libmb-im-invoker.so&amp;quot;&lt;br /&gt;
 #&amp;quot;matchbox-im-invoker&amp;quot; &amp;quot;Virtual Keyboard&amp;quot; &amp;quot;&amp;quot; &amp;quot;&amp;quot; &amp;quot;*&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Now restart the xserver:&lt;br /&gt;
 /etc/init.d/xserver-nodm restart&lt;br /&gt;
&lt;br /&gt;
[[Category:Openmoko]]&lt;br /&gt;
[[Category:Technical]]&lt;/div&gt;</summary>
		<author><name>Chgros</name></author>	</entry>

	</feed>