Installation does not go forward FP4/win10

I tried to install murena on a new Fairphone 4 i did all the steps to the installation and the bulk of the installion is full (more than a hour ago) but nothing happens. see attached image:

What can i do? will the cellphone be damages if i close the windows? on the cellphone i still see the fastboot mode.

EDIT: This posting is flagged as SPAM, why???

It is difficult to vizualise where you are. Do you remember what was the last thing that happened or which you were asked to do ?

1 Like

Have a look at the protocol? There’s a link at the bottom of the Easy Installer window.

wow you guys are fast. it told me that the installation will automatically start (after pressing the volume down button) which happend (or seemed to happen) because i was in fastboot mode and the green bulk rised (so i thougth the downloaded package now is on my phone and got installed). the debug code:

Protokoll

(debug)“flashed qupfw_b”

(debug)C:\Users\User\AppData\Local\easy-installer\sources\FP4>waitfor /t 1 pause 2>nul

(debug)C:\Users\User\AppData\Local\easy-installer\sources\FP4>“C:\Program Files\easy-installer\bin\adb\fastboot” flash uefisecapp_b uefisecapp.img

ohh there is more, here is the full picture

update: i just restarted the phone, it did not start properly and said i can try again or “reload the phone with an old android” or sth. like that. i clicked that, but now i have murena on my phone and an do the settings. well that is on one hand cool that it worked but on the other hand it is not so nice to have this failure. can anyone tell me if my system is corrupted / not working properly and i should restart the process. or if i just can work with that?

The spam flag was lifted, this end. I don’t know the reason, sorry, but welcome, Marian, to the /e/ forum.

I had trouble reading the log, till I saved to a different machine.

I think I see an unusual mix between

  • the install script (where a list of partitions, should flash in sequence, with an OKAY [nnnnn]s and move on)
  • and Easy Installer (where we see (debug) + easy installer + ... trying to recover from failed flashes of several partitions.

… but I see no “final exit” success message nor a fail message.

I wonder if this is the old Easy Installer Try the Easy Installer beta or the very new Web Installer : Sneak Preview ??

You seem uncertain (me too) that the job was complete. Did you run the First start wizard, where you select Language, connect SIM and wifi and other utility jobs, on the phone ? Do you think the phone is working ok?

One thing that can happen is that the script flashes a number of partitions, but one fails, and usually reports

failed to flash some item

Usually the phone is left unuseable but you would get a message like

In this case as I understand it one would simply start Easy Installer again, but Easy Installer should have left with a clear “Exit message”. I do not see that.

1 Like

thank you very much, i have easy installer v.0.21.2
the phone itself works, except the appstore that does not work but i downloaded another one and this is working just fine. i encounter 2 times troubles with using the preinstalled browser to “google” sth. and there a got some error messages but just with doing it again it worked. all the rest seems to work fine on the phone now…

yeah the installer downloaded the stuff, i put out the simcard, had do to a coupple of steps until i came to this screen.

I recall it no better it was “restore android again” or sth. like that. that i clicked and then murena was there.

do you think i should flash it again? but if yes how. is there another installer a newer version?

best regards

well the easyinstaller came up with a error message. the “restore android” was on my phone. i had two options:
“try again”
“restore android” (or sth. like that)
i tried the second thing and then murena was on my phone. it seems to me, that the process was finished just fine, but i have no idea what is missing after that step.? if there is something missing that will cause troubles.

If the device is working as you say … it is probably ok.

What could we do? Check with the log against the partitions on that phone which are required to be flashed to see whether any were any omitted.

  1. This is how to find the log on Windows
2. flash_FP4_factory.sh
#!/usr/bin/env bash

##########
# This script is created and maintained by
#       Bharath(@teamb58).org
# Feel free to connect for any queries or suggestions.
##########

##########
# This script flashes a software release and complete wipes the device.
#
##########

set -e
set -u

# Target device info
PRODUCT="Fairphone 4"
PRODUCT_ID="FP4"

# Paths/files
ROOT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
IMAGES_DIR="${ROOT_DIR}"

# Abort the script (and wait for a key to be pressed).
abort_now() {
  echo ""
  read -rp "ERROR: Aborting now (press Enter to terminate)." a
  exit 1
}

# Check for connected phone
find_device() {
  echo "INFO: Looking for connected device(s)..."
  DEVICE_FOUND="false"
  while [ ${DEVICE_FOUND} = "false" ]
  do
    serial_numbers=

    for sn in $("${FASTBOOT_BIN}" devices | grep fastboot | grep -oE '^[[:alnum:]]+')
    do
      # Checking the product ID
      PRODUCT_STRING=$("${FASTBOOT_BIN}" -s "${sn}" getvar product 2>&1)
      # Add serial, if product matches
      if [[ ${PRODUCT_STRING} == *"${PRODUCT_ID}"* ]] || [[ ${PRODUCT_STRING} == *"${PRODUCT_ID_OLD}"* ]]
      then
        serial_numbers="${serial_numbers} $sn"
      fi
    done

    case $(echo "${serial_numbers}" | wc -w | grep -oE '[0-9]+') in
      0)
        echo ""
        echo "WARNING: No ${PRODUCT} found in fastboot mode."
        echo "WARNING: Make sure that a ${PRODUCT} is connected."
        ;;
      1)
          echo "INFO: One ${PRODUCT} in fastboot mode found (serial number: ${sn})."

        DEVICE_FOUND="true"
        break
        ;;
      *)
        echo ""
        echo "WARNING: Several ${PRODUCT}'s in fastboot mode connected."
        echo "WARNING: Please connect only one ${PRODUCT}."
        ;;
    esac

    echo ""
    while true
    do
      read -rp "Do you want to look for a ${PRODUCT} again? [(Y)es/(n)o]: " a
      if [ -z "${a}" ] || [ "${a}" = 'y' ] || [ "${a}" = 'Y' ]
      then
        break
      elif [ "${a}" = 'n' ] || [ "${a}" = 'N' ]
      then
        exit 0
      fi
    done
  done
}

# Flash (or manipulate) relevant partitions
flash_device() {

  flash_image_ab_or_abort "${sn}" bluetooth "${IMAGES_DIR}/bluetooth.img"
  flash_image_ab_or_abort "${sn}" devcfg "${IMAGES_DIR}/devcfg.img"
  flash_image_ab_or_abort "${sn}" dsp "${IMAGES_DIR}/dsp.img"
  flash_image_ab_or_abort "${sn}" modem "${IMAGES_DIR}/modem.img"
  flash_image_ab_or_abort "${sn}" xbl "${IMAGES_DIR}/xbl.img"
  flash_image_ab_or_abort "${sn}" tz "${IMAGES_DIR}/tz.img"
  flash_image_ab_or_abort "${sn}" hyp "${IMAGES_DIR}/hyp.img"
  flash_image_ab_or_abort "${sn}" keymaster "${IMAGES_DIR}/keymaster.img"

  flash_image_ab_or_abort "${sn}" abl "${IMAGES_DIR}/abl.img"
  flash_image_ab_or_abort "${sn}" boot "${IMAGES_DIR}/boot.img"
  flash_image_ab_or_abort "${sn}" recovery "${IMAGES_DIR}/recovery.img"
  flash_image_ab_or_abort "${sn}" dtbo "${IMAGES_DIR}/dtbo.img"
  flash_image_ab_or_abort "${sn}" vbmeta_system "${IMAGES_DIR}/vbmeta_system.img"
  flash_image_ab_or_abort "${sn}" vbmeta "${IMAGES_DIR}/vbmeta.img"
  flash_image_or_abort "${sn}" super "${IMAGES_DIR}/super.img"

  flash_image_ab_or_abort "${sn}" aop "${IMAGES_DIR}/aop.img"
  flash_image_ab_or_abort "${sn}" featenabler "${IMAGES_DIR}/featenabler.img"
  flash_image_ab_or_abort "${sn}" imagefv "${IMAGES_DIR}/imagefv.img"
  flash_image_ab_or_abort "${sn}" multiimgoem "${IMAGES_DIR}/multiimgoem.img"
  flash_image_ab_or_abort "${sn}" qupfw "${IMAGES_DIR}/qupfw.img"
  flash_image_ab_or_abort "${sn}" uefisecapp "${IMAGES_DIR}/uefisecapp.img"
  flash_image_ab_or_abort "${sn}" xbl_config "${IMAGES_DIR}/xbl_config.img"
  flash_image_ab_or_abort "${sn}" core_nhlos "${IMAGES_DIR}/core_nhlos.img"

  "$FASTBOOT_BIN" -s "${sn}" erase userdata
  "$FASTBOOT_BIN" -s "${sn}" erase metadata

  "$FASTBOOT_BIN" -s "${sn}" --set-active=a

}

# Flash an image to a partition. Abort on failure.
# Arguments: <device serial number> <partition name> <image file>
flash_image_or_abort() {
  local retval=0
  "$FASTBOOT_BIN" -s "${1}" flash "${2}" "${3}" || retval=$?

  if [ "${retval}" -ne 0 ]
  then
    echo ""
    echo "ERROR: Could not flash the ${2} partition on device ${1}."
    echo ""
    echo "ERROR: Please unplug the phone, take the battery out, boot the device into"
    echo "ERROR: fastboot mode, and start this script again."
    echo "ERROR: (To get to fastboot mode, press Volume-Down and plug in the USB-C)"
    echo "ERROR: (cable until the fastboot menu appears.)"
    abort_now
  fi
}

# Flash an image to both A and B slot of partition. Abort on failure.
# Arguments: <device serial number> <partition name without slot> <image file>
flash_image_ab_or_abort() {
  flash_image_or_abort "${1}" "${2}_a" "${3}"
  flash_image_or_abort "${1}" "${2}_b" "${3}"
}

# Operating system checks and variable definition
os_checks() {
  case "$(uname -s 2> /dev/null)" in
    Linux|GNU/Linux)
      echo "INFO: You are using a Linux distribution."
      FASTBOOT_BIN="${ROOT_DIR}/bin-linux-x86/fastboot"
      ;;
    msys|MINGW*)
      echo "INFO: You are using MinGW on Windows"
      FASTBOOT_BIN="${ROOT_DIR}/bin-msys/fastboot.exe"
      ;;
    *)
      echo "ERROR: Unsupported operating system (${OSTYPE})."
      echo "ERROR: Only GNU/Linux, and MinGW on Windows are currently supported."
      abort_now
      ;;
  esac
}

# Control the reboot sequence
reboot_device() {
  echo "-----------"
  echo ""
  echo "INFO: Done. The device will reboot now."
  "${FASTBOOT_BIN}" -s "${sn}" reboot
  echo ""
  echo "INFO: You can unplug the USB cable now."
  echo ""
}

echo ""
echo "*** ${PRODUCT} flashing script ***"
echo ""
echo "INFO: The procedure will start soon. Please wait..."
echo "Note that this will detect and flash only on FP4 device."
sleep 2

# Begin with some OS checks and variable definition
os_checks

# Call function to look for device(s)
# If only one device is found $sn will store its serial number
find_device

# Flash the device
flash_device

# Reboot device
reboot_device
3. flash_device, partition list + flashing tasks
flash_device() {

  flash_image_ab_or_abort "${sn}" bluetooth "${IMAGES_DIR}/bluetooth.img"
  flash_image_ab_or_abort "${sn}" devcfg "${IMAGES_DIR}/devcfg.img"
  flash_image_ab_or_abort "${sn}" dsp "${IMAGES_DIR}/dsp.img"
  flash_image_ab_or_abort "${sn}" modem "${IMAGES_DIR}/modem.img"
  flash_image_ab_or_abort "${sn}" xbl "${IMAGES_DIR}/xbl.img"
  flash_image_ab_or_abort "${sn}" tz "${IMAGES_DIR}/tz.img"
  flash_image_ab_or_abort "${sn}" hyp "${IMAGES_DIR}/hyp.img"
  flash_image_ab_or_abort "${sn}" keymaster "${IMAGES_DIR}/keymaster.img"

  flash_image_ab_or_abort "${sn}" abl "${IMAGES_DIR}/abl.img"
  flash_image_ab_or_abort "${sn}" boot "${IMAGES_DIR}/boot.img"
  flash_image_ab_or_abort "${sn}" recovery "${IMAGES_DIR}/recovery.img"
  flash_image_ab_or_abort "${sn}" dtbo "${IMAGES_DIR}/dtbo.img"
  flash_image_ab_or_abort "${sn}" vbmeta_system "${IMAGES_DIR}/vbmeta_system.img"
  flash_image_ab_or_abort "${sn}" vbmeta "${IMAGES_DIR}/vbmeta.img"
  flash_image_or_abort "${sn}" super "${IMAGES_DIR}/super.img"

  flash_image_ab_or_abort "${sn}" aop "${IMAGES_DIR}/aop.img"
  flash_image_ab_or_abort "${sn}" featenabler "${IMAGES_DIR}/featenabler.img"
  flash_image_ab_or_abort "${sn}" imagefv "${IMAGES_DIR}/imagefv.img"
  flash_image_ab_or_abort "${sn}" multiimgoem "${IMAGES_DIR}/multiimgoem.img"
  flash_image_ab_or_abort "${sn}" qupfw "${IMAGES_DIR}/qupfw.img"
  flash_image_ab_or_abort "${sn}" uefisecapp "${IMAGES_DIR}/uefisecapp.img"
  flash_image_ab_or_abort "${sn}" xbl_config "${IMAGES_DIR}/xbl_config.img"
  flash_image_ab_or_abort "${sn}" core_nhlos "${IMAGES_DIR}/core_nhlos.img"

  "$FASTBOOT_BIN" -s "${sn}" erase userdata
  "$FASTBOOT_BIN" -s "${sn}" erase metadata

  "$FASTBOOT_BIN" -s "${sn}" --set-active=a

If you can provide the full text based log from 1. I (or you) can check it against 3. the partition list and flashing tasks.

2 Likes

hey thank you, the first one is easy, but the seccond one is a script i download and then? how to activate the script on the phone? or what exactly do i have to do with it?

Log-File from easy-installer: 875c2a74-7cbf-4838-b57a-8e086c97e554.log - pCloud (i cant upload a .txt. file and i cant copy it here because its too big)

Install /e/OS on a Fairphone FP4 - “FP4”

no, no, none of that, just compare the text side by side. It will look like

this screenshot

I will edit the log later to make it easier to identify the important bits.

Oh and the second one, the script itself, is just for information perhaps it helps to inform any perceived error.

Edit In case we find a fail, you might consider saving the the downloaded ROM which is currently at

C:\Users\User\AppData\Local\easy-installer\sources\FP4\IMG-e-latest-t-FP4.zip

It could be reinstalled as instructions from the manual CLI method above Post #13.

1 Like

So I have a sort of part explanation … here is a highly abridged version of your log

Short log
OS name = Windows 10 Java Home = C:\Program Files\easy-installer
  (debug)"C:\Program Files\easy-installer\bin\adb\fastboot" flashing unlock  
  (debug)echo "flashing unlock fails"  
  (debug) echo "flashing unlocked" 
  (debug)"flashing unlocked"
  (debug)"C:\Program Files\easy-installer\bin\adb\fastboot" flashing unlock_critical  
  (debug) inflated: flash_FP4_factory.sh
echo "=== Flash slot a ===" 
  (debug)"=== Flash slot a ==="
  (debug)"flashed bluetooth"
  (debug)"flashed devcfg"
  (debug)"flashed dsp"
  (debug)"flashed modem"
  (debug)"flashed xbl"
  (debug)"flashed tz"
  (debug)"flashed hyp"
  (debug)"flashed keymaster"

  (debug)"flashed abl"
  (debug)"flashed boot"
  (debug)"flashed recovery"
  (debug)"flashed dtbo"
  (debug)"flashed vbmeta_system"
  (debug)"flashed vbmeta"
  (debug)Sending sparse 'super' 1/5 (736049 KB)  OKAY [ 17.750s] ok 2,3,4 (debug)Sending sparse 'super' 5/5 (247964 KB)             OKAY [ 25.203s]
  (debug)"flashed super"
  (debug)"flashed aop"
  (debug)"flashed featenabler"
  (debug)"flashed imagefv"
  (debug)"flashed multiimgoem"
  (debug)"flashed qupfw"
  (debug)"flashed uefisecapp"
  (debug)"flashed xbl_config"
  (debug)"flashed core_nhlos"

echo "=== Flash slot b ===" 
  (debug)"=== Flash slot b ==="
  (debug)"flashed bluetooth_b"
  (debug)"flashed devcfg_b"
  (debug)"flashed dsp_b"
  (debug)"flashed modem_b"
  (debug)"flashed xbl_b"
  (debug)"flashed tz_b"
  (debug)"flashed hyp_b"
  (debug)"flashed keymaster_b"
  (debug)"flashed abl_b"
  (debug)"flashed boot_b"
  (debug)"flashed recovery_b"
  (debug)"flashed dtbo_b"
  (debug)"flashed vbmeta_system_b"
  (debug)"flashed aop_b"
  (debug)"flashed featenabler_b"
  (debug)"flashed imagefv_b"
  (debug)"flashed multiimgoem_b"
  (debug)"flashed qupfw_b"
C:\Program Files\easy-installer\bin\adb\fastboot" flash uefisecapp_b uefisecapp.img 
  (debug)Sending 'uefisecapp_b' (121 KB)                    FAILED (Status read failed (Too many links))
  (debug)fastboot: error: Command failed
  (debug)C:\Users\User\AppData\Local\easy-installer\sources\FP4>if errorLevel 1 (exit /b 5  ) 
2025-01-03 23:26:56,408 DEBUG [Thread-16] e.e.i.t.CommandExecutionTask [null:-1] Exit value = 5

url = https://murena.io/s/4qRxWjeM5Yb72b4, filepath =
C:\Users\User\AppData\Local\easy-installer\875c2a74-7cbf-4838-b57a-8e086c97e554.log
		Response code of log's upload : 500
			sending log: failure
Repeats: Response code of log's upload : 500

url = https://murena.io/s/QLwyiZ4fysodiz3, filepath =
C:\Users\User\AppData\Local\easy-installer\feedback-1c97910d-de29-40a8-8658-2e59b3ac2e7c.txt
		Response code of log's upload : 500
			sending feedback: failure
Repeats several times: Response code of log's upload : 500

The regular command is to flash_image_ab_or_abort.

The log shows successful flash of all Slot A.

Then starts Slot B where the last three fail.

The script tries to abort (Easy Installer tries to get out of here) … but the phone half expects the install to go to one slot only, not a “factory install” where both slots are flashed together. Thus your action seems to have caused Slot A to boot successfully!

However there are some missed actions:

# Item missed from Slot B
  flash_image_ab_or_abort "${sn}" uefisecapp "${IMAGES_DIR}/uefisecapp.img"
  flash_image_ab_or_abort "${sn}" xbl_config "${IMAGES_DIR}/xbl_config.img"
  flash_image_ab_or_abort "${sn}" core_nhlos "${IMAGES_DIR}/core_nhlos.img"

# Further items missed
  "$FASTBOOT_BIN" -s "${sn}" erase userdata
  "$FASTBOOT_BIN" -s "${sn}" erase metadata
  "$FASTBOOT_BIN" -s "${sn}" --set-active=a

So we see Slot B is incomplete.

Also missed were erase userdata. Did you unlock the phone, or Factory reset ? Either would have erased userdata.

I am not sure how a non erased metadata might be significant.

I assume only that the phone has set Slot A active. You might reassure yourself that you are indeed running on Slot A by booting into recovery, perhaps from the Bootloader, where you should see e-Recovery saying Slot A active.

I hope this is understandable, don’t hesitate to ask if not!

Perhaps it would be quite a good idea to flash the script again so that you start your /e/OS journey as cleanly as possible. I guess it would be unwise to attempt to lock the bootloader.

3 Likes

wow thank you very much. well I thougth that too, but why should flashing it again work the second time? It just aborted.

And yes i unlocked the phone. i did not do a factory reset but the phone was brand new, so i did really nothing on it before.

What exactly is Slot A and B? i have only one 128gb space i did not have an SD card in it.

UPDATE: i just did it again, this time I got an error (and it was exactly the error you already told me @aibd . Then it said i can do it again, so I just did it again. strange but the third time just worked. I dont know if in this case the program does something different? anyway I got the complete process and happy that it now works, because i really need a working cellphone. Thank you very very very much for your guidance!!!

1 Like

I am pleased to hear all went well and that you decided to even go for a third attempt, Bravo. Unlocking the phone does Wipe userdata.

Not sure I am the best person to ask and I did not find a quick answer with an online search. I did find this image in the article linked below it.

In short the idea is to have two partitions of the “hard drive” with the aim of making an update more secure. Slot A is flashed one day, if there are bad consequences, the phone could revert to Slot B. A far better explanation form XDA developers above. Just a guess, but I expect the “factory install script” may be quite hard work for a home PC, made harder if the PC has to drive Easy Installer as well (??).

2 Likes