Build Instructions

Let’s get started on creating your very own Fairphone OS build! As Fairphone OS is largely based on the Android Open Source Project (AOSP), the steps to build are quite similar to building AOSP. So you might find the resources on the AOSP website helpful.

My code is compiling

Prepare the Build Environment

Before actually getting and building your own version of Fairphone OS, you should make sure that your system is properly set up to build it. You can follow this handy guide at the AOSP project site to set up your build environment, which also explains you how to setup ccache to speed up compilation. If you run the latest long term support version of Ubuntu, you should be good to go after installing some packages with the following command:

$ sudo apt-get install openjdk-7-jdk bison g++-multilib git gperf \
  libxml2-utils make python-networkx zlib1g-dev:i386 zip

Getting the Source

Now that your system is ready to build Fairphone OS, it’s time to download the source.

Installing repo

As Fairphone OS consists of many subprojects, we will use the repo tool to download the source code. It is very handy to install repo in a user local bin directory.

If you do not already have a user local bin directory, create one and add it to your PATH environment variable:

$ mkdir ~/bin
$ export PATH=~/bin:$PATH

You might want to add the last command to your ~/bashrc (or .zshrc, in case you are using the right shell) configuration file.

Now we download repo:

$ curl https://storage.googleapis.com/git-repo-downloads/repo-1.22 > ~/bin/repo

You might want to check if you downloaded the right file by verifying its SHA1 checksum:

$ sha1sum ~/bin/repo

The checksum for the latest version 1.22 is

da0514e484f74648a890c0467d61ca415379f791

If the checksum is correct make repo executable by running

$ chmod u+x ~/bin/repo

Register an account

We kindly ask you to register a Gerrit account for cloning the repositories. This might come in handy later on when you want to contribute code back. Click on the register link using OpenID and upload an SSH key into your Gerrit account.

Initializing the repo

Our code is based on Code Aurora code, with the manifest being LA.BF.1.1.1-03010-8x74.0. Let’s create a new working directory and initialize it:

$ mkdir fairphone_os && cd fairphone_os
$ repo init -u ssh://code.fairphone.com:29418/fp2-dev/manifest -b fp2-m-sibon
$ # or for http based access
$ # repo init -u https://code.fairphone.com/gerrit/fp2-dev/manifest -b fp2-m-sibon

Now let’s download the source by issuing the following command:

$ repo sync

The first time you’ll do that it will take quite some time.

Getting the Binary Components

Unfortunalty, not all components of Fairphone OS can be released as open source, so you have to download a set of binary drivers and install them into the the source tree:

$ wget https://code.fairphone.com/downloads/FP2/blobs/fp2-sibon-17.11.2-blobs.tgz
$ md5sum fp2-sibon-17.11.2-blobs.tgz
bdff5b7378d774836fee04b2839b5b36  fp2-sibon-17.11.2-blobs.tgz
$ sha256sum fp2-sibon-17.11.2-blobs.tgz
b4400b2c875765b8417aa19d545469ec0365d8ff8498f6cfbc38189a596d83da  fp2-sibon-17.11.2-blobs.tgz
$ tar zxvf fp2-sibon-17.11.2-blobs.tgz
$ sh fp2-sibon-17.11.2-blobs.sh

Build!

Finally, you have everything set to initiate the build process.

Run the following command to initialize the build environment:

$ . build/envsetup.sh

Now configure the kind of build we want to make by running:

$ choosecombo 1 FP2 2

And go:

$ make -j8

Now you can watch some cat videos on Youtube until the compilation is done.

Flash!

Did compilation succeed without errors? That’s awesome, because now it’s time to flash your Fairphone 2 by running:

$ fastboot flashall

fastboot is most probably waiting for your Fairphone 2 to be connected to your computer. For fastboot to actually find your device it has to be brought into a special mode called fastboot mode. You can achieve that by powering on the phone while holding the volume down button. Once your phone is in fastboot mode (given it is connected to your PC via USB ;) fastboot will start flashing your device and reboot it into your own-built Fairphone OS.