TWRP for Fairphone 3

I’ve noticed the “decrypt user” option in the advanced tab. It fails to decrypt with my PIN though.

After deleting the work profile, backup up the data partition works fine.


Wow! Managed to root using magisk, instead of using the installer cant we just do:
fastboot flash recovery twrp.img


I don’t see recovery on offer in TWRP at least.
(Was thinking about installing the TWRP IMG file with the fastboot booted TWRP, but where to?)

From the description of the patch:

  • Add CLI support using the command “twrp decrypt [USER ID]”
  • Add GUI support using the menu Advanced --> Decrypt User

I would assume, the secondary user requires a different password.

Since this is an A/B device, there is no separate recovery partition.
Recovery is part of the boot.img.
I have linked to a full stock dump above. (Which could be used with fastboot to get back to stock state)
You can also backup your boot.img using TWRP.

That’s what the installer is for, it would replace the recovery in the boot.img.
I don’t think anyone has tested that yet.


I just installed the TWRP using the zip installer, then I installed Magisk and rebooted the system. Everything is fine so far. Thanks !


Well you need to enter a PIN/password for the work profile when you setup one. I’ve used the same as for the screen unlock for convenience reasons. TWRP does not seem to be able to decrypt with the correct PIN/password though.

I ran into an error during compilation of> the kernel, more specifically the dtb-overlay:

DTC     arch/arm64/boot/dts/qcom/apq8016-sbc.dtb
./scripts/dtc/dtc: invalid option -- '@'
Usage: dtc [options] <input file>
make: Leaving directory '/home/android/src/build_TWRP_minimal_manifest/kernel/fairphone/sdm632'
ninja: build stopped: subcommand failed.
20:39:13 ninja failed with: exit status 1

I managed to fix that by compiling with:

export DTC_EXT=$( which dtc );
mka recoveryimage

I would have to look at a recovery.log to further investigate

Ah yeah, I forgot about that.
You can also set it to the (full) path of prebuilts/misc/linux-x86/dtc/dtc which is included in the omni-build tree.
I guess I should just include an updated version of dtc in the kernel.

1 Like

Could you please summarise the steps to do in this topic? …

Ah, thanks, I didn’t connect the dots, sorry.

Sounds fine, that will do then.

Installing with the installer ZIP went fine for me, too (I rebooted into recovery afterwards to check).

(People will inevitably complain about the “Moto G7” text, just wait :wink: .)


I added a pull request.

@k4y0z I noticed there are a number of binaries and binary libs inside the TWRP repo. While the kernel modules can probably be taken from the compiled kernel source and the bagiskboot tool could be compiled as a submodule, I wonder where the stuff in vendor/lib64/ comes from and if that is by any chance open source - or are those proprietary qualcomm libs?


Sorry, had to wait one and a half hours before replying, since I’m a new user… :confused:

The steps are fairly simple:

  • Install the Magisk-ZIP from TWRP
  • Profit

Oops, I’ll change that for the next release.
I used the moto g7 tree as base for the fp3 tree.

There are no kernel modules in the repo.
The libs and binaries are mostly proprietary and are needed for encryption.
They are from the stock images.
Some of them could be built from source, but in the case of TWRP, that would just complicate things.
For building a full custom ROM that’s a different story.


I tried the installer and now it only boots into the recovery, im guessing it broke the OS?

Edit: Yep, phone doesnt like boot slot A, essentially boot loops until it defaults back to slot B. TWRP and fastboot are the only things I can access, there also still isnt a stock ROM available, any ideas?

Or perhaps only restore boot.img from this first?


Mhh, that’s strange.
You had Magisk installed before installing twrp, correct?
Did you do any modifications on system or vendor, or just mount either of these RW?
Did you reinstall Magisk after installing TWRP?

I had magisk before installing, I think I mounted system and data with write but didn’t modify anything, phone doesn’t seem to want to boot TWRP either now, including through ADB, switching it on sends you straight into fastboot.

I didnt reinstall magisk afterwards because it refused to boot anyways, I would recommend people who try the TWRP installed dont install magisk first. I think i’m going to have to wait until there is a custom ROM available.

Mounting as RW is enough to trigger verity

Use the stock dump I provided and flash boot.img using fastboot.
Then reinstall TWRP and Magisk. (in that order)

It didn’t boot, BECAUSE you didn’t install Magisk,
Since you triggered verity by mounting system RW you need to reinstall Magisk, which will disable verity.

I see, I tried to flash the boot.img but im getting this error:
sudo fastboot flash boot boot.img
Sending ‘boot’ (65536 KB) OKAY [ 2.416s]
Writing ‘boot’ FAILED (remote: ‘partition table doesn’t exist’)
fastboot: error: Command failed

I think my partition table is corrupt? Anyway to restore/recreate a partition table?