Frankly, I didn’t really need a PAC file, as I had other free and paid tools to service this phone besides the Research/Upgrade/Factory Download tools, but I decided to create one from scratch for tools that don’t support this model, don’t allow me to load individual FDLs, but allow me to load a PAC file as the loader source….and out of curiosity of course :).
Things I Needed
- FDL 1&2 + their addresses (Got that from TomKing062 )
- BMAConfig.xml (Had to create one)
- Firmware Dump (Got that from spd_dump)
Creating a BMAConfig.xml
Creating a PAC file (quickly) with the Research Download tool required me to use an older version (R23.19.3301) and a BMA Config file. Here’s a video guide:
See the video below or @Â https://youtu.be/FB7sgrudXdk
I used the Infinix X6816C’s BMA Config as my base due to its similar chipset of Unisoc T610 (ums512) and of the Hisense E70 (HLTE262E) running on s9863a as a brand reference, since brands tend to repeat patterns across models.
My BMAConfig.xml looked like this:
<?xml version="1.0" encoding="UTF-8"?>
<!-- FlashTypeID: 0, means Nor Flash;1, means Nand Flash -->
<!-- File-Flag: 0, means this file need not input file path -->
<!-- 1, means this file need input file path -->
<!-- File-CheckFlag: 0, this file is optional -->
<!-- 1, must select this file -->
<!-- 2, means not check this file in pack -->
<!-- Mode: 0, not uesed; 1, means nand page size and oob care -->
<!-- File-Type: MasterImage,means it will add BOOT_PARAM -->
<!-- and OS_INFO information to file -->
<!-- File-ID: Can not be changed,it is used by tools -->
<!-- File-IDAlias: This is for GUI display can be changed -->
<BMAConfig>
<ProductList>
<Product name="ums5121h10">
<SchemeName>ums5121h10</SchemeName>
<FlashTypeID>1</FlashTypeID>
<Mode>0</Mode>
<PowerOff>1</PowerOff>
<APR>1</APR>
<NVBackup backup="1">
<NVItem name="Calibration" backup="1">
<ID>0xFFFFFFFF</ID>
<BackupFlag use="1">
<NVFlag name="Replace" check="0"></NVFlag>
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="IMEI" backup="1">
<ID>0xFFFFFFFF</ID>
<BackupFlag use="0"></BackupFlag>
</NVItem>
<NVItem name="TD_Calibration" backup="1">
<ID>0xFFFFFFFF</ID>
<BackupFlag use="1">
<NVFlag name="Replace" check="0"></NVFlag>
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Calibration" backup="1">
<ID>0xA05</ID>
<BackupFlag use="1">
<NVFlag name="Replace" check="0"></NVFlag>
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band1" backup="1">
<ID>0x9C4</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band2" backup="1">
<ID>0xA04</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band3" backup="1">
<ID>0x9C8</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band4" backup="1">
<ID>0x9C9</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band5" backup="1">
<ID>0x9CA</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band6" backup="1">
<ID>0x9CB</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band7" backup="1">
<ID>0x9CC</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band8" backup="1">
<ID>0x9CD</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band9" backup="1">
<ID>0x9CE</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band10" backup="1">
<ID>0x9CF</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band11" backup="1">
<ID>0x9D0</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band12" backup="1">
<ID>0x9D1</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band13" backup="1">
<ID>0x9D2</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band14" backup="1">
<ID>0x9D3</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band15" backup="1">
<ID>0x9D4</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band16" backup="1">
<ID>0x9D5</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band17" backup="1">
<ID>0x9D6</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band18" backup="1">
<ID>0x9D7</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band19" backup="1">
<ID>0xA01</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band20" backup="1">
<ID>0xA02</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band21" backup="1">
<ID>0xA08</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band22" backup="1">
<ID>0xA09</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="LTE_Cali_Band23" backup="1">
<ID>0xA0A</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="W_Calibration" backup="1">
<ID>0x12D</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="AFC" backup="1">
<ID>0x9C7</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="GSMgc_Cali" backup="1">
<ID>0x4</ID>
<BackupFlag use="1">
<NVFlag name="Replace" check="0"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="SUBSIDY_BLOB" backup="1">
<ID>0x91B</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="SUBSIDY_PUBKEY" backup="1">
<ID>0x91D</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<!--<NVItem name="SIMLOCK_SIGN" backup="1"><ID>0x1A3</ID><BackupFlag use="1"><NVFlag name="Continue" check="1"></NVFlag></BackupFlag></NVItem><NVItem name="SIMLOCK_PK" backup="1"><ID>0x1A4</ID><BackupFlag use="1"><NVFlag name="Continue" check="1"></NVFlag></BackupFlag></NVItem><NVItem name="SIMLOCK_CUSTOMIZE_DATA" backup="1"><ID>0x1F0</ID><BackupFlag use="1"><NVFlag name="Continue" check="1"></NVFlag></BackupFlag></NVItem><NVItem name="SIMLOCK_USER_DATA" backup="1"><ID>0x1F1</ID><BackupFlag use="1"><NVFlag name="Continue" check="1"></NVFlag></BackupFlag></NVItem><NVItem name="SIMLOCK_NVCONTROL_KEY" backup="1"><ID>0x1F2</ID><BackupFlag use="1"><NVFlag name="Continue" check="1"></NVFlag></BackupFlag></NVItem><NVItem name="SIMLOCK_KEY" backup="1"><ID>0x1F4</ID><BackupFlag use="1"><NVFlag name="Continue" check="1"></NVFlag></BackupFlag></NVItem><NVItem name="SIMLOCK_CFG" backup="1"><ID>0x7E4</ID><BackupFlag use="1"><NVFlag name="Continue" check="1"></NVFlag></BackupFlag></NVItem>-->
<NVItem name="SECURITY_DATA_PK" backup="1">
<ID>0x91E</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="SECURITY_DATA_SIGN" backup="1">
<ID>0x91F</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="GSM_rf_8psk_tx_gain_table" backup="1">
<ID>0xAA3</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="NV_CARLIBRATION_CRC" backup="1">
<ID>0x1AE</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
<NVItem name="IMEI_SIGN" backup="1">
<ID>0x1A6</ID>
<BackupFlag use="1">
<NVFlag name="Continue" check="1"></NVFlag>
</BackupFlag>
</NVItem>
</NVBackup>
<Partitions>
<Partition id="prodnv" size="10"/>
<Partition id="miscdata" size="1"/>
<Partition id="recovery" size="40"/>
<Partition id="misc" size="1"/>
<Partition id="trustos" size="6"/>
<Partition id="trustos_bak" size="6"/>
<Partition id="sml" size="1"/>
<Partition id="sml_bak" size="1"/>
<Partition id="uboot" size="1"/>
<Partition id="uboot_bak" size="1"/>
<Partition id="uboot_log" size="4"/>
<Partition id="logo" size="8"/>
<Partition id="fbootlogo" size="8"/>
<Partition id="l_fixnv1" size="2"/>
<Partition id="l_fixnv2" size="2"/>
<Partition id="l_runtimenv1" size="2"/>
<Partition id="l_runtimenv2" size="2"/>
<Partition id="gnssmodem" size="1"/>
<Partition id="wcnmodem" size="10"/>
<Partition id="persist" size="2"/>
<Partition id="l_modem" size="25"/>
<Partition id="l_deltanv" size="1"/>
<Partition id="l_gdsp" size="10"/>
<Partition id="l_ldsp" size="20"/>
<Partition id="lgdsp" size="6"/>
<Partition id="l_cdsp" size="1"/>
<Partition id="pm_sys" size="1"/>
<Partition id="teecfg" size="1"/>
<Partition id="teecfg_bak" size="1"/>
<Partition id="boot" size="35"/>
<Partition id="dtbo" size="8"/>
<Partition id="tpf" size="8"/>
<Partition id="flag" size="1"/>
<Partition id="phonelog" size="100"/>
<Partition id="kdebuginfo" size="200"/>
<Partition id="databackup" size="50"/>
<Partition id="prospecfg" size="1"/>
<Partition id="reserve" size="10"/>
<Partition id="kdebug" size="10"/>
<Partition id="super" size="9216"/>
<Partition id="cache" size="256"/>
<Partition id="socko" size="75"/>
<Partition id="odmko" size="25"/>
<Partition id="vbmeta" size="1"/>
<Partition id="vbmeta_bak" size="1"/>
<Partition id="metadata" size="16"/>
<Partition id="sysdumpdb" size="10"/>
<Partition id="vbmeta_system" size="1"/>
<Partition id="vbmeta_vendor" size="1"/>
<Partition id="userdata" size="0xffffffff"/>
</Partitions>
<ProductComment/>
</Product>
</ProductList>
<SchemeList>
<Scheme name="ums5121h10">
<File>
<ID>FDL</ID>
<IDAlias>FDL1</IDAlias>
<Type>FDL</Type>
<Block>
<Base>0x00005500</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>1</CheckFlag>
<Description>First nand flash download image file</Description>
</File>
<File>
<ID>FDL2</ID>
<IDAlias>FDL2</IDAlias>
<Type>NAND_FDL</Type>
<Block>
<Base>0x9EFFFE00</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>1</CheckFlag>
<Description>Second nand flash download image file</Description>
</File>
<File>
<ID>EraseSPL</ID>
<IDAlias>EraseSPL</IDAlias>
<Type>EraseFlash2</Type>
<Block id="splloader">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>0</Flag>
<CheckFlag>2</CheckFlag>
<Description>Erase spl section</Description>
</File>
<File backup="1">
<ID>PRODNV</ID>
<IDAlias>PRODNV</IDAlias>
<Type>CODE2</Type>
<Block id="prodnv">
<Base>0x0</Base>
<Size>0xA00000</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>prodnv file</Description>
</File>
<File backup="1">
<ID>PhaseCheck</ID>
<IDAlias>PhaseCheck</IDAlias>
<Type>MiscDataCode2</Type>
<Block id="miscdata">
<Base>0x0</Base>
<Size>0x100000</Size>
</Block>
<Flag>0</Flag>
<CheckFlag>2</CheckFlag>
<Description>miscdata(phase check) section</Description>
</File>
<File>
<ID>EraseUBOOTLOG</ID>
<IDAlias>EraseUBOOTLOG</IDAlias>
<Type>EraseFlash2</Type>
<Block id="uboot_log">
<Base>0x0</Base>
<Base>0x0</Base>
</Block>
<Flag>0</Flag>
<CheckFlag>2</CheckFlag>
<Description>Erase UBootloader log section</Description>
</File>
<File>
<ID>SPLLoader</ID>
<IDAlias>SPL_LOADER</IDAlias>
<Type>UBOOT_LOADER2</Type>
<Block id="splloader">
<Base>0x80000000</Base>
<Base>0x0</Base>
</Block>
<Flag>1</Flag>
<CheckFlag>0</CheckFlag>
<Description>spl image file</Description>
</File>
<File>
<ID>MISCDATA</ID>
<IDAlias>MISCDATA</IDAlias>
<Type>CODE2</Type>
<Block id="miscdata">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>miscdata file</Description>
</File>
<File>
<ID>RECOVERY</ID>
<IDAlias>RECOVERY</IDAlias>
<Type>CODE2</Type>
<Block id="recovery">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>recovery file</Description>
</File>
<File>
<ID>MISC</ID>
<IDAlias>MISC</IDAlias>
<Type>EraseFlash2</Type>
<Block id="misc">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>misc file</Description>
</File>
<File>
<ID>TRUSTOS</ID>
<IDAlias>TRUSTOS</IDAlias>
<Type>CODE2</Type>
<Block id="trustos">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>trustos file</Description>
</File>
<File>
<ID>TRUSTOS_BAK</ID>
<IDAlias>TRUSTOS_BAK</IDAlias>
<Type>CODE2</Type>
<Block id="trustos_bak">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>trustos_bak file</Description>
</File>
<File>
<ID>SML</ID>
<IDAlias>SML</IDAlias>
<Type>CODE2</Type>
<Block id="sml">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>sml file</Description>
</File>
<File>
<ID>SML_BAK</ID>
<IDAlias>SML_BAK</IDAlias>
<Type>CODE2</Type>
<Block id="sml_bak">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>sml_bak file</Description>
</File>
<File>
<ID>UBOOT</ID>
<IDAlias>UBOOT</IDAlias>
<Type>UBOOT_LOADER2</Type>
<Block id="uboot">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>uboot file</Description>
</File>
<File>
<ID>UBOOT_BAK</ID>
<IDAlias>UBOOT_BAK</IDAlias>
<Type>UBOOT_LOADER2</Type>
<Block id="uboot_bak">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>uboot_bak file</Description>
</File>
<File>
<ID>UBOOT_LOG</ID>
<IDAlias>UBOOT_LOG</IDAlias>
<Type>CODE2</Type>
<Block id="uboot_log">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>uboot_log file</Description>
</File>
<File>
<ID>LOGO</ID>
<IDAlias>LOGO</IDAlias>
<Type>CODE2</Type>
<Block id="logo">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>logo file</Description>
</File>
<File>
<ID>FBOOTLOGO</ID>
<IDAlias>FBOOTLOGO</IDAlias>
<Type>CODE2</Type>
<Block id="fbootlogo">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>fbootlogo file</Description>
</File>
<File>
<ID backup="1" CheckCali="GSM,WCDMA,LTE">L_FIXNV1</ID>
<IDAlias>L_FIXNV1</IDAlias>
<Type>NV_COMM</Type>
<Block id="l_fixnv1">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_fixnv1 file</Description>
</File>
<File>
<ID>L_FIXNV2</ID>
<IDAlias>L_FIXNV2</IDAlias>
<Type>CODE2</Type>
<Block id="l_fixnv2">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_fixnv2 file</Description>
</File>
<File>
<ID>L_RUNTIMENV1</ID>
<IDAlias>L_RUNTIMENV1</IDAlias>
<Type>EraseFlash2</Type>
<Block id="l_runtimenv1">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_runtimenv1 file</Description>
</File>
<File>
<ID>L_RUNTIMENV2</ID>
<IDAlias>L_RUNTIMENV2</IDAlias>
<Type>CODE2</Type>
<Block id="l_runtimenv2">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_runtimenv2 file</Description>
</File>
<File>
<ID>GNSSMODEM</ID>
<IDAlias>GNSSMODEM</IDAlias>
<Type>CODE2</Type>
<Block id="gnssmodem">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>gnssmodem file</Description>
</File>
<File>
<ID>WCNMODEM</ID>
<IDAlias>WCNMODEM</IDAlias>
<Type>CODE2</Type>
<Block id="wcnmodem">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>wcnmodem file</Description>
</File>
<File>
<ID>PERSIST</ID>
<IDAlias>PERSIST</IDAlias>
<Type>YAFFS_IMG2</Type>
<Block id="persist">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>persist file</Description>
</File>
<File>
<ID>L_MODEM</ID>
<IDAlias>L_MODEM</IDAlias>
<Type>CODE2</Type>
<Block id="l_modem">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_modem file</Description>
</File>
<File>
<ID>L_DELTANV</ID>
<IDAlias>L_DELTANV</IDAlias>
<Type>CODE2</Type>
<Block id="l_deltanv">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_deltanv file</Description>
</File>
<File>
<ID>L_GDSP</ID>
<IDAlias>L_GDSP</IDAlias>
<Type>CODE2</Type>
<Block id="l_gdsp">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_gdsp file</Description>
</File>
<File>
<ID>L_LDSP</ID>
<IDAlias>L_LDSP</IDAlias>
<Type>CODE2</Type>
<Block id="l_ldsp">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_ldsp file</Description>
</File>
<File>
<ID>L_AGDSP</ID>
<IDAlias>L_AGDSP</IDAlias>
<Type>CODE2</Type>
<Block id="l_agdsp">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_agdsp file</Description>
</File>
<File>
<ID>L_CDSP</ID>
<IDAlias>L_CDSP</IDAlias>
<Type>CODE2</Type>
<Block id="l_cdsp">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>l_cdsp file</Description>
</File>
<File>
<ID>PM_SYS</ID>
<IDAlias>PM_SYS</IDAlias>
<Type>CODE2</Type>
<Block id="pm_sys">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>pm_sys file</Description>
</File>
<File>
<ID>TEECFG</ID>
<IDAlias>TEECFG</IDAlias>
<Type>CODE2</Type>
<Block id="teecfg">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>teecfg file</Description>
</File>
<File>
<ID>TEECFG_BAK</ID>
<IDAlias>TEECFG_BAK</IDAlias>
<Type>CODE2</Type>
<Block id="teecfg_bak">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>teecfg_bak file</Description>
</File>
<File>
<ID>BOOT</ID>
<IDAlias>BOOT</IDAlias>
<Type>CODE2</Type>
<Block id="boot">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>boot file</Description>
</File>
<File>
<ID>DTBO</ID>
<IDAlias>DTBO</IDAlias>
<Type>CODE2</Type>
<Block id="dtbo">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>dtbo file</Description>
</File>
<File>
<ID>TPF</ID>
<IDAlias>TPF</IDAlias>
<Type>CODE2</Type>
<Block id="tpf">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>tpf file</Description>
</File>
<File>
<ID>FLAG</ID>
<IDAlias>FLAG</IDAlias>
<Type>CODE2</Type>
<Block id="flag">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>flag file</Description>
</File>
<File>
<ID>PHONELOG</ID>
<IDAlias>PHONELOG</IDAlias>
<Type>CODE2</Type>
<Block id="phonelog">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>phonelog file</Description>
</File>
<File>
<ID>KDEBUGINFO</ID>
<IDAlias>KDEBUGINFO</IDAlias>
<Type>CODE2</Type>
<Block id="kdebuginfo">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>kdebuginfo file</Description>
</File>
<File>
<ID>DATABACKUP</ID>
<IDAlias>DATABACKUP</IDAlias>
<Type>CODE2</Type>
<Block id="databackup">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>databackup file</Description>
</File>
<File>
<ID>PROSPECFG</ID>
<IDAlias>PROSPECFG</IDAlias>
<Type>CODE2</Type>
<Block id="prospecfg">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>prospecfg file</Description>
</File>
<File>
<ID>RESERVE</ID>
<IDAlias>RESERVE</IDAlias>
<Type>CODE2</Type>
<Block id="reserve">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>reserve file</Description>
</File>
<File>
<ID>KDEBUG</ID>
<IDAlias>KDEBUG</IDAlias>
<Type>CODE2</Type>
<Block id="kdebug">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>kdebug file</Description>
</File>
<File>
<ID>SUPER</ID>
<IDAlias>SUPER</IDAlias>
<Type>YAFFS_IMG2</Type>
<Block id="super">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>super file</Description>
</File>
<File>
<ID>CACHE</ID>
<IDAlias>CACHE</IDAlias>
<Type>YAFFS_IMG2</Type>
<Block id="cache">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>cache file</Description>
</File>
<File>
<ID>SOCKO</ID>
<IDAlias>SOCKO</IDAlias>
<Type>CODE2</Type>
<Block id="socko">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>socko file</Description>
</File>
<File>
<ID>ODMKO</ID>
<IDAlias>ODMKO</IDAlias>
<Type>YAFFS_IMG2</Type>
<Block id="odmko">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>odmko file</Description>
</File>
<File>
<ID>VBMETA</ID>
<IDAlias>VBMETA</IDAlias>
<Type>CODE2</Type>
<Block id="vbmeta">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>vbmeta file</Description>
</File>
<File>
<ID>VBMETA_BAK</ID>
<IDAlias>VBMETA_BAK</IDAlias>
<Type>CODE2</Type>
<Block id="vbmeta_bak">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>vbmeta_bak file</Description>
</File>
<File>
<ID>METADATA</ID>
<IDAlias>METADATA</IDAlias>
<Type>EraseFlash2</Type>
<Block id="metadata">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>metadata file</Description>
</File>
<File>
<ID>SYSDUMPDB</ID>
<IDAlias>SYSDUMPDB</IDAlias>
<Type>EraseFlash2</Type>
<Block id="sysdumpdb">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>sysdumpdb file</Description>
</File>
<File>
<ID>VBMETA_SYSTEM</ID>
<IDAlias>VBMETA_SYSTEM</IDAlias>
<Type>CODE2</Type>
<Block id="vbmeta_system">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>vbmeta_system file</Description>
</File>
<File>
<ID>VBMETA_VENDOR</ID>
<IDAlias>VBMETA_VENDOR</IDAlias>
<Type>CODE2</Type>
<Block id="vbmeta_vendor">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>vbmeta_vendor file</Description>
</File>
<File>
<ID>USERDATA</ID>
<IDAlias>USERDATA</IDAlias>
<Type>YAFFS_IMG2</Type>
<Block id="userdata">
<Base>0x0</Base>
<Size>0x0</Size>
</Block>
<Flag>1</Flag>
<CheckFlag>2</CheckFlag>
<Description>userdata file</Description>
</File>
</Scheme>
</SchemeList>
</BMAConfig>
Populating the PAC file
I loaded the FDLs, Prodnv and Persist once the BMAConfig was recognised, then packed the PAC file. This created a base PAC file, which allows you to load files to partitions you wish to flash.
I created a full PAC (loaded all partitions) and flashed it in Infinity CM2 and Research Download Tool (R23). I unchecked repartition/update PMT; flashing went well and the phone booted up fine.
Observation
The device got stuck in fastboot whenever I ticked the repartition option while flashing, so there’s still something to fix. To get the device to boot up normally again, I had to run the repartition command in spd_dump using my partitions_*.xml file:
spd_dump exec_addr 0x3ee8 fdl fdl1-dl.bin 0x5500 fdl uboot-mod.bin 0x9efffe00 exec repartition partitions.xml reset
Disclaimer
This is an experimental PAC file and is not meant to replace your factory PAC/firmware/dump. Use it with discretion and avoid repartitioning using the PAC.
Hisense A5 Pro CC demo PAC: https://mega.nz/file/RhIXzCiL#misEiUPz7K8y8dxx_YDU7EVR8lTAL6STBvPBcl93UXk

