Can someone make RyzenAdj (or other TDP software) work?"

Which Linux distro are you using?
Fedora
Which release version?
41

Which kernel are you using?
6.12.7-200.fc41.x86_64

Which BIOS version are you using?
03.05

Which Framework Laptop 16 model are you using?
ryzen 9 7940HS

Hi! I love my FW16, but it tends to get too hot at times. I’m looking to undervolt it to help manage the temperature.

Reading some post, like:
https://www.reddit.com/r/AMDLaptops/comments/178k7v5/7840hs_benchmarked_at_various_tdp/?rdt=58059

28-30W its a nice TDP target for this cpu.
I tried RyzenAdj on Fedora 41, and it gave me the following error:

./ryzenadj -i
pcilib: Cannot open /sys/bus/pci/devices/0000:00:00.0/config
pcilib: Cannot open /sys/bus/pci/devices/0000:00:00.0/config
pcilib: Cannot open /sys/bus/pci/devices/0000:00:00.0/config
pcilib: Cannot open /sys/bus/pci/devices/0000:00:00.0/config
pcilib: Cannot open /sys/bus/pci/devices/0000:00:00.0/config
PCI Bus is not writeable, check secure boot
Unable to get MP1 SMU Obj

I tried to change to “power saver” mode, and helps, but the performance of the single core down from 2700~ to 2000~
Currently i have this custom tuned profile: balanced-modified
with this settings:
❯ sudo nano /etc/tuned/profiles/balanced-modified/tuned.conf


[main]
summary=General non-specialized tuned profile with video.panel_power_savings set to 0
include=balanced

[cpu]
boost=0

wich disables the turbo boost, but like the power saver profile the CPU performance down to 2000~.

Has anyone managed to get RyzenAdj working with FW16? Is it possible? Which distro would be best for this? Thanks in advance!

1 Like

Need to run with sudo

Thanks for the answer Artem. Now i have this problem:


❯ sudo ./ryzenadj -i
CPU Family: Phoenix Point
SMU BIOS Interface Version: 15
Version: v0.16.0 
failed to get /sys/kernel/ryzen_smu_drv/pm_table: No such file or directory
failed to map /dev/mem: Operation not permitted
If you don't want to change your memory access policy, you need a kernel module for this task.
We do support usage of this kernel module https://gitlab.com/leogx9r/ryzen_smu
Unable to get memory access
Unable to init power metric table: -5, this does not affect adjustments because it is only needed for monitoring.

Any suggestions? Thanks!

It seems to be working now. Here’s what I did:

sudo nano /etc/default/grub
add iomem=relaxed into GRUB_CMDLINE_LINUX
sudo grub2-mkconfig -o /boot/grub2/grub.cfg
reboot

I will run some tests in Geekbench 6 to observe how the values change with different TDP combinations.

1 Like

why not use the kernel module that was suggested by the program? on x86, iomem=relaxed allows userspace writes to low memory addresses (i think, the addresses would be whatever those used for memory-mapped io are) and thus could weaken system security (for example, iomem=relaxed allows direct access to the firmware flash chip to programs such as flashrom).

If you only need write access to these memory regions for RyzenAdj (and nothing else) then surely it would make more sense to limit the access using the kernel module.

1 Like

The kernel module works for me (running NixOS, not Fedora).

So far only tweaked the TDP to 30W using sudo ryzenadj -a 30000 -b 30000, which seems to work.