Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NZXT Kraken X61 #3

Closed
xsuchy opened this issue Nov 10, 2018 · 23 comments

Comments

@xsuchy
Copy link

commented Nov 10, 2018

I have NZXT Kraken X61, which is not supported. Can I help somehow to get this one on the list?

@xsuchy

This comment has been minimized.

Copy link
Author

commented Nov 10, 2018

The reverse engineered protocol is here:
https://github.com/jaksi/leviathan/blob/master/PROTOCOL.md
The usb id for this device is: ID 2433:b200

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Nov 10, 2018

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 2433:b200 device from Asetek.

Are you on Linux? If so, can you send me the entire output for sudo lsusb -v -d 2433:b200? This will show your iSerial value, but in an EVGA cooler this contained some sort of version information (e.g. CCVI_1.0) that looked relevant to differentiate between the different models.

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Nov 10, 2018

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:

# liquidctl list -v
# liquidctl initialize -v
# liquidctl status -v
# liquidctl set fan speed 100 -v
# liquidctl set pump speed 100 -v
# liquidctl status -v

Besides -v (verbose mode), there is also -g (--debug), that enables debug messages and sets up PyUSB to trace all calls.

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Nov 10, 2018

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:

Select "Options -> List All Devices", select your NZXT device, change target driver to libusb-win32 or libusbK and install the driver. CAM software will not detect the device after this.

from krakenx/README

@xsuchy

This comment has been minimized.

Copy link
Author

commented Nov 11, 2018

Are you on Linux?

Yes.

$ sudo lsusb -v -d 2433:b200

Bus 003 Device 004: ID 2433:b200  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x2433 
  idProduct          0xb200 
  bcdDevice            1.00
  iManufacturer           1 ASETEK
  iProduct                2 690LC
  iSerial                 3 CCVI_1.0
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength       0x0020
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0x80
      (Bus Powered)
    MaxPower               50mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass       255 Vendor Specific Class
      bInterfaceSubClass      0 
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x02  EP 2 OUT
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            2
          Transfer Type            Bulk
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               0
can't get debug descriptor: Resource temporarily unavailable
Device Status:     0x0000
  (Bus Powered)
[m
@xsuchy

This comment has been minimized.

Copy link
Author

commented Nov 11, 2018

I reseted --hard to your commit and run sudo pip3 install --editable . and then:

$ liquidctl list -v
Traceback (most recent call last):
  File "/usr/local/bin/liquidctl", line 11, in <module>
    load_entry_point('liquidctl', 'console_scripts', 'liquidctl')()
  File "/home/mirek/projects/liquidctl/liquidctl/cli.py", line 160, in main
    all_devices = list(enumerate(find_all_supported_devices()))
  File "/home/mirek/projects/liquidctl/liquidctl/cli.py", line 77, in find_all_supported_devices
    return itertools.chain(*res)
  File "/home/mirek/projects/liquidctl/liquidctl/cli.py", line 76, in <lambda>
    res = map(lambda driver: driver.find_supported_devices(), DRIVERS)
  File "/home/mirek/projects/liquidctl/liquidctl/driver/base_usb.py", line 61, in find_supported_devices
    drivers.append(cls(dev, description, **kwargs))
TypeError: __init__() missing 2 required positional arguments: 'speed_channel_count' and 'color_channel_count'
@xsuchy

This comment has been minimized.

Copy link
Author

commented Nov 11, 2018

After:

    def __init__(self, device, description, speed_channel_count=None, color_channel_count=None):

and running the command again:

$ liquidctl list -v
Device 0, NZXT Kraken X (X31, X41 or X61; experimental)
  Vendor: 0x2433
  Product: 0xb200
  Port number: 7
  Serial number: CCVI_1.0
  Hierarchy: AsetekDriver, BaseUsbDriver
$ liquidctl initialize -v
$
$ liquidctl status -v
Device 0, NZXT Kraken X (X31, X41 or X61; experimental)
Traceback (most recent call last):
  File "/usr/local/bin/liquidctl", line 11, in <module>
    load_entry_point('liquidctl', 'console_scripts', 'liquidctl')()
  File "/home/mirek/projects/liquidctl/liquidctl/cli.py", line 171, in main
    _device_get_status(dev, i)
  File "/home/mirek/projects/liquidctl/liquidctl/cli.py", line 118, in _device_get_status
    status = dev.get_status()
  File "/home/mirek/projects/liquidctl/liquidctl/driver/asetek.py", line 90, in get_status
    msg = self._end_transaction_and_read()
  File "/home/mirek/projects/liquidctl/liquidctl/driver/asetek.py", line 117, in _end_transaction_and_read
    msg = self.device.read(_READ_ENDPOINT, _READ_LENGTH, _READ_TIMEOUT)
  File "/usr/lib/python3.7/site-packages/usb/core.py", line 988, in read
    self.__get_timeout(timeout))
  File "/usr/lib/python3.7/site-packages/usb/backend/libusb1.py", line 833, in bulk_read
    timeout)
  File "/usr/lib/python3.7/site-packages/usb/backend/libusb1.py", line 936, in __read
    _check(retval)
  File "/usr/lib/python3.7/site-packages/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 110] Operation timed out

$ liquidctl set fan speed 100 -v
INFO: setting fan PWM duty to 100%

And the fan went crazy to full speed. Setting it to 25 slowed down the fan back to normal:

$ liquidctl set fan speed 25 -v
INFO: setting fan PWM duty to 25%

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 status is operating.

@xsuchy

This comment has been minimized.

Copy link
Author

commented Nov 11, 2018

I tried to set

_READ_TIMEOUT = 200000

but it did not helped.

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Nov 11, 2018

I'll sit down a bit later to look into this, but I am wondering if not starting a transaction in get_status could help.

@xsuchy

This comment has been minimized.

Copy link
Author

commented Nov 11, 2018

Negative sir. It does not help. Still the same timeout.

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Nov 11, 2018

Ok, thanks for letting me know. I've just sat down to work on this.

I've also created a gitter for the project. When you are back online, maybe we can discuss the issue there, a bit more synchronously.

@jonasmalacofilho jonasmalacofilho referenced this issue Nov 13, 2018

Closed

Support for (other) Asetek 690LC coolers #7

0 of 3 tasks complete
@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Nov 13, 2018

See #7 for updates.

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Dec 15, 2018

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 sync pseudo-channel), but more work and experimentation is necessary. And with no access to a compatible device, there's only so much I can do.

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",[1] please try that branch:

  • test the status command
  • test the pseudo sync channel for fixed speeds
  • test the fixed fan and pump speed settings
  • try setting a profile for the fan channel, instead of a fixed value

If you find issues – which you probably will – please report them here, and consider contributing:

  • try editing the code (e.g. changing the order the commands are sent to the device)
  • consider tracing the USB communication between the host and the device
  • if the EULA does not restrict it,[2] you could also try to reverse engineer the software

You can see the latest developments on #7, and you can chat with me on gitter.


[1] Preferably, but not necessarily with serial CCVI_1.0.
[2] Or if such clause is not legal in your country.

@ghost

This comment has been minimized.

Copy link

commented Jan 11, 2019

maybe this can help?
https://github.com/RBlafford/levd

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Jan 17, 2019

Thanks, @RBlafford.

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: liquidctl set fan speed and liquidctl set pump speed are two independent invocations, that could come in any order or at any time.

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...

@ghost

This comment has been minimized.

Copy link

commented Jan 17, 2019

@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.

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Jan 18, 2019

@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 difficult boring: I can't really explore a different approach or test potential new features (e.g. the fan speed profile).

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Jan 30, 2019

@xsuchy, can you test/debug the current state of #7?

  • status: liquidctl status
  • fixed combined speed: liquidctl set sync speed <fixed value>
  • fixed independent speeds: liquidctl set <fan|pump> speed <fixed value>
  • variable fan speed: liquidctl set fan speed <temp> <value> [...]

@RBlafford, if you can, please test it too.

P.S. --debug will dump a bunch of useful (or less so) information, including all libusb calls.

@ghost

This comment has been minimized.

Copy link

commented Jan 30, 2019

@jonasmalacofilho sure will do!

@KeithMyers

This comment has been minimized.

Copy link

commented Feb 3, 2019

I just installed commit 8db7f7f with the repressed pipe error. The output of:
liquidctl status --debug

# liquidctl status --debug
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle e36a70 at 0x7fbfbbb56e80>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbb9f5898>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbc7d1e48>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a58>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a90>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbb9f5898>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13be0>)
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle e36a70 at 0x7fbfbbb56e80>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13be0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13b70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13cc0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13be0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13b70>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle e36a70 at 0x7fbfbbb56e80>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13b70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13c50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13c18>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13b70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13c50>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle e36a70 at 0x7fbfbbb56e80>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13c50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13be0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13cc0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13c50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13be0>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle e36a70 at 0x7fbfbbb56e80>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13be0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13b70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13c18>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13be0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13b70>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>)
[DEBUG] usb.backend.libusb1: _LibUSB.is_kernel_driver_active(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] liquidctl.driver.asetek: open device
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 64, 0, 65535, 0, array('B'), 1000)
[WARNING] liquidctl.driver.asetek: report: failed to (pre) open (control: open), ignoring
[DEBUG] liquidctl.driver.asetek: [Errno 32] Pipe error
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/liquidctl-1.2.0.dev1-py3.6.egg/liquidctl/driver/asetek.py", line 182, in _open
    self.device.ctrl_transfer(_USBXPRESS, _UNKNOWN_OPEN_REQUEST, _UNKNOWN_OPEN_VALUE)
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/core.py", line 1043, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/_debug.py", line 60, in do_trace
    return f(*args, **named_args)
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/backend/libusb1.py", line 883, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 64, 2, 2, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: begin transaction
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 64, 2, 1, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: write 10 00 00 00 00 00 00 00 00 00 3c 00 00 01 00 00 01 00 01
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.claim_interface(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_write(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 2, 0, array('B', [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 1, 0, 1]), 2000)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 1, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_read(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 130, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 2000)
[DEBUG] liquidctl.driver.asetek: received 02 1c 01 26 00 06 01 10 0b 40 1e 10 00 00 08 f8 00 22 fb 09 00 ff 80 02 0a 00 00 ff ff d0 df 23
[DEBUG] usb.backend.libusb1: _LibUSB.release_interface(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbba78eb8>)
Liquid temperature          30.8  °C 
Fan speed                    540  rpm
Pump speed                  2880  rpm
Firmware version        2.10.0.0     
[DEBUG] liquidctl.driver.asetek: close device
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x7fbfbba13a20>)
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbee77e10>, 64, 2, 4, 0, array('B'), 1000)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x7fbfbee77e10>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()

The output of liquidctl set fan speed 100 --debug

# liquidctl set fan speed 100 --debug
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle 2ada4a0 at 0x7f00e56354e0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55b1978>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e6391ef0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0b00>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0b38>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55b1978>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c88>)
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle 2ada4a0 at 0x7f00e56354e0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c88>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c18>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0d68>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c88>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c18>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle 2ada4a0 at 0x7f00e56354e0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c18>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0cf8>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0cc0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c18>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0cf8>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle 2ada4a0 at 0x7f00e56354e0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0cf8>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c88>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0d68>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0cf8>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c88>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<CDLL 'libusb-1.0.so.0', handle 2ada4a0 at 0x7f00e56354e0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c88>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c18>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0cc0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c88>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e8a37e10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0c18>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>)
[DEBUG] usb.backend.libusb1: _LibUSB.is_kernel_driver_active(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] liquidctl.driver.asetek: open device
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 64, 0, 65535, 0, array('B'), 1000)
[WARNING] liquidctl.driver.asetek: report: failed to (pre) open (control: open), ignoring
[DEBUG] liquidctl.driver.asetek: [Errno 32] Pipe error
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/liquidctl-1.2.0.dev1-py3.6.egg/liquidctl/driver/asetek.py", line 182, in _open
    self.device.ctrl_transfer(_USBXPRESS, _UNKNOWN_OPEN_REQUEST, _UNKNOWN_OPEN_VALUE)
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/core.py", line 1043, in ctrl_transfer
    self.__get_timeout(timeout))
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/_debug.py", line 60, in do_trace
    return f(*args, **named_args)
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/backend/libusb1.py", line 883, in ctrl_transfer
    timeout))
  File "/usr/local/lib/python3.6/dist-packages/pyusb-1.0.2-py3.6.egg/usb/backend/libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 64, 2, 2, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: begin transaction
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 64, 2, 1, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: write 10 00 00 00 00 00 00 00 00 00 3c 00 00 01 00 00 01 00 01
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.claim_interface(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_write(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 2, 0, array('B', [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 1, 0, 1]), 2000)
[INFO] liquidctl.driver.asetek: setting fan PWM duty to 100%
[DEBUG] liquidctl.driver.asetek: write 12 64
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_write(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 2, 0, array('B', [18, 100]), 2000)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 1, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_read(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 130, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 2000)
[DEBUG] liquidctl.driver.asetek: received 02 1c 01 27 00 06 01 10 0b 40 1e 10 00 00 07 f8 00 22 fb 09 00 ff 80 02 0a 00 00 ff ff d0 df 23
[DEBUG] usb.backend.libusb1: _LibUSB.release_interface(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x7f00e5635e80>)
[DEBUG] liquidctl.driver.asetek: close device
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x7f00e55d0ac8>)
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x7f00e55b1978>, 64, 2, 4, 0, array('B'), 1000)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x7f00e55b1978>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()

The output of liquidctl status without debug:

# liquidctl status
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
report: failed to (pre) open (control: open), ignoring
Liquid temperature          30.0  °C 
Fan speed                   1860  rpm
Pump speed                  2850  rpm
Firmware version        2.10.0.0     
@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Feb 4, 2019

@KeithMyers thank you!

@cdgriffith

This comment has been minimized.

Copy link
Contributor

commented Feb 6, 2019

Thank you all for your hard work on this, I appreciate not having to use the terrible CAM software.

My contribution of user data:

  • Kraken x61
  • Windows 10 x64
  • Python 3.7.2 x32
  • libusb-1.0.21 x32 (prob want to update readme that libusb version must match Python version, not windows verison)

Steps taken:

  1. Create Python virtual env python -m venv venv
  2. Downloaded https://github.com/libusb/libusb/releases/tag/v1.0.21 and extracted data from MS32/dll into my venv/Scripts folder
  3. Downloaded liquidctl add-second-gen-krackens via pip pip install git+https://github.com/jonasmalacofilho/liquidctl.git@add-second-gen-krakens
  4. Downloaded https://zadig.akeo.ie/ and installed libusbK for my Kraken device
  5. Ran liquidctl to change my fan speed!

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

(venv) C:\Users\a>liquidctl status
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
report: failed to (pre) open (control: open), ignoring
report: failed to open right away, will close first
usb.core.USBError: [Errno 2] Entity not found

During handling of the above exception, another exception occurred:

usb.core.USBError: [Errno 2] Entity not found

(venv) C:\Users\a>liquidctl initialize
report: failed to (pre) open (control: open), ignoring
report: failed to open right away, will close first
usb.core.USBError: [Errno 2] Entity not found

During handling of the above exception, another exception occurred:

usb.core.USBError: [Errno 2] Entity not found

Success with libusbK v3.0.7.0

(venv) C:\Users\a>liquidctl list
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)

(venv) C:\Users\a>liquidctl status
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
report: failed to (pre) open (control: open), ignoring
Liquid temperature          37.6  °C
Fan speed                    420  rpm
Pump speed                  3600  rpm
Firmware version         0.7.0.0

Detailed Outputs

list

> liquidctl list
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
list debug

liquidctl list --debug
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 40f0000 at 0x40ae690>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE410>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0AD0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 40f0000 at 0x40ae690>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE410>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE450>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE410>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE450>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE4D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE410>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0A70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x039ACC70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE450>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x039ACC70>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 40f0000 at 0x40ae690>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE410>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040EE450>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0A70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03918130>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0A70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03918130>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 40f0000 at 0x40ae690>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x039ACC70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0A70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x039ACC70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040DFA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0A70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040D0830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE8B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE730>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE8B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 40f0000 at 0x40ae690>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE7B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE730>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE8B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE7B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE730>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE8B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x040C02F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0373ADF0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE830>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03CDE7B0>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
  Vendor: 0x2433
  Product: 0xb200
  Port number: 4
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x040D0AD0>)
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x040A4F90>, 128, 6, 768, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 1000)
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x040A4F90>, 128, 6, 771, 1033, array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 1000)
  Serial number: CCVI_1.0
  Hierarchy: AsetekDriver, BaseUsbDriver

[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x040A4F90>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()

status

> liquidctl status
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
report: failed to (pre) open (control: open), ignoring
Liquid temperature          38.0  °C
Fan speed                    420  rpm
Pump speed                  3480  rpm
Firmware version         0.7.0.0
status debug

> liquidctl status --debug
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x361ef10>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F330>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F490>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F490>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F490>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x361ef10>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F2F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F550>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F2F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F550>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F2F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F550>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F2F0>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x361ef10>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F470>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x361ef10>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E850>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x361ef10>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F510>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F530>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366F4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03650630>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03650650>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036505F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03650770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036405D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03640250>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03640190>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325E8D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036405D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0325EA50>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
Device 0, Asetek 690LC (NZXT, EVGA or other) (experimental)
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x0366F370>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] liquidctl.driver.asetek: open device
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>, 64, 0, 65535, 0, array('B'), 1000)
[WARNING] liquidctl.driver.asetek: report: failed to (pre) open (control: open), ignoring
[DEBUG] liquidctl.driver.asetek: [Errno 32] Pipe error
Traceback (most recent call last):
  File "c:\users\a\venv\lib\site-packages\liquidctl\driver\asetek.py", line 182, in _open
    self.device.ctrl_transfer(_USBXPRESS, _UNKNOWN_OPEN_REQUEST, _UNKNOWN_OPEN_VALUE)
  File "c:\users\a\venv\lib\site-packages\usb\core.py", line 1043, in ctrl_transfer
    self.__get_timeout(timeout))
  File "c:\users\a\venv\lib\site-packages\usb\_debug.py", line 60, in do_trace
    return f(*args, **named_args)
  File "c:\users\a\venv\lib\site-packages\usb\backend\libusb1.py", line 883, in ctrl_transfer
    timeout))
  File "c:\users\a\venv\lib\site-packages\usb\backend\libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>, 64, 2, 2, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: begin transaction
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>, 64, 2, 1, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: write 10 00 00 00 00 00 00 00 00 00 3c 00 00 01 00 00 01 00 01
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.claim_interface(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_write(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>, 2, 0, array('B', [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 1, 0, 1]), 2000)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 1, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366F370>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_read(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>, 130, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 2000)
[DEBUG] liquidctl.driver.asetek: received 01 a4 7b 4b c6 db 25 bf 0e 10 26 10 ff 71 01 41 fe c8 99 7b 19 fc 03 00 07 00 00 21 c3 44 69 20
[DEBUG] usb.backend.libusb1: _LibUSB.release_interface(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x0361EDD0>)
Liquid temperature          38.1  °C
Fan speed                    420  rpm
Pump speed                  3600  rpm
Firmware version         0.7.0.0
[DEBUG] liquidctl.driver.asetek: close device
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x0366F370>)
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x0362E2D0>, 64, 2, 4, 0, array('B'), 1000)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x0362E2D0>)

[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()

set fan speed

> liquidctl set fan speed 60
report: failed to (pre) open (control: open), ignoring

Does properly change fan speed

set fan speed debug

> liquidctl set fan speed 50 --debug
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x362e0d0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366E3D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366E430>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366E4D0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366E4F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x0366E430>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660A10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660A70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660A10>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660A70>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651AB0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660B90>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651AB0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660790>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x362e0d0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660790>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660790>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660790>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x362e0d0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660790>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660790>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660790>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660990>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651710>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03660950>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x362e0d0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03640370>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036518B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036518B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036518B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.__init__(<WinDLL 'C:\Users\a\venv\Scripts\libusb-1.0.dll', handle 3670000 at 0x362e0d0>)
[INFO] usb.core: find(): using backend "usb.backend.libusb1"
[DEBUG] usb.backend.libusb1: _LibUSB.enumerate_devices()
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651710>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036518B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651710>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036518B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651710>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651770>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651A30>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x036518B0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651890>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_device_descriptor(<usb.backend.libusb1._Device object at 0x03651710>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x0366E3F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] liquidctl.driver.asetek: open device
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 64, 0, 65535, 0, array('B'), 1000)
[WARNING] liquidctl.driver.asetek: report: failed to (pre) open (control: open), ignoring
[DEBUG] liquidctl.driver.asetek: [Errno 32] Pipe error
Traceback (most recent call last):
  File "c:\users\a\venv\lib\site-packages\liquidctl\driver\asetek.py", line 182, in _open
    self.device.ctrl_transfer(_USBXPRESS, _UNKNOWN_OPEN_REQUEST, _UNKNOWN_OPEN_VALUE)
  File "c:\users\a\venv\lib\site-packages\usb\core.py", line 1043, in ctrl_transfer
    self.__get_timeout(timeout))
  File "c:\users\a\venv\lib\site-packages\usb\_debug.py", line 60, in do_trace
    return f(*args, **named_args)
  File "c:\users\a\venv\lib\site-packages\usb\backend\libusb1.py", line 883, in ctrl_transfer
    timeout))
  File "c:\users\a\venv\lib\site-packages\usb\backend\libusb1.py", line 595, in _check
    raise USBError(_strerror(ret), ret, _libusb_errno[ret])
usb.core.USBError: [Errno 32] Pipe error
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 64, 2, 2, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: begin transaction
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 64, 2, 1, 0, array('B'), 1000)
[DEBUG] liquidctl.driver.asetek: write 10 00 00 00 00 00 00 00 00 00 3c 00 00 01 00 00 01 00 01
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.claim_interface(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_write(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 2, 0, array('B', [16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 1, 0, 0, 1, 0, 1]), 2000)
[INFO] liquidctl.driver.asetek: setting fan PWM duty to 50%
[DEBUG] liquidctl.driver.asetek: write 12 32
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_write(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 2, 0, array('B', [18, 50]), 2000)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_endpoint_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 1, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_interface_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0, 0, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.get_configuration_descriptor(<usb.backend.libusb1._Device object at 0x0366E3F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.bulk_read(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 130, 0, array('B', [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), 2000)
[DEBUG] liquidctl.driver.asetek: received 03 c0 7b 4b c6 db 25 bf 0e 10 25 10 ff fd 03 41 fe c8 99 7b 19 fc 03 00 07 00 00 21 c3 44 69 20
[DEBUG] usb.backend.libusb1: _LibUSB.release_interface(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 0)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>)
[DEBUG] liquidctl.driver.asetek: close device
[DEBUG] usb.backend.libusb1: _LibUSB.open_device(<usb.backend.libusb1._Device object at 0x0366E3F0>)
[DEBUG] usb.backend.libusb1: _LibUSB.ctrl_transfer(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>, 64, 2, 4, 0, array('B'), 1000)
[DEBUG] usb.backend.libusb1: _LibUSB.close_device(<usb.backend.libusb1._DeviceHandle object at 0x02EB81F0>)
[DEBUG] usb.backend.libusb1: _LibUSB._finalize_object()

If you want any more data please just ping and let me know.

Thanks again!

@jonasmalacofilho

This comment has been minimized.

Copy link
Owner

commented Apr 8, 2019

From now on the driver for these second generation Krakens will be improved and maintained directly in the master branch. @xsuchy, @RBlafford and @cdgriffith, thanks for all the help so far.

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 --legacy-690lc option must be used at all times when dealing with these Krakens. We have yet to find a way to automatically differentiate these devices from more recent generic Asetek 690LC coolers.

Note: that's a lowercase L in --legacy-690lc, as in 690LC. Perhaps this name is not very good... I might adjust it before the final 1.2.0 release if it causes too many issues.

The device really must also be initialized after every boot.

liquidctl --legacy-690lc initialize

After that you can query the device status and perform other operations.

liquidctl --legacy-690lc status

Both fan and pump speeds can be configured by fixed duty values (i.e. values between 0 and 100, where the % sign is implicit).

liquidctl --legacy-690lc set fan speed 50
liquidctl --legacy-690lc set pump speed 75

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 --time-per-color in seconds (the default is 5 seconds per color).

liquidctl --legacy-690lc set logo color fading ff8000 00ff80
liquidctl --legacy-690lc set logo color fading ff8000 00ff80 --time-per-color 2

The 'blinking' mode accepts both --time-per-color and --time-off (also in seconds). The default is 1 second for each, and whenever unspecified --time-off will equal --time-per-color.

liquidctl --legacy-690lc set logo color blinking 8000ff
liquidctl --legacy-690lc set logo color blinking 8000ff --time-off 2
liquidctl --legacy-690lc set logo color blinking 8000ff --time-per-color 2
liquidctl --legacy-690lc set logo color blinking 8000ff --time-per-color 2 --time-off 1

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.

liquidctl --legacy-690lc set logo color fixed 00ff00
liquidctl --legacy-690lc set logo color blackout
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
4 participants
You can’t perform that action at this time.