How I used Udev with systemd to configure an AIO water cooler in Linux
Let me start by telling a little bit of the back story. Recently I build a mini ITX desktop PC to help me with my more resource intensive programming work. I used a all in one liquid cooler in this PC. (Kraken X63). Setting something like this in Windows is quite straight forward, not so much in Linux. In this article I will detail what I did to get it working the way I wanted.
First problem to solve was to find a driver/controller software for the cooler, that works in Linux. These coolers come with only windows driver/controller software with no official Linux support. Thanks to the awesome open source community there is a cross platform tool that I can use to talk to the API of the liquid cooler which is called liquidctl. To be more specific I had to use an experimental branch of this tool that supported the API version of my hardware.
Installation is quite straight forward. My preferred Linux distro is Arch. I used an already ported AUR repository of the mainline and switched to the branch I needed before building the source.
- `git clone https://aur.archlinux.org/liquidctl.git `
- `git checkout -b 1.4.x`
- `makepkg –sic`
- `sudo liquidctl status`
- The cooler pump speed relative to the coolant temperature
- Switch off the decorative RGB lighting of the cooler
- `liquidctl set pump speed 25 25 30 30 34 80 40 90 50 100 `
- `liquidctl set ring color off`
- `liquidctl set logo color off`
- Create a systemd unit
- `sudo vim /etc/systemd/system/liquidcfg.service`
- Contents of the file
- Setup the newly created unit to run on every boot
- `systemctl daemon-reload`
- `systemctl start liquidcfg`
- `systemctl enable liquidcfg`