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]
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.target
So far, I’m happy!