iodeOS / ota

86 stars 4 forks source link

Bootloop on FP4 (Fairphone) #17

Open Adam-Kadmon opened 2 years ago

Adam-Kadmon commented 2 years ago

I just finished installing iodeOS (the latest, 20220407 build) according to the FP4 instructions here https://github.com/iodeOS/ota .

I booted into the OS between steps 9 and 10 and it worked just fine. I then booted into fastboot mode (adb reboot bootloader) and ran the fastboot flashing lock command.

That's when I got a bootloop, Fairphone logo to startup vibration back to Fairphone logo.

I can get back into fastboot mode. I tried re-flashing the custom key but got a "flashing not allowed in lock state" error.

I ran fastboot flashing unlock which completed successfully, but I still get the same error when trying to re-flash the custom key. I'm not sure I even need to re-flash it, I was just trying to back-track.

It now bootloops the same, only with the bootloader-unlocked warning making the loop longer.

I initially unlocked the bootloader using these instructions (parts 1 &2): https://support.fairphone.com/hc/en-us/articles/4405858258961

Part 2 does fastboot flashing unlock_critical while the iodeOS instructions above don't do lock_critical at any point - could that be the problem?

The only other thing of note is that power + volume up didn't work for me to get into recovery mode, I used adb reboot recovery instead. That's the only place I deviated from the instructions.

At the bottom of the screen in recovery mode, I have two errors:

E: Failed to bind mount /mnt/staging/emulated/media/0 to /storage/emulated: No such file or directory E: emulated failed to bind mount /mnt/staging/emulated/media/0 on /storage/emulated: No such file or directory

My phone no longer shows up after running adb devices, I can still execute at least some adb/fastboot commands.

Current slot is b (I flashed the same recovery image to both slots, as per the iodeOS instructions).

I would be extremely grateful for any advice on how to proceed. I've had this phone for two days, I'm devastated.

I checked all sha256 sums. I don't know what else to add. Please let me know.

premier-lifeboat commented 2 years ago

sounds familar to me - had this issue as well when trying to lock boot loader

When I remember correct I only could "escape" via power + volume down

Could you then run "fastboot getvar all" and share the output for (bootloader)? The same for "fastboot flashing get_unlock_ability"?

Adam-Kadmon commented 2 years ago

Thank you for replying!

The phone doesn't show up for adb devices but the bootloader still reacts to fastboot commands.

I only get output for (bootloader) when running fastboot getvar all, here it is:

(bootloader) parallel-download-flash:yes (bootloader) hw-revision:10000 (bootloader) unlocked:yes (bootloader) off-mode-charge:0 (bootloader) charger-screen-enabled:0 (bootloader) battery-soc-ok:yes (bootloader) battery-voltage:4217 (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:f2fs (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:b (bootloader) has-slot:boot:yes (bootloader) slot-retry-count:b:7 (bootloader) slot-unbootable:b:no (bootloader) slot-successful:b:yes (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:[redacted] (bootloader) product:FP4 (bootloader) snapshot-update-status:none (bootloader) is-userspace:no (bootloader) max-download-size:805306368 (bootloader) kernel:uefi

The output for fastboot flashing get_unlock_ability is "(bootloader) get_unlock_ability: 1"

Would doing fastboot --set-active=a put me at risk of some greater catastrophe? It says "slot-unbootable:a:yes", but maybe that's where the OS is installed?

premier-lifeboat commented 2 years ago

When I remember correctly I had a similar situation, continuing with various trials which even did end in (bootloader) slot-unbootable:b:yes (bootloader) slot-unbootable:a:yes where I was lucky to at least reach recovery mode again. What finally does the trick for me - I can't tell for sure. My successful attempt was to do later the install of iode with bare standards like english language. And I got this hint - maybe it is working for you, too: check if bootloader unlock ability is possible =>fastboot flashing get_unlock_ability → (bootloader) get_unlock_ability: 1 ==> if you get 1 then follow with step 18) otherwise do not lock bootloader (can brick your phone) and follow with step 19)

  1. fastboot flashing lock
  2. reboot system. First should see a Lineage screen doing a wipe. After a second (automatic) boot you should see the yellow boot screen and then the iode bootscreen. start setup wizard
Adam-Kadmon commented 2 years ago

Thanks for this. You've given me some really useful information and hints here.

I'll hang tight a couple of days to see if anyone else chimes in. My current plan is to attempt a factory reset from recovery and to try switching the current slot... not necessarily in that order.

Is it possible to just start the install process again? My main concern is that I don't know where that custom key binary flashed to, if it's still there, and at what point it gets overwritten or erased.

Also, not having the option to flash from *.zip in recovery adds a layer of stress with everything depending on ADB working.

I have little sense of what's safe to try and what could brick the device. I've never worked with a lockable bootloader before, or two slots, for that matter. And definitely not with a phone this expensive or new.

premier-lifeboat commented 2 years ago

I just noticed that recently there was an update on the install guide posted here: https://community.iode.tech/t/iodeos-for-fairphone-4/180/69

as well it seems that forum is visited more often than this one...

Adam-Kadmon commented 2 years ago

Thank you, I hadn't come across this in the past two days of searching around for a solution. Although not a solution, this looks like it would avoid the bootloop/brick issue I'm experiencing.

Frustratingly, the instructions on the iodeOS website and here on their GitHub still haven't been updated and are still causing problems.

I'll wait another day and then start trying to fix this myself.

If anyone knows a safe set of steps to take to go from bootloop to working install, I'll be very grateful. The first thing I'll try is switching the current slot from "b" to "a". Not sure what I'll do if that doesn't work, probably a factory reset from recovery followed by an attempt at re-flashing. (My bootloader seems to be unlocked and my unlock ability is "1".)

premier-lifeboat commented 2 years ago

I had to switch the boot slot to b... Like you said: doing this the first time with two slots and locking on a new mobile - increases blood pressure by at least 20 points

btw - I ended up successful using the mentioned community instructions and run now the beta of iode 3 (which I consider very stable)

Adam-Kadmon commented 2 years ago

20 points at least! Switching to slot a allowed me to boot into iodeOS 2.4, I still have everything unlocked (including critical), but at least my phone's not bricked.

Switching to the beta channel is very tempting, but this is my daily driver and soon-to-be only usable phone, so I don't think I'll risk it. If I had any sort of backup device, I'd do it, though.

I wonder if simply waiting for an OTA update to come to the 20220407 build would achieve the same thing as flashing the 20220405 build and using the updater to upgrade to 20220407? I.e., would that also leave me with both slots flashed with iodeOS?

I'll ask this and other questions on the iodeOS forum soon. Thank you for all your help!

IodeOS devs: please don't close this issue yet - the official instructions still leave the user with an unlockable bootloader (at least in some cases). I still don't know how to safely lock mine at this point. I don't want to mess up my one bootable slot.

Adam-Kadmon commented 2 years ago

It looks like some FP4s (possibly the most recent batches or those that shipped with the more recent FW builds?) are un-relockable at this time.

I managed to re-lock the criticals without incident but triggered the "your device is corrupt and will not boot" error when trying to re-lock the bootloader.

I've left the bootloader unlocked for now and will continue to watch the forums for a solution.

itsAllDigital commented 2 years ago

Facing the same issue (iodéOS 3).

When trying to lock the bootloader I get the same "your device is corrupt and will not boot" error.

Tried the guide from the community page a few times but with no luck. I always end at the same error. Is it possible that the latest key file is somehow corrupt or does the device ignore the custom key?