Again, UBU (now using v1.80.a17) handles modifying microcodes perfecty. After running UBU to update microcodes (by selecting A - Start replacement Alternative with MMTool), you can just flash UBU processed updated microcodes by opening up UEFITool NE (alpha 68), and Extract as is… Volume_FFSv2_AFDD39F1-19D7-4501-A730-CE5A27E1154B.vol, but name it ucode.bin.
In this particular case, the Base is at 1D50000h and the Full size is F0000h, so I FPT flashed using fptw64 -a 0x1D50000 -l 0xF0000 -f ucode.bin
The result was:
Microsoft Windows [Version 10.0.17763.6189]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\Users\Administrator\Desktop\CSME System Tools v12 r38\Flash Programming Tool\WIN64>fptw64 -a 0x1D50000 -l 0xF0000 -f ucode.bin
Intel (R) Flash Programming Tool Version: 12.0.85.1919
Copyright (C) 2005 - 2021, Intel Corporation. All rights reserved.
Reading HSFSTS register… Flash Descriptor: Valid
--- Flash Devices Found ---
ID:0xEF4019 Size: 32768KB (262144Kb)
GbE Region does not exist.
Processing Flash memory block 103 from 239.
- Erasing Flash Block [0x1DB8000] - 100 percent complete.
- Programming Flash [0x1DB8000] 416KB of 416KB - 100 percent complete.
- Processed memory blocks 239 from 239.
RESULT: The data is identical. 960KB of 960KB - 100 percent complete.
Flash device was programmed. It is recommended to perform
G3 power cycle to complete the flashing process.
FPT Operation Successful.
The Erased Block and Programmed block were both [0x1DB8000]. Microcodes were successfully updated. Now onto flashing all other updates processed by UBU v1.80.a17.
EDIT 1: One more thing to consider as it relates to updating the microcodes with this little procedure. There’s no magic in the numbers of the “fptw64 -a 0x1D50000 -l 0xF0000 -f ucode.bin” command. In this instance, the Base is at 1D50000 and the Full size is F0000. This flashing procedure will work, but those numbers are likely to change, depending on your individual situation. For instance, if UEFITool NE showed you a Base at E10000h and a Full Size of 90000h, your FPT command would be fptw64 -a 0xE10000 -l 0x90000 -f ucode.bin. If you’re off, FPT will warn you that the size you’re trying to flash doesn’t match the size of the volume.
EDIT 2: I forgot to mention that you should dump the volume first to compare it against the structure and size of what you’re going to flash. Using the correct Intel Flash Programming Tool (FPT), and assuming your base is at 1D50000 and the Full size is F0000, you would go with: fptw64 -a 0x1D50000 -l 0xF0000 -d ucode.bin. The -d will dump the current volume. -f flashes the microcode(s) modified (volume saved as a .bin) file.
EDIT 3: Also, and this is related to EDIT 2, you can’t FPT flash this way with the -a (starting) address obtained by dumping only the bios region, or from an extracted bios region from a Dell firmware update. You’ll be flashing a specific Volume of the entire bios, and a partial bios will give you the correct Full size/length, but the incorrect starting Base address. You must pull/dump a full bios in order to obtain the correct starting Base address.