I hade an Elitedesk 800 G1, and i have a I7 4790 ES (Enginering Sample), when i boot the machine, appear a error saying that my processor don’t have a microcode correct. I did a search about, and found this forum.

Learning some about microcode, i think i need add the microcode for this processor family on my bios, correct?

what i need to update the microcode?

Can you please provide the S-Spec on the CPU heatsink? (e.g. QF4D for ES or SR1QF for OEM/Retail).

Do you know which BIOS is currently on the machine?

The latest BIOS 02.78 Rev.A only has one microcode for the (retail/OEM) Haswell/Devils Canyon CPUs (CPUID 306C3) and is the same micrcode used for the ES 4790 so it should work.


Thanks for your reply. My last bios was 02.77… I not saw in Hp website of Brazil the last version 2.78. Thanks.

The code on CPU Heatsink is QDE7 (i attached a picture)

I updated the Bios to 1.78. and tomorrow i will test (i need put a PCI-E VGA), thia CPU don’t type ES don’t have graphics card integrated inside.


@caio_rebello QDE7 is a 2.7 GHz Xeon ES CPU (similar to i7 4790T).

BIOS 02.77 and 02.78 both only have the one microcode for retail/OEM Haswell/Devils Canyon (CPUID 306C3) so you will need to add a microcode to the BIOS to support the ES Xeon (either CPUID 306C1 or 306C2).

I have supplied both of these microcodes in this thread.


How to add this microcodes on my bios? Is HP bios, but i think behind is AMI Bios.

@caio_rebello Yes, the BIOS is AMI Aptio IV.

I noticed Lost_N_BIOS has been working with the Elitedesk 800 G1 BIOS 2.77 in this thread and has mentioned that there is a flash descriptor lock present.

Do you have a flash programmer and test clip? You will need the programmer to get past the flash descriptor lock and flash the modified BIOS.

You should also use a programmer to make a complete backup of your BIOS before you start so you don’t lose any HP specific (SMBIOS) info.

@Lost_N_BIOS Is there a problem with using UEFITool 0.28 to replace the microcode and then manually correct FIT offsets for microcode file size difference etc?

@chinobino - I would use UEFITool 25, did not test others on this BIOS to see if it breaks anything, every time I check if newer is OK yet something is broken on this or that BIOS randomly, so I quit wasting time checking and only use 25 or MMTool
Yes, programmer required here, we also tested in this thread too, even with FD jumper on you cannot write BIOS region - HP Elitedesk 800 G1 DM mini PC - Nvme support info for ssd M2 (2)

The solution - https://www.bios-mods.com/forum/Thread-M…litedesk-800-G1

@Lost_N_BIOS Thanks for fast reply, I tested using both UEFITool 0.25.1 and 0.28 and they produced identical files when hash checked so maybe the Aptio IV weirdness has been fixed?

MMTool and 5.02.0024 (patched for Aptio IV) has no option to add/replace and MMTool couldn’t parse the FIT (crash on load).

Although could read the BIOS, it had some problem (reading wrong volume?) extracting the microcodes once I added the other microcodes after manually editing the FIT, the patched 5.02.0024 extracted them ok though.

@caio_rebello Here is a modified BIOS with all 3 microcodes (306C1, 306C2, 306C3);


As mentioned before you will need a programmer to flash, please make a backup first.

Disclaimer: I cannot guarantee that this BIOS will not brick your system as I don’t have an Elitedesk 800 G1 to test with - you flash the modified BIOS at your own risk!

[Edit] Looks like Deathbringer has solved it elsewhere - CPUID was 306C1, I’ll leave the BIOS up here for now.

@DeathBringer - thanks! I wonder how many other HP models that applies to, where I’d only tried disabling SMI/BIOS lock previously?

@gloobox - 800 G1 FPT flash >> Disable >> SMI Lock, BIOS Lock + GPIO Lock, BIOS Interface Lock, RTC RAM Lock via setup_var

@chinobino - I never mentioned 25.1 Use 25, and be sure you checked everything (original padding matches, and also none added or removed, in any volumes you touch - AND make sure parser tab info matches before/after too - sometimes volume you don’t touch can loose padding/non-UEFI which is critical at times)
MMTool crash due to FIT? Sorry, you lost me there, I never edit anything FIT related with MMTool, so not sure about that. If MMTool used for ucodes, and FIT wrong after rebuild, use UEFITool 25 for FIT correction/insert


Oh, I didn’t realise 25.1 was not ok thanks.

Haha! All I meant was MMTool CTD when you click the ‘CPU Patch’ tab. I edited the FIT manually with hex editor then checked padding info in UEFITool/UEFITool NE and there was a difference between 0.25 and 025.1/0.28 with some padding removed, thanks for the catch!

@chinobino - Yes, it’s (25.1) kinda like 26+, all those can break “some BIOS” “Sometimes” Of course, 25 can as well, but very rarely when compared to 26+ which does it a lot more often. MMTool can also do the same, add or remove a padding, but much less often.

I need to make a guide some time, if/when I ever have time, all the ways to best check a BIOS before/after, to look for issues that “may brick”
Sometimes padding added or removed is OK, but other times it’s instant brick, and the only way to know is to risk that brick That may be OK for us, or someone with programmer, but for the average Joe needing a BIOS mod it’s not ideal thing to test out [
So I try my best to always match parser tab and check for any added or removed padding or non-UEFI-files on before/after mod BIOS. If you see added or missing padding, work around that so it doesn’t happen.
This can be done by using other tools sometimes, like MMTool instead, or sometimes you have to remove several larger modules (ie extract out a copy, then remove),then insert what you wanted by itself, then the rest back, or sometimes all back at once etc.
It’s a tough and delicate dance to work around this kind of issue sometimes, but it’s possible almost always if you keep at it long enough.

Yeah, I know what you mean, some BIOS MMTool can’t edit ucodes, some BIOS some MMTool crash etc. In those cases you can either extract the P6 module with MMTool and update them that way, or use UEFITool.

@ Lost_N_BIOS
I had read his method for several times but I still could not find the address about the modded area.The address he modded I think is microcode and “fit”?
And if I modded for nvme support,could you tell me what address should I dumped?

@gloobox - You’re welcome, but thanks goes to DeathBringer! Just dump BIOS region after you do all the unlocks in grub/setup_var, then mod whatever you want and flash it back.
You don’t need to edit or flash what he’s doing, that’s just microcode update directly, you can dump BIOS region and mod however you want and flash it back as you normally would.

I found HP Z420 didn’t got smi lock and so on,but they remain error 28 when I flash with the modded bios region.
So whether I could just only flash the modded address and it would succeed by FPT?@DeathBringer Many Thanks !!!

Actually I still remain a little skeptical of killing FPRR by disable SMI Lock, BIOS Lock + GPIO Lock, BIOS Interface Lock, RTC RAM Lock
I would tried it when I own another machine and feedback.

No, it would only work on system when you can unlock all that, and then it works (ie when it’s all there and it works, it works, when it doesn’t it doesn’t)
If you can’t flash BIOS region, you can’t flash microcode… At least I’m pretty sure you would get blocked, it’s a “region” block, so anything in that region would be blocked, if it’s blocked. But DeathBringer would have to answer you for sure
I only tagged you because of this applied to 800 G1, not all other systems but yes, maybe some you could get lucky and disable all that and then it would unlock, but probably only some rare or similar cases

Unfortunately,I had tried it on 800G1DM ,and disable all the locks,but it still prompted error28 even only flashing the bios region.
I also had tried to short the FDO,but it seemed the same as above.


I think it must flash the allocated region of the bios so that it would be OK

Show results of:
MEInfoWin64 -verbose
BTW: Error 28 and Error 280 have different reasons.

Sometimes lock is in module (pchinitdxe or powermanagement etc), and in those cases you have to edit module then program back, if other methods do not work (Like PRR/PRR2 tool, S3 sleep bug, variable edit etc)











And I tried to shutdown the locks you mentioned and the MEinfowin64 showed the same.