[Asus Zenfone 9] svenagain:
Ok so how can it be helped? Do I need edl cable?

I do see the PID is 900E.

I'm assuming that's this error:

INFO: User wants to talk to port '\\.\COM4'

_____

| ___|

| |__ _ __ _ __ ___ _ __

| __| '__| '__/ _ \| '__|

| |__| | | | | (_) | |

\____/_| |_| \___/|_|

{ERROR: Failed to open com port '\\.\COM4'}

The 0-8475_update_image_EDL_fh_loader.bat in QMSCT_AI2202_8475_32.2004.2004.84_SAVE_NOHLOS didn't help (or maybe made it worse). Here's the code because I find it annoying when I can't find the guts:

@echo off

if "%1%" == "" (
set "wait=1"
)

cd %~dp0
set image_path=%~dp0

:: wmic /format:list strips trailing spaces (at least for path win32_pnpentity)
for /f "tokens=1* delims==" %%I in ('wmic path win32_pnpentity Where "Caption LIKE '%%QDLoader%%'" get caption /format:list ^| find "COM"') do (
call :setCOM "%%~J"
)

:: display all _COM* variables
set _COM > log1.txt

:: end main batch
goto :EOF

:setCOM <WMIC_output_line>
:: sets _COM#=line

set "str=%~1"
set "num=%str:*(COM=%"
set "num=%num:)=%"
set str=%str:(COM=&rem.%
set "_COM%num%=%str%"

echo Start ufs flat download . . .
rem QFIL.exe -Mode=3 -downloadflat -COM=%num% -PROGRAMMER=true;"%image_path%\prog_firehose_ddr.elf" -DEVICETYPE=UFS -READBACKMODE=3 -SWITCHTOFIREHOSETIMEOUT=50 -RESETTIMEOUT=500 -RESETAFTERDOWNLOAD=true -RESETDELAYTIME=5 -MaxPayloadSizeToTargetInBytes=true;49152 -searchpath="%image_path%" -Rawprogram=rawprogram0.xml,rawprogram1.xml,rawprogram2.xml,rawprogram3.xml,rawprogram4.xml,rawprogram5.xml,rawprogram6.xml -Patch=patch0.xml,patch1.xml,patch2.xml,patch3.xml,patch4.xml,patch5.xml,patch6.xml -logfilepath="%image_path%\test1.txt" -consolelog
QSaharaServer.exe -p \\.\COM%num% -s 13:xbl_s_devprg_ns.melf -b %image_path%\
rem fh_loader.exe --port=\\.\COM%num% --noprompt --showpercentagecomplete --zlpawarehost=1 --memoryname=ufs --getstorageinfo=65210 > cardinfo.log
rem fh_loader.exe --port=\\.\COM%num% --erase=0 --noprompt --showpercentagecomplete --memoryname=ufs
rem fh_loader.exe --port=\\.\COM%num% --erase=1 --noprompt --showpercentagecomplete --memoryname=ufs
rem fh_loader.exe --port=\\.\COM%num% --erase=2 --noprompt --showpercentagecomplete --memoryname=ufs
rem fh_loader.exe --port=\\.\COM%num% --erase=3 --noprompt --showpercentagecomplete --memoryname=ufs
rem fh_loader.exe --port=\\.\COM%num% --erase=4 --noprompt --showpercentagecomplete --memoryname=ufs
rem fh_loader.exe --port=\\.\COM%num% --erase=5 --noprompt --showpercentagecomplete --memoryname=ufs
rem fh_loader.exe --port=\\.\COM%num% --erase=6 --noprompt --showpercentagecomplete --memoryname=ufs
fh_loader.exe --port=\\.\COM%num% --sendxml=rawprogram1.xml,rawprogram2.xml,rawprogram4.xml --search_path=%image_path% --noprompt --showpercentagecomplete --zlpawarehost=1 --memoryname=ufs
fh_loader.exe --port=\\.\COM%num% --setactivepartition=1 --noprompt --showpercentagecomplete --zlpawarehost=1 --memoryname=ufs
fh_loader.exe --port=\\.\COM%num% --sendxml=patch1.xml,patch2.xml,patch4.xml --search_path=%image_path% --noprompt --showpercentagecomplete --zlpawarehost=1 --memoryname=ufs
fh_loader.exe --port=\\.\COM%num% --reset --noprompt --showpercentagecomplete --zlpawarehost=1 --memoryname=ufs
rem find "Download Succeed" test1.txt | find "Download Succeed"
rem find "Download Fail" test1.txt | find "Download Fail"
if "%wait%" == "1" (
@echo press any key to continue . . .
@pause
)
goto :EOF

I'm trying with some files from WW-AI2202-32.2040.2040.23-MR2-2208-M2.13.33.19-ASUS_1.1.1-user-20220916.

Also a QFIL batch script called update_image_EDL.bat from the zenfone6 forums:

@echo off

set image_path=%cd%

:: wmic /format:list strips trailing spaces (at least for path win32_pnpentity)
for /f "tokens=1* delims==" %%I in ('wmic path win32_pnpentity Where "Caption LIKE '%%QDLoader%%'" get caption /format:list ^| find "COM"') do (
call :setCOM "%%~J"
)

:: display all _COM* variables
set _COM > log1.txt

:: end main batch
goto :EOF

:setCOM <WMIC_output_line>
:: sets _COM#=line

set "str=%~1"
set "num=%str:*(COM=%"
set "num=%num:)=%"
set str=%str:(COM=&rem.%
set "_COM%num%=%str%"

echo Start ufs flat download . . .
QFIL.exe -Mode=3 -downloadflat -COM=%num% -PROGRAMMER=true;"%image_path%\prog_firehose_ddr.elf" -DEVICETYPE=UFS -READBACKMODE=3 -SWITCHTOFIREHOSETIMEOUT=50 -RESETTIMEOUT=500 -RESETAFTERDOWNLOAD=true -RESETDELAYTIME=5 -MaxPayloadSizeToTargetInBytes=true;49152 -searchpath="%image_path%" -Rawprogram=rawprogram0.xml,rawprogram1.xml,rawprogram2.xml,rawprogram3.xml,rawprogram4.xml,rawprogram5.xml -Patch=patch0.xml,patch1.xml,patch2.xml,patch3.xml,patch4.xml,patch5.xml -logfilepath="%image_path%\test1.txt" -consolelog
find "Download Succeed" test1.txt | find "Download Succeed"
find "Download Fail" test1.txt | find "Download Fail"
@echo press any key to continue . . .
@pause
goto :EOF