[Request] HP 805 G8 DM unlock BIOS

Hello everyone,

I have an HP 805 G8 DM mini PC, equipped with an AMD 5700G CPU and 64GB memory, used as Homelab and Hackintosh.
The current problem is that the BIOS provided by HP can only set a maximum of 512MB of VRAM, which greatly affects the output capacity of the core Radeon Graphics.

I have turned off secure boot in the BIOS, and tried the following methods with the latest and previous generations of BIOS, all of which are ineffective:

  1. Add the VRAM option to the HpSetup.txt file generated by the BIOS backup, and use the restore configuration function in the BIOS;

  2. Use a USB flash drive to boot to Smokeless_UMAF, but there are only network devices in the device management, no other devices, and the BETA version is the same;

  3. Ask HP support for help, and the only suggestion I got is to buy a dedicated Nvidia discrete graphics card that I don’t need (can’t Hackintosh).

After some googling, I found that HP has added a “Gaming Optimized” option in the “Video Memory Size” setting in the BIOS of G9 and G10 notebooks, and the VRAM can reach 2G and 4G, but HP currently has no plans to add this option for mini PCs.

Is there a way to unlock the “Gaming Optimized” setting for the HP 805 G8 DM mini PC?

Link of the original latest BIOS:
https://support.hp.com/us-en/drivers/swdetails/hp-elitedesk-805-g8-desktop-mini-pc/2100378016/swItemId/vc-333515-1

I found that there is an option for 1024MB in the firmware, but the BIOS interface only shows Auto, 256MB and 512MB.

I exported the HpSetup section in the latest official BIOS file “T26_02130000.bin” through UEFITool, extracted the UEFI IFR data using ifrextractor, and found the following:

		GrayOutIf 
			EqIdVal QuestionId: 0x346, Value: 0x0
			SuppressIf 
				EqIdVal QuestionId: 0x37E, Value: 0x0
					EqIdVal QuestionId: 0x37D, Value: 0x1
					Not 
					Or 
				End 
				OneOf Prompt: "Video memory size", Help: "", QuestionFlags: 0x0, QuestionId: 0x9307, VarStoreId: 0x8300, VarOffset: 0xA, Flags: 0x10, Size: 8, Min: 0x1, Max: 0x1, Step: 0x0
					OneOfOption Option: "64 MB" Value: 1
				End 
			End 
		End 
		GrayOutIf 
			EqIdVal QuestionId: 0x346, Value: 0x0
			SuppressIf 
				EqIdVal QuestionId: 0x37E, Value: 0x0
					EqIdVal QuestionId: 0x37D, Value: 0x2
					Not 
					Or 
				End 
				OneOf Prompt: "Video memory size", Help: "", QuestionFlags: 0x0, QuestionId: 0x9308, VarStoreId: 0x8300, VarOffset: 0xA, Flags: 0x10, Size: 8, Min: 0x1, Max: 0x2, Step: 0x0
					OneOfOption Option: "64 MB" Value: 1
					OneOfOption Option: "128 MB" Value: 2
				End 
			End 
		End 
		GrayOutIf 
			EqIdVal QuestionId: 0x346, Value: 0x0
			SuppressIf 
				EqIdVal QuestionId: 0x37E, Value: 0x0
					EqIdVal QuestionId: 0x37D, Value: 0x3
					Not 
					Or 
				End 
				OneOf Prompt: "Video memory size", Help: "", QuestionFlags: 0x0, QuestionId: 0x9309, VarStoreId: 0x8300, VarOffset: 0xA, Flags: 0x10, Size: 8, Min: 0x1, Max: 0x3, Step: 0x0
					OneOfOption Option: "64 MB" Value: 1
					OneOfOption Option: "128 MB" Value: 2
					OneOfOption Option: "256 MB" Value: 3
				End 
			End 
		End 
		GrayOutIf 
			EqIdVal QuestionId: 0x346, Value: 0x0
			SuppressIf 
				EqIdVal QuestionId: 0x37E, Value: 0x0
					EqIdVal QuestionId: 0x37D, Value: 0x4
					Not 
					Or 
				End 
				OneOf Prompt: "Video memory size", Help: "", QuestionFlags: 0x0, QuestionId: 0x930A, VarStoreId: 0x8300, VarOffset: 0xA, Flags: 0x10, Size: 8, Min: 0x1, Max: 0x4, Step: 0x0
					OneOfOption Option: "64 MB" Value: 1
					OneOfOption Option: "128 MB" Value: 2
					OneOfOption Option: "256 MB" Value: 3
					OneOfOption Option: "512 MB" Value: 4
				End 
			End 
		End 
		GrayOutIf 
			EqIdVal QuestionId: 0x346, Value: 0x0
			SuppressIf 
				EqIdVal QuestionId: 0x37E, Value: 0x0
					EqIdVal QuestionId: 0x37D, Value: 0x5
					Not 
					Or 
				End 
				OneOf Prompt: "Video memory size", Help: "", QuestionFlags: 0x0, QuestionId: 0x930B, VarStoreId: 0x8300, VarOffset: 0xA, Flags: 0x10, Size: 8, Min: 0x1, Max: 0x5, Step: 0x0
					OneOfOption Option: "64 MB" Value: 1
					OneOfOption Option: "128 MB" Value: 2
					OneOfOption Option: "256 MB" Value: 3
					OneOfOption Option: "512 MB" Value: 4
					OneOfOption Option: "1024 MB" Value: 5
				End 
			End 
		End 
		GrayOutIf 
			EqIdVal QuestionId: 0x346, Value: 0x0
			SuppressIf 
				EqIdVal QuestionId: 0x37E, Value: 0x0
					EqIdVal QuestionId: 0x37D, Value: 0x81
					Not 
					Or 
				End 
				OneOf Prompt: "Video memory size", Help: "", QuestionFlags: 0x0, QuestionId: 0x99, VarStoreId: 0x8300, VarOffset: 0xA, Flags: 0x10, Size: 8, Min: 0x0, Max: 0x3, Step: 0x0
					OneOfOption Option: "Auto" Value: 0
					OneOfOption Option: "128 MB" Value: 1
					OneOfOption Option: "256 MB" Value: 2
					OneOfOption Option: "512 MB" Value: 3
				End 
			End 
		End 
		GrayOutIf 
			EqIdVal QuestionId: 0x346, Value: 0x0
			SuppressIf 
				EqIdVal QuestionId: 0x37E, Value: 0x0
					EqIdVal QuestionId: 0x37D, Value: 0x82
					Not 
					Or 
				End 
				OneOf Prompt: "Video memory size", Help: "", QuestionFlags: 0x0, QuestionId: 0x9A, VarStoreId: 0x8300, VarOffset: 0xA, Flags: 0x10, Size: 8, Min: 0x0, Max: 0x2, Step: 0x0
					OneOfOption Option: "Auto" Value: 0
					OneOfOption Option: "256 MB" Value: 1
					OneOfOption Option: "512 MB" Value: 2
				End 
			End 
		End 

Hello.

These settings refer to the same VarOffset 0xA, so they can be considered as copies.

Their visibility is controlled by QuestionId: 0x37D. For example, if 37D is set to 1, only the option for 64MB is available. If it’s set to 5, all memory sizes available. I think the value varies according to the amount of installed ram.

Provided that nvram is not locked, you can try changing VarOffset 0xA in the correspondent VarStore to set a desirable memory size without the need to unlock bios.

1 Like

Thanks for your reply!

If nvram is not locked, can I run the following command in the UEFI shell to set VRAM to 1024MB?

# https://github.com/datasone/setup_var.efi/
# setup_var.efi <OFFSET> <VALUE> -s <VALUE_SIZE> -i <VAR_ID>
./setup_var.efi 0xA 5 -s 8 -i 0x8300

Don’t know if the app accepts values without the 0x prefix, otherwise the command looks good.

There’s a program for the purpose to facilitate formatting, but it’s for windows.

1 Like

Thanks for the project you recommended.
You are right, setup_var.efi says the number value must start with “0x”.

It should be noted that the “VAR_ID” parameter of setup_var.efi is not the value of “VarStoreId” in the exported UEFI IFR data, but may be the hexadecimal value of “VarStore Guid” (which is too long, it is recommended to use the “VAR_NAME” parameter).

In the exported UEFI IFR data, we can find that the value of “VarStoreId” is “0x8300” and the corresponding “Name” value is “GfxInitSetup”.

Therefore, the correct command is as follows.
Unfortunately, the write is rejected in my case.

# read value
setup_var.efi 0xA -n GfxInitSetup
## output: Read value in GfxInitSetup at offest 0xA with 0x1 bytes: 0x00  /* "Auto": 0 */

# write value
setup_var.efi 0xA 0x5 -n GfxInitSetup
## output: Error writing variable:
## output: Error while setting content of variable GfxInitSetup with code ACCESS_DENIED

Is there a way to unlock it?

There is no UEFI Shell option in the HP boot menu. I turned on the computer and pressed F9 to use the boot menu to select the USB device to boot into UEFI Shell (GitHub - KilianKegel/Howto-create-a-UEFI-Shell-Boot-Drive: Howto create a UEFI Shell Boot Device).
Is this correct?

You did everything correct.

I think entering MPM mode may help. Is there anything close in HpSetup.txt?

I exported a configuration file (similar to the HpSetup.txt exported by the BIOS menu) using the HP BIOS Configuration Utility for Windows, which contains the following MPM information.

Manufacturing Programming Mode
	Unlock
	*Lock

When I changed the option to “Unlock” and imported it using the HP BIOS Configuration Utility for Windows, the following error message was prompted, and it seems that this setting cannot be changed.

<BIOSCONFIG Version="">
SPM: Not Provisioned.
BEAM mode: Disabled.
        <SETTING changeStatus="fail" name="Manufacturing Programming Mode" reason="Access denied" returnCode="6">
                <OLDVALUE><![CDATA[Lock]]></OLDVALUE>
                <NEWVALUE><![CDATA[Unlock]]></NEWVALUE>
        </SETTING>
        <ERROR msg="An operation failed" />
        <ERROR msg="BCU return value" real="13" translated="13" />
</BIOSCONFIG>

I rebooted into the BIOS setup interface and backed up the BIOS settings to a USB device (HpSetup.txt), but I did not see the MPM setting option in HpSetup.txt file.
I added the MPM option to the end of the HpSetup.txt file and restored it in the BIOS menu.
Still unable to unlock MPM.

I googled and found a topic called “[Tutorial] Unlock MPM on HP Insyde Bioses (Laptop)”.
I booted into the UEFI Shell and ran the MPM.efi provided there, but it said “HP MPM Protocol is not present”, meaning that the MPM could not be unlocked by this method.

Is there any other way to unlock MPM?

Programming the memory chip with a clean bios image should automatically activate MPM. But within 2 weeks or so bios can lock it back.
This way makes no sense to follow. Because if you have the ability to program chips, enabling MPM is no longer needed to get access to nvram.

Thank you again for your reply.

I will study the relevant information of the community in detail and modify my reply when I make progress.