Corsair H100i Linux howto

So, I have an H100i and there are no known Linux drivers for the Corsair Link application. This was solved by a talented developer who through trial and error managed to figure out how the hardware works. You have to install the software and libraries yourself but it works. I was able to find out the fan speed, CPU temps, and Firmware. As well as change the color and fan speeds.

I modified an existing BASH menu script to handle the program for you. It will show you the firmware version, current status, and change the fan speeds. I have not added changing the colors or anything like that to the script.

It is simple to use though. I will paste the script here and you can create a new '.sh" file and paste it into the file. Make sure to change the permissions to a+x with sudo chmod a+x

#!/bin/bash
# This is a script for controlling the Open Corsair Link software application.
# This script is not 100% perfect.
# Feel free to modify this script to work for you.

echo "Welcome to the OpenCorsairLink Controll & Information script" 

show_menu(){
    NORMAL=`echo "\033[m"`
    MENU=`echo "\033[36m"` #Blue
    NUMBER=`echo "\033[33m"` #yellow
    FGRED=`echo "\033[41m"`
    RED_TEXT=`echo "\033[31m"`
    ENTER_LINE=`echo "\033[33m"`
    echo -e "${MENU}*********************************************${NORMAL}"
    echo -e "${MENU}**${NUMBER} 1)${MENU} Show Firmware Version ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 2)${MENU} Show Current Status ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 3)${MENU} Change Fans to Quiet ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 4)${MENU} Change Fans to Balanced ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 5)${MENU} Change Fans to Performance${NORMAL}"
    echo -e "${MENU}**${NUMBER} 6)${MENU} ${NORMAL}"
    echo -e "${MENU}*********************************************${NORMAL}"
    echo -e "${ENTER_LINE}Please enter a menu option and enter or ${RED_TEXT}enter to exit. ${NORMAL}"
    read opt
}
function option_picked() {
    COLOR='\033[01;31m' # bold red
    RESET='\033[00;00m' # normal white
    MESSAGE=${@:-"${RESET}Error: No message passed"}
    echo -e "${COLOR}${MESSAGE}${RESET}"
}

clear
show_menu
while [ opt != '' ]
    do
    if [[ $opt = "" ]]; then 
            exit;
    else
        case $opt in
        1) clear;
        option_picked "You selected Show Firmware Version";
        sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -i;
        show_menu;
        ;;

        2) clear;
            option_picked "You selected Show Current Status";
            sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -p;
        show_menu;
            ;;

        3) clear;
            option_picked "You have chosen to Change the fans to Quiet mode ";
        sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -f 1 --fan-mode 8;
        sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -f 2 --fan-mode 8;
            show_menu;
            ;;

        4) clear;
            option_picked "You have chosen to Change the fans to Balanced mode";
        sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -f 1 --fan-mode 10;
        sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -f 2 --fan-mode 10;
            show_menu;
            ;;

        5) clear;
            option_picked "You have chosen to Change the fans to Performance mode";
        sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -f 1 --fan-mode 12;
        sudo ~/hidapi/OpenCorsairLink/OpenCorsairLinkCli -f 2 --fan-mode 12;
            show_menu;
            ;;

        x)exit;
        ;;

        \n)exit;
        ;;

        *)clear;
        option_picked "Pick an option from the menu";
        show_menu;
        ;;
    esac
fi
done

To install the driver/software follow these steps:

To install the dependencies:

cd ~
sudo apt-get install autotools-dev autoconf automake libtool git qt5-default
git clone https://github.com/signal11/hidapi.git
cd ~/hidapi
./bootstrap
./configure (install any missing dependencies here and re-run ./configure)
make
sudo make install

Now we need to install and compile the software:

git clone https://github.com/audiohacked/OpenCorsairLink.git
cd OpenCorsairLink
Now here you will want to go to the following website and download, extract, and copy the CorsairLinkLib folder into the OpenCorsairLink folder. If the folder exists in the directory already, copy the contents of the downloaded package into the CorsairLinkLib folder.
CorsairLinkLib Site

git submodule init
git submodule update
qmake OpenCorsairLink.pro
make
sudo ldconfig

Now test it with sudo ./OpenCorsiarLinkGui or sudo ./OpenCorsairLinkCli --help
I prefer the CLI version since the GUI version seems really laggy.

Now, use the script I put together to make it easy below is a screenshot of the script menu:

There was an update to the OpenCorsairLink github to support the 110. You can adjust the link.cpp file prior to compiling to include your model. Here is the link to the changes made: https://github.com/audiohacked/CorsairLinkLib/commit/33e6614737d4e512a8a3b7eebea0c46e8d117d10

There is also a rewrite of the OpenCorsairLink program itself in progress.

15 Likes

Awesome thanks for sharing! Do you think that it would work with other corsair i watercooling products like the h80i? It uses the same software and firmware.

it wouldnt hurt to try

True that. I will try it out tomorrow and report back!

It works almost 100% with the h80i ! Only the led status doesn't work but that might be because only my red led works.

Well, that and the script doenst currently cover changing the LED. I was going to say for your installing dependency quandary, that you can just daisy chain them. sudo apt-get install gedit xserver-xorg etc etc etc etc -y you just place a space between the dependencies and place a -y at the end to automatically agree to install them.

I love the script, but I need some help. I tried to change the led color using OpenCorsairLinkCli, and nothing happened. Also, the led mode is listed as "0B" instead of "00" and refuses to change. I scoured the internet and couldn't find anything.

I am unsure about that part. Personally I never tested the color change since I never look at my cooler. In fact, I removed my H100i and dropped in an old air cooler from ~2009 that works just as well as the H100i. Sad isnt it?

Yeah. I got the H100i in place of an air cooler becuase my 4790k was hitting 100 degrees celcius at full load. Turns out the H100i didn't make a difference and the problem was that the vcore voltage was turned all the way up on the motherboard. Oh well. It probably won't kill me to break the color scheme a little. Thanks anyway.

Just a heads up. Since you are grabbing the resources from git and the tools mentioned are cross platform, you can do this on any distro.

I'd update your title. Thanks for sharing for the Corsair I users. Brilliant work.

np. i exist to serve

Made an account just to say thank you. My fans were always at full speed and it was getting on my nerves. So thank you for the easy guide.

i have made an install video to sort of make this a "dummy proof" install due to i am kind of new to linux but not entirely and understand that a lot of mistakes can be made and some installs do need explaining to some people. i am giving credit to the tek syndicate forums for helping me find this and i also gave a link here. I made this video in order to hopefully draw more support from software developers and get major companys like corsair to give us official support.

I would also like to personally thank you for posting this here @LinuxMaster9 because without this post i wouldn't have known opencorsairlink existed

video link: https://www.youtube.com/watch?v=bjMUwHVbseY

Hey,

This is a really interesting project - and I know this thread is a little old, but as Wendell mentioned it recently I thought I'd drop by - I'm wondering if there's support here for the Corsair 115i, which I believe is pretty much the same as the 110i GTX, perhaps just a re-brand and perhaps with a firmware change. At the moment I've followed the installation directions and all seems well, but when I run the executable I see the error message:

Error: Unable to open Corsair H80i, H100i or H110i CPU Cooler
Cannot initialize link.

Even though I see the 115i and RM850i PSU on lsusb:

Bus 001 Device 006: ID 1b1c:1c0c Corsair 
Bus 001 Device 005: ID 1b1c:0c0a Corsair

... and all of the above software is current and installed and seems to be working (on a fresh Ubuntu 15.10 installation with hidapi and OpenCorsairLink cloned and installed) . Do you know if I can alter the software to adapt it to work with this weird new model?

Thanks!

If you open CorsairLinkLib folder and open Link.cpp, it references a USB number.

In the udev folder one step up theres a file called 99-corsair-link.rules. In it, for me, it says ENV{DEVPATH}==":1B1C:0C04./hidraw/hidraw*"
A check with lsusb shows that that is my h100i device number.

In Link.cpp theres a line in the begining with the following: handle = hid_open(0x1b1c, 0x0c04, NULL);
Which seems to reference the same device number. Under it it says the error you got
fprintf(stderr, "Error: Unable to open Corsair H80i, H100i or H110i CPU Cooler\n");

So I'm thinking maybe you can change that device number (to 0x1b1c, 0x0c0A) in Link.cpp, compile the program and see if it works? Could be risky though if the program was written to only account for the 3 Corsair AIO coolers.

http://forum.corsair.com/forums/showthread.php?s=77a5d2687bde58576ea948c7c2460b80&t=120092&page=12

Looks like your H115i is the 1b1c:0c0a

1 Like

Hey, made an account to say thank you for this! Had my H80i fans turned down from jet speed to normal speed within 30 minutes. I also modified the bash script to make it easier to use (in my case I had more fans so I added loops and variables to easily change the fan mode for all fans).

#!/bin/bash
# This is a script for controlling the Open Corsair Link software application.
# This script is not 100% perfect.
# Feel free to modify this script to work for you.

CLIPATH=~/Programs/CorsairLink/OpenCorsairLink/OpenCorsairLinkCli
NUMFANS=4

echo "Welcome to the OpenCorsairLink Controll & Information script" 

show_menu(){
    NORMAL=`echo "\033[m"`
    MENU=`echo "\033[36m"` #Blue
    NUMBER=`echo "\033[33m"` #yellow
    FGRED=`echo "\033[41m"`
    RED_TEXT=`echo "\033[31m"`
    ENTER_LINE=`echo "\033[33m"`
    echo -e "${MENU}*********************************************${NORMAL}"
    echo -e "${MENU}**${NUMBER} 1)${MENU} Show Firmware Version ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 2)${MENU} Show Current Status ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 3)${MENU} Change Fans to Quiet ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 4)${MENU} Change Fans to Balanced ${NORMAL}"
    echo -e "${MENU}**${NUMBER} 5)${MENU} Change Fans to Performance${NORMAL}"
    echo -e "${MENU}**${NUMBER} 6)${MENU} ${NORMAL}"
    echo -e "${MENU}*********************************************${NORMAL}"
    echo -e "${ENTER_LINE}Please enter a menu option and enter or ${RED_TEXT}enter to exit. ${NORMAL}"
    read opt
}

function option_picked() {
    COLOR='\033[01;31m' # bold red
    RESET='\033[00;00m' # normal white
    MESSAGE=${@:-"${RESET}Error: No message passed"}
    echo -e "${COLOR}${MESSAGE}${RESET}"
}

function set_fan_mode {
    FANCOUNTER=1
    while [ $FANCOUNTER -le $NUMFANS ]; do
        sudo $CLIPATH -f $FANCOUNTER --fan-mode $1
        let FANCOUNTER+=1
    done
}

clear
show_menu
while [ opt != '' ]
    do
    if [[ $opt = "" ]]; then 
            exit;
    else
        case $opt in
        1) clear;
        option_picked "You selected Show Firmware Version";
        sudo $CLIPATH -i;
        show_menu;
        ;;

        2) clear;
            option_picked "You selected Show Current Status";
            sudo $CLIPATH -p;
        show_menu;
            ;;

        3) clear;
            option_picked "You have chosen to Change the fans to Quiet mode ";
        set_fan_mode 8;
            show_menu;
            ;;

        4) clear;
            option_picked "You have chosen to Change the fans to Balanced mode";
        set_fan_mode 10;
            show_menu;
            ;;

        5) clear;
            option_picked "You have chosen to Change the fans to Performance mode";
        set_fan_mode 12;
            show_menu;
            ;;

        x)exit;
        ;;

        \n)exit;
        ;;

        *)clear;
        option_picked "Pick an option from the menu";
        show_menu;
        ;;
    esac
fi
done
1 Like

good to see someone still makes use of it.

There is a rewrite in progress for the OpenCorsairLink program. I also updated the install instructions for the updated github instructions.

You are a god!

That's awesome news. I still have no luck hacking around with this on my H115i so any updates will be great.