Fairphone 3 unbricking

Thank you for this very detailed thread, especially to @k4y0z and @calvofl0 !

TLDR: I seem to have gotten into this situation, although the circumstances were different. I have tried unbricking following the detailed guide (disassembling and forcing EDL mode with L and K pins). But the EDL script is not (yet) successful.

Background:

  • currently totally black and silent: not turning on, no signal of charging
  • FP3 running on LineageOS since about August 2020
  • only problem in daily usage (since about 3 months):
    charging worked not with any usb cable but only with some, and sometimes also only when plugged in one way, not the other way around (not sure if this could be related to the
  • recently phone was in normal standby mode, led flashing blue (probably indicating a new message)
    → pressed power button short, screen stayed black (tried few times)
    → connected to charger: no charging
    → pressed power button long to turn of: phone turned of
    → since without any sign of life:
    not booting, no led, no vibration, no charging, no fastboot mode, screen always black
    → tried with all combination of simultaneous button press (Vol+, Vol-, Power) and with / without battery and USB connection

What I did:

I followed the steps in the list posted by @calvofl0
One remark: when cloning the EDL repo and following the install instruction there, there is no ./edl.py. The file is just called edl (maybe this was different when this thread was started?)

  • tested without bridging L and K: connecting the extracted mainboard+usbmodule to PC gives nothing in watch -n 0.1 lsusb
  • tested with L and K bridged with 1kOhm: connecting to PC shows Bus 001 Device 047: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)

I took this as a good sign that not all is lost.
Now I wanted to read the partitions or the total flash storage. It tried the four versions of the command below directly after the QDL connection appeared on the console (each time freshly reconnecting the board to usb with bridged L and K):
./edl rl ~/FP3 --debugmode
./edl rf ~/FP3 --debugmode
./edl rl ~/FP3 --loader=unbrick/prog_emmc_firehose_8953_ddr.mbn --debugmode
./edl rf ~/FP3 --loader=unbrick/prog_emmc_firehose_8953_ddr.mbn --debugmode

None of these worked: I did not get any files in the specified ~/FP3. I used debug mode as I hope it may help to find out what’s the problem. The output of the first command is below (somewhat condensed). The others look very similar.
I didn’t dare to try the writing mode of the EDL script yet, as I was hoping the reading of partitions might help me to get the latest version of data stored on the phone.

Can anyone see if there could still be hope for this FP3, or is it just dead?

Outputs:

./edl rl ~/FP3_data --debugmode
                                                                                                                                   
Capstone library is missing (optional).
Keystone library is missing (optional).
Qualcomm Sahara / Firehose Client V3.60 (c) B.Kerler 2018-2022.
loader_utils - [LIB]: invalid literal for int() with base 16: 'prog'
loader_utils - [LIB]: invalid literal for int() with base 16: 'mprg8626'
loader_utils - [LIB]: invalid literal for int() with base 16: 'mprg8974'
loader_utils - [LIB]: invalid literal for int() with base 16: 'prog'
loader_utils - [LIB]: invalid literal for int() with base 16: 'mprg8974'
loader_utils - [LIB]: invalid literal for int() with base 16: 'prog'
loader_utils - [LIB]: invalid literal for int() with base 16: 'prog'
loader_utils - [LIB]: list index out of range
loader_utils - [LIB]: invalid literal for int() with base 16: 'prog'
loader_utils - [LIB]: list index out of range
loader_utils - [LIB]: invalid literal for int() with base 16: 'prog'
loader_utils - [LIB]: list index out of range
loader_utils - [LIB]: list index out of range
loader_utils - [LIB]: list index out of range
loader_utils - [LIB]: invalid literal for int() with base 16: 'prog'
loader_utils - [LIB]: list index out of range
loader_utils - [LIB]: list index out of range
main - Trying with no loader given ...
main - Waiting for the device
DeviceClass - [LIB]: Detaching kernel driver
main - Device detected :)
DeviceClass - [LIB]: read:0x30
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 299, in run\n    conninfo = self.doconnect(loop)\n', '  File "/home/edl/./edl", line 213, in doconnect\n    resp = self.sahara.connect()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 111, in connect\n    v = self.cdc.read(length=0xC * 0x4,timeout=1)\n']
DeviceClass - [LIB]: RX:0100000030000000020000[...]
sahara - Protocol version: 2, Version supported: 1
main - Mode detected: sahara
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 338, in run\n    sahara_info = self.sahara.cmd_info()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 212, in cmd_info\n    if self.enter_command_mode():\n', '  File "/home/edl/edlclient/Library/sahara.py", line 155, in enter_command_mode\n    if not self.cmd_hello(sahara_mode_t.SAHARA_MODE_COMMAND):\n']
DeviceClass - [LIB]: TX:0200000030000000020000[...]
DeviceClass - [LIB]: read:0x8
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 338, in run\n    sahara_info = self.sahara.cmd_info()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 212, in cmd_info\n    if self.enter_command_mode():\n', '  File "/home/edl/edlclient/Library/sahara.py", line 157, in enter_command_mode\n    res = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']

[...]

DeviceClass - [LIB]: RX:0e00000010000000030000[...]
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 338, in run\n    sahara_info = self.sahara.cmd_info()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 216, in cmd_info\n    self.pkhash = self.cmdexec_get_pkhash()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 186, in cmdexec_get_pkhash\n    res = self.cmd_exec(exec_cmd_t.SAHARA_EXEC_CMD_OEM_PK_HASH_READ)\n']
DeviceClass - [LIB]: TX:0f0000000c000000030000[...]
DeviceClass - [LIB]: cmd_exec:0x60
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 338, in run\n    sahara_info = self.sahara.cmd_info()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 216, in cmd_info\n    self.pkhash = self.cmdexec_get_pkhash()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 186, in cmdexec_get_pkhash\n    res = self.cmd_exec(exec_cmd_t.SAHARA_EXEC_CMD_OEM_PK_HASH_READ)\n']
DeviceClass - [LIB]: RX:cc3153a80293939b90d02d[...]
sahara - 
------------------------
HWID:              0x000ba0e100000000 (MSM_ID:0x000ba0e1,OEM_ID:0x0000,MODEL_ID:0x0000)
CPU detected:      "SDM632"
PK_HASH:           0xcc3153a80293939[...]
Serial:            0xb83

sahara - Possibly unfused device detected, so any loader should be fine...
sahara - Possible loader available: /home/edl/edlclient/../Loaders/asus_wingtech/000ba0e100000000_6d6287d60bc71172_fhprg_peek.bin
sahara - Possible loader available: /home/edl/edlclient/../Loaders/meizu/000ba0e100000000_c451a1168ef5c7c7_fhprg_peek.bin
sahara - Trying loader: /home/edl/edlclient/../Loaders/asus_wingtech/000ba0e100000000_6d6287d60bc71172_fhprg_peek.bin
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 338, in run\n    sahara_info = self.sahara.cmd_info()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 307, in cmd_info\n    self.cmd_modeswitch(sahara_mode_t.SAHARA_MODE_COMMAND)\n']
DeviceClass - [LIB]: TX:0c0000000c000000030000[...]
DeviceClass - [LIB]: read:0x30
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 340, in run\n    resp = self.sahara.connect()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 111, in connect\n    v = self.cdc.read(length=0xC * 0x4,timeout=1)\n']
DeviceClass - [LIB]: RX:0100000030000000020000[...]
sahara - Protocol version: 2, Version supported: 1
sahara - Uploading loader /home/edl/edlclient/../Loaders/asus_wingtech/000ba0e100000000_6d6287d60bc71172_fhprg_peek.bin ...
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 511, in upload_loader\n    if not self.cmd_hello(sahara_mode_t.SAHARA_MODE_IMAGE_TX_PENDING):\n']
DeviceClass - [LIB]: TX:0200000030000000020000[...]
DeviceClass - [LIB]: read:0x14
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 519, in upload_loader\n    resp = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']
DeviceClass - [LIB]: RX:03000000140000000d0000[...]
sahara - 32-Bit mode detected.
sahara - Firehose mode detected, uploading...
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n']
DeviceClass - [LIB]: TX:7f454c4601010100000000[...]
DeviceClass - [LIB]: read:0x14
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 519, in upload_loader\n    resp = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']

[...]

DeviceClass - [LIB]: RX:03000000140000000d0000[...]
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n']
DeviceClass - [LIB]: TX:ffffffffffffffffffffff[...]
DeviceClass - [LIB]: read:0x14
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 519, in upload_loader\n    resp = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']
DeviceClass - [LIB]: RX:03000000140000000d0000[...]
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n']
DeviceClass - [LIB]: TX:000c5c70ff00000000045d[...]
DeviceClass - [LIB]: read:0x14
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 519, in upload_loader\n    resp = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']
DeviceClass - [LIB]: RX:03000000140000000d0000[...]
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n']
DeviceClass - [LIB]: TX:02aa9d10ff00000002559e...]
DeviceClass - [LIB]: read:0x14
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 519, in upload_loader\n    resp = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']
DeviceClass - [LIB]: RX:03000000140000000d0000[...]
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n']
DeviceClass - [LIB]: TX:0000000000000000000000[...]
DeviceClass - [LIB]: read:0x14
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 519, in upload_loader\n    resp = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']
DeviceClass - [LIB]: RX:03000000140000000d0000[...]
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n']
DeviceClass - [LIB]: TX:0000000000000000000000[...]
DeviceClass - [LIB]: read:0x10
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 519, in upload_loader\n    resp = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']
DeviceClass - [LIB]: RX:04000000100000000d0000[...]
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 568, in upload_loader\n    if self.cmd_done():\n']
DeviceClass - [LIB]: TX:0500000008000000
DeviceClass - [LIB]: read:0xc
DeviceClass - [LIB]: ['  File "/home/edl/./edl", line 391, in <module>\n    base.run()\n', '  File "/home/edl/./edl", line 345, in run\n    mode = self.sahara.upload_loader()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 568, in upload_loader\n    if self.cmd_done():\n', '  File "/home/edl/edlclient/Library/sahara.py", line 321, in cmd_done\n    res = self.get_rsp()\n', '  File "/home/edl/edlclient/Library/sahara.py", line 64, in get_rsp\n    data = self.cdc.read()\n']
DeviceClass - [LIB]: RX:060000000c000000000000[...]
sahara - Loader successfully uploaded.
main - Trying to connect to firehose loader ...
firehose_client
firehose_client - [LIB]: No --memory option set, we assume "eMMC" as default ..., if it fails, try using "--memory" with "UFS","NAND" or "spinor" instead !
DeviceClass - [LIB]: [Errno 110] Operation timed out
DeviceClass - [LIB]: [Errno 110] Operation timed out
DeviceClass - [LIB]: [Errno 110] Operation timed out
DeviceClass - [LIB]: Timed out
DeviceClass - [LIB]: Timed out
DeviceClass - [LIB]: Timed out
firehose - TargetName=
firehose - MemoryName=eMMC
firehose - Version=
firehose - Trying to read first storage sector...
DeviceClass - [LIB]: [Errno 110] Operation timed out
DeviceClass - [LIB]: [Errno 110] Operation timed out
DeviceClass - [LIB]: [Errno 110] Operation timed out
DeviceClass - [LIB]: Timed out
DeviceClass - [LIB]: Timed out
DeviceClass - [LIB]: Timed out
1 Like