Corsair Hydro H100i v2 under Linux

Posted by

Category :

I recently upgraded my rig, and decided to buy a pretty hot processor: the 8th gen Intel Core i7-8700K. Intel has the very unfortunate habit of not soldering the processor die to the lid, but rather use a thermal compound whose performance are not comparable. Some like to delid, I don’t like very much the idea of voiding the warranty of a few days old processor.

Anyway, I decided to buy a water cooler in order to keep the CPU temperatures under control. My choice was the Corsair H100i v2. This system’s suggested mounting expects the user to connect a cable to the waterblock and to a USB 2 header on the motherboard. Once done, the all-in-one liquid cooler can be finely tuned using the “Corsair Link” application. Sounds great, right? No it does not, as Corsair is not supporting Linux.

Fortunately though, the community helped itself. This project allows Linux users to read data from the AIO (e.g. the water temperature and the fan speed), and to adjust the settings to their preference (led color, fan curves, pump performance).

Building the application

That’s rather easy. You’ll need git, a C compiler, and libusb installed. They are all likely already on your system.

git clone
cd OpenCorsairLink

Once the compilation is done, you’ll find a OpenCorsairLink.elf file on the folder. That’s the application. Everything’s packed inside such file, and you can just put it in your PATH and have it accessible. Also, I suggest renaming it to just OpenCorsairLink

Installing on Arch

Since I am an Arch Linux user, I decided to provide (myself and others) with a mean to do the above procedure quickly. To do so, I published an AUR package that automatizes the compilation and installation procedure, that can be done in a single shot. Assuming you are using yaourt as AUR helper, just issue:

yaourt -Sy opencorsairlink-git

Once done, OpenCorsairLink will be an executable readily accessible from your command line.

Here it comes the most difficult part: understanding how to use the application. I could find no decent resource online explaining how to use it, and the help file is vague.

$ sudo OpenCorsairLink --help
OpenCorsairLink [options]
        --help                          :Prints this Message
        --version                       :Displays version.
        --debug                         :Displays enhanced Debug Messages.
        --dump                          :Implies --debug. Dump the raw data recieved from the device.
        --device <Device Number>        :Select device.

        --led <HTML Color Code>                 :Define Color for LED.
        --led-warn <HTML Color Code>            :Define Color for Warning Temp.
        --led-temp <Temperature in Celsius>     :Define Warning Temperature.

        --fan-temps <CSV of Temperatures>       :Define Comma Separated Values of Temperatures for Fan.
        --fan-speeds <CSV of Speed Percentage>  :Define Comma Separated Values of RPM Percentage for Fan.

        Pump mode:
        --pump-mode <mode>      :set to 3 for quiet, and 5 for performance

 Without options, OpenCorsairLink will show the status of any detected Corsair Link device.
Dev=0, CorsairLink Device Found: H100i V2!

OK, some things are rather straightforward. Selecting the device is easy, setting the pump is too. Honestly, also the led part is not a problem. The problem is how to tune the fans! The help does not explain very well how many values should be provided. I’ve tried several combination, that had no effect on the fan speed whatsoever, so I took a read of the source code: the magic number is six. You must provide six values. Temperatures are measured in Celsius, and they refer to the water temperature, not the CPU temperature. So do not set your fans to get to a high speed when the temperature is 70°C or so, as it would be way too late.

Valid configuration example

Here is my configuration line:

$ sudo OpenCorsairLink --device 0 --pump-mode 3 --fan-temps 0,20,25,30,35,40 --fan-speeds 0,10,30,60,80,100

Vendor: Corsair
Product: H100i V2
Temperature 0: 22.20
Fan Speed 0: 840
Pump Speed: 2820

The difference between the two pump settings is minimal, so maybe when the hot summer comes I might decide to use the performance mode for the pump. I want the fans to be very quiet when there is little or no load, but I want them to get aggressive when the water temperatures get too close to 40°C. I don’t really care about the led instead (my case window faces a pieces of furniture).

Once the settings are saved, the AIO should register them and be set. However, I’m not entirely sure it works. As such, just to be on the safe side, I reapply the configuration on boot.

So, dear Linux users, you can now enjoy your high performance water cooling system!

About Danilo Pianini

Fixed-term Post-doc researcher at the University of Bologna. Software engineer, designer and developer of the Protelis programming language, the Alchemist simulator, and several other libraries and tools. Proficient in Java, Kotlin, Scala, Python, Xtend. Can also write in Groovy, Bash, Ruby, C, Rust, Prolog, Javascript. Build automation and continuous integration zealot.

Star DanySK on GitHub
Useful Links