Corsair H100i Linux howto

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.

From what people have posted, it looks like this worked once; however, as of March 13,2017 there seems to be files missing since the time of the instructions.

  1. Instructions direct one to do a "qmake" step with OpenCorsairLink.pro and there's no such file created or downloaded; there is one called CorsairLinkLib.pro from the GitHub - audiohacked/CorsairLinkLib resource however none exists in the listed information of the GitHub - audiohacked/OpenCorsairLink resource.

  2. Additionally the directory / sub-directory issue is confusing me especially with the missing file; I've tried every conceivable orientation; however, are we supposed to put the CorsairLinkLib directory inside the OpenCorsairLink folder, just the files (Some are named the same and over write.). Plus just to confirm the OpenCorsairLink folder goes inside the hidapi directory.

The most I got out of the process was the qmake of the CorsairLinkLib.pro with files from CorsairLinkLib copied into the OpenCorsairLink directory an executable byproduct named "OpenCorsairLink.elf". The Direction to use "sudo ./OpenCorsairLinkCli --help" does not work however running the "OpenCorsairLink.elf" with the "--help" option gives much the same output with a segmentation fault at the end and no fan speed options just LED options.

My development expertise are on Mainframes and Windows platforms and professional development environments on Linux so this command-line level / driver level programming is a bit of a gap for me in my confidence, mostly on Linux I've been involved in patches and math not the development end itself (Team work is hell on your general-skill-set. :) ). Thank you for your assistance.

1 Like

As of today, March 18th 2017. I have just installed linux, currently I have a corsair h80i v2 and I'm curious if this is still the best out there to control fans and such on the unit. Also, does this even still work?

This, so much this! I have spent the past hour or two trying to figure this out, and the closest I got to a solution was to use the legacy branch of his git repo. That appeared to work correctly, but unfortunately, I have a H100i v2, which wasn't originally supported I believe.

Any advice/instruction on how to currently install and run it would be awesome.

I would offer advice but I have since then been running on Air as well as being for all intents and purposes swamped at work. the script is GPL so have at it.

where you able to find any further development in this area. I really want the H100i to work on my cnetos.

it should work OOTB with the original script

hi guys, the script has changed because there was a rewrite. I dove into this today, the old instructions on the wiki no longer apply and the CorsairLinkLib is no longer necessary. To use:

git clone http://www.github.com/audiohacked/OpenCorsairLink.git
cd OpenCorsairLink
make

to use:
Options:
–help :Prints this Message
–version :Displays version.
–debug :Displays enhanced Debug Messages.
–device :Select device.
LED:
–led :Define Color for LED.
–led-warn :Define Color for Warning Temp.
–led-temp :Define Warning Temperature.
Fan:
–fan-temps :Define Comma Separated Values of Temperatures for Fan.
–fan-speeds :Define Comma Separated Values of RPM for Fan.
Pump mode:
–pump-mode :set to 3 for quiet, and 5 for performance

example:
sudo ./OpenCorsairLink.elf --device 0 --led FFFFFF --pump-mode 5

3 Likes

Hi, I appreciated your git repo.
But I have to ask you to explain a bit more verbosely on how the csv should be formatted, and if I regularly have to call the elf to change color or fan speed with csv or it automatically checks new temperatures
thank you!