[Need Help] ASUS FX504GD BIOS modification

Use this method, it’s easiest way, see spoiler “Flashing the Modified UEFI” After you download package on that page from “Prerequisites” section, you only need afuwinx64.exe folder/files, rest you can ignore
https://linustechtips.com/main/topic/592…r-motherboards/

Or yes, you can buy hardware flash tools, you need CH341A flash programmer and SOIC8 test clip cable ($2.50 + $3.50 on ebay)

OK,Thanks

Hope you can get it, this can be done many ways without having to use hardware programmer (And waiting 3-5 weeks for that to arrive, plus you have to learn how to use it too, so may be new struggle there)

Hello,
Since I was looking for help in modding the Setup of the bios for this laptop I own, I just saw this thread and feel the need to share some days of research, test, success, etc :’)
I successfully flashed a modified bios but it needs one more UEFI variable to be edited : Me FW Image Re-Flash, 0x7BD to be switched also. This because FPTW was giving me an error about Flash Protection Range Registers.
So now I can freely flash a modded Bios from now.

But I need help with unlocking features with AMIBCP ( or UEFITool maybe … ).
I tried switching many sections to USER access and discovered that only a small portion is showing in the bios and also that this is somwhat messy in there :slight_smile:
I’m starting to think that the bios setup interface used is taking only some sections of Setup file in UEFI bios and building its own menu.
I’m looking for a way to show missing features by editing Setup directly like for example changing reference of one entry to another using UEFITool and modding PE32 image section directly. This seems a little complicated and maybe someone can help me find a simplier way …
I will post some screenshot of amibcp to be more precise and show why I think it is messy also because i’m not sure my english is always that good haha :slight_smile:
The main problem here is that Setup have a Advanced section with many features to unlock but the advanced section shown in the bios is another one.

EDIT 1 :
Forgot to mention one important thing, I ran into a problem when using setup_var with modified grub efi image because there are 2 Setup variable and it will try to change the wrong one with a out of range error…
To change the UEFI variables I used RU tool and did the modficiation manually … Also found a github project talking about this case with a modified grub source. did not try it because it needs to be compiled and I don’t have linux right now so I used RU :slight_smile:
for the ppl interested : grub-mod-setup_var

EDIT 2 ; screenshots

amibcp1.jpg


In green sections we can edit to show a little more and what we can actually see in bios setup
In blue the advanced section I want to add but not the same as the advanced section in green…

amibcp2.jpg


Hidden advanced section with a lot of settings.

amibcp3.jpg


Here is an example of what we can found before going down to the real menu.
Some kind of default menu from ami bios ? not available in bios seetings neither

Thanks @Lugburz - that would need edited if you are updating Intel ME, or trying to flash the entire BIOS. FPRR has nothing to do with the ME Re-flash setting. If FPRR is set here, I will disable for him via assembly
For now, we’re only going to do a BIOS region update, so removing BIOS Lock should be plenty unless FPRR is locking that region too, which I doubt.

I have that grub I think, with Setup_Var2 and Setup_Var3 commands.

AMIBCP changes NVRAM settings, other changes must be made to the setup module of the BIOS itself.
Some AMIBCP settings will work, some will only work once a setup mod also done, others may never work or require an entirely different mod (@Chipset)

You’re English is fine!

Advanced can be done a few ways, possibly with AMIBCP, if not via Setup module and IFR/Hex, usually it’s the easy one to enable vs Chipset.
I looked though, and you are correct, it’s a mess in there! Not sure how to enable that Advanced, it’s doesn’t look possible with AMIBCP or IFR/Hex (Nothing is suppressed, looks like it should be visible in IFR, but we know it’s not)
Except maybe this (Same form ID as other Advanced, but Question ID 2A throws me off, but blank name again makes this think this might be it
Suppress If {0A 82}
0x28635 QuestionId: 0xD4A equals value in list (0xFFFF) {14 08 4A 0D 01 00 FF FF}
0x2863D Ref: , VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x2A, FormId: 0x2712 {0F 0F 02 00 02 00 2A 00 00 00 FF FF 00 12 27}
0x2864C End If {29 02}

Maybe I changed 2 vars in the same times and made me think FPRR was needed, I tried so many things you know … It’s the first time i’m digging that much with bios modding.

I can test some things if you have ideas but you have to know before that I’m not really familliar with this IFR (langage or whatever it is) I just looked some to help me understand the bios setup but i’m still trying to figure what all of this means lol
I was mostly thinking about changing a reference from an existing section like SMART settings to redirect to the advanced form and change the SMART settings label in AMIBCP to Advanced2 for example.
It’s more like a trick than a proper solution but i’m just a rookie in this and can’t see a better way :slight_smile:

You probably unlocked BIOS lock and ME reflash, to flash entire BIOS + ME section, FPRR cannot be undone via simple var edit. IFR is a textual output of certain BIOS modules you can get sometimes, you use this with hex editing to unlock/switch/enable things permanently in the BIOS itself.
Check out my guide for BIOS lock edit, it will show you how to get setup IFR and then using that you can edit in hex instead of changing at grub screen. - [GUIDE] Grub Fix Intel FPT Error 368 - BIOS Lock Asus/Other Mod BIOS Flash
Same thing, edit in hex, or at grub only grub changes the setting in the currently flashed BIOS and hex changes it permanently into the next BIOS you flash in so that grub edit not needed next time.

Small guide I made here for IFR edit to enable ME Reflash
Intel Management Engine: Drivers, Firmware & System Tools (272)

Editing along the lines you mentioned is way more involved than that, here’s a guide one of our forum members Mov AX, 0xDEAD wrote for doing similar to what you just mentioned, it’s a ton of advanced work
https://forums.overclockers.ru/viewtopic.php?f=25&t=599984

See also, pages 14-16 for his discussion here about that
[Request] How to Access Locked/Hidden BIOS Menu Settings (14)

Thanks for your support Lost_N_BIOS :slight_smile:

I will look into all of this and re-read the GUIDE (already know this one, it helped me to find the Bios lock :slight_smile: )
Not sure I will be able to find something as I don’t have much time ( doing this as a hobby and also unhappy Asus customer …)
In fact, all of this started with the idea to run DIY Egpu and needed CSM support (which I successfully unlocked in AMIBCP) to run a specific tool. But i’m looking now for a way to disable the discrete GPU (PCI express port access)
Happy to be able to unlock some of the bios options, It would be great if I could unlock some overclocking features too.

Anyway, i’ll dig a little deeper into this and report anything good (or bad if you’re ok to give more help :’) ) but i’m not really sure I will success :’)

From here what I can do is changing values of hidden section directly in Setup UEFI variable (RU or setup_var) with the corresponding Hex value, if I understand right ?

And what about changing the optimal value in AMIBCP and flashing the edited bios ?

EDIT . link to overclockers russian forum does not show anything for me, got a blank page :frowning:

Ok I looked at the IFR section you where mentionning and now I understand what you’re saying … a little haha

0x2863D Ref: , VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x2A, FormId: 0x2712 {0F 0F 02 00 02 00 2A 00 00 00 FF FF 00 12 27}

So there is a blank reference here that should be applied if the condition is meet ?
I don’t quite understand the condition, 0xD4A is the location of the value to test ? I can understand equals value 0x0 for example but equals value in list ? what list ? where is this list? is it a list of value ?
Is the blank name means it apply a blank name to the advanced form with id 0x2712 ?

Made some more search about this ( maybe I shouldn’t make so much post :confused: )

I found this

0x4CB53 Suppress If {0A 82}
0x4CB55 QuestionId: 0xD4A equals value in list (0xFFFF) {14 08 4A 0D 01 00 FF FF}
0x4CB5D Gray Out If {19 82}
0x4CB5F QuestionId: 0xD42 equals value 0x1 {12 06 42 0D 01 00}
0x4CB65 Ref: , VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0xD29, FormId: 0x2712 {0F 0F 02 00 02 00 29 0D 00 00 FF FF 00 12 27}
0x4CB74 End If {29 02}
0x4CB76 End If {29 02}

Inside the advanced form shown in the bios
Should be a reference to the other advanced form but hidden because it doesn’t have any label ?
If all of this is extracted in the right order it could be shown between EZ Flash 3 Utility and SMART settings in the advanced tab … but it needs a valid Reference name right ?

amibcp4.jpg


Should be located here I think

Also, 0xD4A is it a location in Setup UEFI variable ? if yes, maybe it needs a specific value to be set (but still does not understand "in list" )

bios_setup.jpg


Here is a screenshot of the actual advanced tab (with all I could unlock), I realize there is rapid storage settings between those two

EDIT :
Also understood the code you were talking about :

0x28617 Ref: SDIO Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x29, FormId: 0x27E5 {0F 0F 43 16 44 16 29 00 00 00 FF FF 00 E5 27}
0x28626 Subtitle: Statement.Prompt: , Flags: 0x0 {02 87 02 00 00 00 00}
0x2862D End {29 02}
0x2862F Suppress If {0A 82}
0x28631 QuestionId: 0xD4A equals value in list (0xFFFF) {14 08 4A 0D 01 00 FF FF}
0x28639 Ref: , VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x2A, FormId: 0x2712 {0F 0F 02 00 02 00 2A 00 00 00 FF FF 00 12 27}
0x28648 End If {29 02}
0x2864A Subtitle: Statement.Prompt: , Flags: 0x0 {02 87 02 00 00 00 00}
0x28651 End {29 02}
0x28653 Suppress If {0A 82}
0x28655 QuestionId: 0xE4E equals value in list (0xFFFF) {14 08 4E 0E 01 00 FF FF}
0x2865D Ref: Driver Health, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x2B, FormId: 0x282B {0F 0F 67 00 68 00 2B 00 00 00 FF FF 00 2B 28}
0x2866C End If {29 02}

amibcp5.jpg


1st Subtitle is the 1st blank entry
blank ref (from itself ?) 2nd blank entry
2nd Subtitle is the 3rd blank entry

I think making this one
0x4CB65 Ref: , VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0xD29, FormId: 0x2712 {0F 0F 02 00 02 00 29 0D 00 00 FF FF 00 12 27}
appear should give access to the advanced form but i don’t know how to add a valid reference to it instead of the blank one

EDIT 2 :
This time I made it with your help and the links from other threads you gave me :slight_smile: you were correct about thinking it could be this blank entry, and luckily it was also present where we could see it in the bios menu.
To put it simple I replaced some HEX values and checked the change with IFR extracted

So I changed

0x4CB53 Suppress If {0A 82}
0x4CB55 QuestionId: 0xD4A equals value in list (0xFFFF) {14 08 4A 0D 01 00 FF FF}
0x4CB5D Gray Out If {19 82}
0x4CB5F QuestionId: 0xD42 equals value 0x1 {12 06 42 0D 01 00}
0x4CB65 Ref: , VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0xD29, FormId: 0x2712 {0F 0F 02 00 02 00 29 0D 00 00 FF FF 00 12 27}
0x4CB74 End If {29 02}
0x4CB76 End If {29 02}

To be :

0x4CB53 Suppress If {0A 82}
0x4CB55 False {47 08 4A 0D 01 00 FF FF}
0x4CB5D Gray Out If {19 82}
0x4CB5F QuestionId: 0xD42 equals value 0x1 {12 06 42 0D 01 00}
0x4CB65 Ref: Advanced, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x2, FormId: 0x2712 {0F 0F 1E 00 02 00 02 00 00 00 FF FF 00 12 27}
0x4CB74 End If {29 02}
0x4CB76 End If {29 02}

And voila ! Advanced menu is showing in advanced menu :’) between the two entries I mentionned earlier.
Rapid storage menu moved by itself in the end of 2nd advanced menu
The only problem is that it does not show the advanced entry in AMIBCP and honestly I don’t really want to dig into amitseSetupData to find the corresponding values etc …
This is enough to unlock it in bios and I’m happy with it :slight_smile:

You may need to use another translator, or sometimes I have to use proxy to view that Russia site.

As for BIOS edited, you can save AMIBCP, or edit from IFR variables either in grub or directly in the BIOS module you extract to get IFR (via hex), then put back into BIOS same way you extracted and flash it.
I think disable PCIE is possible, if you need me to look at that and figure out what all you need to set (Or do it for you) let me know. I would not do this without programmer in hand in case you loose display for all internal and external connections

They removed the name there, it’s not really blank. I was only guessing that may be the one, as for the rest of your questions there I do not know. << Talking about the FormId: 0x2712 reply

Both Advanced have labels in the BIOS, so nothing you see in AMIBCP correlates to that in IFR, at least not in the way you mentioned I think. The blank/no name folder in AMIBCP when present is a debug folder

This is not valid, and may be working now due to being invalid >>
0x4CB53 Suppress If {0A 82}
0x4CB55 False {47 08 4A 0D 01 00 FF FF} << ? False is only two bytes 47 02 (or other values depending on BIOS in question), and if you cut that Question ID {14 08 4A 0D 01 00 FF FF} out with less bytes then it breaks the IFR output, better to do as below

If you want to remove that suppress/gray out if, do like this. Delete 29 02 x 2 after {0F 0F 02 00 02 00 29 0D 00 00 FF FF 00 12 27}, and place 29 02 in front of {0F 0F 02 00 02 00 29 0D 00 00 FF FF 00 12 27} instead. Then IFR will show as below, nothing grayed out or suppressed
0x4CB53 Suppress If {0A 82}
0x4CB55 QuestionId: 0xD4A equals value in list (0xFFFF) {14 08 4A 0D 01 00 FF FF}
0x4CB5D Gray Out If {19 82}
0x4CB5F QuestionId: 0xD42 equals value 0x1 {12 06 42 0D 01 00}
0x4CB74 End If {29 02}
0x4CB76 End If {29 02}
0x4CB65 Ref: , VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0xD29, FormId: 0x2712 {0F 0F 02 00 02 00 29 0D 00 00 FF FF 00 12 27} I see you changed this ID in your last bit, not taken into account for this example, I only mean to show the move of the “End If’s” here to be above this line instead of below

Did you flash this mod? Does it show in BIOS, and are the items working?

Good news, I finally tweaked bios menu to get all hidden sections :slight_smile:

That was really not a easy task, kind of exhausting and seriously didn’t think i will make it right haha
Tried many things like replacing a reference from IFR to get another but realized it was still pointing to the old one.
Also the advanced menu do not include chipset menu found in the Setup/Main section …

So I decided to make advanced menu appear and replace a section in it with chipset menu.
The result now is the advanced menu shown with a more proper way i think :slight_smile: (tried moving the ref out of the suppress condition but it does not show the menu in the bios that way)

0x4CB53 Suppress If {0A 82}
0x4CB55 QuestionId: 0xD42 equals value in list (0x1) {14 08 42 0D 01 00 01 00}
0x4CB5D Gray Out If {19 82}
0x4CB5F QuestionId: 0xD42 equals value 0x1 {12 06 42 0D 01 00}
0x4CB65 Ref: Advanced, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0xD29, FormId: 0x2712 {0F 0F 1E 00 02 00 29 0D 00 00 FF FF 00 12 27}
0x4CB74 End If {29 02}
0x4CB76 End If {29 02}

I took a variable that I know is true for the questionId (0xD42 refers to the access level as an administrator which is the default one even after a CMOS reset) and filled the list with 0x1 ( I think that it just test if the value of the variable is the same as one in the list :slight_smile: )

After that I decided to add the chipset menu so I followed the tutorial in the link you gave me from overclockers.ru (what was showing me a blank page is my adblocker … lol ) and there comes the AMITSESetupData editing …
This part was really tedious because it involve looking at Hex … finding etc … but the tutorial is pretty well done even with google traduction.
So I changed the destination ID from SDIO Configuration in advanced menu (this one didn’t work and hangthe bios anyway …) to Chipset form.

And also changed the reference in IFR :
0x28617 Ref: SDIO Configuration, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x29, FormId: 0x27E5 {0F 0F 43 16 44 16 29 00 00 00 FF FF 00 E5 27}
TO
0x28617 Ref: Chipset, VarStoreInfo (VarOffset/VarName): 0xFFFF, VarStore: 0x0, QuestionId: 0x29, FormId: 0x2713 {0F 0F 1F 00 02 00 29 00 00 00 FF FF 00 13 27}

Tested the modification and all work fine so far. THere are so many sections in the bios that i didn’t tested all and maybe some can cause a freeze that need shutdown and restart with power button … ( I don’t mean changing value but just entering the menu)

While exploring available options I found a way to disable the PCIE port from the dedicated GPU under chipset / System Agent (SA) Configuration / PEG Port configuration and it works fine.

Honestly I don’t think I could have made it without your help and Mov AX _ 0xDEAD for his tutorial.

Still AMIBCP do not show the move of chipset menu but i think this is because I didn’t changed enough values (like the parentID in the chipset reference …)

Wow, great work @Lugburz - I mod BIOS all day long and could not follow along there, but maybe I was tired the day I first looked into that, need to try again I suppose
Thanks @Mov_AX_0xDEAD for the guide, it’s been helping, I saw another user on another thread have some success too!

@Lugburz Hey i’m trying to modified my FX504GE BIOS (i7-8750H , GTX1050Ti Model) , i able to flash my modified bios by using AFUWINx64 with /GAN command…
But… the problem is i can’t see the hidden “advanced menu” in my bios…
Can you explain more details how you made it?
Sorry for my english.
BIOS Version 315

But, can you verify your flash with AFUWINx64 /GAN is actually flashing in, or only looks like it flashes (This happens a lot). Flash back to older version, check BIOS version in BIOS, then flash back to latest version and check again.
Did BIOS version change each time? If yes, then your /GAN flash is working, if not, then it’s not and only looks like it’s working.

Ok , i already verified the bios is still same means the modified bios is not flashed by afuwinx64 with /GAN Command

You will have to flash using FPT, I suggest you make a backup of the BIOS region with FPT first (FPTw -bios -d biosreg.bin), then edit that, then flashback with >> FPTw -bios -f modbiosreg.bin
You will have to first get correct ME System Tools package matching your ME version from here - Intel Management Engine: Drivers, Firmware & System Tools

Then follow this guide to unlock your BIOS Lock/SMI Lock
[GUIDE] Grub Fix Intel FPT Error 368 - BIOS Lock Asus/Other Mod BIOS Flash

Then you can flash using the above flash command.

@Lugburz Hello, I want to ask, have you found the reason for the low frequency of the computer CPU clocks? And how can you do it to refresh any BIOS file? Can you elaborate? Because I am also a newbie, the posts you sent, I see it complicated.Thanks

@guangzhishun - is that low CPU speed at idle too, or only under load? If under load, it may be due to temps/overall heat or TDP limits.
You do have Speedstep, EIST, C1E disabled right?

only under load.However, it is not because the CPU temperature is too high, the frequency is low. because the temperature is only 60 degrees.