Jump to content
Corsair Community

Developers: The Corsair Link USB protocol!


Recommended Posts

Last I noticed about the AX1500i was the screenshot of USB analyzer earlier. Anybody have any (partial) protocol for it yet? Happy to work on code myself, but don't want to send it the wrong signal and fry it :(


There is some code here: https://github.com/cloudkitsch/cpsumon that is reported to be half working. There is also https://github.com/audiohacked/OpenCorsairLink who has just started on AXi support. Disclamer: I've not had time to try any of them myself yet.

Link to comment
Share on other sites

  • Replies 185
  • Created
  • Last Reply

Top Posters In This Topic

Hello everyone,


I'm trying to change the LED colour on my H80i v2 under windows 10 but with no luck.


What I have done so far.

1. In C# I've used HidLibrary from nu get as Thatualle1970 has pointed out but it doesn't find the device.

2. I have change the driver on the device using Zadig and set up the device with WinUSB, libusb-win32, libusbK but HidLibrary was unable to find the device using VID and PID

3. I have tried the C++ solution from dwmccauley using hidusb but it looks like I can't find the device. And the enumerable devices are only hid devices. I probably need another driver for the device


The only way I could find the device was using LibUsbDotNet ( libusb for C# ), .NET I was able to find the device with WinUSB driver installed on the device.

But I don't know to use libusb or what protocol or endpoint to use to send data.


Any advice will be helpful.

Thank you

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...

First, off awesome work on this to everyone. It's really amazing to see a community come together to solve such a difficult problem without vendor support.


Anyway, I was about to get started on a power consumption meter app for the HX1000i/HX1200i but I thought I should try to understand the USB bus traffic first. I used Wireshark/USBPcap to grab the frames for a HX1000i and I've seen the following "leftover capture data" in the USB interrupt frames:


Address? Response

0x0388 0xE6F8

0x0390 0x9010

0x033B 0x1B00

0x034F 0x4600

0x038D 0xD0F0

0x038E 0x87F0

0x03D8 0x0200

0x03EE 0x3E09

0x0200 0x0000

0x038C 0xD2F0

0x038B 0x02D3

0x0340 0xE6D3

0x0344 0x1AD2

0x0346 0x80E2

0x0396 0x02F8

0x020001 0x0000

0x020002 0x0000


The format is similar to what's described in CFSWorks first post, I'm seeing what I think is a register read request (i.e. 0x0388) and a response (i.e. 0x0388E6F8) all padded to 64 bytes, but I can't make sense of it using the I/O register tables in this thread.


Am I missing something? I'm going crazy trying to understand the traffic going to/from this device.

Link to comment
Share on other sites

  • 1 year later...

Edit2: Correction: I did NOT correct the problem, it just worked by fluke. Guess this is my cue to learn to use my DSLogic 16 logic analyzer(Don't hold your breath), I'll be back with updates IF I get somewhere..

Edit: Just ignore my request for copy of repo. I belive I got it working, updated code here: https://github.com/Hagbard-Celin/cpsumon


There is some code here: https://github.com/cloudkitsch/cpsumon that is reported to be half working.



Does anyone have a copy of this repo? I only got the cpsufancli.c file, which used to work when paired with https://github.com/ka87/cpsumon. But after a HD crash and reinstall I can not get that combo to work anymore.

Edited by Hagbard Celine
Link to comment
Share on other sites

  • 4 months later...

Hi all...13 pages on this and I read the majority of it...


I'm a software dev, but new to the Link/CUE hardware!


Just looking to see if anyone ever put together a C/C# library to control fans (and possibly read temps) connected to the Commander Pro?


I'd like to go further than the Link (or iCUE) software lets me go with fan speeds based upon multiple sensors, etc. I've learned over the years not to "re-invent the wheel", so if there's any shared code or libraries/assemblies I haven't found, I'd appreciate the links.


Really awesome stuff by everyone on this thread. It was a long read, but I am duly impressed. :)


Thanks in advance.

Link to comment
Share on other sites

  • 4 weeks later...
  • 1 year later...

If someone is still interested. There are dirty version of kernel module for PSU corsair link support.

For now it works only with HX1000i (I don't have other HW to test). It's fully functional:

Reads voltage, current, power and fan speed.

If someone is interested in assistance - would be great to have usb id's of other PSUs.

Here is the source code (it's very dirty at that moment and based on OpenCorsairLink and CorsairCommander kernel driver). Only RMI based protocol supported.


It's fully compatible with hwmon infrastructure:


ls /sys/class/hwmon/hwmon7
curr1_input  curr2_input  curr3_input  device      fan1_label  in0_label  in1_label  in2_label  in3_label  power         power1_label  power2_label  power3_label  power4_label  temp1_input  uevent
curr1_label  curr2_label  curr3_label  fan1_input  in0_input   in1_input  in2_input  in3_input  name       power1_input  power2_input  power3_input  power4_input  subsystem     temp2_input


sensors output:

Adapter: HID adapter
Power supply: 230.00 V  
+12V:          11.94 V  
+5V:            4.97 V  
+3.3V:          3.31 V  
fan1:         4247 RPM
temp1:         +45.0°C  
temp2:         +29.4°C  
Power supply: 480.00 W  
+12V:         380.00 W  
+5V:           77.00 W  
+3.3V:         10.00 W  
Power supply:  33.00 A  
+12V:          15.50 A  
+5V:            3.00 A 

Current readings contains incorrect names currently :) It's +12, +5 and +3.3 lines

Fan readings seems to be incorrect. Need to check for divisor

Link to comment
Share on other sites

  • Create New...