Basically
you need to what I did:
- Get a copy of current BIOS and target BIOS (.CAP file from official website is fine)
- Extract required components with UEFI-tool and IFRextractor
- Analysis with UEFI-editor, find the location of "BIOS lock" key value
- Turn the fuction on by modifying BIOS value temporarily with reformatted USB disk and modded efi shell, BUT rename the .efi to "shell.efi" and put it directly into the USB disk (instead of USB:\EFI\BOOT\BOOTX64.EFI by the instrctions from UEFI-editor page)
- Extract .ROM(raw BIOS image) from target .cap (File->open image file->right click section shown->extract body), and change the suffix to .bin
- Flash the .ROM file with Flash Programming Tool (FPTW) for ME 16.x
Detailed steps (1 to 4) and necessary tools can be found in the UEFI-editor page (with links to other tools, except FPTW for BIOS with ME 16.0.x, which I found
here, and I attached the tool in this post for convenience).
(!!Check this!!!) For BIOS 2103/2204/2305 (as example): if you have current BIOS 2103, then after step 3, you can search "BIOS" in the left-bottom, and find "BIOS Lock". For 2103, it should look like this:
View attachment 565442
For 2204:
View attachment 565450
For 2305:
View attachment 565451
As shown, "BIOS Lock" have "VarStoreName" PchSetup and "VarOffset" 0x1D, enable corresponds to 1, and the lock is enabled by default. According to the instructions, you should type this before you type reboot (Size is 1):
sample:
setup_var_cv VarStoreName VarOffset Size Value
our case:
setup_var_cv PchSetup 0x1D 0x1 0x0
Before reboot, you can read the value for double-check:
sample:
setup_var_cv VarStoreName VarOffset Size
our case:
setup_var_cv PchSetup 0x1D 0x1
For the next boot (only), BIOS Lock would be disabled temporarily, so you can use FPTW for flashing. For powershell:
./FPTW64.exe -f xxx.bin
Warning: the value shown only applies to BIOS 2103/2204/2305!!! If you are using 2103, then you can copy the command code direcly; if not, you should analysis the BIOS by yourself, as the values may NOT be the same!
Note: strangely, IFRextractor fails to read BIOS 1720 and 9901. If you want to change from 9901 to others, you can simply upgrade to 2103, and then apply the example.