Improving fan noise on AMD GPUs using software only

My RX 580 has been giving me trouble recently. There is now an audible clicking when its fans spin up from zero RPM, and unfortunately, this happens a lot in desktop use.

Not wanting to invest in an aftermarket fan just yet, I looked for ways to manage the fan RPM curves while overriding the GPU BIOS and I found amdgpu-fan.

I prefer this to the other solutions out there for a few reasons:

  • Doesn’t need (or even have) a GUI
  • It’s just a small Python script
  • The config file format uses nice human-readable numbers (percentages, not absolute values)
  • The file’s a simple bit of YAML
  • The tool seems to rather smoothly calculate curves between the stop points you configure

To prevent the clicking noise when the fan engages, I set it to run at 35% RPM even as a baseline, and not ramp up until the GPU hits 60 degrees. At this setting, I can’t hear the fans during desktop use; goal accomplished.

My config for an XFX Radeon RX 580 GTS XXX Edition looks like this:

speed_matrix:
- [0, 35]
- [30, 35]
- [45, 35]
- [50, 35]
- [60, 40]
- [70, 45]
- [75, 52]
- [80, 78]
- [92, 100]Code language: YAML (yaml)

I also slapped a systemd service into /etc/systemd/system/amdgpu-fan.service to activate on boot:

[Unit]
Description=amdgpu fan controller

[Service]
ExecStart=/usr/local/bin/amdgpu-fan
Restart=always

[Install]
WantedBy=default.targetCode language: TOML, also INI (ini)

So far, I’m happy!

Leave a Reply

Your email address will not be published. Required fields are marked *