Should I Undervolt the Ryzen 9 7940HS?

I’m stuck on an overnight DC flip at work, so thought I would mess a bit with ryzenadj to see if it works. I’m doing this on Arch so it was easy to install the required packages from the AUR (i use “yay”). I’m on a Ryzen 9 7940HS.

  1. Install kernel headers if not already:
    pacman -S linux-headers
  2. Kernel module to expose the System Management Unit:
    yay -S ryzen_smu-dkms-git
  3. Install Ryzenadj:
    yay -S ryzenadj
  4. Load the kernel module:
    modprobe ryzen_smu

Test ryzenadj. This is non-permanent so you can’t brick your laptop AFAIK. Type ryzenadj --help for a list of options available. Of interest should be “–set-coall” and “–set-cogfx”. I found setting anything less than -20 for set-coall causes my laptop to promptly powercycle when I try to tax the cpu so I know it does something :stuck_out_tongue:
I set the following and it’s working fine so far:
ryzenadj --set-coall=-15

If you plan to use this permanently, you would need to set up systemd services/targets and udev rules to keep your setting applied. At least on the steam deck, these are reset when power source changes and wake/sleep cycles.

Just sharing for any who would like to mess around. To be honest, I probably won’t bother with it, unless the gpu one works and provides a good curve undervolt. I’ll leave that for another day.

7 Likes

Here for the updates

I bet Framework’s software and firmware have been a mess, but it’s working on them | Ars Technica is related. Undervolting is very likely a lower-priority feature, especially since it affects only a subset of Framework AMD owners. So I wouldn’t be surprised if it’s not officially addressed for quite awhile while basic functionality and security updates finally get back on track for all their systems. Maybe not even until 2025, who knows.

That article is pretty damning. Bad firmware/software support from the vendor (in this case Framework), will and has many times in the past completely sunk products. The Razer Forge TV comes to mind, and is one reason I avoid Razer’s products in general. Sounds like Framework didn’t even have many, if any, in-house firmware developers. Big no-no. Lets hope it DOES improve in the future.

There are quite a few outstanding bugs on the Framework 16 as it stands. Lets see when they get to fixing them.

Regarding overclocking/undervolting, don’t expect them to ever officially support it. Lets just hope they don’t spend any of that limited software developer resources to actively try to prevent it.

The fact that it never saves from boot to boot is a plus for me. I accidentally set my igpu clock to 4000 mhz once, and luckily as I hadn’t saved that to my auto applying profile, it just bluescreened and restarted. You can set profiles to activate when you plug in power, and when you are running off of battery. If you set it to auto launch on boot up it launches minimized with no icon on the taskbar. The only part of the app I do not like is if I want to make changes, you have to kill the app using task manager, and if you minimize the application it disappears from the taskbar. They also recently added iGPU curve optimizer and that has allowed me to get better graphics scores by bumping up the voltage to the iGPU when plugged in. I say its worth a go if you have your 16 already, as it has worked flawlessly in my experience.

1 Like

If you can auto-apply it on start that’s definitely better. Batch 11 here, looking forward to my FW.

We now have a dedicated team of engineers at our manufacturing partner and a set of internal stakeholders focused on ongoing software updates for all of our products, going back to our original Framework Laptop with 11th Gen Intel Core.

They responded to these issues this morning! Looks like firmware updates will be much more frequent now!

2 Likes

Ars so did a big article on it Framework’s software and firmware have been a mess, but it’s working on them | Ars Technica

I’m hopeful, but cautious because this is a BIG challenge, and they’re having to deal with vendors, which can have their own priorities. If they can get this solution working OK, hopefully they can grow enough to bring most of this in house, so their priorities can be put front and center all of the time.

yeah I saw the article, but it was written before FW’s update late this morning, no?

It was indeed, but published only a day or two I think, and they did talk to Framework, and have the basic outline of what FW posted this morning.

1 Like

Ah, fair enough. We’ll see then! I’m fairly hopeful myself, but I understand the caution

Considering I’m in Batch 12 for the FW 16, I’m stirring just fine in general, for the moment. And I am hopeful, I belive the FW team honestly wants to try and change things. But until we see meaningful releases over time… shrug They are a small company and have had growing pains. It happens, but that they are being more transparent and open with both the reasons, the problems, and their attempted solutions is a great thing.

3 Likes

You just reposted the same article that was posted 5 posts above you that we were all talking about already.

Yeah that’s pretty awesome. Lets hope they have commitment behind that with actions. It’s looking better at least.

All this stuff about firmware is good, but I honestly want to hear THEIR plans as to whether they want to allow undervolting.

Not like I’m gonna ask directly, but still

Just started testing this offset on mine a few hours ago, and can confirm that it also does something on mine. Managed to go from ~4.3-4.5Ghz all core load with s-tui, to sitting happily at 4.7Ghz at a -25 offset. (s-tui tends to have lower clocks than games, I’ve seen those sit around 4.9Ghz all cores, but those are definitely less taxing on the CPU) Didn’t stop my system from being locked to 100c, but I suppose I could also just lock the tctl max with the same util. (Waiting on a ticket to see if my cpu is having another issue however, so I’m likely not going to put as much effort trying to tune this this way) Did manage to see it hit 4.8Ghz all cores at a -35 offset on mine, before it promptly rebooted :laughing:

That’s the purpose of undervolting, higher performance at a given power/thermal

For some it is, back in the day I went the opposite route, undervolting to keep a specific performance target while increasing the battery life/reducing noise. My old AMD FX 6300 and Intel 8750H were happy undervolters, managed to gain about thirty minutes of average battery life for the latter for campus usage back in the day. Sadly over half a year later, that undervolt became unstable, and had to reduce the amount.

I know this has been dead for awhile, but I finally spent some time trying to play with it in linux, UXTU works on windows, got awesome results with the per-core curve optimizer, ryzenAdj doesnt seem to like the framework for whatever reason, It has curve optimizer settings, but it takes unsigned ints, and doesnt have a way to check settings, so I am not confident using it and getting the right results, amdctl doesnt do curve optimizer, so I used it to change the vids of the different pState’s, I went conservative on them as I don’t know exactly how they pertain to the adjustments of the curve optimizer, having a better way to check real core voltages would make it easier, or just having uxtu for linux, but I am hoping putting my findings and progress will help and encourage others to post their own and progress it some.

2 Likes

Interesting, I have used ryzenAdj to set my stapm limit and the undervolting on my 7940hs and it has worked great. UXTU worked for me at the start but after trying to change my wattage with Smokless umaf UXTU did not function anymore, while ryzenAdj does still. Just my $0.02