Tech News
← Back to articles

Show HN: My GPU Fan Saga – A DIY ATX Fan Controller

read original related products more articles

Having a problem-solving mindset is incredibly valuable and rewarding, especially when it leads to exciting DIY adventures. My latest experience with a noisy GPU fan turned into just such an opportunity. It guided me through fascinating explorations involving ATX power, MOSFET motor drivers, Pulse Width Modulation (PWM), ATTiny85's bit-banged 1-wire bus, and a DS18B20 temperature sensor. While many ready-made solutions exists, this project provided me with invaluable learning and immense satisfaction. 😊

Background

The GPU in question isn't particularly high-end, nor is the use case too demanding. I use this VisionTek Radeon RX 550 SFF GDDR5 mainly because it supports Wayland on Linux. Nvidia, on the other hand, has great support for Linux, only if you're running CUDA. So, my setup has been to use Nvidia for CUDA/ML related tasks and AMD for Wayland. But last winter, my AMD graphics card decided to annoy me with a high-pitched whine, a clear sign that the fan was nearing its end. To prevent further damage (or perhaps just out of sheer annoyance), I swiftly snipped the fan's power cable. Silence returned, and through the cold months, the GPU seemed perfectly fine without active cooling.

That blissful silence lasted until May. With rising temperatures, my GPU began to complain again, this time visually. The screen started having episodes of random flickers and periodic blackouts. At idle, the GPU temperature hovered around 80 °C, clearly unhealthy no matter how modest its workload. It was obvious that a solution was needed, preferably one that wouldn't break the bank.

Solution Part 1: Using an Old Fan

Being a long-time tinkerer, I typically have random spare parts lying around. Among these was a small 12V DC brushless fan from a past project. Unfortunately, the connectors didn't match. Undeterred, I stripped a spare Molex connector and wired it up. If you're curious, Wikipedia offers great documentation on Molex connectors pinout and I have confirmed them with my own measurements as well. Here is a quick reference on the pinout:

Pin Color Type Pin 1 Yellow +12 V Pin 2 Black Ground Pin 3 Black Ground Pin 4 Red +5 V

I mounted the fan onto the GPU with some double-sided tape, right under the defunct fan. Initially, it seemed perfect: the GPU temperature dropped significantly; hovering around 40 °C even under load. But a new issue emerged: the fan ran at full speed constantly, turning my workspace from a serene environment back into a slightly noisier one.

Solution Part 2: Pulse Width Modulation (PWM)

PWM is used everywhere. From dimming LED lights and creating powerful yet efficient audio amplifiers to voltage regulation for large power convertors. It's a very simple concept build on many complex ideas. Sure, I could have powered the fan from the 5V rail of the Molex connector, but this brought two issues: first, the fan required a higher voltage to initially start spinning; second, even if it did run at 5V, the speed might be insufficient to keep the GPU cool enough.

... continue reading