TWRP installable stock firmware packages for Fairphone 3

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.

I will give 110 a new try tomorrow.

How? It doesn’t seem to work. The IMG can’t be fastboot booted, and the ZIP seems corrupt or is not for unzipping?

Doesn’t work, still freezes at “Fairphone”.
And it gives the notorius “Your device is corrupt” routine, at least I didn’t have this before attempting to install A.0110 this way.

It seems I went straight for the update problem …

I came from a stock A.0105 with an unlocked bootloader.
Installed twrp-3.3.1-0_k4y0z-20200124-02-fp3.img, which worked fine.
Installed Magisk, which worked fine, too.

Along came A.0110 … and wouldn’t install, the updater always gives “Installation problem”.

I tried to restore the TWRP backup I made before I changed anything.
I tried to flash and TWRP-install the stock A.0105 packages given here in the forum.

But it doesn’t help, this way I apparently don’t get back to a stock A.0105 which can update itself.
Before trying the GSI stuff, I at least wanted to get the “real” stock state back.

So … logcat …

02-01 01:41:13.137   733   733 I update_engine: [0201/] Applying 25 operations to partition "dsp"
02-01 01:41:13.140   733   733 E update_engine: [0201/] The hash of the source data on disk for this operation doesn't match the expected value. This could mean that the delta update payload was targeted for another version, or that the source partition was modified after it was installed, for example, by mounting a filesystem.
02-01 01:41:13.140   733   733 E update_engine: [0201/] Expected:   sha256|hex = 2CF4CC1F349D4F27622AFD18DCFFBF5524A7BE034A2CDEEA5C37B043C8C7D10B
02-01 01:41:13.140   733   733 E update_engine: [0201/] Calculated: sha256|hex = BA89F38FC449A7DE9C3A9BB210F2F65C3C8A0A17D2AD83BB391F09DCD838AB5F
02-01 01:41:13.140   733   733 E update_engine: [0201/] Operation source (offset:size) in blocks: 0:2
02-01 01:41:13.140   733   733 W update_engine: [0201/] Device was remounted R/W 2 times. Last remount happened on 1970-01-01 00:00:49.000 UTC.
02-01 01:41:13.140   733   733 E update_engine: [0201/] ValidateSourceHash(source_hash, operation, source_fd_, error) failed.
02-01 01:41:13.140   733   733 E update_engine: [0201/] Failed to perform SOURCE_COPY operation 1385, which is the operation 0 in partition "dsp"
02-01 01:41:13.140   733   733 E update_engine: [0201/] Error ErrorCode::kDownloadStateInitializationError (20) in DeltaPerformer's Write method when processing the received payload -- Terminating processing

For a start there’s something wrong with the dsp partition.
Can something be done about this?

I have previously uploaded the img with the wrong file extension.
the zip is actually an img.
I have since uploaded it with correct filename.

Please make sure to install using the current version of TWRP.

The problem with the dsp-partition is known, and I have uploaded a new version of the 105 ZIP that includes the correct dsp partition.
It is linked at the top of this thread.

I have the same problem like AnotherElk. Now I can still boot into fastboot, but from there I cannot fastboot flash system {gsi_image}, I always get the “Your system is corrupt”-error.
So I would probably need a stock image that I can flash via fastboot and not the TWRP installable stock that is provided here. Where can I find that?