How to undervolt Ryzen 6900HX

I’m just about at my wits end trying to undervolt the ryzen 6900hx cpu.

amdctl doesn’t support rembrandt (It’s a matter of rembrandt needing higher VID values than amdctl allows)

ryzenadj does, as does ryzen_smu which is required for it, however ryzen_smu inexplicably does not work for me (module loads but it does not actually work) and even if i could get that working, i have no idea how to actually undervolt with it (or if it even can, documentation isn’t very clear on it, but I know there’s a modified version of it used for undervolting the steamdeck out there so surely it can… right?)

which leaves zenstates which has not been updated for 7 years… On the surface it looks like it might work

$ sudo zenstates
usage: zenstates [-h] [-l] [-p {0,1,2,3,4,5,6,7}] [--enable] [--disable] [-f FID] [-d DID]
                 [-v VID] [--c6-enable] [--c6-disable]

Sets P-States for Ryzen processors

  -h, --help            show this help message and exit
  -l, --list            List all P-States
  -p {0,1,2,3,4,5,6,7}, --pstate {0,1,2,3,4,5,6,7}
                        P-State to set
  --enable              Enable P-State
  --disable             Disable P-State
  -f FID, --fid FID     FID to set (in hex)
  -d DID, --did DID     DID to set (in hex)
  -v VID, --vid VID     VID to set (in hex)
  --c6-enable           Enable C-State C6
  --c6-disable          Disable C-State C6

$sudo zenstates -l
P0 - Enabled - FID = 84 - DID = 8 - VID = BF - Ratio = 33.00 - vCore = 0.35625
P1 - Enabled - FID = 5A - DID = A - VID = AB - Ratio = 18.00 - vCore = 0.48125
P2 - Enabled - FID = 50 - DID = A - VID = 97 - Ratio = 16.00 - vCore = 0.60625
P3 - Disabled
P4 - Disabled
P5 - Disabled
P6 - Disabled
P7 - Disabled
C6 State - Package - Enabled
C6 State - Core - Enabled

But far as I can tell, there actually is no documentation, and there doesn’t seem to be a way to see the current VID and core voltage so the point is moot since it provides no way to verify if it is in fact doing anything or not.

This is a right mess, how can it be this hard to lower the voltage by a few millivolts? It was so easy with intel-undervolt…

Have you tried to change the CPU voltage in the BIOS?

1 Like

It’s a laptop, bios doesn’t offer it, it seems like many of the bigger laptop manufacturer like to ship laptops with crippled BIOS where you almost can’t do anything at all in it. It’s probably a nefarious plot to force users to just buy new instead of upgrading or tweaking what they already have.

It can be undervolted quite easily on windows sthough. I’m just surprised that this is so much harder to do on an amd cpu than an intel one considering the reputation of AMD on linux.

To be fair though I can’t exactly blame AMD for every developer working on a utility capable of this has just straight up dropped the ball somewhere around the 5000 series CPUs through no fault of AMD’s own, that said… I d o wonder why AMD doesn’t just provide such a utility officially in the first place.

Have you tried

Several hits on this Reddit search,
as well as on r/linux_gaming.

Does this help in anyway?

Nope, it’s just a ryzenadj gui, and ryzenadj didn’t work.

I wasn’t aware of any way to do this for the AMD mobile Ryzen parts, even for Zen 3 (5000 series). I just don’t think it’s supported at all.

It is, I can do it on windows.