[Request] Mod MSI X470 Gaming Plus Max BIOS

Hello, I recently upgraded my PC, transitioning from a setup with a GTX 1080 and Ryzen 7 3800X to a configuration featuring an RTX 4070 Super and Ryzen 7 5800X3D on my “MSI X470 Gaming Plus Max” motherboard. Despite having disabled spread spectrum in the BIOS, it seems to remain active (which was never an issue before, but I updated the BIOS after the PC upgrade tho this might’ve caused it).
I stumbled upon a Reddit thread from four years ago where users discussed MSI concealing the “real” spread spectrum in certain versions, requiring a modded BIOS to disable it (refer to this screenshot: https://imgur.com/wJeq2JL).

Another concern I have is that I can’t find the HPET (High Precision Event Timer) setting anywhere in the BIOS. While I am aware that my system utilizes TSC (Timestamp Counter), I would like to deactivate HPET in the BIOS as a precaution. I’ve seen others in this forum requesting this feature, so I thought it might be worth exploring.

Therefore, my main question is whether someone could take the latest BIOS and modify it for these purposes. I’m curious about the level of effort involved and don’t want people to invest too much time in a feature I like but can live without. Your insights would be greatly appreciated.

Hello, I recently upgraded my PC, transitioning from a setup with a GTX 1080 and Ryzen 7 3800X to a configuration featuring an RTX 4070 Super and Ryzen 7 5800X3D on my “MSI X470 Gaming Plus Max” motherboard. Despite having disabled spread spectrum in the BIOS, it seems to remain active (which was never an issue before, but I updated the BIOS after the PC upgrade tho this might’ve caused it).
I stumbled upon a Reddit thread from four years ago where users discussed MSI concealing the “real” spread spectrum in certain versions, requiring a modded BIOS to disable it (refer to this screenshot: https://imgur.com/wJeq2JL).

Another concern I have is that I can’t find the HPET (High Precision Event Timer) setting anywhere in the BIOS. While I am aware that my system utilizes TSC (Timestamp Counter), I would like to deactivate HPET in the BIOS as a precaution. I’ve seen others in this forum requesting this feature, so I thought it might be worth exploring.

Therefore, my main question is whether someone could take the latest BIOS and modify it for these purposes. I’m curious about the level of effort involved and don’t want people to invest too much time in a feature I like but can live without. Your insights would be greatly appreciated.

Hello,
I tried several times to unhide HPET in my MSI bios its not working with AMIBCP. Some retired Guru explained that its because you need to change it in the upper and lower BIOS.
Basically I have the same problem as the guy in thread [REQUEST] MSI X470 GAMING PLUS MAX HPET option - BIOS/UEFI Modding / BIOS Modding Requests - Win-Raid Forum (level1techs.com)
and I tried to solve it with the option “Lost_N_Bios” provided “Great to hear, and thanks for the quick test and report back!
So, all that was needed here then, was the setup PE32 edit I outlined above in post #2 (to both upper/lower BIOS area - Setup PE32 modules)
This means AMIBCP, or edits that it makes but done manually to both upper/lower AMITSE/SetupData modules are not needed here, nor would they help or have any effect, if the setup edit is not done first” but I really fast understood that I could easily mess up something since I wasnt even able to find the PE32… And then to change smth and recompile especially if it can brick my device is something too risky, so I kindly ask for somebody to apply the 4 lines of PE32 changes to the latest bios of my mainboard " X470 GAMING PLUS MAX | Mainboard | MSI Deutschland"
AMI BIOS
7B79vHL1(Beta version)
2024-09-05
17.60 MB
Lines to change:

From Upper Setup PE32 >>
Suppress If {0A 82}
0x458EE True {46 02 } << Change to 47 02 = False
0x458F0 Subtitle: Statement.Prompt: , Flags: 0x0 {02 87 02 00 00 00 00}
0x458F7 End {29 02}
0x458F9 Subtitle: Statement.Prompt: HPET Configuration, Flags: 0x0 {02 87 BB 07 00 00 00}
0x45900 End {29 02}
0x45902 Gray Out If {19 82}
0x45904 QuestionId: 0x310 equals value 0x1 {12 06 10 03 01 00} << Null via FF
0x4590A One Of: HPET, VarStoreInfo (VarOffset/VarName): 0xA5, VarStore: 0x1, QuestionId: 0xC3, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 BC 07 BD 07 C3 00 01 00 A5 00 10 10 00 01 00}
0x4591B One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x45922 One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}

From Lower Setup PE32 >>
Suppress If {0A 82}
0x3E9D5 True {46 02 } << Change to 47 02 = False
0x3E9D7 Subtitle: Statement.Prompt: , Flags: 0x0 {02 87 02 00 00 00 00}
0x3E9DE End {29 02}
0x3E9E0 Subtitle: Statement.Prompt: HPET Configuration, Flags: 0x0 {02 87 BB 07 00 00 00}
0x3E9E7 End {29 02}
0x3E9E9 Gray Out If {19 82}
0x3E9EB QuestionId: 0x312 equals value 0x1 {12 06 12 03 01 00} << Null via FF
0x3E9F1 One Of: HPET, VarStoreInfo (VarOffset/VarName): 0xA5, VarStore: 0x1, QuestionId: 0xC4, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 BC 07 BD 07 C4 00 01 00 A5 00 10 10 00 01 00}
0x3EA02 One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x3EA09 One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}

I would greatly appriciate it because I think this is messing up something with my timers with the newest windows versions (after 21h2) even if I disable it in the device manager, I just want to be sure. Would be really great if somebody can do this quickly since I am testing since over a week basically 24/7 and I basically narrowed it down to some things including this option and I need to have the thing unhidden to be able to continue my troubbleshooting with my bug.
Best regards

edit: furthest i have come to was extracting File_DXE_driver_Setup_Setup_body IFR but I only can find the value he mentioned one time… so where is the “lower setup”? 0x4B64D > Suppress If: {0A 82}

0x4B64F True {46 02}
0x4B651 Subtitle: {02 87 02 00 00 00 00}
0x4B658 End {29 02}
0x4B65A Subtitle: HPET Configuration {02 87 D2 07 00 00 00}
0x4B661 End {29 02}
0x4B663 Grayout If: {19 82}
0x4B665 Variable 0x313 equals 0x1 {12 06 13 03 01 00}
0x4B66B Setting: HPET, Variable: 0xA8 {05 91 D3 07 D4 07 C8 00 01 00 A8 00 10 10 00 01 00}
0x4B67C Option: Disabled, Value: 0x0 {09 07 04 00 00 00 00}
0x4B683 Option: Enabled, Value: 0x1 {09 07 03 00 30 00 01}
0x4B68A End of Options {29 02}
0x4B68C End If {29 02}
0x4B68E End If {29 02}
0x4B690 End Form {29 02}

and what does he mean with “0x3E9EB QuestionId: 0x312 equals value 0x1 {12 06 12 03 01 00} << Null via FF” because for me it’s already {12 06 13 03 01 00}… I am hella confused rn.

I am way further now, i found the upper and lower setup and changed the values but what should I do now? I used Universal IFR Extractor to convert the both files into txt files and edited the values. Now i have to convert them back into *.fbd files but how? And then i would need tor reimport those bodys again but when i rightclick the setup files in UEFITool the replace function is greyed out.

Edit: Not sure if its really the lower since there are even more setups… damn…
Still how to convert? Doing this for one damn option is nuts why is it even hidden ffs.

Convertion is not doable.

How to implement the body back into the bios then?

Download uefitool 28 or older.

This doesnt change my file back from txt to fdb does it? Can you go a little bit more into detail? I convert it with Universal IFR Extractor from fdb to txt, I edit, then i need to convert it back to a fdb, dont I? And why is replace body greyed out (not clickable) in UEFITool anyway… even if I get it converted somehow, I still cant import it?

Edit: I dont see any difference between v 27 or the newest version of UEFITool.

It doesn’t. You should edit fbd, bin or whatever it is, but not txt.
txt file reflects little part of the binary file contents.

Since uefitool 28 the devs made big rework and switched to new program engine. Then focused on making the tool being able to read every possible efi bios, and not implemented import function yet.

Why are the most options “greyed out”.
I found upper and lower setup, I was able to extract the *.fbd files and I converted those as TXT, I edited the lines in the TXT like “Lost n BIOS” explained in the guide but now I have no idea how to convert the txt back to fbd and idk how to import and replace those bodys since its greyed out. Please help somebody.

But I did it how the guides told me and if i use universal IFT extractor it is getting translated into text file and all the options are there… at least the stuff I have to edit, which I did… but how to get the bodys back to fbd how and replace them with uefitool.

uefitool version 68. You need 28.

Yes in the screenshot but i tried 28 … for what? And its A60 is 28 when i read the changelogs.
Can you please stop just say one sentence that does not have anything todo with my actual issue… when you want to help please write longer sentences or else just dont write anything because thats really not helpful at all to me. ty anway.


This is what I edited in both txts, lower and upper setup, how to convert them back into fbd and replace the bodys?

I dont even want to know how i convert this, somebody do this, tell me your price and your crypto or paypal. This is about life and death literally because i am going insane… i posted a thread a year ago to try to solve this and nobody answered and now i really really need this

UEFItool_NE for extraction, regular version for operations merge/insert/replace etc.

Ok I found the non NE version and I am able to replace it now ,nothing greyed out anymore. And how can i convert my edited file back to fbd to replace the body with the non NE version?

Edit: NVM now i understand how to use the ifr to understand the hex… and then i am able to edit the bin… tho can anybody confirm i understand following correctly?

From Upper Setup PE32 >>
Suppress If {0A 82}
0x458EE True {46 02 } << Change to 47 02 = False
0x458F0 Subtitle: Statement.Prompt: , Flags: 0x0 {02 87 02 00 00 00 00}
0x458F7 End {29 02}
0x458F9 Subtitle: Statement.Prompt: HPET Configuration, Flags: 0x0 {02 87 BB 07 00 00 00}
0x45900 End {29 02}
0x45902 Gray Out If {19 82}
0x45904 QuestionId: 0x310 equals value 0x1 {12 06 10 03 01 00} << Null via FF
0x4590A One Of: HPET, VarStoreInfo (VarOffset/VarName): 0xA5, VarStore: 0x1, QuestionId: 0xC3, Size: 1, Min: 0x0, Max 0x1, Step: 0x0 {05 91 BC 07 BD 07 C3 00 01 00 A5 00 10 10 00 01 00}
0x4591B One Of Option: Disabled, Value (8 bit): 0x0 {09 07 04 00 00 00 00}
0x45922 One Of Option: Enabled, Value (8 bit): 0x1 (default) {09 07 03 00 30 00 01}

so 0x458EE True {46 02 } << Change to 47 02 = False is selfexplanatory but with “Null via FF” he means that I replace the 01 with FF, right?