Annoyed by bursty fans and bloated apps, engineer writes software in Python to better control his NZXT Kraken AIO

NZXT Kraken X53
(Image credit: NZXT)

Software designer Cal Bryant created a PC cooling app for his liquid-cooled Ryzen 9 5950X PC from scratch using Python. With his app, he was able to fine-tune his Kraken X53's pump and fan speed and run both a lot more efficiently, making the cooler run significantly quieter compared to running the fan controls through the motherboard BIOS/UEFI.

The origins of Bryant's home-brewed Python cooling app started when he upgraded his personal system from a Ryzen 7 3700X to the much more potent Ryzen 9 5950X. According to Bryant, the extra cores nearly doubled the heat output of his system, forcing his NZXT Kraken X53 240mm AIO liquid cooler to work much harder. Consequently, the CPU swap also made his cooler much louder to deal with the extra heat output. On top of this, the fans were also spinning up and down erratically, due to Zen 3's notoriously spiky thermal output.

Bryant found that the Kraken's cooler is not optimized out of the box for Ryzen CPUs, causing the fans to spin up and down erratically. The Kraken's pump speed is based on liquid temperature, while the fans are based on the CPU temperature, something Bryant found unattractive. (We've also complained about this our own cooler reviews.)

To fix this problem, Bryant decided to build his own cooling app that could eliminate the problem and give him more granular control over his pump and fan speeds. Additionally, he doesn't like how bloated traditional fan software normally is, giving him even more incentive to build his own app.

Cal Bryant's fan curve from his Python app

(Image credit: Cal Bryant)

In the end, he was able to create an application that can read the CPU, case, and liquid temperatures of the system, and adjust the CPU fan and pump speeds accordingly. The app was written in Python and Liquidctl, a programmatic control system that can allow Python scripts to control liquid coolers such as the X53. For temperature control, the app reads temperature data from Linux's built-in hardware sensor capabilities, known as lm-sensors. Bryant wrote his Python app in such a way that it can be installed as a system service that starts when the OS boots up and hides in the background. For the nitty-gritty details on how the app was written step-by-step, check out Bryant's full article.

The app was tuned to run the X53's pump in conjunction with the CPU's temperature output and run the radiator fans in conjunction with the coolant temperature. This is very different from the X53's default configuration where the pump RPM is driven by the coolant temperature.

With this method of RPM control, he was able to significantly reduce the spiky nature of his cooler's default fan profile and make the cooler more performant only when needed. Having the pump speed up based on the CPU temperature allows the cooler to extract heat more quickly from the CPU. Coolant takes a long time to warm up under a heavy load compared to air coolers. Having the fans connected to the coolant temperature, in turn, allows the cooler to only run the fans at a high RPM when the coolant is warm. In an AIO, the fans aren't cooling the CPU, they are cooling down the liquid that is extracting heat from the CPU.

The app can be downloaded for free from a link in Cal Bryant's article. However, the it's specifically fine-tuned to his system, meaning that users would need to edit the code he created to make the cooling app work on their systems.

Aaron Klotz
Contributing Writer

Aaron Klotz is a contributing writer for Tom’s Hardware, covering news related to computer hardware such as CPUs, and graphics cards.

  • ekio
    The devs writing these hardware control software are probably the least competent ones after the java or python devs doing in-house tools that are yet so much needed but often complete crap, and they end up in these jobs because the startups and leading edge companies took all the desired ones.
    1GB or more on disk to control fans and rgb colors, you really have to suck at your job to end up doing that kind of result.
    Top notch devs can achieve that with some good looking imGUI in cpp or rust within less than 3MB…
    Reply
  • brandonjclark
    ekio said:
    The devs writing these hardware control software are probably the least competent ones after the java or python devs doing in-house tools that are yet so much needed but often complete crap, and they end up in these jobs because the startups and leading edge companies took all the desired ones.
    1GB or more on disk to control fans and rgb colors, you really have to suck at your job to end up doing that kind of result.
    Top notch devs can achieve that with some good looking imGUI in cpp or rust within less than 3MB…
    That's big talk, if you can back it up!

    ;)
    Reply
  • AndrewJacksonZA
    brandonjclark said:
    That's big talk, if you can back it up!

    ;)
    Yep.

    A hobby project is different to a piece of software that will have to be tested and supported on thousands, possibly tens of thousands, of different hardware and software permutations. Never things like maintenance and security.
    Reply
  • xmarvelous
    It's not just ryzen 3, it's the way of zen architecture work that cause fan ramping up and down constantly like that. More noticeable on ryzen ....X because the single clock push so high that make temp jump up and down constantly. That why I been using liquid temp as temp source for changing speed, its more stable value.
    Reply
  • Broly MAXIMUMER
    ekio said:
    The devs writing these hardware control software are probably the least competent ones after the java or python devs doing in-house tools that are yet so much needed but often complete crap, and they end up in these jobs because the startups and leading edge companies took all the desired ones.
    1GB or more on disk to control fans and rgb colors, you really have to suck at your job to end up doing that kind of result.
    Top notch devs can achieve that with some good looking imGUI in cpp or rust within less than 3MB…
    99.999% certain most hobbyists coders could make more streamlines and lightweight utilities for this stuff.'

    The bloat we get is usually due to the overlords not letting their software engineers actually engineer freely. Forcing everything BUT stability as #1, and being in oddly competitive> actually toxic work environments where "that obvious fix" that honestly most of them probably have their own variants on a side dive isn't what's gonna win the promotion....

    At least that's how it tends to be.

    Crapping on their capabilities, from afar, is just wrong.
    If you can do better, whip us up an ArmouryCrate that actually works and send it!!!!
    Otherwise, please remember, in business, it's usually never a case of "talent or lack thereof" as opposed to "boss didn't order THAT" so we all have to suffer, either perpetually, or until a rebel among them leaks out the goods.
    Reply