How to Unlock the LCD and OLED Steam Deck BIOS for Increased TDP and Other Features

It feels like a very long time ago when all we had to do to gain additional features in the Steam Deck bios, was to run a compiled C program.

There is a lot of detail in the original blog post I wrote on this, and you should read it.

Since then as a community we have found ways to recover the Steam Deck BIOS, whether that is through binary editing, or looking through code to find the recovery mechanism.

Valve have also, very clearly and evidently, prevented people from tinkering with the Steam Deck BIOS. I have no doubt that the vast majority of people that found out how to unlock these options, in the innocent pursuit of gaining more performance, bricked their Steam Deck by going too far, and then pulled Valve up on their RMA and warranty claim to have it repaired. A lot of these guides did not cover how to backup your BIOS, and that you would need a chip programmer to recover from a bricked condition with the Steam Deck. While we do have a crisis mode that can recover from settings the majority of the time, there are still occasions when it will and cannot recover.

Though we now have a method of getting access to these forms again, it works on each current Steam Deck BIOS version, F7A0131 and F7G0109.

Before I go into detail about how we can get these options back into your BIOS, I am going to say the same again.

Backup your Steam Deck BIOS Before Tinkering With It

Boot your Steam Deck, press the STEAM button, and choose the Power option. If you have Family View turned on, then enter the pass code. Then do it again and choose Switch to Desktop.

When you are in the desktop, open up a Konsole terminal and type in the following:

sudo /usr/share/jupiter_bios_updater/h2offt /home/deck/biosbkp.fd -O

Steam Deck BIOS Backup command

This will backup your BIOS in your home folder. If you do not know what ‘sudo is, then you should read this wiki article: https://wiki.archlinux.org/title/sudo

To use the ‘sudo’ command, before the ‘h2offt’ backup program command, you have to set a password for your ‘deck’ user account in linux. You do this from a konsole terminal by typing:

passwd

Be careful what you type, and make a note of the password. It will not show you what you are typing while you are typing it.

Then, make sure you copy and backup the file ‘biosbkp.fd‘ somewhere safe, that is not on your Steam Deck, and do not share it with others.

I have Backed up my BIOS – Can I Unlock the Options Now?

I thank SmokeyCPU for the tools used for this, and to ‘vinegar_sigma’, ‘sub5ist’ and mytrixx for sharing their knowledge, time, effort, and being interested (that goes a longer way than you think). We have this thanks to each of them and ‘vinegar_sigma’ for putting it together.

You will need either a Steam Deck Dock, or a USB-A to USB-C adapter for your USB Storage, or a USB-C capable USB Storage for this to work.

Let us go through the steps that you need to do to prepare

  1. Format a USB storage drive to FAT32
  2. Download this ZIP file if you have an LCD Steam Deck, or this ZIP file if you have an OLED Steam Deck
  3. Extract the files to your USB storage drive
  4. For simplicity, put the files in the root directory of your drive, rather than in the sub folder

These files will now be on your USB Storage:

  • runtime-patcher.efi
  • cbs.efi
  • pbs.efi
  • srep_config.cfg

You require the above stated files as a minimum. You will also have a couple of additional files:

  • _readme.txt
  • _timings.jpg

The readme.txt gives you similar steps and instructions that you will find in this blog post, along with credits. It also covers a few caveats about the alterations.

Sub5ist tested these settings presented in the timings.jpg to tweak and alter RAM timings for the OLED Steam Deck in hexadecimal, and they helped improve system performance and frame-rate. You can see the results of these tweaks in a geekbench report for your comparison.

Note:

You will note that I have uploaded a zip file for the OLED Steam Deck, and for the LCD Steam Deck. You could use these interchangeably.

From various feedback I had included a cbs-full.efi in the LCD/OLED 7zip file, as the file I was using worked without crashing, but the one in the zip file had problems for people. This is now removed from the zip file, if you want you may try these that are from other versions of the BIOS for OLED and LCD.

The hanging/crashing may be because it is attempting to save to other form(s) or varstore(s) that need to be recovered/reinstated. So therefore, use it at your own risk. Not all features may currently be supported on the ‘full’ form, but some may be, by all means provide any feedback on your findings while we all look into it.

Booting into the BIOS

There are a few simple steps to this process now that we have the USB Storage setup. It matters which order you do them. Here they are:

  • Turn off your Steam Deck
  • Connect your USB Storage to the Steam Deck
  • Press the Volume + and Power buttons together
  • Navigate the Steam Deck menu with the directional pad
  • Press A on “Boot From File
Steam Deck BIOS Options
Steam Deck BIOS Options

You should now see a list of your efi options.

File Explorer in Steam Deck BIOS
File Explorer in Steam Deck BIOS

This may be different on your Steam Deck, if you dual boot with Windows, have a number of different Operating Systems installed, etc. If you have not labelled your USB Storage, you should see it listed here as ‘NO VOLUME LABEL’, or as your label if it has it.

Loading the Overrides

  • Use the directional pad to highlight your USB Storage
  • Either press A or press Right on the directional pad

Now we should see a list of the files:

Steam Deck BIOS File Explorer, efi files
File Explorer, efi files

You may notice that I have two ‘cbs.efi’ files here, that is because I have two different versions on the same USB Storage. You will see the file:

  • cbs.efi which is the latest neutered form from the latest bios

Now we perform the following steps:

  • Use the directional pad to highlight runtime-patcher.efi
  • Press the A button

This will run SmokeyCPU’s Smokeless Runtime EFI Patcher. I will go into detail about what it is doing later.

Smokeless EFI Patcher
Smokeless Runtime EFI Patcher

The system then returns you to the file explorer.

Note: Only do one of the following depending on which form you want to load:

If you want to load the AMD CBS form:

  • Use the directional pad to highlight cbs.efi
  • Press the A button

A full cbs.efi is known to crash and hang the Steam Deck to make it unresponsive when trying to save and exit. This may be because other overrides or edits need to be made. Use it at your own risk.

If you want to load the AMD PBS form:

  • Use the directional pad to highlight pbs.efi
  • Press the A button

The AMD CBS form has the RAM timings and CPU and GPU overclock settings in it. The overclock settings link with those exposed in the Advanced form in the BIOS.

Note: These will not display text when they are loading.

Now press the B button to quit out of the menu, and select the Setup Utility with the A button.

Now, you should see that the AMD CBS menu has loaded, and under the Advanced menu, you can also change the Fast PPT Limit, and Slow PPT Limit to higher than the stated 15000mW.

Fast and Slow PPT Limits
Fast and Slow PPT Limits Raised

Note: You do not need Smokeless UMAF, you are directly raising the limits above 15000mW

When you boot into Steam OS, you can run the following commands from a Konsole Terminal to check that these limits are raised:

sudo cat /sys/class/hwmon/hwmon6/power1_cap_default
sudo cat /sys/class/hwmon/hwmon6/power2_cap_default

or

sudo cat /sys/class/hwmon/hwmon4/power1_cap_default
sudo cat /sys/class/hwmon/hwmon4/power2_cap_default

These values are read from what the BIOS reports, and you cannot typically change them from within SteamOS. You will still be limited if you do not change power1/2_cap_max – these are reinforced to be 15w by the performance tab in SteamOS on game load. You can set the value manually or use PowerTools in the Decky plugin. There is more information on this in my other blog.

You will also see that the AMD CBS menu is accessible from the left hand side menu.

AMD CBS in Steam Deck LCD Bios
AMD CBS Menu in the Steam Deck LCD Bios

As a reminder, you can try loading the LCD Steam Deck cbs.efi on the Steam Deck OLED, but it may hang or crash your Steam Deck, forcing you to power it off. Any changes made may not be correct for the Steam Deck OLED, though they should still work. We believe this may be related to the BIOS VarStore and it requires some investigation.

The Steam Deck OLED BIOS also introduced the ability to overclock the GPU and CPU in BIOS F7G0109 that is also accessible in the F7G0110 BIOS via the Advanced menu. The Steam Deck LCD BIOS recently introduced thr same ability in BIOS F7A0131. You should update to this BIOS to take advantage of the ability to increase the TDP with the efi runtime patcher.

Note: If you want to alter or change any settings again, you must follow the steps to load the .efi files from the USB Storage again. These are temporary changes to load the menus, but the menus make permanent changes that are only cleared by a Valve BIOS update or Crisis Mode recovery.

Help, I Need to Recover My Steam Deck!

Try as we may, it is still possible to break your Steam Deck by changing settings in these menus. If you have a BIOS backup you can recover using it. Or you can recover using Crisis Mode.

Please refer to my other blog post and search through it for Crisis Mode recovery.

Where Are These EFI Files From?

You are probably wondering how this is done, and where the .efi files are from? The simple answer is: they are from the Steam Deck BIOS released by Valve, and they are from SmokeyCPU that has been configured by ‘vinegar_sigma’.

The Steam Deck BIOS files are all available from Valve directly in their repositories, these have been mirrored by the evlaV repo, but they are also directly available in locations such as:

https://steamdeck-packages.steamos.cloud/archlinux-mirror/jupiter-main/os/x86_64

Here, we have the ‘hardware support files’ which are named something like:

jupiter-hw-support-xxxxxxx.x-x-any.pkg.tar.xz or

jupiter-hw-support-xxxxxxx.x-x-any.pkg.tar.zst

Where “xxxxxxx” is the date, in the format of yyymmdd (year, month, date) and then a version. When you extract these files, you get the BIOS update files that your Steam Deck downloads, and these files go way back in versions.

You can also find your Steam Deck BIOS in the following folder, both the LCD and OLED BIOS are stored here:

/usr/share/jupiter_bios/

That does not entirely answer the question though, you see the Steam Deck uses a UEFI BIOS, and these are almost becoming like a ‘Real Time Operating System’ themselves, they have drivers, configurations, and a virtual ‘cmos’ or ‘nvram’ is used with an embedded micro-controller (as it is in the Steam Deck) where these settings are stored.

To dissect these BIOS files, we need to understand the file and their structures, and thanks to some open source tools such as UEFI Tool, we can open them up.

UEFI Tool with the Steam Deck OLED BIOS F7G0005_sign.fd

Inside the UEFI BIOS we have what are called ‘forms’, along with drivers and other files. What we are interested in are the ‘CBS’ and ‘PBS’ forms, and using the search capabilities in UEFI Tool we can find these forms, and it’s the ‘PE32 image section’ we are interested in for it to work with Smokeless EFI Runtime Patcher.

When we store these .efi files on the USB Storage, and load them after running the Smokeless EFI Runtime Patcher, we allow the forms to load and override what is already loaded by the BIOS (or not loaded as the case may be).

Therefore, if you do not trust what is in the zip file here, you can go and find your Steam Deck BIOS and extract these forms yourself, from the current version or previous, and load them up.

What About Smokeless EFI Runtime Patcher?

SmokeyCPU wrote a tool that allows for two fundamental components:

  • We unlock the forms that we want to show
  • We load, or reload the forms so we can change the contents

If you open up SREP_Config.cfg you will see exactly what we are doing with this tool, once you open the file up you will see some commands, so to explain what they do:

  • Open the H2OFormBrowserDxe form
  • Patch the H2OFormBrowserDxe so that it will enable AMD CBS and AMD PBS
  • Open the SetupUtility form
  • Patch the SetupUtility so that it allows for a higher TDP for PPT Fast and Slow to be set
  • Load the SetupUtility from FV
  • Open the SetupUtility form

The patches refer to the UEFI Forms that we want to enable in hexadecimal, these are the hexadecimal conversions of the UEFI Form GUID as seen in UEFI Tool, and they are an alternate method of performing the SmokeyCPU unlock that we ran as a compiled executable.

We also then patch the SetupUtility form, because Valve hard-coded a limit of 15000mW for the maximum Fast PPT, and Slow PPT. There is a caveat with this, for some reason insydeh2obios is compiled little endian, that means the bit pattern is reversed. This means that the hexadecimal patch in the code also had to be reversed, referring to 15000 as 983A, as opposed to 3A98. The rest of the hexadecimal in the line is kept ‘as it is’ in the form.

If you want to align and see how these hexadecimal modifications align with the .efi files, then use UEFITool to extract the forms from the BIOS and use HxD to search for the values and you will see where the amendments are made for yourself.