Controling amdgpu fan speed

I hope I can get some help here. I jumped to the AMD team recently and decided to buy an AMD Radeon RX 7600. My problem is that I tried to control the fan speeds, because the fans don’t start working until it reaches 60 degrees Celsius. I tried several software options, but none of them worked. I also tried modifying the kernel at boot like this:

amdgpu.ppfeaturemask=0xffffffff radeon.cik_support=0 amdgpu.cik_support=1 amdgpu.hw_i2c=1

This didn’t work either, and it didn’t help the different software programs I installed to control the fan speed.

Then, I decided to go directly to the source. Since everything is a file on Linux, I went to the location where the GPU “settings” are located:

/sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0/hwmon/hwmon2

I tried to modify those options with sudo, of course. When I tried to modify the fan speed with echo "200" > pwm1 , I received the error “bash: echo: write error: Invalid argument.” I know the values can range from 0 to 255 (stopped to full speed). When I tried to modify pwm1_enable from 2 to 1, it didn’t give me an error, but when I checked it again, the value was still 2. Additionally, manually enabling fan 1 with echo "1" > fan1_enable didn’t change anything.

I think it might have something to do with the GPU firmware, since AMD has the 0 RPM enable option by default. In CoreCtrl, I tried to enable the fan curve. It successfully modified the file “fan_curve” located in /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0/0000:02:00.0/0000:03:00.0/gpu_od , but the GPU’s behavior didn’t change.

I was thinking like last resort to just wired the gpu fans to the motherboard and try to control it from there, since I can’t write a python script and monitor the temperature I could try that… but it’s a new gpu and I don’t want to mess around with it.

Thanks in advance.

I have this software on my todo list to checkout that may help, but I have not tried it yet.

Details at GitHub - ilya-zlobintsev/LACT: Linux AMDGPU Configuration Tool

Thanks, LACT didn’t work either. My theory… is related to the graphic’s card firmware. The only solution I see is connecting the fan cables to the motherboard… but I don’t know… that implies a lot of work, soldering and the risk of damaging the fans.

And damaging the gpu card that expects a fan connected…

I’ve been on that journey with my RX 7800 and found LACT to be the only working fancontrol solution (I could find). However LACT only works above the 0RPM limit so it was not immediately apparent that it was working.

A little example what that means: If you apply 60% static fan speed that doesnt mean your GPU will ramp up to 60% now but if you do something so your card goes above the 0RPM temperature treshold the fan speed is now at static 60%.

What I did to get that working:

  1. Install the latest fedora40 release (the testing one)
  2. Open LACT and enable the service (as LACT will tell you) and overclock support
  3. Reboot
  4. Apply a static fan speed for testing
  5. Reboot again (Not sure if necessary)
  6. Launch up a game or benchmark to test
  7. Set a fitting fan curve
  8. Reboot again (Not sure if necessary)
  9. Launch up a game or benchmark to test

This does not solve your problem that the fans only start up from 60 degrees but it is (at least for me) a working fan control software and I no longer have to suffer from AMDs standard fan curve.

Im on a somewhat fresh Fedora 40 with Gnome Desktop.

Thanks, I’m going to try this as soon as possible. My Fedora installation uses the KDE desktop environment. I can spare some space on a secondary disk to test this. If it works, I’ll replicate it on my main Fedora installation.

As you mentioned, the performance bottleneck will likely still be present.

I can’t believe that AMD’s standards for graphics cards seem so restrictive, even though the drivers are open-source. With my previous Nvidia card, I could easily adjust the clock speed (although I never needed to, as it ran perfectly fine and stayed cool).