TWRP installable stock firmware packages for Fairphone 3

Here you can find full stock firmware packages for installation using TWRP:

Make sure the option “Mount system partition read-only” in the Mount menu is checked before installing, if you want to be able to OTA later.

Note: When flashing full stock images, that include sbl1 or aboot, make sure both slots have a working fastboot before flashing.
And never flash both slots without first testing on one.

I do not (yet) own an FP3 myself.
Thanks to everyone who donated to help me get an FP3 :slight_smile:
If you like my work and want to help me to continue working on the FP3, please consider donating to me, to help me buy one:


downloading now…

i am in the mood for it :stuck_out_tongue:

Your A0150 link says no mirror

it corrupted my system :frowning:

I could imagine that this diagnosis doesn’t help in perhaps debugging this :wink: .

Which TWRP version did you use? The new one from today?
Did you try to install 0105 or 0110?
In which way is your system corrupted? Error message?

twrp version:


i uses 0110

i loaded twrp
pressed install
selected the zip from my sdcard and installed it

after it says done
i hit reboot.

it trayes to boot then break it up saying phone is corrupt and 30 secs to power off

A0110 + TWRP + magisk + gsi + fastboot -w: didn’t boot neither. It freezes at “Fairphone”
A0110 + TWRP + fastboot -w : the same
recovery.log.pdf (81.8 KB)
A0105(old one) + TWRP (20200131) + gsi : works

There is a solution for this problem on [HOW TO] Flash a custom ROM on FP3 with GSI


does not work

i cant boot and i cant go back to my stockrom

That’s not for the same reason. You need to flash the old flashable 0105 before doing the trick :wink:

Here is the link :
If it doesn’t work, look for the img (somewhere on the forum) and :
TWRP for Fairphone 3

I try to go back to stock 0105

i doing it now for a second time

ok i think i have it back to life, try now to get rid of the 30second message

@pigpig ok worked :smiley:

1 Like


i cant unzip the newer twrp, gives me a error

7-Zip [64] 16.02 : Copyright © 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=de_DE.utf8,Utf16=on,HugeFiles=on,64 bits,8 CPUs Intel® Core™ i7-7700 CPU @ 3.60GHz (906E9),ASM,AES-NI)

Scanning the drive for archives:
1 file, 29255680 bytes (28 MiB)

Listing archive: /home/#####/Downloads/twrp-3.3.1-0_k4y0z-20200131-01-fp3(1).zip

Path = /home/####/Downloads/twrp-3.3.1-0_k4y0z-20200131-01-fp3(1).zip
Open WARNING: Can not open the file as [zip] archive
Type = gzip
There are data after the end of archive
Offset = 2048
Physical Size = 10569656
Tail Size = 18683976
Headers Size = 10
Streams = 1

Path = twrp-3.3.1-0_k4y0z-20200131-01-fp3(1)
Size = 28439040
Packed Size = 10569656
Modified =
Host OS = Unix
CRC = 00000000

Warnings: 2

Errors: 1


ok ignore it… changed .zip to .img

1 Like

I wondered how you generated these sparse images
the images are compressed using brotlin, but the extracted data is still a binary. there’s a script in META-INF/com/google/android/ that includes commands for TWRP, but there’s also an executable. I thought it might be something to unpack or patch, but when I called
strings META-INF/com/google/android/update-binary
things started getting weird.

Usage: %s [-c max_mounts_count] [-e errors_behavior] [-f] [-g group]
    [-i interval[d|m|w]] [-j] [-J journal_options] [-l]
    [-m reserved_blocks_percent] [-o [^]mount_options[,...]]
    [-r reserved_blocks_count] [-u user] [-C mount_count]
    [-L volume_label] [-M last_mounted_dir]
    [-O [^]feature[,...]] [-Q quota_options]
    [-E extended-option[,...]] [-T last_check_time] [-U UUID]
    [-I new_inode_size] [-z undo_file] device

– that’s the help strings from tune2fs. but I also found e2label, quote, bzip2, there’s a whole busybox in there?
but then things start getting esoteric:

When observe</h2>
Modern provide" alt="borders.
Many artistspoweredperformfictiontype ofmedicalticketsopposedCouncilwitnessjusticeGeorge Belgium...</a>twitternotablywaitingwarfare Other rankingphrasesmentionsurvivescholar</p>
 Countryignoredloss ofjust asGeorgiastrange<head><stopped1']);
islandsnotableborder:list ofcarried100,000</h3>
 severalbecomesselect wedding00.htmlmonarchoff theteacherhighly biologylife ofor evenrise of&raquo;plusonehunting(thoughDouglasjoiningcirclesFor theAncientVietnamvehiclesuch ascrystalvalue =Windowsenjoyeda smallassumed<a id="foreign All rihow theDisplayretiredhoweverhidden;battlesseekingcabinetwas notlook atconductget theJanuaryhappensturninga:hoverOnline French lackingtypicalextractenemieseven ifgeneratdecidedare not/searchbeliefs-image:locatedstatic.login">convertviolententeredfirst">circuitFinlandchemistshe was10px;">as suchdivided</span>will beline ofa greatmystery/index.fallingdue to railwaycollegemonsterdescentit withnuclearJewish protestBritishflowerspredictreformsbutton who waslectureinstantsuicidegenericperiodsmarketsSocial fishingcombinegraphicwinners<br /><by the NaturalPrivacycookiesoutcomeresolveSwedishbrieflyPersianso muchCenturydepictscolumnshousingscriptsnext tobearingmappingrevisedjQuery(-width:title">tooltipSectiondesignsTurkishyounger.match(})();
color:#ul id="possessrollingphysicsfailingexecutecontestlink toDefault<br />
: true,chartertourismclassicproceedexplain</h1>

scrambled html-ish garbage? no wait, there’s some javascript code in there, too. would that stuff be elaborate obfuscation and suddenly start making sense when run through the interpreter?

@k4y0z , what the heck am I looking at? Did I take the wrong pill and got stuck in the rabbit hole? :wink:

Edit: the weirdness comes from googles brotli code, which includes a dictionary of random hardcoded weirdness that contains all these strings in C# code. brotli is of course needed to unpack the packed sparse images.

1 Like

What state was your system in before?
What exactly do you mean by it corrupted your system?
Use todays version of TWRP.

I tested installing the images yesterday with the current TWRP.
It’s probably better to let it boot up once before doing any other modifications like installing TWRP or magisk.
If it freezes at “Fairphone” Try doing the factory-reset through stock recovery.

I have answered in the other thread about the creation of the brotli-images.
the update-binary is taken from a ROM-build for another device, it should be fairly universal and is what actually executes the commands in the updater-script.

1 Like

corrupted was what the phone told me. With a timer that it shutdown in 30seconds. I flashed the stockrom but the Message about my corrupt phone persists. (i find this horrifing and missleading)
Then i noticed the start in the right upper corner so i hit the power button. it booted back to stock.

Then i did what pigpig told me. the message is gone now.

i made sucsessfully a backup with twrp (the new one) with the tip you gave me yesterday. system-image instead of system. I can now easyly go back to the state it was before trying the update to 0110 wich saves a lot of time configuring.

I’m not sure what exactly causes this message, It doesn’t always appear and can be reset.
But If I understand you right, your phone booted fine after flashing 110 and confirming the corruption message?

No thats what i mean with missleading. I thought i destroyed the partition table or something. After flashing back 105 the message did not disapear. At this point i realized that i can confirm it and the boot continues.