Project overview

The key with the FP project, is to avoid major human rights issues in
the source of components and the production of the device, something
that's way too often overlooked. Many minerals involved in the
fabrication of modern electronics come from conflict zones or involve
horrible (child) labour conditions. Fixing those issues should be our
priority, maybe even before hardware or software freedom.

Even without addressing completely those issues, the fact that it
scored a perfect 10 in iFixit's reparibility score is incredible.
It seems parts are difficult to find, even in Europe. The phone
doesn't ship to the Americas from the original website, which makes it
difficult to buy, but some shops do ship to Canada, like
Ecosto.

I bought a Fairphone 2 (FP2) after the price came down for
~500$CAD at Ecosto and I'm waiting for the actual device to
ship. It's a guess: the Fairphone 3 (FP3) is due to come out in
2019 but I was tired of hacking around really old, unsupported and
so insecure, locked down phones I had lying around.

I expected really long delivery delays: packaging time estimate was
2-4 weeks and 6-14 days delivery, which means between 3 and 6 weeks!
But in the end, I order the phone on February 26 and had it delivered
on March 8, which isn't that bad (~2 weeks). I did have to pay an
extra 90$ in customs and fees to DHL, which made for a total price of
about 630$CAD.

First impressions

The phone is huge compared to the HTC One S, it's kind of sad: I had
gotten used to the older format. I wish they would make a smaller
phone, especially since that would mean it's easier to use for
women. But its size is similar to other modern phones: it is
similar to the LG G3, although the FP2 is thicker. And the
size-to-screen ratio isn't great: there's a huge bezel all around the
screen when compared to the LG G3, which came out a year earlier (2014
vs 2015).

The device also feels a little "plastiky" and brittle: you feel you
could just break it in two if you applied enough strength. But that
might just be a feeling: a friend said it felt sturdy and light.

You need to tear out the back cover (and remove the battery!) to
install the SIM card and that doesn't feel so great: lots of cracking
noises. One of the corners already doesn't quite fit right. But this
is a known weakness of the FP2 that I expected: it used to come with a
transparent back, but they stopped shipping it because it was even
more brittle.

The device was delivered with an almost empty battery (~5%) which made
the initial setup challenging: I had to keep it plugged in and even
had to switch chargers (from my computer to a wall plug) because it
wouldn't actually charge fast enough to compensate from the huge power
drain imposed by the many applications being installed and
synchronizing gigabytes of data over wifi.

It's really nice to have TWRP and root out of the box. I don't think
any other phone gives you such awesome power. It also ships with
Firefox Klar instead of Google Chrome, a nice touch although I still
installed Fennec F-Droid instead. Surprisingly, Fairphone OS lacks a
file manager so I installed the Simple File Manager instead,
because it also includes the basic text editor I needed to copy-paste
passwords during setup.

Unfortunately, in terms of software, the Fairphone is severely lagging
behing. It has not shipped the January and February (very critical)
Android security bulletins which include fixes for remote code
execution, among other catastrophes. It also runs a completely
outdated and unsupported Linux 3.4 kernel, which seems on par for the
course of most Android phones these days, but I still figured I would
make some noise about this. Thankfully, some of those problems
might be fixed by running LineageOS, but that would require wiping the
phone...

The MicroSD card socket is a little weird: there are two pins to keep
the card from coming out (even though it's behind the plastic cover
and unlikely to move) and that makes it difficult to swap out. I had
to use a pair of tweezers to get the darn thing out. I also had to
reboot for the SD card to be detected.

Coincidentally, it told me my SD card was corrupt, which was strange
but unsurprising: I had trouble with the SD card before on the
previous phone. I formatted it as "portable" as I will store music and
maps there. "Portable" means "non-encrypted", basically.

Battery life is not the best: after moderate use (2 regular phone
calls, two Signal/wifi calls, wifi on all the time, daily flashcard
exercises), I'm at 50% battery used after 21 hours, and it estimates
another 20 hours left, which pegs battery life at 41 hours. Not great,
but not bad.

The device itself is fast and responsive, and the speaker sounds
loud. The camera is not great: pretty bad low light performance and
not very detailed, and that's after an upgrade from the 8 megapixel
camera, now at 12 MP.

I found the documentation provided with the phone to be slightly
incomplete: the phone ships with plastic covers on the camera and
screen and that's undocumented in the papers. I was really distressed
of the blue tint in pictures before a friend noticed the plastic
cover. And I had to ask on the forum for help to figure out how
to remove the plastic cover on the screen.

But overall I'm happy: this is the Fair phone. Well, it's not
perfectly fair, but they're trying. And this is the only phone
that I know of that ships with a free OS and is fully repairable.

This is the best we can do.

And as such, it's the state of the art for me. I don't care that Apple
can make a shiny tiny little iPhone that can recognize my face if I
can't get inside it and fix it when it breaks. I don't care if
Samsung's screens go around back and fold in the middle if I
can't hack it. That's all junk that'll end up in landfills and that
spies on you. And as long as we build and buy crap like that, we'll
be part of the problem, not the solution.

So a shout out to the Fairphone people: you're doing an awesome job,
and I just wish you keep going at it. My wishlist is: make it smaller,
better camera, and better battery, while keeping everything else the
same.

Operating system

Fairphone comes with "Fairphone OS" a version of Android
specifically built for the Fairphone. It ships with Google apps and
all the usual Android nastiness, so there's also a Fairphone Open
(also known as "Sibon") version that consists only of free software
(minus, naturally, the proprietary firmware required to run the
hardware).

Flashing with Saibon

The default OS that comes with the Fairphone is, like many Android
distributions, full of Google tracking software. I dislike those, so I
installed Saibon, also known as "Fairphone Open". I followed the
installation instructions to download and install the new version
which involves running an arbitrary bash script (which I quickly
reviewd) that basically runs a bunch of fastboot commands to flash
the phone through the USB port.

This will make sure the phone will reboot in recovery. Otherwise the
phone will reboot to system which will overwrite the recovery image.

Another method is to boot to recovery (it's already installed!) and
install a new TWRP image on the phone:

adb push twrp-3.2.3-0-FP2.img /sdcard
adb reboot recovery

And install it from the Install menu.

Encryption

The Fairphone 2 runs Android 7 now, so it uses that "Encrypt Phone"
functionality from AOSP. The procedure is as follows:

Before you start, MAKE SURE YOU KNOW YOUR PIN BY HEART!
once this process is over, all your data will be encrypted with
the pin and won't be recoverable otherwise.

Charge the phone and keep it plugged in the charger

Open the Settings app

Go to Security → Encrypt phone

Then you get a dialog warning about the process, hit Encrypt
phone

The phone reboots a couple of times and then shows an Encrypting
dialog that says:

Wait while your phone is being encrypted. Time remaining: 8:00

...and then reboots again and asks you for your PIN

In my case, the estimate was around 8 minutes and it took about that
time to encrypt the phone.

Stronger encryption password

It is a good idea to set a distinct screen PINs and encryption
passwords. Built-in support to do this in Android through the GUI is
still lacking, despite efforts by Copperhead to implement it. The
proposed feature was abandoned in 2015, unfortunately. It might
be present in LineageOS, but I haven't confirmed that.

A workaround is to get a root shell, either through adb root; adb
shell when connected over USB, or with a shell directly on the
phone. Then you can run:

vdc cryptfs changepw password <current_PIN> password <new_passphrase>

This should show something cryptic like:

200 25575 0

It's important the first number is 200. For example, when using the
wrong commandline, I would get:

Once you are confident you remember the passphrase and/or have saved
it to your password manager, reboot the phone which will prompt you
for your passphrase. I recommend using passphrases generated by
xkcdpass or diceware for this purpose because they are
easier to type on the phone yet still very strong.

To ensure the passphrase is effective, the phone should reboot after N
failed attempts on the weaker PIN screen lock. An app called WrongPIN
Shutdown seems to work on the phone.

Installing the F-Droid privileged extension

From TWRP, flash the priviledged F-Droid app, which allows you to turn
of that "allow untrusted sources" checkbox and enables automated
upgrades, see the privileged extension project page for more
information.

First, download the .zip file from the privileged extension site
and sideload by picking Advanced -> Sideload, then swipe. TRWP
will wait then run this on the computer:

adb sideload org.fdroid.fdroid.privileged.ota_2000.zip

Then swipe to reboot.

If this fails with "Zip signature verification failed", it's because
you don't have a recent enough version of TWRP. Reflash the recovery,
and make sure to return to recovery after flashing it.

Apps install and synchronization

Apps often keep their state only on the phone and don't sync up to
servers online, which means we need to backup/restore some things
around.

F-Droid has a very nice interface to install "nearby" apps and I use
that to transfer the list of installed apps between phones. The "app
list" is totally useless in comparison, as the "HTML list" version is
unusable: the links are broken and formatting is all out of whack.

syncthing takes care of the rest, namely installing Signal from
the APK URL, my Stellarium backup and so on. it also useful
for "copy-pasting" (so to speak) passwords around instead of
tapping those stupid strings out, including the Signal backup and
its secret key

contacts can be backed up with nextcloud on one device and
restored on the other fairly easily