Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
NZXT Kraken X61 #3
The reverse engineered protocol is here:
That helps, I'll take a first look this weekend.
I might also need some more information from your device. Based on OpenCorsairLink I've noticed that seem to be some differences in the protocol for each of the many variants of what I believe to be the same base
Are you on Linux? If so, can you send me the entire output for
Can you take a look at c4a6627?
It's just a starting point. Let me know if something works.
I would start by trying the following commands:
It has just occurred to me that on Windows it will probably be necessary to replace the kernel driver, because this generation might normally use a proprietary module from Asetek instead of the generic Microsoft Human Interface Device (HID) driver.
If this is indeed the case – and please let me know so we can mention this in the documentation – it will be necessary to follow the libusb driver installation instructions for Windows. From the suggested methods, Zadig is probably the easiest:
I reseted --hard to your commit and run
and running the command again:
And the fan went crazy to full speed. Setting it to 25 slowed down the fan back to normal:
I did not tried the pump as this is critical, I do not want to demage the cooling and I would prefer to run it after the
I've figured out a lot more about the USBXpress driver used on Windows. Based on this, I'll improve the low level implementation, and eventually merge #7 to the main tree, marking it as experimental.
That said, the underlying protocol is only part of the issue: these bare bones Asetek devices seem to like very specific – and limiting – groupings of commands, and our only reference – leviathan – only shows how to simultaneously change both channels and/or lighting.
I have a few ideas to solve this for liquidctl (some of them already implemented, like the
So here's a call to action...
If you have a second generation Kraken (X31, X41, X61), an EVGA CLC with USB (120 CL12, 240, 280) or another device that identifies itself as a "ASETEK 690LC", please try that branch:
If you find issues – which you probably will – please report them here, and consider contributing:
 Preferably, but not necessarily with serial CCVI_1.0.
It looks like you followed the same approach as leviathan. I started from that as well, but the main issue I have is how to apply one setting at a time, because of how this CLI is designed:
Also, according to a user report, even a successfully set fan speed still is automatically reverted in a couple of seconds. Since you're much more familiar than I with this device: is it able to run without software, once properly configured? As far as I knew it was, but I'm starting to have some doubts...
@jonasmalacofilho I am not home this week, i will check to see if i have a second gen x61 or not at home and give it a shot.
AFAIK when I send a command to the device, it stays in that state until power is turned off for the computer. If its changing and then ignoring the command then maybe the protocol is not followed correctly or an incorrect command is being sent.
@RBlafford ok, thanks.
In the meantime, I'll see if I can find a device of this generation for cheap. I would love to support these in liquidctl, but working without access to the coolers is quite
@RBlafford, if you can, please test it too.
I just installed commit 8db7f7f with the repressed pipe error. The output of:
The output of liquidctl set fan speed 100 --debug
The output of liquidctl status without debug:
Thank you all for your hard work on this, I appreciate not having to use the terrible CAM software.
My contribution of user data:
Zadig Driver Install
First Try - Failed libusb-win32 drivers
I ran Zadig and installed the libusb-win32 driver for "690LC" , but it erred out after 5 minutes and received the following errors while running liquidctl
Success with libusbK v22.214.171.124
set fan speed
Does properly change fan speed
set fan speed debug
If you want any more data please just ping and let me know.
Bellow is a quick enumeration of the corresponding features and options. These have not been tested on a real Kraken, but only on a EVGA CLC. Because of this, I still expect you'll find a few bugs...
Please test and open specific issues for any problems you notice.
First, it is really important to remember that the
Note: that's a lowercase L in
The device really must also be initialized after every boot.
After that you can query the device status and perform other operations.
Both fan and pump speeds can be configured by fixed duty values (i.e. values between 0 and 100, where the % sign is implicit).
There's a single lighting channel; as no particular name is enforced yet, I'll use 'logo' in these examples.
The 'fading' mode supports specifying the
The 'blinking' mode accepts both
Finally, the cooler supports two more lighting modes: 'fixed' and 'blackout'. The latter is the only one to completely turn off the LED; however, it also inhibits the visual high-temperature alert.