Dumpear particiones en móviles Qualcomm: EDL/Qualcomm Sahara
Utilizo https://github.com/bkerler/edl
Ejemplo para un Fairphone 3+, información obtenida del foro del foro de Fairphone
Si el lector quiere saber detalles sobre EDL y Qualcomm Sahara, puede verlos aquí.
He instalado edl siguiendo las instrucciones de https://github.com/bkerler/edl. En mi caso (distribución Arch) no he necesitado desinstalar el servicio ModemManager porque no estaba en mi sistema. La única variación respecto a las instrucciones de instalación es que he empleado virtualenv. Esto es lo que he hecho desde el directorio donde he clonado edl:
python -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
sudo cp Drivers/51-edl.rules /etc/udev/rules.d
sudo cp Drivers/50-android.rules /etc/udev/rules.d
python3 setup.py build
sudo python3 setup.py install
(.venv) j@furin ~/Documents/ocio/software/edl % which edl [0]
/mnt/hayai/Documents/ocio/software/edl/.venv/bin/edl
Ahora tenemos que iniciar el Fairphone 3 en modo EDL. Apagamos el móvil y pulsamos todas las teclas físicas a la vez (encendido, incremento de volumen, decremento de volumen). El teléfono vibra una vez pero después la pantalla está apagada, y la luz de carga también.
You can however force EDL mode by holding both volume-buttons during power on.
https://forum.fairphone.com/t/fairphone-3-unbricking/57549
Al hacer lsusb nos debe sair lo siguiente:
(.venv) j@furin ~/Documents/ocio/software/edl % lsusb
[...]
Bus 006 Device 086: ID 05c6:9008 Qualcomm, Inc. Gobi Wireless Modem (QDL mode)
[...]
Dumpeamos la partición boot:
(.venv) j@furin ~/Documents/ocio/temp % edl r boot_a boot_desde_edl.img [0]
Qualcomm Sahara / Firehose Client V3.61 (c) B.Kerler 2018-2023.
main - Trying with no loader given ...
main - Waiting for the device
main - Device detected :)
main - Mode detected: firehose
main - Trying to connect to firehose loader ...
firehose - Nop succeeded.
firehose - No supported functions detected, configuring qc generic commands
firehose -
firehose_client
firehose_client - [LIB]: No --memory option set, we assume "UFS" as default ..., if it fails, try using "--memory" with "UFS","NAND" or "spinor" instead !
firehose
firehose - [LIB]: Memory type was set as UFS but device reported it is eMMC instead.
firehose - TargetName=MSM8953
firehose - MemoryName=eMMC
firehose - Version=1
firehose - Trying to read first storage sector...
firehose - Running configure...
firehose - Storage report:
firehose - total_blocks:122142720
firehose - block_size:512
firehose - page_size:512
firehose - num_physical:3
firehose - mfr_id:21
firehose - serial_num:2314658880
firehose - fw_version:1
firehose - mem_type:eMMC
firehose - prod_name:RP64MB
firehose_client - Supported functions:
-----------------
configure,program,firmwarewrite,patch,setbootablestoragedrive,ufs,emmc,power,benchmark,read,getstorageinfo,getcrc16digest,getsha256digest,erase,peek,poke,nop,xml
firehose -
Reading from physical partition 0, sector 962816, sectors 131072
Progress: |██████████| 100.0% Read (Sector 0x20000 of 0x20000, ) 28.18 MB/s
Dumped sector 962816 with sector count 131072 as boot_desde_edl.img.
Como curiosidad, la he comparado el hash MD5 del boot que flasheé hace tiempo, magisk_patched-26102_xxxxx.img
con el dumpeado boot_desde_edl.img
y coinciden, así que funciona bien.