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

Update: I have ordered a Fairphone 3+ to replace my Fairphone 2, after less than two years of use. See fairphone3.

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

TL;DR

Pros:

Cons:

Specifications

See also the great iFixit specs.

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

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

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
    • use the "updater" app in Fairephon Open to upgrade the firmware
    • the recovery (TWRP) is already installed but needs an upgrade
  2. encrypt the phone (takes ~10 minutes, needs power)
  3. set lock code (PIN)
  4. go through prefs to tweak everything
  5. install f-droid using sideloading
  6. install, configure and synchronize apps
  7. backup the phone (!) todo!

Some of those steps are documented more explicitly below.

This checklist was copied from htc-one-s but some steps have been removed or changed. No Google services were installed, for example, which implies that apps like Transit do not work.

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.

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.

  1. Charge the phone and keep it plugged in the charger
  2. Open the Settings app
  3. Go to SecurityEncrypt phone
  4. Then you get a dialog warning about the process, hit Encrypt phone
  5. 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

  6. ...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:

500 25469 Usage: cryptfs changepw default|password|pin|pattern [currentpasswd] default|password|pin|pattern [newpasswd]

Then it's important to verify the passphrase works with:

vdc cryptfs verifypw <new_passphrase>

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.

I previously used SnooperStopper to do this but unfortunately, that app hasn't seen a release since 2016, when it was updated for Android 6 support. So I haven't been able to change the password with the app on Fairphone's Android 7 (bug report). Another app supposed to allow you to change the password is Cryptfs Password but it fails in a similar way.

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
Comments on this page are closed.
Created . Edited .