1. Hands on with the Fairphone 2
  2. Project overview
  3. First impressions
    1. TL;DR
  4. Specifications
  5. Operating system
  6. Flashing with Saibon
  7. Android configuration
    1. Upgrading recovery
    2. Installing the F-Droid privileged extension
    3. Apps install and synchronization

Project overview

The Fairphone (FP) is a really important project. They have already shipped two versions of the phone (FP1 and FP2) and a third one is at the concept stage (more discussions).

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).

I will probably install Fairphone Open once I get a hold of the device. LineageOS (LOS) is also supported (see also this discussion). One advantage LOS has over Fairphone OS (FOS) is it's more recent: LOS 15.1 is the latest supported version (which corresponds to Android 8.1) and it's being ported to 16 (which corresponds to Android 9), while FOS has just been ported to Android 7 (see the errata). See also Android version history for the larger context.

There are more OSes ported to the FP2 including Ubuntu Touch and Sailfish.

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.

anarcat@curie:fp2-sibon-19.02.1-manual-switcher(master)$ sh flash-for-unix.sh
** Fairphone OS 19.02.1 Manual Flashing Script **

WARNING: Flashing this image wipes all user data and settings on the phone.

Validating files...
Validation complete.

One Fairphone 2 in fastboot mode found (serial number: [REDACTED]).

Are you sure you want to wipe all user data and settings on the phone?
  Type "Yes" to continue: Yes

Proceeding to flash the device.

target reported max download size of 536870912 bytes
sending 'rpm' (186 KB)...
OKAY [  0.009s]
writing 'rpm'...
OKAY [  0.011s]
finished. total time: 0.021s
target reported max download size of 536870912 bytes
sending 'sbl1' (274 KB)...
OKAY [  0.013s]
writing 'sbl1'...
OKAY [  0.008s]
finished. total time: 0.020s
target reported max download size of 536870912 bytes
sending 'tz' (334 KB)...
OKAY [  0.015s]
writing 'tz'...
OKAY [  0.008s]
finished. total time: 0.023s
target reported max download size of 536870912 bytes
sending 'modem' (57585 KB)...
OKAY [  2.052s]
writing 'modem'...
OKAY [  0.626s]
finished. total time: 2.678s
target reported max download size of 536870912 bytes
sending 'splash' (6075 KB)...
OKAY [  0.214s]
writing 'splash'...
OKAY [  0.073s]
finished. total time: 0.287s
target reported max download size of 536870912 bytes
sending 'aboot' (536 KB)...
OKAY [  0.020s]
writing 'aboot'...
OKAY [  0.016s]
finished. total time: 0.036s
target reported max download size of 536870912 bytes
sending 'boot' (11708 KB)...
OKAY [  0.422s]
writing 'boot'...
OKAY [  0.127s]
finished. total time: 0.549s
target reported max download size of 536870912 bytes
sending 'recovery' (13834 KB)...
OKAY [  0.487s]
writing 'recovery'...
OKAY [  0.159s]
finished. total time: 0.646s
target reported max download size of 536870912 bytes
erasing 'system'...
OKAY [  0.379s]
sending sparse 'system' 1/2 (520913 KB)...
OKAY [ 18.988s]
writing 'system' 1/2...
OKAY [  8.905s]
sending sparse 'system' 2/2 (48631 KB)...
OKAY [  1.752s]
writing 'system' 2/2...
OKAY [  0.794s]
finished. total time: 30.817s
target reported max download size of 536870912 bytes
erasing 'userdata'...
OKAY [  3.226s]
sending 'userdata' (138997 KB)...
OKAY [  4.723s]
writing 'userdata'...
OKAY [  1.830s]
finished. total time: 9.780s
target reported max download size of 536870912 bytes
erasing 'cache'...
OKAY [  0.023s]
sending 'cache' (12520 KB)...
OKAY [  0.450s]
writing 'cache'...
OKAY [  0.216s]
finished. total time: 0.689s

Flashing successful!
Your Fairphone 2 will now run **Fairphone OS 19.02.1**.

Press Enter to reboot the device and complete the installation...

finished. total time: 0.052s

That worked pretty well, I must say: it's nice to have support for a real OS from the phone manufacturer! Once that's done, the phone reboots and takes a while to resume (a minute or two).

Android configuration

This is copied from htc-one-s.

Those are things to do when I flash the device, which I seem to screwup so often that I actually had to note this down.

  1. Check for updates and install: there's an "updater" app in Fairephon Open
  2. encrypt the phone (takes ~10 minutes, needs power), see below
  3. set lock code (PIN)
  4. go through prefs to tweak everything
    • enable privacy guard, including on builtin apps
    • browser: disable a bunch of stuff, enable utf8
  5. install f-droid using sideloading (see below)
  6. install and configure apps (see below)
  7. import contacts from backups (see below)
  8. setup fake GCM screw google
  9. configure all installed apps (see below)
  10. backup the phone (!) todo!

Some of those steps are documented more explicitly below.

Upgrading recovery

A recovery (TWRP) is already installed on the phone, but it might have trouble sideloading apps. I had to upgrade TWRP using the LineageOS docs:

gpg --verify twrp-3.2.3-0-FP2.img.asc
adb reboot bootloader
fastboot flash recovery twrp-3.2.3-0-FP2.img

Once recovery is flashed, hold the volume UP button then hit:

fastboot reboot

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.

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.

Here are the various tweaks required for each app I currently use:

  1. anikdroid: syncs easily with central server
  2. antenna pod: syncs with gpodder, but better export/import database through syncthing
  3. dSub, lichess, Nextcloud, Wallabag, Linphone and VoIP.SMS all need to have their passwords re-set which is annoying, although the latter two are relevant only for "non-GSM" phones
  4. OSMand also doesn't have such a good import/export story - all those little settings need to be redone by hand if there's no backup
  5. Signal is, of course, a frigging catastrophe as well, althought here is an actually good way to transfer between two phones so the story isn't that bad either
  6. 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
  7. contacts can be backed up with nextcloud on one device and restored on the other fairly easily
Created . Edited .