Jump to content
Corsair Community

Developers: The Corsair Link USB protocol!


CFSworks

Recommended Posts

I found doing this for the H100i, H80i and CL Mini was easy enough, but your code needs to allow for both the write and read not working. Before I added a 250 ms timeout to both of these once in a while there would not be a reply and SIV would stall and it needed to be aborted :eek:

 

SIV uses the Global\Access_CorsairLink to interlock access to the CL hardware and I would advise that all programs should also use this.

 

You really want them to use your interlock, don't you? :D

Link to comment
Share on other sites

  • Replies 185
  • Created
  • Last Reply

Top Posters In This Topic

I am looking more and more through Corsair's nightmare of a software.

Well, the Lighting Node has it's entirely own protocol it seems.

Sadly I don't own one so I can't test too much :(

 

I have thus far found the following registers,

 

// Device ID 0x39 Lighting Node Registers by deduction

 

#define CNR_BUTTON_1 0x04 // R 1 byte Button 1 State // Range 1 -> 7

#define CNR_BUTTON_2 0x05 // R 1 byte Button 2 State //

 

#define CNR_LIGHTS_1 0x20 // RW 3 bytes Lights 1 RGB // Changed by buttons

#define CNR_LIGHTS_1_R 0x20 // RW 1 byte Lights 1 R // and writable.

#define CNR_LIGHTS_1_G 0x21 // RW 1 byte Lights 1 G // When written button

#define CNR_LIGHTS_1_B 0x22 // RW 1 byte Lights 1 B // goes to zero.

 

#define CNR_LIGHTS_2 0x40 // RW 3 bytes Lights 2 RGB //

#define CNR_LIGHTS_2_R 0x40 // RW 1 byte Lights 2 R //

#define CNR_LIGHTS_2_G 0x41 // RW 1 byte Lights 2 G //

#define CNR_LIGHTS_2_B 0x42 // RW 1 byte Lights 2 B //

 

The Lighting node was documented here pretty completely:

http://forum.corsair.com/forums/showpost.php?p=675996&postcount=33

Link to comment
Share on other sites

Here are my latest definitioins

 

#define CNR_BUTTON_1        0x04    // R    1 byte    Button 1 State        Range 1 -> 7
#define CNR_BUTTON_2        0x05    // R    1 byte    Button 2 State        Changed by buttons
#define CNR_LIGHTS_1r       0x06    // R    3 bytes   Lights 1 RGB
#define CNR_LIGHTS_1r_R     0x06    // R    1 byte    Lights 1 R
#define CNR_LIGHTS_1r_G     0x07    // R    1 byte    Lights 1  G
#define CNR_LIGHTS_1r_B     0x08    // R    1 byte    Lights 1   B
#define CNR_LIGHTS_2r       0x09    // R    3 bytes   Lights 2 RGB
#define CNR_LIGHTS_2r_R     0x09    // R    1 byte    Lights 2 R
#define CNR_LIGHTS_2r_G     0x0A    // R    1 byte    Lights 2  G
#define CNR_LIGHTS_2r_B     0x0B    // R    1 byte    Lights 2   B

#define CNR_LIGHTS_1_MOD    0x10    // RW   1 bytes   Lights 1 Mode

#define CNR_LIGHTS_1t1_W    0x11    // RW   2 bytes   Lights 1 Temp Word
#define CNR_LIGHTS_1t1_L    0x11    // RW   1 byte    Lights 1 Temp Low
#define CNR_LIGHTS_1t1_H    0x12    // RW   1 byte    Lights 1 Temp High
#define CNR_LIGHTS_1t1      0x13    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_1t1_R    0x13    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_1t1_G    0x14    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_1t1_B    0x15    // RW   1 byte    Lights 1   B

#define CNR_LIGHTS_1t2_W    0x16    // RW   2 bytes   Lights 1 Temp Word
#define CNR_LIGHTS_1t2_L    0x16    // RW   1 byte    Lights 1 Temp Low
#define CNR_LIGHTS_1t2_H    0x17    // RW   1 byte    Lights 1 Temp High
#define CNR_LIGHTS_1t2      0x18    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_1t2_R    0x18    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_1t2_G    0x19    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_1t2_B    0x1A    // RW   1 byte    Lights 1   B

#define CNR_LIGHTS_1t3_W    0x1B    // RW   2 bytes   Lights 1 Temp Word
#define CNR_LIGHTS_1t3_L    0x1B    // RW   1 byte    Lights 1 Temp Low
#define CNR_LIGHTS_1t3_H    0x1C    // RW   1 byte    Lights 1 Temp High
#define CNR_LIGHTS_1t3      0x1D    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_1t3_R    0x1D    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_1t3_G    0x1E    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_1t3_B    0x1F    // RW   1 byte    Lights 1   B

#define CNR_LIGHTS_1c1      0x20    // RW   3 bytes   Lights 1 RGB          When written button
#define CNR_LIGHTS_1c1_R    0x20    // RW   1 byte    Lights 1 R            goes to zero.
#define CNR_LIGHTS_1c1_G    0x21    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_1c1_B    0x22    // RW   1 byte    Lights 1   B
#define CNR_LIGHTS_1c2      0x24    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_1c2_R    0x24    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_1c2_G    0x25    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_1c2_B    0x26    // RW   1 byte    Lights 1   B
#define CNR_LIGHTS_1c3      0x28    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_1c3_R    0x28    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_1c3_G    0x29    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_1c3_B    0x2A    // RW   1 byte    Lights 1   B
#define CNR_LIGHTS_1c4      0x2C    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_1c4_R    0x2C    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_1c4_G    0x2D    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_1c4_B    0x2E    // RW   1 byte    Lights 1   B

#define CNR_LIGHTS_2_MOD    0x30    // RW   1 bytes   Lights 2 Mode

#define CNR_LIGHTS_2t1_W    0x31    // RW   2 bytes   Lights 1 Temp Word
#define CNR_LIGHTS_2t1_L    0x31    // RW   1 byte    Lights 1 Temp Low
#define CNR_LIGHTS_2t1_H    0x32    // RW   1 byte    Lights 1 Temp High
#define CNR_LIGHTS_2t1      0x33    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_2t1_R    0x33    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_2t1_G    0x34    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_2t1_B    0x35    // RW   1 byte    Lights 1   B

#define CNR_LIGHTS_2t2_W    0x36    // RW   2 bytes   Lights 1 Temp Word
#define CNR_LIGHTS_2t2_L    0x36    // RW   1 byte    Lights 1 Temp Low
#define CNR_LIGHTS_2t2_H    0x37    // RW   1 byte    Lights 1 Temp High
#define CNR_LIGHTS_2t2      0x38    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_2t2_R    0x38    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_2t2_G    0x39    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_2t2_B    0x3A    // RW   1 byte    Lights 1   B

#define CNR_LIGHTS_2t3_W    0x3B    // RW   2 bytes   Lights 1 Temp Word
#define CNR_LIGHTS_2t3_L    0x3B    // RW   1 byte    Lights 1 Temp Low
#define CNR_LIGHTS_2t3_H    0x3C    // RW   1 byte    Lights 1 Temp High
#define CNR_LIGHTS_2t3      0x3D    // RW   3 bytes   Lights 1 RGB
#define CNR_LIGHTS_2t3_R    0x3D    // RW   1 byte    Lights 1 R
#define CNR_LIGHTS_2t3_G    0x3E    // RW   1 byte    Lights 1  G
#define CNR_LIGHTS_2t3_B    0x3F    // RW   1 byte    Lights 1   B

#define CNR_LIGHTS_2c1      0x40    // RW   3 bytes   Lights 2 RGB
#define CNR_LIGHTS_2c1_R    0x40    // RW   1 byte    Lights 2 R
#define CNR_LIGHTS_2c1_G    0x41    // RW   1 byte    Lights 2  G
#define CNR_LIGHTS_2c1_B    0x42    // RW   1 byte    Lights 2   B
#define CNR_LIGHTS_2c2      0x44    // RW   3 bytes   Lights 2 RGB
#define CNR_LIGHTS_2c2_R    0x44    // RW   1 byte    Lights 2 R
#define CNR_LIGHTS_2c2_G    0x45    // RW   1 byte    Lights 2  G
#define CNR_LIGHTS_2c2_B    0x46    // RW   1 byte    Lights 2   B
#define CNR_LIGHTS_2c3      0x48    // RW   3 bytes   Lights 2 RGB
#define CNR_LIGHTS_2c3_R    0x48    // RW   1 byte    Lights 2 R
#define CNR_LIGHTS_2c3_G    0x49    // RW   1 byte    Lights 2  G
#define CNR_LIGHTS_2c3_B    0x4A    // RW   1 byte    Lights 2   B
#define CNR_LIGHTS_2c4      0x4C    // RW   3 bytes   Lights 2 RGB
#define CNR_LIGHTS_2c4_R    0x4C    // RW   1 byte    Lights 2 R
#define CNR_LIGHTS_2c4_G    0x4D    // RW   1 byte    Lights 2  G
#define CNR_LIGHTS_2c4_B    0x4E    // RW   1 byte    Lights 2   B

Link to comment
Share on other sites

  • 2 weeks later...
LED Node Register set:

[TABLE=head]Register|Hex|Length*|Read|Description

Device ID|00|1|RO|0x3A for LED Node

Firmware Version|01|2|RO|BCD 0x0910 is version 1.0.9

SystemStatus|03|1|RO|Good is 0; bad is 0xFF

User Mode|04|2x1|RW|0x10 Pulse Mode; 0x01 through 0x0F Built-In Colours; 0x00 C-Link Mode

RGB Out|06|2x3|RO|Current calculated LED output

Temps|0C|2x2|RW|Input temperatures

Cycle Mode|10 30|1|RW|Bit 6~7: 00 - Static; 01 - Two Cycle; 10 - Four Cycle; 11 - Temperature

||||Bit 0~2 Cycle Speed in powers of 2 x 1/8th Second

Cold Warm Hot|11 31|3x5|RW|Temp (two bytes) and RGB (three bytes) for each threshold

Cycle Colours|20 40|4x4|RW|RGB (with one byte padding) for each cycle step

[/TABLE]

 

Does anyone know what Cycle Mode bits 3, 4 and 5 are please. CL typically sets 0x4B and 0x8B so I am wondering that bit 3 is.

Link to comment
Share on other sites

  • 2 weeks later...
We are currently trying to figure out the specifics of the firmware, we already figured out it's saved in an SREC(http://en.wikipedia.org/wiki/SREC_(file_format)) format and unpacked the actual firmware from it.

 

We still need to figure out what exactly is running the firmware before we can start messing with that and fix stuff like the temp sensors not working.

 

That's pretty cool, how did you unpack the firmware from the SREC? I might be able to help with a firmware modification if you are still interested.

 

Edit: I found out some more.

 

Finding out what MCU is inside would be great if we wanted to develop our own firmware. Even if we don't make any custom firmware, we can still help out red-ray by checking the manufacturer's app notes for the upload procedure.

 

So I went looking for teardowns, and found one of the H80i here. Actually, it's more of an advertisement than a teardown, and he doesn't remove the LED module or identify any of the electronics. Even the one picture with the MCU showing has the labeling obscured by darkness! From the pins, however, we can at least tell that it's a QFP48.

 

Also, despite all the firmware images being SREC, there might be different MCU's on each device. Has anyone opened up any other devices to find out? I imagine some people have opened the Commander nodes at least, since it would have low risk of causing any damage, and they look like they were designed for experimentation from the start.

Edited by spaceheater
Link to comment
Share on other sites

Hi guys,

I have been watching this thread and want to say thanks for the job you have done !

I'm the author of HWiNFO (http://www.hwinfo.com) and I used this information to implement support of Corsair Link devices. It seems to work well, though the lack of synchronization and thus inability of being used by multiple applications is a shame. I have implemented the mutex Ray has suggested hoping that Corsair would do the same sometime.

 

However I recently came across a RM1000 PSU connected via a C-Link, that has the following USB ID: VID_1B1C&PID_0C06

I have tried to access this device the same way as the other ones (i.e. 0x0C04), but it doesn't seem to work - it doesn't even respond to cmd 0x4F.

Does anyone have information how to access and read this device ?

Edited by Mumak
Link to comment
Share on other sites

However I recently came across a RM1000 PSU connected via a C-Link, that has the following USB ID: VID_1B1C&PID_0C06

I have tried to access this device the same way as the other ones (i.e. 0x0C04), but it doesn't seem to work - it doesn't even respond to cmd 0x4F.

Does anyone have information how to access and read this device ?

 

I know that you can use the UsbRobbins.dll to access and read an RM PSU bridge device. I don't know who the vendor of this library is or whether you are allowed to freely redistribute it, though.

Link to comment
Share on other sites

I have a commander 2 and cooling link, so if anyone wants help testing, Please let me know, I am interested in getting away from this CRAP software corsair continues to release..

 

I would also be super interested in getting the firmware adjusted to work better with generic PWM fans including those really high CFM Delta's I have hooked to my h100 in another machine.

 

I have a small amount of hobby electronics experience, and have a BBB and an arduino

 

EDIT Also I have pics of the guts of my commander and cooling link somewhere if anyone wants them PM me

Edited by omegatotal
Link to comment
Share on other sites

That would be awesome! And speaking of power supplies, I found a REAL teardown, this time from someone who has actually got a clue of what he is doing: http://www.techpowerup.com/reviews/Corsair/AX1200i/5.html

 

A lot of PSU teardowns are on this site. They reveal that AX series PSU's have the main controller on a Freescale part and the Corsair Link interface on a Silicon Labs part. The HX series have the main controller and Corsair Link interface all in one part from Microchip.

 

This does confirm that it's not a one-MCU-fits-all solution for Corsair Link devices. However, the Silicon Labs part has the same 48-pin package that was visible in the H80i, so I am willing to bet they are the same.

Link to comment
Share on other sites

  • 2 weeks later...

Just wanted everyone to know how much I appreciate their hard work. I just put a H100i in my new build and was devastated when the software was causing DPC_WATCHDOG blue screens, rendering my cooler crippled. I'm an amateur coder on a good day and really can't contribute much to the process but I wanted to create an account and spread the praise. I hope a solution can be found to give me use of my $100 cooler.

 

Thanks again,

IdiotSon

Link to comment
Share on other sites

I guess you get the BSOD when you start CL. CL has issues, but I have never heard of it causing a BSOD. Have you analysed the mini dump (C:\Windows\Minidump) with WINDBG and if so what does analyze -v report?

Both HWiNFO (latest Beta) and my SIV (http://rh-software.com/) utility should report your H100i, do they work? SIV can also control it and setup custom curves. The only thing SIV can't do (yet) is upload new firmware. If you get a BSOD when you run SIV send me the mini dump and I will figure out why.

You need exit CL before running either HWiNFO or SIV as it fails to use the Global\Access_CorsairLink mutex to interlock CL hardware access. Both HWiNFO and SIV can be active at the same time.

Link to comment
Share on other sites

Both SIV and HWiNO can now report RM PSUs. After opening the HID\VID_1B1C&PID_0C06 device to read the information do HidD_GetInputReport() passing in a 9 byte zero filled buffer and you will get the information back. The first byte of the reply is the RID and the rest is decoded as below. Bytes 7 and 8 are zero and don't seem to be used.

 

    crp->fan->cur = ( ( buf[ 3 ] << 8 ) |           // value is RPM / 15
                     ( buf[ 4 ]      ) ) * 15;     // so adjust it

   crp->led->cur = ( ( buf[ 5 ] << 8 ) |           // sequence number
                     ( buf[ 6 ]      ) );          //

   return  (double)( ( buf[ 1 ] << 8 ) |           // return the current
                     ( buf[ 2 ]      ) ) / 551.3;  // scale by 551.3

Edited by red-ray
  • Confused 1
Link to comment
Share on other sites

  • 2 weeks later...

I felt other developers would like to see an H110iGT register dump.

 

I found reading registers >= 0x20 seems to upset the H110iGT so you need SIV 4.52 Beta-17 or later to get the dump. Apart from this it's much the same as the H80i in terms of reporting it and all of SIV 4.47 and later report it OK. If you select a fan index > 2 then it reports the fan index 0 information.

 

[ 0:0  05 H110iGT ] <- [Corsair Link Status] <- SIV64X - System Information Viewer V4.52 Beta-17 RED::ray

Reg  RID  Seq  Cmd  Byte  H110iGT Description    Reg  RID  Seq  Cmd  Word       Value  Reg  RID  Seq  Cmd  Len  Many Response                       ASCII Text

00   00   01   07   41    |I|Product ID          00   00   02   09   0041        65.0  00   00   03   0B   16   41 00 00 00 00 00 00 00 00 00 00 00 "A_______________"
01   00   01   07   08    |V|Version             01   00   02   09   1108      4360.0  01   00   03   0B   16   08 11 00 00 00 00 00 00 00 00 00 00 "________________"
02   00   01   07   48    |N|Product Name        02   00   02   09   3148     12616.0  02   00   03   0B   16   48 31 31 30 69 47 54 00 00 00 00 00 "H110iGT_________"
03   00   01   07   00    |S|System Status       03   00   02   09   0000         0.0  03   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
04   00   01   07   00    |L|LED  0 Select       04   00   02   09   0000         0.0  04   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
05   00   01   07   01    |L|LED  0 Count        05   00   02   09   0001         1.0  05   00   03   0B   16   01 00 00 00 00 00 00 00 00 00 00 00 "________________"
06   00   01   07   00    |L|LED  0 Mode         06   00   02   09   0000         0.0  06   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
07   00   01   07   FF    |L|LED  0 Value        07   00   02   09   FFFF     65535.0  07   00   03   0B   16   FF FF FF 00 00 00 00 00 00 00 00 00 "________________"
08   00   01   07   00    |L|LED  0 Temp Ext     08   00   02   09   0000         0.0  08   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
09   00   01   07   00    |L|LED  0 Temp Table   09   00   02   09   1900        25.0  09   00   03   0B   16   00 19 00 23 00 42 00 00 00 00 00 00 "___#_B__________"
0A   00   01   07   00    |L|LED  0 Colours      0A   00   02   09   0000         0.0  0A   00   03   0B   16   00 00 FF 00 FF 00 FF 00 00 00 00 00 "________________"
0B   00   01   07   FF    |L|LED  0 Cycle        0B   00   02   09   FFFF     65535.0  0B   00   03   0B   16   FF FF FF 00 00 00 00 00 00 00 00 00 "________________"
0C   00   01   07   00    |T|Temp 0 Select       0C   00   02   09   0000         0.0  0C   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
0D   00   01   07   01    |T|Temp 0 Count        0D   00   02   09   0001         0.0  0D   00   03   0B   16   01 00 00 00 00 00 00 00 00 00 00 00 "________________"
0E   00   01   07   CB    |T|Temp 0 Value        0E   00   02   09   14CB        20.8  0E   00   03   0B   16   CB 14 00 00 00 00 00 00 00 00 00 00 "________________"
0F   00   01   07   3C    |T|Temp 0 Limit        0F   00   02   09   003C         0.2  0F   00   03   0B   16   3C 00 00 00 00 00 00 00 00 00 00 00 "<_______________"
10   00   01   07   00    |F|Fan  0 Select       10   00   02   09   0000         0.0  10   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
11   00   01   07   03    |F|Fan  0 Count        11   00   02   09   0003         3.0  11   00   03   0B   16   03 00 00 00 00 00 00 00 00 00 00 00 "________________"
12   00   01   07   87    |F|Fan  0 Mode         12   00   02   09   0087       135.0  12   00   03   0B   16   87 00 00 00 00 00 00 00 00 00 00 00 "________________"
13   00   01   07   40    |F|Fan  0 Fixed PWM    13   00   02   09   0040        64.0  13   00   03   0B   16   40 00 00 00 00 00 00 00 00 00 00 00 "@_______________"
14   00   01   07   D0    |F|Fan  0 Fixed RPM    14   00   02   09   07D0      2000.0  14   00   03   0B   16   D0 07 00 00 00 00 00 00 00 00 00 00 "________________"
15   00   01   07   00    |F|Fan  0 Temp Ext     15   00   02   09   0000         0.0  15   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
16   00   01   07   08    |F|Fan  0 Value        16   00   02   09   0208       520.0  16   00   03   0B   16   08 02 00 00 00 00 00 00 00 00 00 00 "________________"
17   00   01   07   63    |F|Fan  0 Maximum      17   00   02   09   0763      1891.0  17   00   03   0B   16   63 07 00 00 00 00 00 00 00 00 00 00 "c_______________"
18   00   01   07   00    |F|Fan  0 Threshold    18   00   02   09   0000         0.0  18   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
19   00   01   07   14    |F|Fan  0 RPM Table    19   00   02   09   0514      1300.0  19   00   03   0B   16   14 05 DC 05 08 07 6C 07 D0 07 00 00 "______l_________"
1A   00   01   07   00    |F|Fan  0 Temp Table   1A   00   02   09   1900        25.0  1A   00   03   0B   16   00 19 00 1C 00 22 00 25 00 28 00 00 "_____"_%_(______"
1B   00   01   07   61                           1B   00   02   09   A861     43105.0  1B   00   03   0B   16   61 A8 00 00 00 00 00 00 00 00 00 00 "a_______________"
1C   00   01   07   00                           1C   00   02   09   0000         0.0  1C   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
1D   00   01   07   00                           1D   00   02   09   0000         0.0  1D   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
1E   00   01   07   00                           1E   00   02   09   0000         0.0  1E   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"
1F   00   01   07   00                           1F   00   02   09   0000         0.0  1F   00   03   0B   16   00 00 00 00 00 00 00 00 00 00 00 00 "________________"

10   00   01   07   01    |F|Fan  1 Select       10   00   02   09   0001         1.0
11   00   01   07   03    |F|Fan  1 Count        11   00   02   09   0003         3.0
12   00   01   07   87    |F|Fan  1 Mode         12   00   02   09   0087       135.0
13   00   01   07   40    |F|Fan  1 Fixed PWM    13   00   02   09   0040        64.0
14   00   01   07   D0    |F|Fan  1 Fixed RPM    14   00   02   09   07D0      2000.0
15   00   01   07   00    |F|Fan  1 Temp Ext     15   00   02   09   0000         0.0
16   00   01   07   F0    |F|Fan  1 Value        16   00   02   09   01F0       496.0
17   00   01   07   61    |F|Fan  1 Maximum      17   00   02   09   0761      1889.0

10   00   01   07   02    |F|Fan  2 Select       10   00   02   09   0002         2.0
11   00   01   07   03    |F|Fan  2 Count        11   00   02   09   0003         3.0
12   00   01   07   85    |F|Fan  2 Mode         12   00   02   09   0085       133.0
13   00   01   07   6D    |F|Fan  2 Fixed PWM    13   00   02   09   006D       109.0
14   00   01   07   2E    |F|Fan  2 Fixed RPM    14   00   02   09   092E      2350.0
15   00   01   07   00    |F|Fan  2 Temp Ext     15   00   02   09   0000         0.0
16   00   01   07   46    |F|Fan  2 Value        16   00   02   09   0946      2374.0
17   00   01   07   B8    |F|Fan  2 Maximum      17   00   02   09   0BB8      3000.0

10   00   01   07   03    |F|Fan  3 Select       10   00   02   09   0003         3.0
11   00   01   07   03    |F|Fan  3 Count        11   00   02   09   0003         3.0
12   00   01   07   87    |F|Fan  3 Mode         12   00   02   09   0087       135.0
13   00   01   07   40    |F|Fan  3 Fixed PWM    13   00   02   09   0040        64.0
14   00   01   07   D0    |F|Fan  3 Fixed RPM    14   00   02   09   07D0      2000.0
15   00   01   07   00    |F|Fan  3 Temp Ext     15   00   02   09   0000         0.0
16   00   01   07   08    |F|Fan  3 Value        16   00   02   09   0208       520.0
17   00   01   07   63    |F|Fan  3 Maximum      17   00   02   09   0763      1891.0

10   00   01   07   04    |F|Fan  4 Select       10   00   02   09   0004         4.0
11   00   01   07   03    |F|Fan  4 Count        11   00   02   09   0003         3.0
12   00   01   07   87    |F|Fan  4 Mode         12   00   02   09   0087       135.0
13   00   01   07   40    |F|Fan  4 Fixed PWM    13   00   02   09   0040        64.0
14   00   01   07   D0    |F|Fan  4 Fixed RPM    14   00   02   09   07D0      2000.0
15   00   01   07   00    |F|Fan  4 Temp Ext     15   00   02   09   0000         0.0
16   00   01   07   08    |F|Fan  4 Value        16   00   02   09   0208       520.0
17   00   01   07   63    |F|Fan  4 Maximum      17   00   02   09   0763      1891.0

10   00   01   07   05    |F|Fan  5 Select       10   00   02   09   0005         5.0
11   00   01   07   03    |F|Fan  5 Count        11   00   02   09   0003         3.0
12   00   01   07   87    |F|Fan  5 Mode         12   00   02   09   0087       135.0
13   00   01   07   40    |F|Fan  5 Fixed PWM    13   00   02   09   0040        64.0
14   00   01   07   D0    |F|Fan  5 Fixed RPM    14   00   02   09   07D0      2000.0
15   00   01   07   00    |F|Fan  5 Temp Ext     15   00   02   09   0000         0.0
16   00   01   07   08    |F|Fan  5 Value        16   00   02   09   0208       520.0
17   00   01   07   63    |F|Fan  5 Maximum      17   00   02   09   0763      1891.0

[  OK ]  [ Copy]   | First|  | Prev|   [ This]  [ Next]   [ Last]

How can I make the code box wider please?

Edited by red-ray
Link to comment
Share on other sites

I just emailed Alfredo and he said "I didn't know that product. I will put that product in the queue".

 

Really? I emailed him about this back in August and he said he'd look into it if corsair explained how to communicate with their products.

 

Regardless, this is absolutely fantastic news! thanks for helping to push the development of this hardware support :)

Edited by MrPromaster
spelling
Link to comment
Share on other sites

Can anyone made any sense of the USB Trace I captured when CL started up please? CL seems to be using SIUSBXP.dll so source would be handy.

 

The protocol seems rather different to that for the HID CL devices.

558904894_AX1500iUSBTrace.thumb.png.dc911db1d003f893a5bfe73589c54bfe.png

Edited by red-ray
Link to comment
Share on other sites


×
×
  • Create New...