TWRP for Fairphone 3

Seems like latest TWRP 3.7.0_9 is not able to handle latest OS update 0021.0. I followed my usual procedure to flash TWRP and Magisk. Unfortunately, after booting into TWRP, I only see cryptic filenames in the selection, so I can’t flash… Maybe it’s not a TWRP problem, but does anyone have the same problem and know a solution?

I got that effect when I went from /e/OS based on Android 11 to /e/OS based on Android 12. It looks like something changed with the encryption and TWRP can’t handle it yet.

I don’t know whether that’s something that would be done with a “normal” update within the same Android version. Perhaps it’s not the same issue even if it looks the same.

Anyway … TWRP can use a micro SD card set to be used as external/portable storage (always!) or you could try whether TWRP can use a USB Stick via a USB OTG adapter.

1 Like

Thank you very much, @AnotherElk! At least, that took me one step further. I have copied the necessary TWRP and Magisk files onto an SD card and I can see and choose them within TWRP. But when trying to flash them, TWRP 3.7.0_9 reports multiple Failed to mount '/system_root' errors. Apparently there were more serious changes with this OS update from 0019.2 to 0021.0.


Edit: OMG, this led to an bootloop into recovery again and again… I am not able to start the phone anymore… Any help appreciated!


Edit 2: I managed to revive the phone again by redoing the OS update to 0021.0. :sweat_smile:

Hmmm, this might be related … https://support.fairphone.com/hc/en-us/articles/360048139032

"System update improvements

Your Fairphone will be better at managing storage partitions in the background, making system updates better-prepared for years to come.

  • We retrofitted a new way of managing the system storage (dynamic partitions). This affects system partition and images only, it does not affect user data."

Assuming your bootloader is unlocked since you wanted to install TWRP:

https://support.fairphone.com/hc/en-us/articles/360048050332

According to the instructions there should be a prompt whether to erase or keep user data.
(Which is only meaningful when not unlocking or locking the bootloader which both force a factory reset for security reasons.)

Does this mean you have a backup of your data partition from before the update?
And a separate backup of the “Internal Storage” because TWRP backups don’t include it?

1 Like

Thank you very much @AnotherElk for your prompt support! In the meantime, I reapplied the OS update and was able to revive my phone again. Phew. :sweat_smile: I was already on the brink to do a factory reset…

Maybe. And that way, they maybe also killed a working root mechanism.

No and no. I basically follow the procedure of the OS manual installation above. At the end of that procedure, I reapply TWRP and Magisk:

  1. ADB push TWRP installer zip file + Magisk zip file + TWRP image file onto phone
  2. adb reboot bootloader and then fastboot boot twrp.img
  3. TWRP flash zip files (this step fails now!)

That worked for numerous OS updates without any error or data loss. The 0021.0 update is the very first one that failed there.

1 Like

Hi all,

according to the release notes:

“We retrofitted a new way of managing the system storage (dynamic partitions). This affects system partition and images only, it does not affect user data.”

This seeems to be the issue!

I have found this on AOSP Webpage about dynamic partitions

Dynamic Partitions | Android Open Source Project

The new partition layout looks like this:

Implementing Dynamic Partitions | Android Open Source Project

It seems that the TWRP needs to be aware of the dynamic (or super) partition.

There ist the point we are struggeling and need to investigate.
Maybe there is a workaround or any other way to circumvent this issue.

Hope this lead us to the right direction.

Sure.

TWRP on the Fairphone 3/3+ is currently on the Android 9 branch of TWRP (the “9_0” in the TWRP image filename).

Dynamic partitions were introduced with Android 10 … TWRP and Android 10.

My guess is that TWRP for the Fairphone 3/3+ would need to be on a branch which can handle dynamic partitions. TWRP in general is prepared to do this, apparently.

5 posts were split to a new topic: Issues rooting a FP3

Looks like something topjohnwo would want to fix – is there a Magisk bug report for this?

Same for TWRP … just talking about it in the forum isn’t going to help IMHO.

This topic was opened by the maintainer of TWRP on the Fairphone 3/3+, so in theory posts here should not be in vain, but there’s also Issues · TeamWin/android_bootable_recovery · GitHub … there’s an issue already …

1 Like

It does not look like anyone is actually working on this :confused:
So I guess this is the end of rooting on the FP3?

Took me a while, but it’s here, first Android-11 based TWRP for FP3 with dynamic partitions and decryption:

I’ve also looked into the Magisk-Issue, see here:

8 Likes

Both (patched TWRP and patched boot image) work like a charm! Thanks a million (also for getting your patch into the next Magisk release).

May I ask you how you did this, please? At which point do you apply the boot.img and how? Thank you!

Thanks for continuing to work on this.

I just booted it and unfortunately neither mounting partitions apart from data nor decrypting data seem to work for me. It doesn’t ask for my decryption password, so doesn’t decrypt data, and mounting the other partitions looks like this …

I’m running Android 12 (S) in the form of /e/OS e-1.11-s-20230511288805-dev-FP3 … https://doc.e.foundation/devices/FP3.
Is there something I can test or try?

Switching the storage to SD card works, so apart from screenshots I can copy logs.

Please provide the /tmp/recovery.log.
Does /e/ use dynamic partitions?
What happens when you use the old 9.0-based TWRP?

Done via GitHub.

I don’t know. 9.0 based TWRP can mount partitions other than data, if that’s an indication.

Doesn’t ask for decryption password, so doesn’t decrypt, like the 11.0 based TWRP.
9.0 based TWRP decryption support was lost with /e/OS when it went from Android 11 to Android 12 on FP3.
Other partitions seem to mount fine, though (I can select them in “Mount”, too, which I can’t do in the 11.0 based TWRP) …

Seems there are two issues then for /e/.
It doesn’t seem to use dynamic partitions and the 11-based TWRP can’t decrypt the 12-based encryption.
I tried building a 12-based TWRP before, but that wasn’t able to decrypt the 11-based encryption of FPOS.
So this might need a separate TWRP-build for /e/
Would be great to get feedback from someone using LOS.

@bami: How to apply the patched boot image

  1. Make sure your FP3 is updated to the current patch level, (.0022) that it has the developer option enabled, that the boot loader is unlocked and that the current Magisk app is installed.
  2. Make sure your PC has the Android developer tools adb and fastboot installed.
  3. Download the patched boot image from https://github.com/topjohnwu/Magisk/files/11646684/FP3-8901.4.A.0022.0-boot_magisk_patched_skip_initramfs.img.zip (from the link provided in “Bootloop upon fastboot installation with FP3-8901.4.A.0021.0-gms-0b368514-user” above) and unzip it.
  4. Reboot your FP to bootloader mode with “adb reboot bootloader”
  5. Boot the downloaded image with “fastboot boot FP3-8901.4.A.0022.0-boot_magisk_patched_skip_initramfs.img” and make sure the patched image works for you.
  6. If it does then reboot again to fastboot mode as in step 4. and then install the patched image to the boot partitions of your FP3 with “fastboot flash boot_a FP3-8901.4.A.0022.0-boot_magisk_patched_skip_initramfs.img” and “fastboot flash boot_b FP3-8901.4.A.0022.0-boot_magisk_patched_skip_initramfs.img”
  7. Reboot (“fastboot reboot”) and enjoy :wink:

Note: If you want to apply any future releases to your FP3 you will have to revert to the unpatched boot image, so I strongly recommend that you keep an original boot image as contained in https://fairphone-android-builds.ams3.digitaloceanspaces.com/FP3/FP3-8901.4.A.0022.0-gms-5bdac72d-user-fastbootimage.zip handy. To flash the original boot repeat the above step 6 with the boot.img contained in the images directory of the zip.

2 Likes

Tested with:
lineage-20.0-20230508
unfortunately no password prompt, and no decryption…, but thanks for your efforts!
recovery.pdf (104.8 KB)