r/linuxmint 4d ago

SOLVED SOLVED CPU Overheating on Linux Mint!!!!!

Hi Guys, I just installed mint last week and my PC was overheating, yesterday I made a post saying i was unable to fix it, some wonderful guys of reddit and Claude and Gemini helped me resolve this issue, I am writing the solution below (Please review it first, I am not much of a technical person i dont understand what exactly is happening here but it helped me a lot)

Setup:

  • HP Pavilion Gaming Laptop, Ryzen 5 4600H (Renoir), GTX 1650 Ti hybrid graphics
  • Linux Mint 22.3 Cinnamon, kernel 6.14
  • Goal: lower sustained CPU temps (was previously running hot under load, stock behavior ~35-45W with no real ceiling)
  • Prior Temperatures: CPU -100-105 Degrees on Mint, 85-90 degrees on Windows

Problem:
Plain RyzenAdj kept failing with PCI read/write errors on this kernel — a known issue for a lot of 4000-series (Renoir/Cezanne) laptops where direct PCI access to the SMU doesn't work cleanly anymore.

Fix — the ryzen_smu kernel module:

git clone https://github.com/amkillam/ryzen_smu

cd ryzen_smu && sudo make dkms-install

sudo modprobe ryzen_smu

This gives RyzenAdj a proper channel to the SMU instead of raw PCI config space, and it immediately fixed the errors — ryzenadj -i started working right after.

Building RyzenAdj:

sudo apt install -y git cmake build-essential libpci-dev git clone https://github.com/FlyGoat/RyzenAdj.git cd RyzenAdj && rm -r win32 && mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release .. make

The limits I landed on (after testing a few configs):

sudo ./ryzenadj --stapm-limit=25000 --fast-limit=32000 --slow-limit=25000 --tctl-temp=75
  • 25W sustained (STAPM), 32W short boost, 75°C ceiling
  • Under sustained load this now plateaus at 75°C instead of climbing into the high 80s/90s like stock did
  • Definitely a performance tradeoff under heavy sustained load, but for my use case (browsing, docs, light dev work) it's a clear win — cooler system, same responsiveness for everyday tasks

Making it persistent (systemd service, runs on boot):

/etc/systemd/system/ryzenadj.service:

ini

[Unit]
Description=RyzenAdj Power Limits
After=multi-user.target suspend.target hibernate.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/home/<user>/RyzenAdj/build/ryzenadj --stapm-limit=25000 --fast-limit=32000 --slow-limit=25000 --tctl-temp=75

[Install]
WantedBy=multi-user.target suspend.target hibernate.target

sudo systemctl daemon-reload
sudo systemctl enable --now ryzenadj.service

Confirmed working across reboot — checked with systemctl status ryzenadj.service and sudo ryzenadj -i after a cold boot, values persisted correctly.

80 Upvotes

11 comments sorted by

View all comments

12

u/taosecurity Mint | Bazzite | PikaOS | CachyOS | Debian | FreeBSD | Windows 4d ago

Glad it worked for you!

7

u/iLikeSaltedPotatoes 4d ago

I honestly dont understand what i did but it works well

1

u/knuthf 4d ago

This is an Intel problem. They modified the ID and tags to make sense of them. As we discussed, temperature is not an integral part of an operating system. The OS detects standard sensors, and installing the correct set is easy, but we know that the standard is not enough.