Documentation error? With Stock OS running Installer Script while entering fastboot mode for fairphone4 does not work as stated

ADB (Android Debug Bridge) and Fastboot are 2 different things. They just usually come together in the same set of tools.
Accordingly, there’s an adb devices command and a fastboot devices command for device detection.

Yupp. Inside /e/os now activated dev-mode and usb-debugging, now adb devices lists my mobile again. One microthing more understood.

now usb-debugging enabled, adb devices shows my mobile. fastboot devices does show notin! ???

You are not in fastboot mode.
ADB should work when Android is booted (and if USB debugging is allowed) as well as in recovery mode (to a limited extent there).
The fastboot command is for fastboot mode.

2 Likes

Now I am unsure because the workflow from the documentation did not work for me. OK I still had to actually unlock bootloader. But after that, I still could not follow the installation instructions. I had to enter fastboot via recovery. Directly going to fastboot did not allow the script to work.

Is the documentation to be corrected (or at least to be extended to give an alternative when things do not work like with me?) Or is there something deeper to be corrected, so the documentation again works smoothly?

I had a stock ff4, with latest updates installed.

Not sure if this articles answers your questions directly, but it might make things clearer.
https://droidwin.com/fastbootd-mode/

It doesn’t really explain why the second attempt worked when going into fastboot (or probably it was fastbootd?) while the first one did not.

2 Likes

OK

  1. booting into the OS (enter sim-pin, enter normal-pin, having USB-debugging enabled), makes adb devices see my mobile, but fastboot devices not.
  2. booting into the fastboot, makes adb devices NOT see my mobile, but fastboot devices do see my mobile.

Yea, I think I now understand this detail better.

  • the down+power brings to a minimalistic bootloader (is it really the “Fastboot Mode”?) screen.

  • Now with /e/os the recovery screen looks even MORE different than from Stock OS of fairphone 4.

    • Reboot system now
    • apply update
    • factory reset
    • Advanced
    • enter fastboot
    • Reboot to bootloader
    • reboot to recovery

    • Going to fastboot menu item then the screen says: “FastbootD
      I am not sure what difference that all makes.

Dudes, how can I now help clearing the quesiton if the thing matches the documentation and vice versa. I have no stock OS anymore and could happily say “Cheereoo” and move foreward to setup my new /e/os phone :slight_smile:

Which of whom I shall give a “Solution” check, while the initial reason for my post (-> make documenation match reality) is not solved?

So you are saying that the fastboot you enter via Recovery mode is not fastboot at all it is a shortcut to fastbootd ?

… but was that or was that not the case with Fairphone stock OS ?

Post #2

Stock OS of Fairfone4:

  • off → voldown + power → should-be-“FastBoot Mode”, but is it actually fastboot/d/? (simple monospace font BIOS-like, no touch), HERE the script “flash_FP4_factory.sh” did NOT work
  • off → volup + power → recovery → “nice looking fastboot” (or fastBootd?) with non monospace font and nicer layout, HERE the script “flash_FP4_factory.sh” did work

Now with e/os it is:

  • off → voldown + power → should-be-“FastBoot Mode”, but is it actually fastboot/d/? (simple monospace font BIOS-like, no touch, exactly same thing as with stock os), I come here when I enter menu “Restart Bootloader”
/flash_FP4_factory.sh 

*** Fairphone 4 flashing script ***

INFO: The procedure will start soon. Please wait...
Note that this will detect and flash only on FP4 device.
INFO: You are using a Linux distribution.
INFO: Looking for connected device(s)...
INFO: One Fairphone 4 in fastboot mode found (serial number: xxx).
Sending 'bluetooth_a' (940 KB)                     OKAY [  0.009s]
Writing 'bluetooth_a'                              OKAY [  0.005s]
Finished. Total time: 0.030s
Sending 'bluetooth_b' (940 KB)                     OKAY [  0.007s]
Writing 'bluetooth_b'                              OKAY [  0.005s]
Finished. Total time: 0.019s
Sending 'devcfg_a' (42 KB)                         OKAY [  0.003s]
Writing 'devcfg_a'                                 FAILED (remote: 'Flashing is not allowed for Critical Partitions
')
fastboot: error: Command failed

ERROR: Could not flash the devcfg_a partition on device xxx.

ERROR: Please unplug the phone, take the battery out, boot the device into
ERROR: fastboot mode, and start this script again.
ERROR: (To get to fastboot mode, press Volume-Down and plug in the USB-C)
ERROR: (cable until the fastboot menu appears.)

ERROR: Aborting now (press Enter to terminate).

  • off → volup + power → recovery → “fastbootd” (complex menu incl. touch functionality). I did just retry and the install script works, like with the stock OS.
./flash_FP4_factory.sh 

*** Fairphone 4 flashing script ***

INFO: The procedure will start soon. Please wait...
Note that this will detect and flash only on FP4 device.
INFO: You are using a Linux distribution.
INFO: Looking for connected device(s)...
INFO: One Fairphone 4 in fastboot mode found (serial number: xxx).
Sending 'bluetooth_a' (940 KB)                     OKAY [  0.006s]
Writing 'bluetooth_a'                              OKAY [  0.013s]
Finished. Total time: 0.026s
[..]
Finished. Total time: 0.015s
-----------

INFO: Done. The device will reboot now.
Rebooting                                          OKAY [  0.000s]
Finished. Total time: 0.804s

INFO: You can unplug the USB cable now.

Rebooting into fresh installed /e/os

They here had (besides different context) related experiences with fastboot devices + installation from “bootloader” vs “fastboot from recovery”.

https://forum.fairphone.com/t/fastboot-on-fp4/82550/13

I think the observations are rather clear, it’s probably just the why that’s missing.

The “simple” mode one can reach with the hardware buttons (or adb reboot bootloader) is “fastboot”. This mode does not allow to flash critical partitions unless specifically unlocked, just like described in the /e/ install instructions.

The “fancy” mode one can reach via recovery (or adb reboot fastboot instead of bootloader) is “fastbootD”. This mode allows to flash critical partions without unlocking them first (see also https://forum.xda-developers.com/t/unable-to-reinstall-oxygen-os-from-custom-rom-failed-remote-flashing-is-not-allowed-for-critical-partitions-need-assistance-details-below.4274551/post-86699321)

Some speculation from my side: the /e/ docs include “the simple fastboot way” because /e/ also supports lots of older phones that probably do not have a “fastbootD” mode. This ways the docs are mode consistent (some phones require an additional step but the start is the same for all/most). But as I said, just guesswork.

1 Like

thx for further clarification.

This mode does not allow to flash critical partitions unless specifically unlocked, just like described in the /e/ install instructions.

I followed the instructions by word, and I did e.g. not realize, that I did not finish to unlock bootloader, because instructions were missing to detail some steps. (I would have to explicitely confirm once more on the phone to actually unlock, the distinction between “howto enter adb vs fastboot mode” on the phones side, etc. ) and even after actually having unlocked, following the docs wy word did not work out. Because I am really new to this all, maybe I am very good at spotting / tripping such tiny missing things :flushed:

But what you say, doesn’t that mean: Anybody (noobish like me) trusting and “following by word” the installation documentation on a newer mobile, will stumble exactly like I did? And for those an extension of the documentation would be really useful? Like adding a simple hint “if that would not work out, you can try this: enter fastbootd via recovery menu like this…” or adding more instructions how successfully use “simple fastboot” way? (for me it just gave said errors and I had to revert to recovery->fastbootd way, without realizing that they were twoi distinct things)

I am not sure to whom to address this, and I still have a feeling, that there is a deeper fault in the setup process. Why would such a distinction “simple vs fancy fastboot” be at all?

I think you didn’t. First you started the flash script without having done the unlocking which is definitely in the docs before executing the script. And then you only did half of the unlocking as described in the docs. It says to fastboot flashing unlock_critical, so why didn’t you do it? That command would have avoided your FAILED (remote: 'Flashing is not allowed for Critical Partitions') error.

The steps described in the docs are the same the easy-installer does. I just checked the source code.
And if I look at the docs I find them correct.

I’m not saying that the steps in the install docs are the only way to flash /e/ on an FP4. You obviously found one different way. But for example each of the “reboot into XXX mode” instructions can be done in two or three different ways and people who know what they’re doing can choose whatever method fits them best. For people who do this the first time, it’s best to offer just one alternative IMHO.

Maybe instead of inflating the docs even more I think it would have more impact to extend the flash_FP4_factory.sh script so that it checks that both unlock commands have been properly executed before running the script.

Edit: for linux/mac it should be doable like this:

PHONE_IS_READY=true
if (fastboot getvar is-userspace 2>&1 | grep -q yes); then
    echo "Info:"
    echo "Your phone is in fastbootD mode."
    if (fastboot getvar unlocked 2>&1 | grep -q no); then
        echo "Error:"
        echo "Your phone is still locked."
        echo "Did you execute 'fastboot flashing unlock'?"
        PHONE_IS_READY=false
    fi
else
    echo "Info:"
    echo "Your phone is in regular bootloader mode."
    if (fastboot getvar unlocked 2>&1 | grep -q no); then
        echo "Error:"
        echo "Your phone is still locked."
        echo "Did you execute 'fastboot flashing unlock'?"
        PHONE_IS_READY=false
    fi
    if (fastboot oem device-info 2>&1 | grep -q "critical unlocked: false"); then
        echo "Error:"
        echo "Critical partitions are still locked."
        echo "Did you execute 'fastboot flashing unlock_critical'?"
        PHONE_IS_READY=false
    fi
fi

if [ "$PHONE_IS_READY" = "false" ]; then
    echo "Error:"
    echo "Your phone is not ready for flashing yet (see above), aborting..."
    exit 1
fi
6 Likes

Fastboot mode and fastboot commands are well documented.

fastbootd is highly specific, involving Moving fastboot into userspace and is used in Dynamic Partition (aka Super Partition) devices. It is generally not well documented and it is significant that Fairphone and /e/OS use a “fastboot ROM” and script to flash the device in one go thus avoiding the use of fastbootd by most users.

Yup, I would prefer that, too!

How can we put this idea into the dev-system? I mean your snippet would really improve things! :smiling_face_with_three_hearts:

I must admit, when the extra snippets would report some error messages, I would not know what to think about the “Your phone is in regular bootloader mode.” vs “Your phone is in fastbootD mode.”. But It would hint me:

"Your phone is still locked."

And from there I would not have asked anyone here but re-read the whole documentation (once more) and try again, this time even more thoughtfully, and I would stumble over the tings to solve my issue. (Hopefully).

That is indeed true and funny. More funny and a bit sad for me. :weary:

Re-reading the whole thing I am sure here things went wrong on my side:

unlocking bootloader → 8. “Reboot again into bootloader”. I must have booted into the “adb devices listening mode” (or whatever), because I remember running fastboot flashing unlock_critical - but it went obviously into nirvana and I did not see it.

cheers from me to all your patience!

@Manoj, do you think the few code lines three posts up could be added to the flash script for the FP4?
Though I have to admit I only tested them on my locked FP4, so basically someone should verify the checks work properly for a fully unlocked phone.

That way, the script wouldn’t do anything in case not all necessary steps haven’t been done before.

Hi @Ingo_FP_Angel I am passing the feedback reg the lines of code to be added to the build team. The guides for the FP4 are written by them. They will check, test it and have the guide updated.

The issue has been created here

2 Likes

This topic was automatically closed after 90 days. New replies are no longer allowed.