Trapped in fastboot mode with locked bootloader and corrupted custom ROM

:tada: :tada: :tada:

I’m really glad this worked :metal:

Not gonna lie, I was really nervous about this as well!



For the record: what is the state of the OEM-toggle and fastboot flashing get_unlock_ability now that you have locked the bootloader?


Without having changed anything, OEM toggle is now “OFF”, but not grayed-out anymore (can be toggled). Don’t know about the state of get_unlock_ability yet, will check ASAP, but I assume it is 0 now.


Not greyed out is to be expected, but “OFF”, hmm… :thinking:
I don’t like that it keeps resetting. We really need to know at which point this happens, if it got reset when locking the bootloader again this could have still bricked the phone.

Edit: Ok, after some digging, turns out the devinfo partition that gets flashed with the updated script stores that kind of information and the answer was in this forum all along :man_facepalming:

Now we need to figure out why it doesn’t get saved :thinking:

Just had a look and indeed get_unlock_ability was set to 0 (setting OEM unlock to “OFF”) after issuing fastboot flashing lock (was not the case after fastboot flashing lock_critical).

Yes. At least in my case, in summary the state of OEM unlock was affected at two occasions:

  • after flashing: OEM unlock went from “ON” to “OFF” (get_unlock_ability from 1 to 0) and OEM unlock toggle disabled (grayed out)
  • after bootloader locking (fastboot flashing lock): OEM unlock went from “ON” to “OFF”, but remained active (i.e. can be toggled)

Whopsie, that’s a problem, it should be ${FASTBOOT_BIN} --set-active=a.
I’ll fix that for the next release.

You are correct :wink:


As suggested I contacted the support and was able to send the Fairphone to a repair shop.
The cost was 30€.
After 2-3 weeks I got it back and it was restored to its factory default state.


For completeness (didn’t have access to my FP4 earlier): mine looks like this (from Stock to CalyxOS, bootloader locked):



get_unlock_ability is 0


Definitely don’t lock your bootloader in that case (as you are probably already know :slightly_smiling_face:)!

Since my method of unlocking the OEM switch works, but for @cosmic get_unlock_ability was reset to 0 again afterwards , better not to tempt fate. as well, tread very carefully here.
The only safe path forward is to wait for the Calyx devs to release a new version based on the updated Fairphone stock images, which they confirmed they will.

Edit: Should have reread your post :man_facepalming:
get_unlock_ability definitely shouldn’t have been reset to 0 again, so let’s hope this gets fixed with the next CalxyOS release. You might have to wipe your phone again then, though :see_no_evil:


I have no problem with that. As long as CalyxOS only releases test builds, it will remain the secondary phone for now…


How long did it take them to respond? I’ve opened an issue and after 10 days there is still no answer. I’m so hyped I just want to get it running :smiley:

NVM just received an answer :slight_smile:


I just reflashed a FP4 with the updated factory images and get_unlock_ability was reset to 0. That phone hasn’t been flashed to any custom ROM before (so not a Calyx problem this time) and get_unlock_ability was 1 before flashing.

So this is definitely not fixed… :roll_eyes:

Edit: I followed this process without locking the bootloader at the end and reflashed the whole OS again.
Same outcome, again.

Edit 2: Third time wasn’t the charm either. Tried a factory reset beforehand, tried fastboot flashing unlock again (doesn’t work on a unlocked phone), still changed that 1 to a 0 again :see_no_evil:



I think I messed up too… I did a quick flashing of CalyxOS (unlocked without critical). Then I recognized a much dimmer LED flash and wanted to get back to stock.
I did the download and startet the script which aborted because locked critical.
I unlocked critical and the installation went through. FPOS booted up, yeah!

And now for the messup. I got the message, that an unlocked phone isn’t secure. In my endles wisdom I locked critical and “nomal” again without toogling OEM unlock first in OS.
I then was presented the message that my system is corrupted. Now it just boots to fastboot mode and I cannot unlock the bootloader…

Here is my getvar all

(bootloader) parallel-download-flash:yes
(bootloader) hw-revision:10000
(bootloader) unlocked:no
(bootloader) off-mode-charge:0
(bootloader) charger-screen-enabled:0
(bootloader) battery-soc-ok:yes
(bootloader) battery-voltage:4096
(bootloader) version-baseband:
(bootloader) version-bootloader:
(bootloader) erase-block-size: 0x1000
(bootloader) logical-block-size: 0x1000
(bootloader) variant:SM_ UFS
(bootloader) partition-type:modemst2:raw
(bootloader) partition-size:modemst2: 0x600000
(bootloader) partition-type:modemst1:raw
(bootloader) partition-size:modemst1: 0x600000
(bootloader) partition-type:tunning:raw
(bootloader) partition-size:tunning: 0x600000
(bootloader) partition-type:fsc:raw
(bootloader) partition-size:fsc: 0x20000
(bootloader) partition-type:fsg:raw
(bootloader) partition-size:fsg: 0x280000
(bootloader) partition-type:fpconfig:raw
(bootloader) partition-size:fpconfig: 0x20000
(bootloader) partition-type:fpconfig_persist:raw
(bootloader) partition-size:fpconfig_persist: 0x20000
(bootloader) partition-type:traceability:raw
(bootloader) partition-size:traceability: 0x100000
(bootloader) partition-type:ALIGN_TO_128K_2:raw
(bootloader) partition-size:ALIGN_TO_128K_2: 0x1A000
(bootloader) partition-type:swversion:raw
(bootloader) partition-size:swversion: 0x20000
(bootloader) partition-type:oembin:raw
(bootloader) partition-size:oembin: 0x400000
(bootloader) partition-type:catecontentfv:raw
(bootloader) partition-size:catecontentfv: 0x100000
(bootloader) partition-type:catefv:raw
(bootloader) partition-size:catefv: 0x80000
(bootloader) partition-type:secdata:raw
(bootloader) partition-size:secdata: 0x7000
(bootloader) partition-type:uefivarstore:raw
(bootloader) partition-size:uefivarstore: 0x80000
(bootloader) partition-type:storsec:raw
(bootloader) partition-size:storsec: 0x20000
(bootloader) partition-type:logdump:raw
(bootloader) partition-size:logdump: 0x4000000
(bootloader) partition-type:cateloader:raw
(bootloader) partition-size:cateloader: 0x200000
(bootloader) partition-type:logfs:raw
(bootloader) partition-size:logfs: 0x800000
(bootloader) partition-type:toolsfv:raw
(bootloader) partition-size:toolsfv: 0x100000
(bootloader) partition-type:limits-cdsp:raw
(bootloader) partition-size:limits-cdsp: 0x1000
(bootloader) partition-type:limits:raw
(bootloader) partition-size:limits: 0x1000
(bootloader) partition-type:splash:raw
(bootloader) partition-size:splash: 0x20A4000
(bootloader) partition-type:spunvm:raw
(bootloader) partition-size:spunvm: 0x800000
(bootloader) partition-type:apdp:raw
(bootloader) partition-size:apdp: 0x40000
(bootloader) partition-type:dip:raw
(bootloader) partition-size:dip: 0x100000
(bootloader) partition-type:devinfo:raw
(bootloader) partition-size:devinfo: 0x1000
(bootloader) partition-type:fsgbk_b:raw
(bootloader) partition-size:fsgbk_b: 0x280000
(bootloader) partition-type:core_nhlos_b:raw
(bootloader) partition-size:core_nhlos_b: 0xAA00000
(bootloader) partition-type:uefisecapp_b:raw
(bootloader) partition-size:uefisecapp_b: 0x200000
(bootloader) partition-type:imagefv_b:raw
(bootloader) partition-size:imagefv_b: 0x200000
(bootloader) partition-type:featenabler_b:raw
(bootloader) partition-size:featenabler_b: 0x20000
(bootloader) partition-type:dtbo_b:raw
(bootloader) partition-size:dtbo_b: 0x1800000
(bootloader) partition-type:vbmeta_b:raw
(bootloader) partition-size:vbmeta_b: 0x10000
(bootloader) partition-type:vbmeta_system_b:raw
(bootloader) partition-size:vbmeta_system_b: 0x10000
(bootloader) partition-type:recovery_b:raw
(bootloader) partition-size:recovery_b: 0x6000000
(bootloader) partition-type:qupfw_b:raw
(bootloader) partition-size:qupfw_b: 0x14000
(bootloader) partition-type:devcfg_b:raw
(bootloader) partition-size:devcfg_b: 0x20000
(bootloader) partition-type:boot_b:raw
(bootloader) partition-size:boot_b: 0x6000000
(bootloader) partition-type:keymaster_b:raw
(bootloader) partition-size:keymaster_b: 0x80000
(bootloader) partition-type:dsp_b:raw
(bootloader) partition-size:dsp_b: 0x4000000
(bootloader) partition-type:abl_b:raw
(bootloader) partition-size:abl_b: 0x100000
(bootloader) partition-type:mdtp_b:raw
(bootloader) partition-size:mdtp_b: 0x2000000
(bootloader) partition-type:mdtpsecapp_b:raw
(bootloader) partition-size:mdtpsecapp_b: 0x400000
(bootloader) partition-type:bluetooth_b:raw
(bootloader) partition-size:bluetooth_b: 0x200000
(bootloader) partition-type:modem_b:raw
(bootloader) partition-size:modem_b: 0xC300000
(bootloader) partition-type:hyp_b:raw
(bootloader) partition-size:hyp_b: 0x80000
(bootloader) partition-type:multiimgoem_b:raw
(bootloader) partition-size:multiimgoem_b: 0x8000
(bootloader) partition-type:tz_b:raw
(bootloader) partition-size:tz_b: 0x400000
(bootloader) partition-type:aop_b:raw
(bootloader) partition-size:aop_b: 0x80000
(bootloader) partition-type:questdatafv:raw
(bootloader) partition-size:questdatafv: 0x1000000
(bootloader) partition-type:fsgbk_a:raw
(bootloader) partition-size:fsgbk_a: 0x280000
(bootloader) partition-type:featenabler_a:raw
(bootloader) partition-size:featenabler_a: 0x20000
(bootloader) partition-type:core_nhlos_a:raw
(bootloader) partition-size:core_nhlos_a: 0xAA00000
(bootloader) partition-type:uefisecapp_a:raw
(bootloader) partition-size:uefisecapp_a: 0x200000
(bootloader) partition-type:imagefv_a:raw
(bootloader) partition-size:imagefv_a: 0x200000
(bootloader) partition-type:dtbo_a:raw
(bootloader) partition-size:dtbo_a: 0x1800000
(bootloader) partition-type:vbmeta_a:raw
(bootloader) partition-size:vbmeta_a: 0x10000
(bootloader) partition-type:vbmeta_system_a:raw
(bootloader) partition-size:vbmeta_system_a: 0x10000
(bootloader) partition-type:recovery_a:raw
(bootloader) partition-size:recovery_a: 0x6000000
(bootloader) partition-type:qupfw_a:raw
(bootloader) partition-size:qupfw_a: 0x14000
(bootloader) partition-type:devcfg_a:raw
(bootloader) partition-size:devcfg_a: 0x20000
(bootloader) partition-type:boot_a:raw
(bootloader) partition-size:boot_a: 0x6000000
(bootloader) partition-type:keymaster_a:raw
(bootloader) partition-size:keymaster_a: 0x80000
(bootloader) partition-type:dsp_a:raw
(bootloader) partition-size:dsp_a: 0x4000000
(bootloader) partition-type:abl_a:raw
(bootloader) partition-size:abl_a: 0x100000
(bootloader) partition-type:mdtp_a:raw
(bootloader) partition-size:mdtp_a: 0x2000000
(bootloader) partition-type:mdtpsecapp_a:raw
(bootloader) partition-size:mdtpsecapp_a: 0x400000
(bootloader) partition-type:bluetooth_a:raw
(bootloader) partition-size:bluetooth_a: 0x200000
(bootloader) partition-type:modem_a:raw
(bootloader) partition-size:modem_a: 0xC300000
(bootloader) partition-type:hyp_a:raw
(bootloader) partition-size:hyp_a: 0x80000
(bootloader) partition-type:multiimgoem_a:raw
(bootloader) partition-size:multiimgoem_a: 0x8000
(bootloader) partition-type:tz_a:raw
(bootloader) partition-size:tz_a: 0x400000
(bootloader) partition-type:aop_a:raw
(bootloader) partition-size:aop_a: 0x80000
(bootloader) partition-type:ALIGN_TO_128K_4:raw
(bootloader) partition-size:ALIGN_TO_128K_4: 0x1A000
(bootloader) partition-type:ddr:raw
(bootloader) partition-size:ddr: 0x100000
(bootloader) partition-type:cdt:raw
(bootloader) partition-size:cdt: 0x20000
(bootloader) partition-type:ALIGN_TO_128K_1:raw
(bootloader) partition-size:ALIGN_TO_128K_1: 0x1A000
(bootloader) partition-type:xbl_config_b:raw
(bootloader) partition-size:xbl_config_b: 0x20000
(bootloader) partition-type:xbl_b:raw
(bootloader) partition-size:xbl_b: 0x380000
(bootloader) partition-type:xbl_config_a:raw
(bootloader) partition-size:xbl_config_a: 0x20000
(bootloader) partition-type:xbl_a:raw
(bootloader) partition-size:xbl_a: 0x380000
(bootloader) partition-type:userdata:ext4
(bootloader) partition-size:userdata: 0x377E72E000
(bootloader) partition-type:super:raw
(bootloader) partition-size:super: 0x180000000
(bootloader) partition-type:rawdump:raw
(bootloader) partition-size:rawdump: 0x20CCCD000
(bootloader) partition-type:oempersist:raw
(bootloader) partition-size:oempersist: 0xC800000
(bootloader) partition-type:metadata:raw
(bootloader) partition-size:metadata: 0x1DE0000
(bootloader) partition-type:frp:raw
(bootloader) partition-size:frp: 0x80000
(bootloader) partition-type:keystore:raw
(bootloader) partition-size:keystore: 0x80000
(bootloader) partition-type:misc:raw
(bootloader) partition-size:misc: 0x100000
(bootloader) partition-type:persist:raw
(bootloader) partition-size:persist: 0x2000000
(bootloader) partition-type:ssd:raw
(bootloader) partition-size:ssd: 0x2000
(bootloader) partition-type:ALIGN_TO_128K_3:raw
(bootloader) partition-size:ALIGN_TO_128K_3: 0x18000
(bootloader) has-slot:modem:yes
(bootloader) has-slot:system:no
(bootloader) current-slot:a
(bootloader) has-slot:boot:yes
(bootloader) slot-retry-count:b:7
(bootloader) slot-unbootable:b:no
(bootloader) slot-successful:b:no
(bootloader) slot-retry-count:a:6
(bootloader) slot-unbootable:a:yes
(bootloader) slot-successful:a:yes
(bootloader) slot-count:2
(bootloader) secure:yes
(bootloader) serialno:3fdf6edb
(bootloader) product:FP4
(bootloader) snapshot-update-status:none
(bootloader) is-userspace:no
(bootloader) max-download-size:805306368
(bootloader) kernel:uefi

Is there a way besides sending it to the repair center?

Thanks in Advance :upside_down_face:

Unfortunately no other (better) way has come up here on the forum up to now…


@friede Can you share the filename of the zip you used for flashing? Did you pull the latest one from the support article?


Sorry @friede but now it’s time to send it back

I’m kinda sad. I wasn’t able to send my FP4 back until now, I rarely got a response on Apr 22 that I was able to send it back if I wanted. I replied that I indeed wanted and did not receive an answer since. I mean I get they don’t have the capacity like tech giants but I was so hyped for my FP4 and now I kinda completely forgot about it since it is already in a package waited on being shipped to the repair center… They mention a support phone number on the support site but the only number I found was the one in the impressum here Impressum - Fairphone is that the correct one to call? Just to make sure they didn’t forget about my request?

I think the number is mentioned here #contactsupport


I submitted my support ticket on friday night and did get an answer this afternoon. Currently I’m waiting for the shipping labels and instructions.
They acknowledged my situation:

Our Software team has identified the root cause of this issue. We now provide an updated package for manual installation which addresses this cause.

The problem is, this is the exact version that I was using. The checksum of the .zip-file I downloaded is identical to the the one in the article…

Perhabs somebody of you can tell me what I could’ve done wrong:
I installed calyxos several times because everytime that I locked flashing I got the Message that my device is corrupted. After that I unlocked it and installed it again.
I tried this several times until I just let it be open.

After reinstalling FPOS I did the same thing with the only difference, that i wasn’t able to unlock flashing again.

Additional information:
For the installation of calyx I unlocked only flashing.
After the first try of installing FPOS again the script failed because critical was locked, so I unlocked it and tried again. After installing and booting into the configuration wizard, I locked critical and flashing again. After doing that it prompted the message again that my device is corrupted and won’t boot.