Contribute
Register

Controlling your Corsair H80i fans from within OSX Mavericks

Status
Not open for further replies.
Joined
Sep 12, 2011
Messages
20
Motherboard
Hack Pro 6,1
CPU
i7 [email protected] GHz
Graphics
GTX 670
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. Android
Hi.
The Corsair H80i is a popular closed loop water cooler that a lot of people use to cool their i5/i7 processors.

Here is a short guide to control your fans from within your OSX Mavericks installation

What you need:

OSX Mavericks
Corsair H80i with the usb header plugged in
A virtual machine running windows 7 or later
The zip file attached

--------------------

Once you have the Windows virtual machine up and running install the corsair link software and the corsair driver.
Connect the USB device that says integrated bridge to the Virtual machine and wait for corsair link to detect the hardware.
Quit the virtual machine to come back to OSX environment
Download and unzip the attached Zip file
Run the executable CorsairH80iController from your preferred terminal/console (if the included executable doesn't work for you, rebuild the executable using qmake which is part of the qtproject. you need to get it from there. The version i used was qt 5.2.1.) Source code is all included.

You should be able to see the fan speeds of your h80i fans in the console
To change the speed of fan 1 or 2
use the following command syntax from your console
./CorsairH80iController -f <fan no 1 2 3 4 > -m <mode no.>

Modes:
4 - Fixed RPM (requires to specify the RPM)
6 - Default
8 - Quiet
10 - Balanced
12 - Performance

Detailed help can be read by typing ./CorsairH80iController -h from your console

Images attached as proof

-----
TODO
Write an objective C program using the native HID manager and a GUI to control the fans and the ability to add a manual curve with respect to the CPU temperature

-----
REQUEST
Can someone please test it out with a H100i and 4 fans to confirm?
 

Attachments

  • CorsairH80iController.zip
    1.6 MB · Views: 577
  • Screen Shot 2014-05-03 at 9.58.47 pm.png
    Screen Shot 2014-05-03 at 9.58.47 pm.png
    60.4 KB · Views: 988
  • Screen Shot 2014-05-03 at 10.00.24 pm.png
    Screen Shot 2014-05-03 at 10.00.24 pm.png
    87.6 KB · Views: 820
  • Screen Shot 2014-05-03 at 10.02.12 pm.png
    Screen Shot 2014-05-03 at 10.02.12 pm.png
    107 KB · Views: 775
H100i here.
Code:
Open Corsair Link
Fan 1:
    Mode: Fixed PWM
    RPM: 0
Fan 2:
    Mode: Fixed PWM
    RPM: 0
Fan 3:
    Mode: Quiet
    RPM: 1066
Fan 4:
    Mode: Quiet
    RPM: 1060
Pump:
    Mode: Fixed PWM
    RPM: 2234
CorsairH80iController(7128,0x7fff7e383310) malloc: *** error for object 0x100106fa8: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
 
H100i here.
Code:
Open Corsair Link
Fan 1:
    Mode: Fixed PWM
    RPM: 0
Fan 2:
    Mode: Fixed PWM
    RPM: 0
Fan 3:
    Mode: Quiet
    RPM: 1066
Fan 4:
    Mode: Quiet
    RPM: 1060
Pump:
    Mode: Fixed PWM
    RPM: 2234
CorsairH80iController(7128,0x7fff7e383310) malloc: *** error for object 0x100106fa8: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
Abort trap: 6
Are you using 2 fans or 4 with your h100i?

i wouldn't worry about the malloc error for now . Its coming from the hidapi as far as i can tell and ive made a post on the hidapi bug list to help me figure this one out.
The fan and pump rpm seem to be reported correctly.

Can you use the application to try and change fan speeds and tell me if it works?
 
Yes it works nicely. I can hear the fans ramp up as soon as I set the mode to performance.Only using 2 fans.

Edit: "Once you have the Windows virtual machine up and running install the corsair link software and the corsair driver.
Connect the USB device that says integrated bridge to the Virtual machine and wait for corsair link to detect the hardware.
Quit the virtual machine to come back to OSX environment"
I dont understand this part that you wrote.Why is this important? It works without any VM running.

Code:
Open Corsair Link
Fan 1:
    Mode: Fixed PWM
    RPM: 0
Fan 2:
    Mode: Fixed PWM
    RPM: 0
Fan 3:
    Mode: Performance
    RPM: 2127
Fan 4:
    Mode: Performance
    RPM: 1807
Pump:
    Mode: Fixed PWM
    RPM: 2228
 
Yes it works nicely. I can hear the fans ramp up as soon as I set the mode to performance.Only using 2 fans.

Edit: "Once you have the Windows virtual machine up and running install the corsair link software and the corsair driver.
Connect the USB device that says integrated bridge to the Virtual machine and wait for corsair link to detect the hardware.
Quit the virtual machine to come back to OSX environment"
I dont understand this part that you wrote.Why is this important? It works without any VM running.

Code:
Open Corsair Link
Fan 1:
    Mode: Fixed PWM
    RPM: 0
Fan 2:
    Mode: Fixed PWM
    RPM: 0
Fan 3:
    Mode: Performance
    RPM: 2127
Fan 4:
    Mode: Performance
    RPM: 1807
Pump:
    Mode: Fixed PWM
    RPM: 2228

With my H80i the device does not detect as a usb hid device until the corsair link software/driver running in windows vm injects it/triggers it to register as usb hid. As a result the hid_enumerate and hid_open methods fail to use the device. It might not be the same case with H100i. Anyway, I'm glad that it works for you. I am fairly new to objective C but eventually i'll rehash this code to objective C and make a GUI app that allows you to set a performance curve. Funny that the only OS where i can't control the H80i consistently is now Windows. Thanks to the B.S. Code that is Corsair Link.
 
If it will be any help here are the results of a USB probe on my H100i.
Code:
Full Speed device @ 4 (0x1A120000): .............................................   Composite device: "Integrated USB Bridge\000"
    Port Information:   0x0018
           Not Captive
           External Device
           Connected
           Enabled
    Number Of Endpoints (includes EP0):   
        Total Endpoints for Configuration 1 (current):   2
    Device Descriptor   
        Descriptor Version Number:   0x0200
        Device Class:   0   (Composite)
        Device Subclass:   0
        Device Protocol:   0
        Device MaxPacketSize:   64
        Device VendorID/ProductID:   0x1B1C/0x0C04   (CORSAIR MEMORY INC.)
        Device Version Number:   0x0200
        Number of Configurations:   1
        Manufacturer String:   1 "Corsair Memory, Inc.\000"
        Product String:   2 "Integrated USB Bridge\000"
        Serial Number String:   0 (none)
    Configuration Descriptor (current config)   
        Length (and contents):   34
            Raw Descriptor (hex)    0000: 09 02 22 00 01 01 00 80  32 09 04 00 00 01 03 00  
            Raw Descriptor (hex)    0010: 00 00 09 21 11 01 00 01  22 25 00 07 05 81 03 40  
            Raw Descriptor (hex)    0020: 00 01 
        Number of Interfaces:   1
        Configuration Value:   1
        Attributes:   0x80 (bus-powered)
        MaxPower:   100 ma
        Interface #0 - HID   
            Alternate Setting   0
            Number of Endpoints   1
            Interface Class:   3   (HID)
            Interface Subclass;   0
            Interface Protocol:   0
            HID Descriptor   
                Descriptor Version Number:   0x0111
                Country Code:   0
                Descriptor Count:   1
                Descriptor 1   
                    Type:   0x22  (Report Descriptor)
                    Length (and contents):   37
                        Raw Descriptor (hex)    0000: 06 00 FF 09 01 A1 01 15  00 26 FF 00 75 08 95 40  
                        Raw Descriptor (hex)    0010: 19 01 29 40 81 02 09 01  75 08 95 40 19 01 29 40  
                        Raw Descriptor (hex)    0020: 91 02 09 01 C0 
                    Parsed Report Descriptor:   
                          Usage Page    (Vendor defined 0) 
                          Usage 1 (0x1)    
                              Collection (Application)    
                                Logical Minimum.........    (0)  
                                Logical Maximum.........    (255)  
                                Report Size.............    (8)  
                                Report Count............    (64)  
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (64)  
                                Input...................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Bitfield) 
                                Usage 1 (0x1)    
                                Report Size.............    (8)  
                                Report Count............    (64)  
                                Usage Minimum...........    (1)  
                                Usage Maximum...........    (64)  
                                Output..................   (Data, Variable, Absolute, No Wrap, Linear, Preferred State, No Null Position, Nonvolatile, Bitfield) 
                                Usage 1 (0x1)    
                              End Collection     
            Endpoint 0x81 - Interrupt Input   
                Address:   0x81  (IN)
                Attributes:   0x03  (Interrupt no synchronization data endpoint)
                Max Packet Size:   64
                Polling Interval:   1 ms
 
Great thread!
I'm a Mavericks newcomer and my latest build features a H100i.

What virtual Windows machine are you using?

Would you be, please, more explicative about the entire process.

thanks
ws
 
Sahil,
Great initiative. :thumbup:

I am using GA-Z77X-UP5 motherboard with H100i.
I have the H100i profile setup as custom curve via CorsairLink software running on Win8 (running on a separate drive).
Once that's done, I forget about Win8 and boot OS X as my my main OS.

Just tried your s/w and it detects my H100i - first time (no need to run any windows VM first).
Screen Shot 2014-07-14 at 21.09.41.png

Keep up the good work.
I will be subscribing to this thread.
Looking forward to a full GUI version that can set-up custom curves :D
 
could it be possible to see the temp of the cpu & the radiator?
 
Hi, can you help me about which is the best solution for the H100i?
I bought one for over clock my hack and I'm interesting to control the cooler.

THanks!
 
Status
Not open for further replies.
Back
Top