Skip to content

Instantly share code, notes, and snippets.

@SmokelessCPUv2
Last active February 2, 2024 08:36
  • Star 18 You must be signed in to star a gist
  • Fork 4 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save SmokelessCPUv2/8c1e6559031e199d9a678c9fe2ebf7d4 to your computer and use it in GitHub Desktop.
6 line of code to unlock steam Deck BIOS
#include <sys/io.h>
void main(){
ioperm(0x72,2,1);
outb(0xF7,0x72);
outb(0x77,0x73);
}
@Shivox
Copy link

Shivox commented May 22, 2023

Just bear in mind, that using the unlocked section to set TDP won't work, it will always get capped at 15w.
In order to override that you have to use Smokeless UMAF after unlocking the BIOS using this method.

@Falkentyne1
Copy link

Falkentyne1 commented May 30, 2023

Just bear in mind, that using the unlocked section to set TDP won't work, it will always get capped at 15w. In order to override that you have to use Smokeless UMAF after unlocking the BIOS using this method.

It works just fine. I've gone to as high as 12W+ on the GPU (and overheating the deck) with this method.
You MUST use Powertools and set both PPT's to 18W, because there is also an "OS" limiter, and the lowest limiter somehow seems to always win.

I do NOT know about windows versions of this.

Remember to set the two PPT's and the global TDP to 18000 in smokeless as well.

If you want absolutely NO throttling, set Power Limiter to "Disabled" but you will gain at most 1-2 FPS from doing this and you will overheat FAST without custom cooling heatsink mods. And on battery power, it will turn off the deck instantly.

@aviallon
Copy link

If you want to build this on the steam deck, just pacman -Sy glibc.
It will add the missing includes.

@parkerlreed
Copy link

Keep in mind do NOT run that if you are on Main currently.

Main repo packages have updated GLIBC and Plasma so that will wreck running anything due to the GLIBC mismatch.

@AAGaming00
Copy link

AAGaming00 commented Jun 26, 2023

docker run --name deck-bios-unlock-builder -it --rm -v ./:/src ghcr.io/steamdeckhomebrew/holo-base sh -c "cd /src && gcc -O1 SD_Unlocker.c -o SD_Unlocker" to build in docker

@aviallon
Copy link

aviallon commented Jun 27, 2023

@parkerlreed ouch, that is an issue. Do you know if there exists up-to-date repositories targeting main?

I hope that one day they switch to something NixOS based.
This kind of in-depth customisations to the OS would become much easier.

@syberphunk
Copy link

This gets linked to a lot. Before you tinker with your steam deck bios, make sure you save a backup and store that off your steam deck. That way you can restore it with a chip programmer if you need to. The command to do so is:

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

Which will store the backup in the file biosbkp.rom in your /home/deck/ folder.

@parkerlreed
Copy link

@parkerlreed ouch, that is an issue. Do you know if there exists up-to-date repositories targeting main?

I hope that one day they switch to something NixOS based. This kind of in-depth customisations to the OS would become much easier.

The repos are up to date. It's the actual base rootfs release not synced with the repos. So it's the usual wait of Valve time...

@ginpigin
Copy link

how to rollback?

@ginpigin
Copy link

tdp change not working

@smerschjohann
Copy link

compile with gcc -O1 SD_Unlocker.c -o SD_Unlocker Run with

sudo ./SD_Unlocker

Boot to Steam Deck OG Bios and Enjoy

@SmokelessCPUv2 is there any way to revert these setting to the default one?

@SmokelessCPUv2
Copy link
Author

SmokelessCPUv2 commented Aug 5, 2023

compile with gcc -O1 SD_Unlocker.c -o SD_Unlocker Run with
sudo ./SD_Unlocker
Boot to Steam Deck OG Bios and Enjoy

@SmokelessCPUv2 is there any way to revert these setting to the default one?

the change go away with a CMOS reset...
or just edit the code to have outb(0x00,0x73); as last line instead of outb(0x77,0x73);

@vylestar
Copy link

Anyone know if this works on 114?

@corpeder
Copy link

corpeder commented Sep 9, 2023

works on 117

@NikoCloud
Copy link

Any news on getting TDP working again?

@Peppercorn27
Copy link

docker run --name deck-bios-unlock-builder -it --rm -v ./:/src ghcr.io/steamdeckhomebrew/holo-base sh -c "cd /src && gcc -O1 SD_Unlocker.c -o SD_Unlocker" to build in docker

Works on 116 (F7A0116), built with docker

@Falkentyne1
Copy link

How do you get SD_Unlocker working in bios 118?

And what exactly is "docker"?

I know nothing about linux. typing this command " docker run --name deck-bios-unlock-builder -it --rm -v ./:/src ghcr.io/steamdeckhomebrew/holo-base sh -c "cd /src && gcc -O1 SD_Unlocker.c -o SD_Unlocker" to build in docker " in the console says "command not found".

The old SD_Unlocker that worked in bios 116 no longer works in .118, and thus smokeless_UMAF doesn't show any menus at all.

Need some help here :(

@mytrixxx
Copy link

Caution. Not working on 118.

@Falkentyne1
Copy link

Yeah I'm trying to find a way to go back to 116.
I may have found a way.

The command posted on this link:

ValveSoftware/SteamOS#1138

I tried changing the file name here from 0110 to 0116, but it said the file was not found.

sudo /usr/share/jupiter_bios_updater/h2offt /usr/share/jupiter_bios/F7A0110_sign.fd -all

sudo /usr/share/jupiter_bios_updater/h2offt /usr/share/jupiter_bios/F7A0116_sign.fd -all

(file not found, since I was not on the OS that included 116, Main 3.6 and 09182023 was on 118.

So what I did was, I went from the Main channel to Beta candidate, which is still on 3.5 and 09152023.1000, which has BIOS 0116,
then i went to desktop mode and ran this command again.

sudo /usr/share/jupiter_bios_updater/h2offt /usr/share/jupiter_bios/F7A0116_sign.fd -all

Which then flashed the included BIOS and now I'm back on 116.

@waldoinc
Copy link

Just wanted to post this, I am on the main update channel. BIOS 118 just updated on my Deck, and has built in undervolting options. It was noted in the update notes for 3.5, but just now showed up after the BIOS update.

@syberphunk
Copy link

compile with gcc -O1 SD_Unlocker.c -o SD_Unlocker Run with

sudo ./SD_Unlocker

Boot to Steam Deck OG Bios and Enjoy

With BIOS 118 this executes, the options no longer appear in the Steam Deck BIOS or via https://github.com/DavidS95/Smokeless_UMAF

118 is available here https://gitlab.com/evlaV/jupiter-hw-support/-/blob/f79ccd15f68e915cc02537854c3b37f1a04be9c3/usr/share/jupiter_bios/F7A0118_sign.fd

If you want to have a look @SmokelessCPUv2

Valve have also integrated their own 'undervolt' options for SOC, GPU and CPU, with a limit of -50 with the form they have in the BIOS, and also they still have the TDP limit on the form of 10000 to 15000.

@l33tm4st3r
Copy link

l33tm4st3r commented Sep 19, 2023

Hi @SmokelessCPUv2 I uploaded a fw dump from flash (Last fw 118 )

https://ufile.io/8jg114lv

@SmokelessCPUv2
Copy link
Author

Sorry guys, but I don't plan to play the cat and mouse game with valve

@l33tm4st3r
Copy link

Np dude. Thaks anyway :)

@mdPlusPlus
Copy link

mdPlusPlus commented Oct 25, 2023

@SmokelessCPUv2 @DavidS95 That's unfortunate to hear. I'm sure the BIOS API (or whatever it's called) will stabilize soon, don't you think?
Would you consider updating your UMAF repo then?

@CryoByte33 Any idea how to undervolt the Steam Deck for the time being?

@CryoByte33
Copy link

The simple answer is either ONLY undervote on 118, or downgrade to 116 and use Smokeless as before, at least to my knowledge.

@mdPlusPlus
Copy link

mdPlusPlus commented Oct 25, 2023

undervolt on 118

I wasn't even aware that undervolting is now part of the official UEFI. That's really cool!

Edit: Apparently there's a bug in 118: https://www.reddit.com/r/SteamDeck/comments/16ml5xn/bios_118/k1e6i5m/

@pparmy
Copy link

pparmy commented Oct 26, 2023

The simple answer is either ONLY undervote on 118, or downgrade to 116 and use Smokeless as before, at least to my knowledge.

why only undervolting? I seem to still have my overclock still set though I haven't gone to check if that is actually the case.

@CryoByte33
Copy link

The simple answer is either ONLY undervote on 118, or downgrade to 116 and use Smokeless as before, at least to my knowledge.

why only undervolting? I seem to still have my overclock still set though I haven't gone to check if that is actually the case.

118 has undervolting settings built in by default, but overclocking isn't and (to my knowledge) Smokeless can't interface properly with 118.

@SmokelessCPUv2
Copy link
Author

@SmokelessCPUv2 @DavidS95 That's unfortunate to hear. I'm sure the BIOS API (or whatever it's called) will stabilize soon, don't you think? Would you consider updating your UMAF repo then?

No to both,
I don't have a SD, so I don't have any personal reason to do it, and getting 118 support require more effort than 115 and I'm not willing to do it.
115 was done just for fun, doing for 118 is a waste of time

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment