[TOOL] UEFI Editor

Oh, that commit is using a separate function and property. Anyway, you have to keep the order of offsets in the array the same since they’re being accessed by index here. In hindsight, I should’ve just used an object with proper property names, but back then I was planning on keeping the .json somewhat compact because it was meant to be an IFR Formatter output replacement (which is whatever now since I wrote another formatter). I’ll change that array to an object eventually to make it less confusing.
Regarding the page IDs: I was thinking of just adding a dropdown to the “Info” column for Ref Prompts to avoid making the table even wider. I’ll try to confirm that this method works on various boards before implementing it.

I know. Like, (child.offsets[0]), (child.offsets[1]) and etc. I added up to (child.offsets[3]). Order was correct. And the tool still had weird behaviour.

The second thing I want to add is new entry type that can’t be parsed from IFRE output.

This type is intended to be used on My Favorites tab.

But it can be also used on any other. It might be handy to access Forms outside Setup, if you aren’t going to enhance the Menu section.

I can’t flash the modded BIOS, I need a signature file and the one from the original BIOS version (that I modified) does not work.
I have also tried to “trick” the flash tool that I want to flashback or recovery-flash (Win+B on boot) but it’s the exact same thing everywhere.

I have read in several places that the signature is not needed but for me it clearly is.
What am I doing wrong?

The numbers I see when comparing the intact and modified BIOS files all seem to check out, I used the older version of the UEFITool to create the bin.

(I have modded BIOSes before, but we didn’t have signatures, UEFIs, certificates or really anything but simple checksums. Sure, if you fd up you fd up for real, but at least you knew if your were making any progress at all :confused: )

Thankful for any and all help.
Omen 25L GT-12xxxa, F.28a.

This is HP. You can’t mod it.

1 Like

I’ve looked through the PDF and your repo a bit. I’m confused why you replace 4 bytes in the PDF but only 2 bytes in the repo. The location also seems to be different.

First two bytes are for parent Page ID. It goes to this ID when you press Esc.

Could you elaborate?

In your fork, you did .{20}(....) while it should be .{14}(........) from what I’ve gathered from the PDF. Am I missing something?

Firstly, in the PDF I was converting every little endian values to big endian. So,
parent[01 00] and destination[3B 00]
to [00 01] and [00 3B].
That’s where 00 01 00 3B came from.

Secondly, you allowed to not alter the parent id. This wasn’t said in the pdf and it sucks in this term.

What bytes are we interested in, then? In your fork, the gap between byteArray[7] and byteArray[4] is 16 bytes, while it should be 18 bytes.

Don’t understand.
That"s how it looks for me.

Oops, pepega moment, I’m too tired to count.

So, these are the bytes we’re interested in replacing?

Ayoo, I even started thinking that ChatGPT wrote the code for you. :smile:

Yes.

I’m just living up to my name with some brain farts :woozy_face:. I don’t use ChatGPT for this, I don’t trust it.

Anyway, I’m going to try to get confirmation from volunteers that this works as intended next week and then implement it in the main branch. Thanks.

So it really is that bad… :confused: Thanks for the fast reply.

Hi! I was wondering how much luck you’ve had with the unlocked options. I have the 12800H erying motherboard and managed to get the options to show up following your instructions.
However, it seems like the options I was most interested in (BCLK and ICCmax) don’t actually have any effect, despite me now being able to change them in the bios.
Is this something you’ve managed to tackle?

BTW, where does this info come from? Is there official documentation somewhere?

Don’t know if there’s a documentation. I just copypasted the info from some russian forum.
I left a hyperlink on the first page of the pdf.

Actually, I have something that can be called documentation. But I’m not sure if it’s okay to publish it.

Here's a piece of it. Definitions for offset 0x14 (Type).
#define	CONTROL_TYPE_NULL			0x0000
#define	CONTROL_TYPE_SUBMENU		0x0001
#define	CONTROL_TYPE_LABEL			0x0002
#define	CONTROL_TYPE_TEXT			0x0003
#define	CONTROL_TYPE_DATE			0x0004
#define	CONTROL_TYPE_TIME			0x0005
#define	CONTROL_TYPE_POPUPSEL		0x0006
#define CONTROL_TYPE_MEMO			0x0008
#define CONTROL_TYPE_MSGBOX			0x0009
#define CONTROL_TYPE_CHECKBOX		0x000A 
#define CONTROL_TYPE_NUMERIC		0x000B
#define CONTROL_TYPE_EDIT			0x000C
#define CONTROL_TYPE_PASSWORD		0x000D
#define CONTROL_TYPE_MENU			0x000E
#define CONTROL_TYPE_ORDERED_LIST	0x000F
#define CONTROL_TYPE_POPUPEDIT		0x0010
#define	CONTROL_TYPE_VARSTORE_SELECT		0x0011 
#define	CONTROL_TYPE_VARSTORE_SELECT_PAIR	0x0012
#define CONTROL_TYPE_POPUP_STRING	0x0013
#define CONTROL_TYPE_VARSTORE		0x0014
#define INCONSISTENT_IF				0x0015
#define NO_SUBMIT_IF				0x0016
#define DISABLE_IF					0x0017
#define CONTROL_TYPE_VARSTORE_NAME_VALUE	0x0018
#define CONTROL_TYPE_VARSTORE_EFI			0x0019
#define CONTROL_TYPE_VARSTORE_DEVICE		0x001A
#define	CONTROL_TYPE_ACTION			0x001B
#define	CONTROL_TYPE_RESET			0x001C
#define CONTROL_TYPE_RULE			0x001D

Can share the file in private if needed.

I’ve had a volunteer test this method on an X670 Taichi, and it didn’t work for him. What boards did you test this with and confirmed it works?

Haven’t touched those settings. So do not know.
I have only played around with pcie settings and aspm. Those seems to work as intended.

(Apart from that hardware is buggy)