liquidctl – liquid cooler control Cross-platform tool and drivers for liquid coolers and other devices

Overview

liquidctl – liquid cooler control

Cross-platform tool and drivers for liquid coolers and other devices

Status of the tests Status of the build for Windows Developer's Discord server

# liquidctl list
Device #0: ASUS Strix RTX 2080 Ti OC
Device #1: Corsair Vengeance RGB DIMM2
Device #2: Corsair Vengeance RGB DIMM4
Device #3: NZXT Smart Device (V1)
Device #4: NZXT Kraken X (X42, X52, X62 or X72)

# liquidctl initialize all

# liquidctl status --unsafe=smbus,vengeance_rgb
Corsair Vengeance RGB DIMM2
└── Temperature    33.8  °C

Corsair Vengeance RGB DIMM4
└── Temperature    33.8  °C

NZXT Smart Device (V1)
├── Fan 1 speed                 1473  rpm
├── Fan 1 voltage              11.91  V
├── Fan 1 current               0.01  A
├── Fan 1 control mode           PWM
├── Fan 2 [...]
├── Fan 2 [...]
├── Firmware version           1.0.7
├── LED accessories                2
├── LED accessory type    HUE+ Strip
├── LED count (total)             20
└── Noise level                   65  dB

NZXT Kraken X (X42, X52, X62 or X72)
├── Liquid temperature     31.7  °C
├── Fan speed               801  rpm
├── Pump speed             2239  rpm
└── Firmware version      6.0.2  

# liquidctl --match kraken set fan speed  20 30  30 50  34 80  40 90  50 100
# liquidctl --match kraken set pump speed 70
# liquidctl --match "smart device" set sync speed 50

# liquidctl --match kraken set sync color fixed 0080ff
# liquidctl --match "smart device" set led color moving-alternating "hsv(30,98,100)" "hsv(30,98,10)" --speed slower 
# liquidctl --match "rtx 2080" set led color fixed 2aff00 --unsafe=smbus
# liquidctl --match dimm2 set led color fixed "hsl(5, 100, 34)" --unsafe=smbus,vengeance_rgb
# liquidctl --match dimm4 set led color fixed "hsl(5, 100, 34)" --unsafe=smbus,vengeance_rgb

Table of contents

  1. Supported devices
  2. Installing on Linux
  3. Installing on FreeBSD
  4. Installing on Windows
  5. Installing on macOS
  6. The command-line interface
    1. Listing and selecting devices
    2. Initializing and interacting with devices
    3. Supported color specification formats
  7. Using liquidctl in other programs and scripts
  8. Automation and running at boot
    1. Set up Linux using systemd
    2. Set up Windows using Task Scheduler
    3. Set up macOS using launchd
  9. Troubleshooting
  10. Additional documentation
  11. License
  12. Related projects

Supported devices

The following devices are supported by this version of liquidctl. See each guide for specific usage instructions and other pertinent information.

Type Device/guide Bus Notes
AIO liquid cooler Corsair Hydro H80i GT, H100i GTX, H110i GTX USB Ze
AIO liquid cooler Corsair Hydro H80i v2, H100i v2, H115i USB Z
AIO liquid cooler Corsair Hydro H100i Pro, H115i Pro, H150i Pro USB Ze
AIO liquid cooler Corsair Hydro H100i Platinum [SE], H115i Platinum USB HID e
AIO liquid cooler Corsair Hydro H100i Pro XT, H115i Pro XT, H150i Pro XT USB HID e
AIO liquid cooler Corsair iCUE H100i, H115i, H150i Elite Capellix USB HID ep
AIO liquid cooler EVGA CLC 120 (CL12), 240, 280, 360 USB Z
AIO liquid cooler NZXT Kraken M22 USB HID
AIO liquid cooler NZXT Kraken X40, X60 USB LZe
AIO liquid cooler NZXT Kraken X31, X41, X61 USB LZ
AIO liquid cooler NZXT Kraken X42, X52, X62, X72 USB HID
AIO liquid cooler NZXT Kraken X53, X63, X73 USB HID
AIO liquid cooler NZXT Kraken Z53, Z63, Z73 USB & USB HID ep
DDR4 DRAM Corsair Vengeance RGB SMBus Uax
DDR4 DRAM DIMMs with a standard temperature sensor SMBus Uax
Fan/LED controller Corsair Commander Pro USB HID
Fan/LED controller Corsair Commander Core USB HID ep
Fan/LED controller Corsair Lighting Node Core, Pro USB HID e
Fan/LED controller Corsair Obsidian 1000D USB HID e
Fan/LED controller NZXT Grid+ V3 USB HID
Fan/LED controller NZXT HUE 2, HUE 2 Ambient USB HID
Fan/LED controller NZXT RGB & Fan Controller USB HID
Fan/LED controller NZXT Smart Device USB HID
Fan/LED controller NZXT Smart Device V2 USB HID
Graphics card ASUS Strix GTX 1070 I²C Ux
Graphics card ASUS Strix RTX 2080 Ti OC I²C Ux
Graphics card EVGA GTX 1080 FTW I²C Ux
Motherboard Gigabyte RGB Fusion 2.0 motherboards USB HID
Power supply Corsair HX750i, HX850i, HX1000i, HX1200i USB HID
Power supply Corsair RM650i, RM750i, RM850i, RM1000i USB HID
Power supply NZXT E500, E650, E850 USB HID p

L Requires the --legacy-690lc flag.
U Requires --unsafe features.
Z Requires replacing the device driver on Windows.
a Architecture-specific limitations.
e Experimental support.
n New driver, only available on git.
p Only partially supported.
x Only supported on Linux.

Installing on Linux

Packaging status

Packages are available for some Linux distributions. On others, or when more control is desired, liquidctl can be installed from PyPI or directly from the source code repository.

The following dependencies are required at runtime (common package names are listed in parenthesis):

  • Python 3.6+ (python3, python)
  • pkg_resources Python package (python3-setuptools, python3-pkg-resources, python-setuptools)
  • docopt (python3-docopt, python-docopt)
  • colorlog (python3-colorlog, python-colorlog)
  • cython-hidapi (python3-hidapi, python3-hid, python-hidapi)
  • PyUSB (python3-pyusb, python3-usb, python-pyusb)
  • smbus Python package (python3-i2c-tools, python3-smbus, i2c-tools)
  • LibUSB 1.0 (libusb-1.0, libusb-1.0-0, libusbx)

To locally test and manually install, a few more dependencies are needed:

  • setuptools Python package (python3-setuptools, python-setuptools)
  • pip (optional) (python3-pip, python-pip)
  • pytest (optional) (python3-pytest, pytest, python-pytest)

Finally, if cython-hidapi will be installed from source or directly from PyPI, then some additional build tools and development headers may also be required:

  • Python development headers (python3-dev, python3-devel)
  • LibUSB 1.0 development headers (libusb-1.0-0-dev, libusbx-devel)
  • libudev developemnt headers (libudev-dev, libudev-devel)

Once all necessary dependencies are installed, pip can be used to install a release from PyPI:

# pip install liquidctl
# pip install liquidctl==

For the latest changes and to contribute back to the project, it is best to clone the source code repository. You can directly execute the code, or install it from that local copy.

$ git clone https://github.com/liquidctl/liquidctl
$ cd liquidctl
$ pytest  # optional step
$ python -m liquidctl.cli ...
# pip install .

Note: in systems that default to Python 2, use pip3, python3 and pytest-3.

Optional steps:

  • install man pages
# cp liquidctl.8 /usr/local/share/man/man8/
# mandb

Installing on FreeBSD

liquidctl is maintained in the FreeBSD Ports Collection, and it is available as a pre-built binary package.

  • port: sysutils/py-liquidctl
  • binary: pkg install py37-liquidctl
  • dependencies: devel/py-docopt, comms/py-hidapi, devel/py-pyusb

By default, root privileges (doas or sudo) are required to run liquidctl.

To gain full access as a normal user without doas or sudo, see devd(8). Also, you might consider manually changing the permission of the file of the USB device for an individual session with chown, e.g. sudo chown [user] /dev/ugen[#.#].

DragonFly BSD

The port is also available in DragonFly Ports.

Installing on Windows

A pre-built executable for the last stable version is available in liquidctl-1.7.0-bin-windows-x86_64.zip.

Executables for previous releases can be found in the assets of the Releases tab, and development builds can be found in the artifacts on the AppVeyor runs.

Products that are not Human Interface Devices (HIDs), or that do not use the Microsoft HID Driver, require a libusb-compatible driver, see notes in Supported devices). In most cases Microsoft WinUSB is recommended, which can easily be set up for a device with Zadig:¹ open the application, click Options, List All Devices, then select your device from the dropdown list, and click "Replace Driver". Note that replacing the driver for devices that do not require it will likely cause them to disapear from liquidctl.

The pre-built executables can be directly used from a Windows Command Prompt, Power Shell or other available terminal emulator. Even so, most users will want to place the executable in a directory listed in the PATH environment variable, or change the variable so that is true; this allows omitting the full path and .exe extension when calling liquidctl.

Alternatively to the pre-built executable, it is possible to install liquidctl from PyPI or directly from the source code repository. This is useful to contribute fixes or improvements to liquidctl, or to use advanced features like the liquidctl API.

Since HWiNFO 6.10 it is possible for other programs to send additional sensor data in through a Windows Registry API, and LQiNFO.py is an experimental program that uses the liquidctl API to take advantage of this feature.

Pre-build liquidctl executables for Windows already include Python and libusb, but when installing from PyPI or the sources both of these will need to be manually set up. The libusb DLLs can be found in libusb/releases (part of the libusb-.7z files) and the appropriate (e.g. MS64) .dll and .lib files should be extracted to the system or python installation directory (e.g. C:\Windows\System32 or C:\Python36).

To install any release from PyPI, pip should be used:

> pip install liquidctl
> pip install liquidctl==

For the latest changes and to contribute back to the project, it is best to clone the source code repository. You can directly execute the code, or install it from that local copy.

> git clone https://github.com/liquidctl/liquidctl
> cd liquidctl
> python -m liquidctl.cli ...
> pip install .

¹ See How to use libusb under Windows for more information.

Installing on macOS

liquidctl is available on Homebrew, and that is the preferred method of installing it.

$ brew install liquidctl
$ brew install liquidctl --HEAD

By default the last stable version will be installed, but by passing --HEAD this can be changed to the last snapshot from this repository. All dependencies are automatically resolved.

Another possibility is to install liquidctl from PyPI or directly from the source code repository, but in these cases Python 3 and libsub must be installed first; the recommended way is with brew install python libusb.

To install any release from PyPI, pip should be used:

$ pip3 install liquidctl
$ pip3 install liquidctl==

For the latest changes and to contribute back to the project, it is best to clone the source code repository. You can directly execute the code, or install it from that local copy.

$ git clone https://github.com/liquidctl/liquidctl
$ cd liquidctl
$ python3 -m liquidctl.cli ...
$ pip3 install .

Note: installation into a virtual environment is recommended to avoid conflicts with Python modules installed with Homebrew. The use of virtual environments is outside the scope of this document. Their use will also restrict the availability of the liquidctl command to that virtual environment.

Introducing the command-line interface

The complete list of commands and options can be found in liquidctl --help and in the man page, but the following topics cover the most common operations.

Brackets [ ], parenthesis ( ), less than/greater than < > and ellipsis ... are used to describe, respectively, optional, required, positional and repeating elements. Example commands are prefixed with a number sign #, which also serves to indicate that on Linux root permissions (or suitable udev rules) may be required.

The --verbose option will print some extra information, like automatically made adjustments to user-provided settings. And if there is a problem, the --debug flag will make liquidctl output more information to help identify its cause; be sure to include this when opening a new issue.

Note: when debugging issues with PyUSB or libusb it can be useful to set the PYUSB_DEBUG=debug or/and LIBUSB_DEBUG=4 environment variables.

Listing and selecting devices

A good place to start is to ask liquidctl to list all recognized devices.

# liquidctl list
Device #0: NZXT Smart Device (V1)
Device #1: NZXT Kraken X (X42, X52, X62 or X72)

In case more than one supported device is found, one them can be selected with --match , where matches part of the desired device's description using a case insensitive comparison.

# liquidctl --match kraken list
Result #0: NZXT Kraken X (X42, X52, X62 or X72)

More device properties can be show by passing --verbose to liquidctl list. Any of those can also be used to select a particular product.

# liquidcl --bus hid --address /dev/hidraw4 list
Result #0: NZXT Smart Device (V1)

# liquidctl --serial 1234567890 list
Result #0: NZXT Kraken X (X42, X52, X62 or X72)

Ambiguities for any given filter can be solved with --pick .

Initializing and interacting with devices

Devices will usually need to be initialized before they can be used, though each device has its own requirements and limitations. This and other information specific to a particular device will appear on the documentation linked from the supported devices section.

Devices can be initialized individually or all at once.

# liquidctl [options] initialize [all]

Most devices provide some status information, like fan speeds and liquid temperatures. This can be queried for all devices or using the filtering methods mentioned before.

# liquidctl [options] status

Fan and pump speeds can be set to fixed values or, if the device supports them, custom profiles.

# liquidctl [options] set  speed ( ) ...
# liquidctl [options] set  speed 

Lighting is controlled in a similar fashion. The specific documentation for each device will list the available channels, modes and additional options.

# liquidctl [options] set  color  [] ...

Supported color specification formats

When configuring lighting effects, colors can be specified in different representations and formats:

  • as an implicit hexadecimal RGB triple, either with or without the 0x prefix: e.g. ff7f3f
  • as an explicit RGB triple: e.g. rgb(255, 127, 63)
  • as a HSV (hue‑saturation‑value) triple: e.g. hsv(20, 75, 100)
    • hue ∊ [0, 360] (degrees); saturation, value ∊ [0, 100] (percent)
    • note: this is sometimes called HSB (hue‑saturation‑brightness)
  • as a HSL (hue‑saturation‑lightness) triple: e.g. hsl(20, 100, 62)
    • hue ∊ [0, 360] (degrees); saturation, lightness ∊ [0, 100] (percent)

Color arguments containing spaces, parenthesis or commas need to be quoted, as these characters can have special meaning on the command-line; the easiest way to do this on all supported platforms is with double quotes.

# liquidctl --match kraken set ring color fading "hsv(0,80,100)" "hsv(180,80,100)"

On Linux it is also possible to use single-quotes and \(, \), \ escape sequences.

Using liquidctl in other programs and scripts

The liquidctl driver APIs can be used to build Python programs that monitor or control the devices, and offer features beyond the ones provided by the CLI.

The APIs are documented, and this documentation can be accessed through pydoc, or directly read from the source files.

from liquidctl import find_liquidctl_devices

first = True

# find all connected and supported devices
devices = find_liquidctl_devices()

for dev in devices:

    # connect to the device (here a context manager is used, but the
    # connection can also be manually managed)
    with dev.connect():
        print(f'{dev.description} at {dev.bus}:{dev.address}:')

        # devices should be initialized after every boot (here we assume
        # this has not been done before)
        init_status = dev.initialize()

        # print all data returned by initialize()
        if init_status:
            for key, value, unit in init_status:
                print(f'{key}: {value} {unit}')

        # get regular status information from the device
        status = dev.get_status()

        # print all data returned by get_status()
        for key, value, unit in status:
            print(f'{key}: {value} {unit}')

        # for a particular device, set the pump LEDs to red
        if 'Kraken' in dev.description:
            print('setting pump to radical red')
            radical_red = [0xff, 0x35, 0x5e]
            dev.set_color(channel='pump', mode='fixed', colors=[radical_red])

    # the context manager took care of automatically calling disconnect();
    # when manually managing the connection, disconnect() must be called at
    # some point even if an exception is raised

    if first:
        first = False
        print()  # add a blank line between each device

More examples can be found in the scripts in extra/.

In addition to the APIs, the liquidctl CLI is friendly to scripting: errors cause it to exit with non-zero codes and only functional output goes to stdout, everything else (error messages, warnings and other auxiliary information) going to stderr.

The list, initialize and status commands also support a --json flag to switch the output to JSON, a more convenient format for machines and scripts. In --json mode, setting LANG=C on the environment causes non-ASCII characters to be escaped.

# liquidctl --match kraken list --json | jq
[
  {
    "description": "NZXT Kraken X (X42, X52, X62 or X72)",
    "vendor_id": 7793,
    "product_id": 5902,
    "release_number": 512,
    "serial_number": "49874481333",
    "bus": "hid",
    "address": "/dev/hidraw3",
    "port": null,
    "driver": "Kraken2",
    "experimental": false
  },
  ...
]

# liquidctl --match kraken status --json | jq
[
  {
    "bus": "hid",
    "address": "/dev/hidraw3",
    "description": "NZXT Kraken X (X42, X52, X62 or X72)",
    "status": [
      {
        "key": "Liquid temperature",
        "value": 30.1,
        "unit": "°C"
      },
      {
        "key": "Fan speed",
        "value": 1014,
        "unit": "rpm"
      },
      ...
    ]
  },
  ...
]

Note that the examples above pipe the output to jq, as the original output has no line breaks or indentation. An alternative to jq is to use python -m json.tool, which is already included in standard Python distributions.

Finally, the stability of both the APIs and the CLI commands is documented in our stability guarantee. In particular, the specific keys, values and units returned by the commands above, as well as their API equivalents, are subject to changes. Consumers should verify that the returned data matches their expectations, and react accordingly.

Automation and running at boot

In most cases you will want to automatically apply your settings when the system boots. Generally a simple script or a basic service is enough, and some specifics about this are given in the following sections.

For even more flexibility, you can also write a Python program that calls the driver APIs directly.

Set up Linux using systemd

On systems running Linux and systemd a service unit can be used to configure liquidctl devices. A simple example is provided bellow, which you can edit to match your preferences. Save it to /etc/systemd/system/liquidcfg.service.

[Unit]
Description=AIO startup service

[Service]
Type=oneshot
ExecStart=liquidctl initialize all
ExecStart=liquidctl --match kraken set pump speed 90
ExecStart=liquidctl --match kraken set fan speed  20 30  30 50  34 80  40 90  50 100
ExecStart=liquidctl --match "smart device" set sync speed 55
ExecStart=liquidctl --match kraken set sync color fading 350017 ff2608

[Install]
WantedBy=default.target

After reloading the configuration, the new unit can be started manually or set to automatically run during boot using standard systemd tools.

# systemctl daemon-reload
# systemctl start liquidcfg
# systemctl enable liquidcfg

A slightly more complex example can be seen at jonasmalacofilho/dotfiles, which includes dynamic adjustments of the lighting depending on the time of day.

If necessary, it is also possible to have the service unit explicitly wait for the device to be available: see making systemd units wait for devices.

Set up Windows using Task Scheduler

The configuration of devices can be automated by writing a batch file and setting up a new task for (every) login using Windows Task Scheduler. The batch file can be really simple and only needs to contain the invocations of liquidctl that would otherwise be done manually.

liquidctl initialize all
liquidctl --match kraken set pump speed 90
liquidctl --match kraken set fan speed  20 30  30 50  34 80  40 90  50 100
liquidctl --match "smart device" set sync speed 55
liquidctl --match kraken set sync color fading 350017 ff2608

Make sure that liquidctl is available in the context where the batch file will run: in short, liquidctl --version should work within a normal Command Prompt window.

When not using a pre-built liquidctl executable, try installing Python with the option to set the PATH variable enabled, or manually add the necessary folders to the PATH.

A slightly more complex example can be seen in issue #14 ("Can I autostart liquidctl on Windows?"), that uses the LEDs to convey progress or eventual errors. Chris' guide on Replacing NZXT’s CAM software on Windows for Kraken is also a good read.

As an alternative to using Task Scheduler, the batch file can simply be placed in the startup folder; you can run shell:startup to find out where that is.

Set up macOS using launchd

You can use a shell script and launchd to automatically configure your devices during login or after waking from sleep. A detailed guide is available on tonymacx86.

Troubleshooting

Device not listed (Windows)

This is likely caused by having replaced the standard driver of a USB HID. If the device in question is not marked in Supported devices as requiring a special driver, try uninstalling the custom driver.

Device not listed (Linux)

This is usually caused by having an unexpected kernel driver bound to a USB HID. In most cases this is the result of having used a program that accessed the device (directly or indirectly) via libusb-1.0, but failed to reattach the original driver before terminating.

This can be temporarily solved by manually rebinding the device to the kernel usbhid driver. Replace and with the correct values from lsusb -vt (also assumes there is only HID interface, adjust if necessary):

echo '-:1.0' | sudo tee /sys/bus/usb/drivers/usbhid/bind

A more permanent solution is to politely ask the authors of the program that is responsible for leaving the kernel driver detached to use libusb_attach_kernel_driver or libusb_set_auto_detach_kernel_driver.

Access denied or open failed (Linux)

These errors are usually caused by a lack of permission to access the device. On Linux distros that normally requires root privileges.

Alternatively to running liquidctl as root (or with sudo), you can install the udev rules provided in extra/linux/71-liquidctl.rules to allow unprivileged access to the devices supported by liquidctl.

Other problems

If your problem is not listed here, try searching the issues. If no issue matches your problem, you still need help, or you have found a bug, please open one.

When commenting on an issue, please describe the problem in as much detail as possible. List your operating system and the specific devices you own.

Also include the arguments and output of all relevant/failing liquidctl commands, using the --debug option to enable additional debug information.

Additional documentation

Be sure to browse docs/ for additional documentation, and extra/ for some example scripts and other possibly useful things.

You are also encouraged to contribute to the documentation and to these examples, including adding new files that cover your specific use cases or solutions.

License

liquidctl – monitor and control liquid coolers and other devices.
Copyright (C) 2018–2021 Jonas Malaco, Marshall Asch, CaseySJ, Tom Frey, Andrew Robertson and contributors

liquidctl incorporates work by leaty, Ksenija Stanojevic, Alexander Tong, Jens Neumaier, Kristóf Jakab, Sean Nelson, Chris Griffith, notaz, realies and Thomas Pircher.

Depending on how it is packaged, it might also bundle copies of python, hidapi, libusb, cython-hidapi, pyusb, docopt, colorlog and colorama.

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but without any warranty; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

This project uses short SPDX License List identifiers to concisely and unambiguously indicate the applicable license in each source file.

Related projects

liquidctl/liquidtux

Sibling project of Linux kernel hwmon drivers for devices supported by liquidctl.

CalcProgrammer1/OpenRGB

Graphical interface to control many different types of RGB devices.

leinardi/GKraken

Graphical interface for NZXT Kraken X and Z coolers, using the liquidctl APIs.

audiohacked/OpenCorsairLink

Retired in 2020, but a great source of information on how Corsair devices work. There are ongoing efforts to port the last drivers to liquidctl, and joining them is a great way to get involved.

liquidctl/collected-device-data

Device information collected for developing and maintaining liquidctl.

Comments
  • Working on new driver for Gigabyte RGB Fusion 2 and ran into issue

    Working on new driver for Gigabyte RGB Fusion 2 and ran into issue

    Hello @jonasmalacofilho,

    It's been a hectic few weeks and months, but with the release of Z490 motherboards I purchased the Gigabyte Z490 Vision D. This is the successor to the popular Z390 Desginare, which has earned quite a following in the Hackintosh community.

    The Vision D has on-board support for Gigabyte's RGB Fusion 2.0. A little bit of detective work revealed that it uses an ITE Tech controller (productID 0x5702) that is mapped to USB port HS12.

    So naturally I captured the USB traffic in Windows while running Gigabyte's RGB Fusion app. The capture process was the same as for my previous effort on the NZXT Smart Device V2.

    On the Vision D, we have the following lighting channels. Channels are addressed not by a single integer, but by two integers:

            color_channels = {
                'IOLED':  (0xcc, 0x20, 0x01),
                'LED1':   (0xcc, 0x21, 0x02),
                'PCHLED': (0xcc, 0x22, 0x04),
                'PCILED': (0xcc, 0x23, 0x08),
                'LED2':   (0xcc, 0x24, 0x10),
                'DLED1':  (0xcc, 0x25, 0x20),
                'DLED2':  (0xcc, 0x26, 0x40),
            }
    

    When Gigabyte's app starts up, it invokes the following transactions that appear to be an initialization sequence. Each individual action is prefixed by a running counter that starts at 000000 and increments by 1.

    I think we can ignore item 000000, but item 000001 sends two bytes 0xCC, 0x60. This certainly looks like an initialization command. Notice the text below that says **Send** 0x40 bytes to the device. The next item 000002 seems to be an echo of the command that was sent, but it might not be an actually reply from the controller (I am not sure).

    000000: PnP Event: Device Connected (UP), 2020-06-03 22:12:05.5066899 (1. Device: ITE Device)
    The USB device has just been connected to the system.
    
    000001: Class-Specific Request (DOWN), 2020-06-03 22:12:25.1769710 +19.6702800 (1. Device: ITE Device)
    Destination: Interface, Index 0
    Reserved Bits: 34
    Request: 0x9
    Value: 0x3cc
    Send 0x40 bytes to the device
    
     CC 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00   Ì`..............
     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
    
    000002: Control Transfer (UP), 2020-06-03 22:12:25.1783658 +0.0013948. (1. Device: ITE Device) Status: 0x00000000
    Pipe Handle: Control Pipe
     CC 60 00 00 00 00 00 00 00 00 00 00 00 00 00 00   Ì`..............
     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
    
    Setup Packet
     21 09 CC 03 00 00 40 00                           !.Ì...@.
    Recipient: Interface
    Request Type: Class
    Direction: Host->Device
    Request: 0x9 (Unknown)
    Value: 0x3cc
    Index: 0x0
    Length: 0x40
    

    In the continuation below we now see **Get** 0x40 bytes from the device. And the result certainly contains initialization information. Byte 4 (0x07) may represent the number of lighting channels (in fact there are 7) and the next 4 bytes (0x01, 0x00, 0x0A, 0x00) represent the full version number 1.0.10.0 which is also present at the end of the string GIGABYTE V1.0.10.0.

    000003: Class-Specific Request (DOWN), 2020-06-03 22:12:25.1783814 +0.0000156 (1. Device: ITE Device)
    Destination: Interface, Index 0
    Reserved Bits: 34
    Request: 0x1
    Value: 0x3cc
    Get 0x40 bytes from the device
    
    000004: Control Transfer (UP), 2020-06-03 22:12:25.1794520 +0.0010706. (1. Device: ITE Device) Status: 0x00000000
    Pipe Handle: Control Pipe
     CC 01 00 07 01 00 0A 00 00 00 00 00 49 54 35 37   Ì...........IT57
     30 32 2D 47 49 47 41 42 59 54 45 20 56 31 2E 30   02-GIGABYTE V1.0
     2E 31 30 2E 30 00 00 00 00 01 02 00 02 00 01 00   .10.0...........
     02 00 01 00 00 01 02 00 00 01 02 57 00 00 00 00   ...........W....
    
    Setup Packet
     A1 01 CC 03 00 00 40 00                           ¡.Ì...@.
    Recipient: Interface
    Request Type: Class
    Direction: Device->Host
    Request: 0x1 (Unknown)
    Value: 0x3cc
    Index: 0x0
    Length: 0x40
    

    All of this is well and good, so what's the problem?

    Unfortunately -- and I'm doing all of this on macOS -- when I issue the command [0xCC, 0x60] followed by data=self._read(), the command never returns. We can see this here (the last line is after killing the process):

    casey@iMac driver % liquidctl --product 0x5702 initialize --debug -d 0
    [DEBUG] liquidctl.cli: running liquidctl v1.3.3 (homebrew; liquidctl 1.3.3)
    [DEBUG] liquidctl.driver.usb: searching GenericHidBus (api=hid, drivers=[CommonRGBFusionDriver, CommonSmartDeviceDriver, CorsairHidPsuDriver, KrakenTwoDriver, RGBFusionDriver, SeasonicEDriver, SmartDeviceDriver, SmartDeviceV2Driver])
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x48d:0x5702
    [DEBUG] liquidctl.driver.usb: instanced driver for Gigabyte RGB Fusion 2.0 (experimental)
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x48d:0x5702
    [DEBUG] liquidctl.driver.usb: instanced driver for Gigabyte RGB Fusion 2.0 (experimental)
    [DEBUG] liquidctl.driver.usb: searching PyUsbBus (drivers=[AsetekDriver, CommonAsetekDriver, CorsairAsetekDriver, LegacyAsetekDriver])
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0x82d
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x5e3:0x608
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0xbda:0x5411
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x48d:0x5702
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0xbda:0x411
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x46d:0xc52b
    [DEBUG] liquidctl.driver.usb: searching GenericHidBus (api=hid, drivers=[CommonRGBFusionDriver, CommonSmartDeviceDriver, CorsairHidPsuDriver, KrakenTwoDriver, RGBFusionDriver, SeasonicEDriver, SmartDeviceDriver, SmartDeviceV2Driver])
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x48d:0x5702
    [DEBUG] liquidctl.driver.usb: instanced driver for Gigabyte RGB Fusion 2.0 (experimental)
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x48d:0x5702
    [DEBUG] liquidctl.driver.usb: instanced driver for Gigabyte RGB Fusion 2.0 (experimental)
    [DEBUG] liquidctl.driver.usb: searching PyUsbBus (drivers=[AsetekDriver, CommonAsetekDriver, CorsairAsetekDriver, LegacyAsetekDriver])
    [DEBUG] liquidctl.driver.usb: probing drivers for device 0x48d:0x5702
    [WARNING] liquidctl.cli: mixing --device <id> with other filters is not recommended; to disambiguate between results prefer --pick <result>
    [DEBUG] liquidctl.cli: device: Gigabyte RGB Fusion 2.0 (experimental)
    [DEBUG] liquidctl.driver.gigabyte_rgb_fusion: write cc 60 (and 62 padding bytes)
    [DEBUG] liquidctl.driver.gigabyte_rgb_fusion: Command written, waiting for reply
    zsh: terminated  liquidctl --product 0x5702 initialize --debug -d 0
    

    I did not encounter this issue when working on the Smart Device V2. There can be several causes for this:

    • If you look at transfer 000003 it looks as if no data bytes were sent, but "something" was sent. And that something triggered the reply that arrived in 000004. What could that something be?
    • It's also possible (but perhaps unlikely) that the RGB Fusion app (in Windows) is controlling or initializing the 0x5702 device through other means.
    • It's also possible that I'm misinterpreting the captured USB traffic.

    Any thoughts and suggestions for determining why a reply (from this._read()) is not appearing would be much appreciated. I will now install the experimental Gigabyte RGB Fusion 2.0 driver in Linux and see if the problem occurs there as well.

    The initialize function is as follows:

        def initialize(self, **kwargs):
            """Initialize the device.
    
            Detects and reports all connected fans and LED accessories, and allows
            subsequent calls to get_status.
    
            Returns a list of (key, value, unit) tuples.
            """
    
            status = []
            # initialize
            self._write([0xcc, 0x60])
            LOGGER.debug('Command written, waiting for reply')
            data = self._read()
            LOGGER.debug('received %s', ' '.join(format(i, '02x') for i in data))
            if data[0]==0xcc and data[1]==0x01:
                num_devices = data[3]
                ver_major = data[4]
                ver_minor = data[5]
                ver_build = data[6]
                index = 12  # first letter of device name in 'data'
                dev_name = ""
                while True:
                    dev_name += data[index]
                    index += 1
                    if data[index] == 0 or index >= _READ_LENGTH:
                        break
                status.append(('Name', dev_name, ''))
                status.append(('LED channels', str(num_devices), ''))
            self.device.release()
            return sorted(status)
    
    new device 
    opened by CaseySJ 109
  • Support for NZXT Kraken Z63 and Z73

    Support for NZXT Kraken Z63 and Z73

    Status: monitoring, fan/pump speeds and profiles and HUE 2 are already supported in the main branch. The main thing left to do is add support for the screen.

    The new Kraken Z series adds an LCD to the pump/block top.

    https://www.nzxt.com/products/kraken-z63 https://www.nzxt.com/products/kraken-z73

    While these certainly require a new protocol to handle the LCD graphics, it might end up being an extension to (or part of) the (presumably) already new protocol for the X63/X73 (see #78).

    I'm not sure if there will be a lot of interest in these devices (based on pricing and adoption of the existing competitors), much less of using them on platforms other than Windows or with software other than CAM.

    Still, please add a :+1: if you are interested in support for either of these devices in liquidctl.

    Additionally, if you have one of these, please get in touch (a comment is fine, but you can also reach me by email) so we can talk about working together on a driver.


    Status:

    • [x] Collect basic USB data for both devices (at least vendor and product IDs)
    • [x] Inspect and analyze the new protocol (monitoring, cooling and LCD)
    • [x] Adapt features that are (at least partially) common with the X models
    • [ ] Implement and test features that are exclusive to this model

    Assorted notes:

    new device unresolved/archived 
    opened by jonasmalacofilho 96
  • Support for NZXT Kraken X53, X63 and X73

    Support for NZXT Kraken X53, X63 and X73

    I imagine there will be a significant amount of interest in this new iteration of Kraken X coolers. They are a replacement to the popular X42/X52/X62/X72 family, and I'm also guessing that NZXT will soon stop selling that previous generation.

    https://www.nzxt.com/products/kraken-x53 https://www.nzxt.com/products/kraken-x63 https://www.nzxt.com/products/kraken-x73

    On the technical side, I'm mostly certain that these devices use a new protocol, mostly to accommodate the added HUE 2 header and functionality. Hopefully hardware-level ~~fan &~~ pump profiles are still supported, and maybe even improved with interpolation.

    Please add a :+1: if you are interested in support for either of these devices.

    Additionally, if you have one of these, please get in touch (a comment is fine, but you can also reach me by email) so we can work together on the new driver.


    Status:

    • [x] Collect basic USB data for these devices (at least vendor and product IDs)
    • [x] Inspect and analyze the new protocol (monitoring, cooling and lighting)
    • [x] Implement and test the new driver (#100)
    new device 
    opened by jonasmalacofilho 69
  • LCD screen support on NZXT Kraken Zxx devices

    LCD screen support on NZXT Kraken Zxx devices

    Adds support for controlling the LCD screen found on nzxt's Kraken Z series devices

      liquidctl [options] set lcd screen liquid
      liquidctl [options] set lcd screen brightness <value>
      liquidctl [options] set lcd screen orientation (0|90|180|270)
      liquidctl [options] set lcd screen (static|gif) <path to image>
    

    images and GiFs are automatically resized and rotated to match the device orientation so there is no need for any preprocessing

    ~~The original Kraken3 driver was renamed to krakenx3~~ and a new driver Krakenz3 was created. kraken z3 uses a dual usb interface consisting of an HID device and regular usb device. the kraken z3 device now uses UsbDriver instead of UsbHidDriver. functions for controlling fan and pump speeds were copied over from the krakenx3 driver.

    hwmon was removed

    I have tested the LCD function which appear to work as expected but I am unable to test the fan control as I plug my fans directly into the motherboard. I adjusted the automated test for the krakenx3 driver but have not yet created automated test for the z3 driver.

    I would appreciate any help finishing the remaining checklist items.

    Closes: #444


    Checklist:

    • [x] Adhere to the development process
    • [x] Conform to the style guide
    • [x] Verify that the changes work as expected on real hardware
    • [ ] Add automated tests cases
    • [x] Verify that all (other) automated tests (still) pass
    • [x] Update the README and other applicable documentation pages
    • [ ] Update the liquidctl.8 Linux/Unix/Mac OS man page
    • [x] Update or add applicable docs/*guide.md device guides
    • [ ] Submit relevant data, scripts or dissectors to https://github.com/liquidctl/collected-device-data

    New CLI flag?

    • [ ] Adjust the completion scripts in extra/completions/

    New device?

    • [ ] Regenerate extra/linux/71-liquidctl.rules (instructions in the file header)
    • [ ] Add entry to the README's supported device list with applicable notes (at least en)

    New driver?

    • [ ] Document the protocol in docs/developer/protocol/
    opened by ShadyNawara 61
  • Tracking issue for release 1.4.0

    Tracking issue for release 1.4.0

    During the next two weeks I'll be finalizing a new liquidctl release, version 1.4.0. If you can, please start to test the code in the main branch; you can use this issue to report any problems.

    The most notable user-facing changes in this version will be the addition of drivers for fourth-generation Kraken X coolers (with limited support for Kraken Z coolers as well), Corsair Platinum coolers (with limited support for PRO XT coolers as well), and some Gigabyte motherboards with RGB Fusion 2.0 controllers.

    I'll be updating the changelog during the next few days with all other significant changes, and there are some improvements I still hope to finish in time for the release.

    Linux package maintainers may also want to follow any updates I make to the liquidctl-gitAUR PKGBUILD for ArchLinux.

    Thank you Tom, Casey, Sean, and all other contributors. Thank you for contributing drivers or fixes, capturing or helping analyze USB traffic, reporting bugs, or simply getting in touch.


    If you're working on a new feature or bug fix, please feel free to open pull requests normally during this two-week window. I'll evaluate on a case-by-case basis whether a particular change can safely get into this release...

    And from now on I intend to do periodic releases every three months. The changes accepted into the main branch at the time will determinate whether it's a patch or minor release.

    blocking 
    opened by jonasmalacofilho 58
  • WIP: Add support for Kraken X3 devices from NZXT

    WIP: Add support for Kraken X3 devices from NZXT

    Work in progress; will eventually add support for the following coolers:

    • NZXT Kraken X53
    • NZXT Kraken X63
    • NZXT Kraken X73

    Related: #78 ("Support for NZXT Kraken X53, X63 and X73")

    Currently only tested on Kraken X73.

    Todo:

    • [x] general monitoring
    • [x] pump speed control
    • [x] lighting control
    • [x] lighting control advanced - super-breathing, super-fixed, wings, water-cooler
    • [x] custom pump speed curve
    • [ ] general code improvements (see comments below)
    • [ ] lighting control advanced - additional accessories
    opened by tomaculum 57
  • Support for Corsair H100i/H115i Platinum

    Support for Corsair H100i/H115i Platinum

    root@james-desktop:/home/james/liquidctl-master# liquidctl initialize
    No devices matches available drivers and selection criteria
    
    $ lsusb
    __Bus 001 Device 004: ID 1b1c:0c17 Corsair 
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 (Defined at Interface level)
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0        64
      idVendor           0x1b1c Corsair
      idProduct          0x0c17 
      bcdDevice            1.00
      iManufacturer           1 Corsair Inc.
      iProduct                2 H115i Platinum
      iSerial                 0 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength           34
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xc0
          Self Powered
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      0 No Subclass
          bInterfaceProtocol      1 Keyboard
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.11
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      27
             Report Descriptors: 
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               7
    Device Status:     0x0001
      Self Powered
    
    new device 
    opened by jwjennison 57
  • Implement fan control for Corsair HXi/RMi power supplies

    Implement fan control for Corsair HXi/RMi power supplies

    Related: #45 ("Improve support for Corsair HXi/RMi PSUs")

    Adds an implementation for set_fixed_speed, allowing fan control through the CLI:

    # liquidctl set fan speed 35
    

    The channel name is not currently enforced, but 'fan' seems like the obvious choice. The duty cycle is so far only clamped to [0%, 100%].


    I still have a few questions...

    Does the code in this branch work?
    What is the minimum duty value for which the unit reacts?

    # liquidctl initialize
    
    # liquidctl status | grep 'Fan'
    
    # liquidctl set fan speed 100
    # liquidctl status | grep 'Fan'
    
    # liquidctl set fan speed 0
    # liquidctl status | grep 'Fan'
    
    # liquidctl set fan speed 50
    # liquidctl status | grep 'Fan'
    ...
    
    [suggestion: do a binary search]
    

    What happens to the fan speed when the unit doesn't receive constant updates? Does it permanently stays the same (e.g. if left on 100% for a couple of minutes)? Or does it revert back to some default behavior?

    Presumably the unit must be able to not kill itself if iCue/CorsairLink has crashed. One possible way to implement that would be for it to honor the specified duty as long as it is above some predefined minimum curve (based on temperature, load, or both). Can we somehow observe this fallback behavior (e.g. by setting the fan speed to its minimum allowed value and ramping the power draw/temperature)?

    Pinging @olielvewen for testing...


    Missing:

    • [x] clamping of duty to its minimum useful value
    • [x] safety considerations (presumably the firmware knows how to handle iCue disappearing, and that's enough for us as well)
    opened by jonasmalacofilho 49
  • Support for Corsair PRO (sixth-generation Asetek) coolers

    Support for Corsair PRO (sixth-generation Asetek) coolers

    Implement support for the Corsair PRO coolers, likely by porting the corresponding OCL code.

    These were marketed as:

    • Corsair H100i PRO (1b1c:0c15)
    • Corsair H115i PRO (1b1c:0c13)
    • Corsair H150i PRO (1b1c:0c12)

    Don't confuse with PRO XT or Platinum coolers. The latter keyword appears in the iProduct descriptor, but that doesn't reflect how the device was sold, its hardware platform or the protocol in use.

    Pull requests are encouraged! For a starting point, see #129 (comment).


    Replaces: #106 ("H115i Pro Support") Replaces: #136 ("Cannot bind H100i to usbhid on Linux")

    new device 
    opened by jonasmalacofilho 45
  • Add support for Corsair Platinum and PRO XT coolers

    Add support for Corsair Platinum and PRO XT coolers

    Add support for the following coolers:

    • Corsair H100i Platinum
    • Corsair H115i Platinum
    • Corsair H100i PRO XT
    • Corsair H115i PRO XT

    The following coolers are left for later:

    • Corsair H100i Platinum SE: missing device ID, but should work without other changes
    • Corsair H150i PRO XT: will require extending get_cooling and set_cooling to three fans

    Related: #76 ("Support for Corsair H100i/H115i Platinum") Related: #80 ("Support for Corsair H100i/H115i/H150i PRO XT")

    opened by jonasmalacofilho 44
  • Add support for H150i PRO XT and H100i Platinum SE

    Add support for H150i PRO XT and H100i Platinum SE

    Add support for devices that didn't make it to #81.

    • [x] H150i PRO XT:
    • idProduct is 0x0c22 (comment)
    • unknown packet format for getting the status or setting fan/pump settings
    • LEDs should work without additional changes, but this needs to be confirmed
    • [x] H100i Platinum SE:
    • idProduct is 0x0c19 (source)
    • everything should work without additional changes, but this needs to be confirmed
    new device 
    opened by jonasmalacofilho 39
  • NZXT RGB Controller AC-CRFR0-B1 (Included in the NZXT H5 Elite case)

    NZXT RGB Controller AC-CRFR0-B1 (Included in the NZXT H5 Elite case)

    Device type

    NZXT

    Product page

    https://nzxt.com/product/h5-elite

    First-party software

    NZXT CAM

    What monitoring functionality does the device support?

    No response

    What configuration functionality does the device support?

    lighting of accessories like RGB fans or LED strips

    Physical connection

    USB 2.0 Header

    Connection protocol

    No response

    Additional information about the device

    Hello everybody.

    I just got the NZXT H5 Elite case, that includes an RGB Controller ( AC-CRFR0-B1), this device only have 3 connectors for controlling the RGB with the use of the NZXT CAM software. I'm only using two connection ports.

    I added the new device to the smart_device.py file.

    class SmartDevice2(_BaseSmartDevice):
        """NZXT HUE 2 lighting and, optionally, fan controller."""
    
        # support for hwmon: nzxt-smart2, Linux 5.17
    
        _MATCHES = [
            (0x1e71, 0x2006, 'NZXT Smart Device V2', {
                'speed_channel_count': 3,
                'color_channel_count': 2
            }),
            (0x1e71, 0x200d, 'NZXT Smart Device V2', {
                'speed_channel_count': 3,
                'color_channel_count': 2
            }),
            (0x1e71, 0x200f, 'NZXT Smart Device V2', {
                'speed_channel_count': 3,
                'color_channel_count': 2
            }),
            (0x1e71, 0x2001, 'NZXT HUE 2', {
                'speed_channel_count': 0,
                'color_channel_count': 4
            }),
            (0x1e71, 0x2002, 'NZXT HUE 2 Ambient', {
                'speed_channel_count': 0,
                'color_channel_count': 2
            }),
            (0x1e71, 0x2009, 'NZXT RGB & Fan Controller', {
                'speed_channel_count': 3,
                'color_channel_count': 2
            }),
            (0x1e71, 0x200e, 'NZXT RGB & Fan Controller', {
                'speed_channel_count': 3,
                'color_channel_count': 2
            }),
            (0x1e71, 0x2010, 'NZXT RGB & Fan Controller', {
                'speed_channel_count': 3,
                'color_channel_count': 2
            }),
            (0x1e71, 0x2019, 'NZXT RGB & Fan Controller', {
                'speed_channel_count': 3,
                'color_channel_count': 2
            }),
            (0x1e71, 0x2012, "NZXT RGB Controller", { # Here is the new device
                'speed_channel_count': 0, # Because the controller is only for RGB
                'color_channel_count': 3 
            }),
        ]
    ...
    

    But that does not worked, the device is available with the liquidctl tool, but when I tried to change the color nothing happens, here more details about the RGB Controller:

    Using the lsusb command:

    $ sudo lsusb -v -d 0x1e71:0x2012
    
    Bus 001 Device 007: ID 1e71:2012 NZXT NZXT RGB Controller
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0        64
      idVendor           0x1e71 NZXT
      idProduct          0x2012 
      bcdDevice            1.04
      iManufacturer           1 NZXT, Inc.
      iProduct                2 NZXT RGB Controller
      iSerial                 3 15031016AB70D5035EAF2023
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0029
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xc0
          Self Powered
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           2
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      0 
          bInterfaceProtocol      0 
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.00
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength     349
             Report Descriptors: 
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               1
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x02  EP 2 OUT
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               1
    Device Status:     0x0001
      Self Powered
    
    

    Using liquidctl command:

    $ liquidctl list --debug --verbose
    [DEBUG] (cli) (main): script: /usr/bin/liquidctl
    [DEBUG] (cli) (main): version: 1.11.1
    [DEBUG] (cli) (main): platform: Linux-6.0.15-300.fc37.x86_64-x86_64-with-glibc2.36
    [DEBUG] (cli) (_log_requirements): python: 3.11.1 (main, Dec  7 2022, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)]
    [DEBUG] (cli) (_log_requirements): colorlog: 6.6.0
    [DEBUG] (cli) (_log_requirements): crcmod: 1.7
    [DEBUG] (cli) (_log_requirements): docopt: 0.6.2
    [DEBUG] (cli) (_log_requirements): hidapi: 0.12.0.post2
    [DEBUG] (cli) (_log_requirements): pyusb: 1.2.1
    [DEBUG] (cli) (_log_requirements): pillow: 9.2.0
    [DEBUG] (cli) (_log_requirements): smbus: 1.1
    [DEBUG] (cli) (_log_requirements): winusbcdc: version n/a (No package metadata was found for winusbcdc)
    [DEBUG] (cli) (_log_requirements): libusb-package: version n/a (No package metadata was found for libusb-package)
    [DEBUG] (smbus) (find_devices): searching LinuxI2c
    [DEBUG] (smbus) (find_devices): LinuxI2c drivers: Ddr4Temperature, EvgaPascal, RogTuring, VengeanceRgb
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-3
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-10
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0050 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-1
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-8
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0037 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-6
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-13
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-4
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-11
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-2
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-0
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-9
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-7
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0036 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-5
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-MSFT8000:00 (skipped, invalid literal for int() with base 10: 'MSFT8000:00')
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-12
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0052 (skipped, not a bus or unsupported adapter)
    [DEBUG] (usb) (find_devices): searching HidapiBus
    [DEBUG] (usb) (find_devices): HidapiBus drivers: Aquacomputer, AuraLed, CommanderCore, CommanderPro, CorsairHidPsu, H1V2, HydroPlatinum, Kraken2, KrakenX3, KrakenZ3, NzxtEPsu, RgbFusion2, SmartDevice, SmartDevice2, _BaseSmartDevice
    [DEBUG] (usb) (find_devices): HID device: 05ac:024f (usage_page=0x0001 usage=0x0006)
    [DEBUG] (usb) (find_devices): HID device: 05ac:024f (usage_page=0x000c usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 05ac:024f (usage_page=0x0001 usage=0x0080)
    [DEBUG] (usb) (find_devices): HID device: 05ac:024f (usage_page=0x0001 usage=0x0006)
    [DEBUG] (usb) (find_devices): HID device: 05ac:024f (usage_page=0x0001 usage=0x0002)
    [DEBUG] (usb) (find_devices): HID device: 05ac:024f (usage_page=0x0001 usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 05ac:024f (usage_page=0xffff usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 1e71:2007 (usage_page=0xff00 usage=0x0001)
    [DEBUG] (usb) (probe): KrakenX3 identified: NZXT Kraken X (X53, X63 or X73)
    [DEBUG] (usb) (find_devices): HID device: 1e71:2012 (usage_page=0xff00 usage=0x0001)
    [DEBUG] (usb) (probe): SmartDevice2 identified: NZXT RGB Controller
    [DEBUG] (usb) (find_devices): HID device: 0b05:19af (usage_page=0xff72 usage=0x00a1)
    [DEBUG] (usb) (probe): AuraLed identified: ASUS Aura LED Controller (experimental)
    [DEBUG] (usb) (find_devices): HID device: 046d:b020 (usage_page=0x0001 usage=0x0002)
    [DEBUG] (usb) (find_devices): HID device: 046d:b020 (usage_page=0x0001 usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 046d:b020 (usage_page=0xff43 usage=0x0202)
    [DEBUG] (usb) (find_devices): searching PyUsbBus
    [DEBUG] (usb) (find_devices): PyUsbBus drivers: Hydro690Lc, HydroPro, Legacy690Lc, Modern690Lc, _Base690Lc, _ModernBase690Lc
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0003
    [DEBUG] (usb) (find_devices): USB device: 1058:070a
    [DEBUG] (usb) (find_devices): USB device: 0b05:19af
    [DEBUG] (usb) (find_devices): USB device: 8087:0026
    [DEBUG] (usb) (find_devices): USB device: 1e71:2012
    [DEBUG] (usb) (find_devices): USB device: 1e71:2007
    [DEBUG] (usb) (find_devices): USB device: 058f:6254
    [DEBUG] (usb) (find_devices): USB device: 05ac:024f
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0002
    Device #0: NZXT Kraken X (X53, X63 or X73)
    ├── Vendor ID: 0x1e71
    ├── Product ID: 0x2007
    ├── Release number: 0x0201
    ├── Serial number: 00000000001A
    ├── Bus: hid
    ├── Address: /dev/hidraw3
    └── Driver: KrakenX3
    [DEBUG] (cli) (_list_devices_human): MRO: KrakenX3, UsbHidDriver, BaseUsbDriver, BaseDriver, object
    
    Device #1: NZXT RGB Controller
    ├── Vendor ID: 0x1e71
    ├── Product ID: 0x2012
    ├── Release number: 0x0104
    ├── Serial number: 15031016AB70D5035EAF2023
    ├── Bus: hid
    ├── Address: /dev/hidraw4
    └── Driver: SmartDevice2
    [DEBUG] (cli) (_list_devices_human): MRO: SmartDevice2, _BaseSmartDevice, UsbHidDriver, BaseUsbDriver, BaseDriver, object
    
    Device #2: ASUS Aura LED Controller (experimental)
    ├── Vendor ID: 0x0b05
    ├── Product ID: 0x19af
    ├── Release number: 0x0100
    ├── Serial number: 9876543210
    ├── Bus: hid
    ├── Address: /dev/hidraw0
    └── Driver: AuraLed
    [DEBUG] (cli) (_list_devices_human): MRO: AuraLed, UsbHidDriver, BaseUsbDriver, BaseDriver, object
    
    
    

    When I initialize the device it looks like this:

    # liquidctl initialize --product 0x2012 --verbose --debug
    [DEBUG] (cli) (main): script: /usr/bin/liquidctl
    [DEBUG] (cli) (main): version: 1.11.1
    [DEBUG] (cli) (main): platform: Linux-6.0.15-300.fc37.x86_64-x86_64-with-glibc2.36
    [DEBUG] (cli) (_log_requirements): python: 3.11.1 (main, Dec  7 2022, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)]
    [DEBUG] (cli) (_log_requirements): colorlog: 6.6.0
    [DEBUG] (cli) (_log_requirements): crcmod: 1.7
    [DEBUG] (cli) (_log_requirements): docopt: 0.6.2
    [DEBUG] (cli) (_log_requirements): hidapi: 0.12.0.post2
    [DEBUG] (cli) (_log_requirements): pyusb: 1.2.1
    [DEBUG] (cli) (_log_requirements): pillow: 9.2.0
    [DEBUG] (cli) (_log_requirements): smbus: 1.1
    [DEBUG] (cli) (_log_requirements): winusbcdc: version n/a (No package metadata was found for winusbcdc)
    [DEBUG] (cli) (_log_requirements): libusb-package: version n/a (No package metadata was found for libusb-package)
    [DEBUG] (smbus) (find_devices): searching LinuxI2c
    [DEBUG] (smbus) (find_devices): LinuxI2c drivers: Ddr4Temperature, EvgaPascal, RogTuring, VengeanceRgb
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-3
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-10
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0050 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-1
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-8
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0037 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-6
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-13
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-4
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-11
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-2
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-0
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-9
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-7
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0036 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-5
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-MSFT8000:00 (skipped, invalid literal for int() with base 10: 'MSFT8000:00')
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-12
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0052 (skipped, not a bus or unsupported adapter)
    [DEBUG] (usb) (find_devices): searching HidapiBus
    [DEBUG] (usb) (find_devices): HidapiBus drivers: Aquacomputer, AuraLed, CommanderCore, CommanderPro, CorsairHidPsu, H1V2, HydroPlatinum, Kraken2, KrakenX3, KrakenZ3, NzxtEPsu, RgbFusion2, SmartDevice, SmartDevice2, _BaseSmartDevice
    [DEBUG] (usb) (find_devices): HID device: 1e71:2012 (usage_page=0xff00 usage=0x0001)
    [DEBUG] (usb) (probe): SmartDevice2 identified: NZXT RGB Controller
    [DEBUG] (usb) (find_devices): searching PyUsbBus
    [DEBUG] (usb) (find_devices): PyUsbBus drivers: Hydro690Lc, HydroPro, Legacy690Lc, Modern690Lc, _Base690Lc, _ModernBase690Lc
    [DEBUG] (usb) (find_devices): USB device: 1e71:2012
    [DEBUG] (cli) (main): device: NZXT RGB Controller
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x10 with 63 bytes: 01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (write): writting report 0x20 with 63 bytes: 03:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 11:01:16:10:03:15:03:d5:70:ab:23:20:af:5e:12:20:01:01:04:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [INFO] (smart_device) (_read_until): msg=[17, 1, 22, 16, 3, 21, 3, 213, 112, 171, 35, 32, 175, 94, 18, 32, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    [DEBUG] (usb) (read): read 64 bytes: 21:03:16:10:03:15:03:d5:70:ab:23:20:af:5e:03:14:00:00:00:00:00:14:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [INFO] (smart_device) (_read_until): msg=[33, 3, 22, 16, 3, 21, 3, 213, 112, 171, 35, 32, 175, 94, 3, 20, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
    NZXT RGB Controller
    ├── Firmware version       1.4.0  
    ├── LED 1 accessory 1    Unknown  
    └── LED 2 accessory 1    Unknown  
    

    As we can see, my fans connected are visible but unknown, the fans are the NZXT F140 RGB.

    Also here is an a output when I tried to change the color of them:

    # liquidctl --product 0x2012 -v --debug set led1 color off
    [DEBUG] (cli) (main): script: /usr/bin/liquidctl
    [DEBUG] (cli) (main): version: 1.11.1
    [DEBUG] (cli) (main): platform: Linux-6.0.15-300.fc37.x86_64-x86_64-with-glibc2.36
    [DEBUG] (cli) (_log_requirements): python: 3.11.1 (main, Dec  7 2022, 00:00:00) [GCC 12.2.1 20221121 (Red Hat 12.2.1-4)]
    [DEBUG] (cli) (_log_requirements): colorlog: 6.6.0
    [DEBUG] (cli) (_log_requirements): crcmod: 1.7
    [DEBUG] (cli) (_log_requirements): docopt: 0.6.2
    [DEBUG] (cli) (_log_requirements): hidapi: 0.12.0.post2
    [DEBUG] (cli) (_log_requirements): pyusb: 1.2.1
    [DEBUG] (cli) (_log_requirements): pillow: 9.2.0
    [DEBUG] (cli) (_log_requirements): smbus: 1.1
    [DEBUG] (cli) (_log_requirements): winusbcdc: version n/a (No package metadata was found for winusbcdc)
    [DEBUG] (cli) (_log_requirements): libusb-package: version n/a (No package metadata was found for libusb-package)
    [DEBUG] (smbus) (find_devices): searching LinuxI2c
    [DEBUG] (smbus) (find_devices): LinuxI2c drivers: Ddr4Temperature, EvgaPascal, RogTuring, VengeanceRgb
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-3
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-10
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0050 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-1
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-8
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0037 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-6
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-13
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-4
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-11
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-2
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-0
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-9
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-7
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0036 (skipped, not a bus or unsupported adapter)
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-5
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-MSFT8000:00 (skipped, invalid literal for int() with base 10: 'MSFT8000:00')
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-12
    [DEBUG] (smbus) (find_devices): I²C adapter: 13-0052 (skipped, not a bus or unsupported adapter)
    [DEBUG] (usb) (find_devices): searching HidapiBus
    [DEBUG] (usb) (find_devices): HidapiBus drivers: Aquacomputer, AuraLed, CommanderCore, CommanderPro, CorsairHidPsu, H1V2, HydroPlatinum, Kraken2, KrakenX3, KrakenZ3, NzxtEPsu, RgbFusion2, SmartDevice, SmartDevice2, _BaseSmartDevice
    [DEBUG] (usb) (find_devices): HID device: 1e71:2012 (usage_page=0xff00 usage=0x0001)
    [DEBUG] (usb) (probe): SmartDevice2 identified: NZXT RGB Controller
    [DEBUG] (usb) (find_devices): searching PyUsbBus
    [DEBUG] (usb) (find_devices): PyUsbBus drivers: Hydro690Lc, HydroPro, Legacy690Lc, Modern690Lc, _Base690Lc, _ModernBase690Lc
    [DEBUG] (usb) (find_devices): USB device: 1e71:2012
    [DEBUG] (cli) (main): device: NZXT RGB Controller
    [DEBUG] (usb) (write): writting report 0x28 with 63 bytes: 03:01:00:00:02:00:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    

    Nothings happens, the fans are still on with a white light.

    System Info:

    OS: Fedora Linux 37 (Workstation Edition)
    Mobo: Asus z690-P
    liquidctl version:  v1.11.1 (Linux-6.0.15-300.fc37.x86_64-x86_64-with-glibc2.36)
    

    P. S.

    I also have the NZXT Kraken x63 and it works perfectly.

    I added some new lines to the python script in order to get more logging info.

    I also tried to capture the USB traffic with the next script, that script start monitoring the USB device, turns off and on the NZXT Kraken and the RGB Controller and finish the USB monitoring:

    #!/bin/bash
    
    echo -e "Testing NZXT devices with liquidctl...\nStarting USB device monitoring"
    
    usbmon -i 1 -fh > /tmp/usbmon_out & # -fh flag for human readable
    
    echo -e "turning off and turning on NZXT Kraken X63\nliquidctl --product 0x2007 -v --debug set sync color off"
    
    liquidctl --product 0x2007 -v --debug set sync color off
    
    echo "liquidctl --product 0x2007 -v --debug set sync color spectrum-wave"
    
    liquidctl --product 0x2007 -v --debug set sync color spectrum-wave
    
    echo -e "turning off and turning on NZXT RGB Controller\nliquidctl --product 0x2012 -v --debug set led1 color off"
    
    liquidctl --product 0x2012 -v --debug set led1 color off
    
    echo "liquidctl --product 0x2012 -v --debug set led1 color spectrum-wave"
    
    liquidctl --product 0x2012 -v --debug set led1 color spectrum-wave
    
    echo "Stopping USB device monitoring..."
    
    kill -9 $(ps -eaf | grep -i usbmon | grep -v grep | awk {'print $2'})
    
    echo 'Done!'
    

    this was the result, but I don't know how to decode this:

    8a163080 0.286539 S Ii:1:006:1 -:1 64 <
    8db27680 0.287167 C Ii:1:003:1 0:1 8 =
        00000000 00000000
    8db27680 0.287179 S Ii:1:003:1 -:1 8 <
    8a163080 0.287277 C Ii:1:006:1 0:1 64 =
        ff014b00 28000b51 31544b36 37202a04 00000000 00000000 00000000 00000000
         . . K .  ( . . Q  1 T K 6  7   * .  . . . .  . . . .  . . . .  . . . .
    8a163080 0.287279 S Ii:1:006:1 -:1 64 <
    b6ed6b40 0.338513 S Io:1:006:1 -:1 64 =
        2a040707 00320000 00000000 00000000 00000000 00000000 00000000 00000000
         * . . .  . 2 . .  . . . .  . . . .  . . . .  . . . .  . . . .  . . . .
    b6ed6b40 0.339275 C Io:1:006:1 0:1 64 >
    8a163080 0.341285 C Ii:1:006:1 -2:1 0
    8a163080 0.403307 S Ii:1:006:1 -:1 64 <
    8a163080 0.404275 C Ii:1:006:1 0:1 64 =
        ff014b00 28000b51 31544b36 37202a04 00000000 00000000 00000000 00000000
         . . K .  ( . . Q  1 T K 6  7   * .  . . . .  . . . .  . . . .  . . . .
    8a163080 0.404278 S Ii:1:006:1 -:1 64 <
    b6ed63c0 0.454511 S Io:1:006:1 -:1 64 =
        2a040707 02fa0000 00000000 00000000 00000000 00000000 00000000 00000000
         * . . .  . . . .  . . . .  . . . .  . . . .  . . . .  . . . .  . . . .
    b6ed63c0 0.455284 C Io:1:006:1 0:1 64 >
    8a163080 0.457288 C Ii:1:006:1 -2:1 0
    8a1638c0 0.518413 S Ii:1:007:1 -:1 64 <
    8a1638c0 0.519282 C Ii:1:007:1 0:1 64 =
        ff031610 031503d5 70ab2320 af5e0c0a 00000000 00000000 00000000 00000000
         . . . .  . . . .  p . #    . ^ . .  . . . .  . . . .  . . . .  . . . .
    8a1638c0 0.519284 S Ii:1:007:1 -:1 64 <
    b6ed6180 0.570540 S Io:1:007:2 -:1 64 =
        28030100 00020000 01000000 00000000 00000000 00000000 00000000 00000000
         ( . . .  . . . .  . . . .  . . . .  . . . .  . . . .  . . . .  . . . .
    b6ed6180 0.571283 C Io:1:007:2 0:1 64 >
    8a1638c0 0.573416 C Ii:1:007:1 -2:1 0
    8a1638c0 0.635586 S Ii:1:007:1 -:1 64 <
    47daefc0 0.687479 S Io:1:007:2 -:1 64 =
        28030100 02020000 01000000 00000000 00000000 00000000 00000000 00000000
         ( . . .  . . . .  . . . .  . . . .  . . . .  . . . .  . . . .  . . . .
    47daefc0 0.688274 C Io:1:007:2 0:1 64 >
    8a1638c0 0.690406 C Ii:1:007:1 -2:1 0
    
    

    Can you help with implementing or testing the changes needed for liquidctl to support this device?

    testing changes on Linux, attempting to capture USB/HID traffic, implementing the changes

    new device 
    opened by Luisj5231 0
  • Corsair iCUE Commander Core not listed by default

    Corsair iCUE Commander Core not listed by default

    Describe the bug

    Corsair iCUE Commander Core (from Corsair iCUE h150i Elite Capellix) is matched by ID 1b1c:0c1c in 'commander_core.py' driver. However, in my lsusb output it is has another id, so after I modified the commander_core.py on my computer with the respective values everything started working as expected.

    Commands executed

    lsusb output for my device: Bus 005 Device 006: ID 1b1c:0c32 Corsair CORSAIR iCUE COMMANDER Core

    Expected lsusb output, according to the original commander_core.py file: Bus XXX Device XXX: ID 1b1c:0c1c Corsair CORSAIR iCUE COMMANDER Core

    Output of all relevant commands with --debug flag

    I ran this command after modifying the commander_core.py file

    $ sudo liquidctl status --debug
    [DEBUG] (cli) (main): script: /usr/bin/liquidctl
    [DEBUG] (cli) (main): version: 1.11.1
    [DEBUG] (cli) (main): platform: Linux-6.1.1-arch1-1-x86_64-with-glibc2.36
    [DEBUG] (cli) (_log_requirements): python: 3.10.9 (main, Dec 19 2022, 17:35:49) [GCC 12.2.0]
    [DEBUG] (cli) (_log_requirements): colorlog: 6.7.0
    [DEBUG] (cli) (_log_requirements): crcmod: 1.7
    [DEBUG] (cli) (_log_requirements): docopt: 0.6.2
    [DEBUG] (cli) (_log_requirements): hidapi: 0.12.0.post2
    [DEBUG] (cli) (_log_requirements): pyusb: 1.2.1
    [DEBUG] (cli) (_log_requirements): pillow: 9.3.0
    [DEBUG] (cli) (_log_requirements): smbus: 1.1
    [DEBUG] (cli) (_log_requirements): winusbcdc: version n/a (No package metadata was found for winusbcdc)
    [DEBUG] (cli) (_log_requirements): libusb-package: version n/a (No package metadata was found for libusb-package)
    [DEBUG] (smbus) (find_devices): searching LinuxI2c
    [DEBUG] (smbus) (find_devices): LinuxI2c drivers: Ddr4Temperature, EvgaPascal, RogTuring, VengeanceRgb
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-3
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-1
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-CYP0002:00 (skipped, invalid literal for int() with base 10: 'CYP0002:00')
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-8
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-6
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-4
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-2
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-0
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-9
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-7
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-5
    [DEBUG] (smbus) (find_devices): I²C adapter: i2c-MSFT8000:00 (skipped, invalid literal for int() with base 10: 'MSFT8000:00')
    [DEBUG] (usb) (find_devices): searching HidapiBus
    [DEBUG] (usb) (find_devices): HidapiBus drivers: Aquacomputer, AuraLed, CommanderCore, CommanderPro, CorsairHidPsu, H1V2, HydroPlatinum, Kraken2, KrakenX3, KrakenZ3, NzxtEPsu, RgbFusion2, SmartDevice, SmartDevice2, _BaseSmartDevice
    [DEBUG] (usb) (find_devices): HID device: 3434:0100 (usage_page=0x0001 usage=0x0006)
    [DEBUG] (usb) (find_devices): HID device: 3434:0100 (usage_page=0xff60 usage=0x0061)
    [DEBUG] (usb) (find_devices): HID device: 3434:0100 (usage_page=0x0001 usage=0x0080)
    [DEBUG] (usb) (find_devices): HID device: 3434:0100 (usage_page=0x000c usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 3434:0100 (usage_page=0x0001 usage=0x0006)
    [DEBUG] (usb) (find_devices): HID device: 0b05:1a53 (usage_page=0xffc0 usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 14ed:1012 (usage_page=0xff00 usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 14ed:1012 (usage_page=0x000c usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 046d:4082 (usage_page=0x0001 usage=0x0006)
    [DEBUG] (usb) (find_devices): HID device: 046d:4082 (usage_page=0x0001 usage=0x0002)
    [DEBUG] (usb) (find_devices): HID device: 046d:4082 (usage_page=0x0001 usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 046d:4082 (usage_page=0xff00 usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 046d:4082 (usage_page=0xff00 usage=0x0002)
    [DEBUG] (usb) (find_devices): HID device: 046d:4082 (usage_page=0xff00 usage=0x0004)
    [DEBUG] (usb) (find_devices): HID device: 046d:c52b (usage_page=0xff00 usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 046d:c52b (usage_page=0xff00 usage=0x0002)
    [DEBUG] (usb) (find_devices): HID device: 046d:c52b (usage_page=0xff00 usage=0x0004)
    [DEBUG] (usb) (find_devices): HID device: 0b05:18f3 (usage_page=0xff72 usage=0x00a1)
    [DEBUG] (usb) (probe): AuraLed identified: ASUS Aura LED Controller (experimental)
    [DEBUG] (usb) (find_devices): HID device: 056a:0378 (usage_page=0xff0d usage=0x0001)
    [DEBUG] (usb) (find_devices): HID device: 056a:0378 (usage_page=0xff0d usage=0x0020)
    [DEBUG] (usb) (find_devices): HID device: 056a:0378 (usage_page=0xff0d usage=0x0039)
    [DEBUG] (usb) (find_devices): HID device: 056a:0378 (usage_page=0xff0d usage=0x1013)
    [DEBUG] (usb) (find_devices): HID device: 056a:0378 (usage_page=0xff0d usage=0x000e)
    [DEBUG] (usb) (find_devices): HID device: 056a:0378 (usage_page=0xff0d usage=0x10ac)
    [DEBUG] (usb) (find_devices): HID device: 1b1c:0c32 (usage_page=0xff42 usage=0x0001)
    [DEBUG] (usb) (probe): CommanderCore identified: CORSAIR iCUE COMMANDER Core (experimental)
    [DEBUG] (usb) (find_devices): HID device: 1b1c:0c32 (usage_page=0xff42 usage=0x0002)
    [DEBUG] (usb) (find_devices): HID device: 054c:0994 (usage_page=0x0001 usage=0x0000)
    [DEBUG] (usb) (find_devices): searching PyUsbBus
    [DEBUG] (usb) (find_devices): PyUsbBus drivers: Hydro690Lc, HydroPro, Legacy690Lc, Modern690Lc, _Base690Lc, _ModernBase690Lc
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0003
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0002
    [DEBUG] (usb) (find_devices): USB device: 054c:0994
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0002
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0003
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0003
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0002
    [DEBUG] (usb) (find_devices): USB device: 174c:3074
    [DEBUG] (usb) (find_devices): USB device: 0bda:0411
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0003
    [DEBUG] (usb) (find_devices): USB device: 1b1c:0c32
    [DEBUG] (usb) (find_devices): USB device: 174c:2074
    [DEBUG] (usb) (find_devices): USB device: 0bda:5418
    [DEBUG] (usb) (find_devices): USB device: 0bda:5411
    [DEBUG] (usb) (find_devices): USB device: 056a:0378
    [DEBUG] (usb) (find_devices): USB device: 0b05:18f3
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0002
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0003
    [DEBUG] (usb) (find_devices): USB device: 8087:0032
    [DEBUG] (usb) (find_devices): USB device: 046d:c52b
    [DEBUG] (usb) (find_devices): USB device: 14ed:1012
    [DEBUG] (usb) (find_devices): USB device: 0b05:1a53
    [DEBUG] (usb) (find_devices): USB device: 3434:0100
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0002
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0003
    [DEBUG] (usb) (find_devices): USB device: 1d6b:0002
    [DEBUG] (cli) (main): device: ASUS Aura LED Controller (experimental)
    [DEBUG] (usb) (write): writting report 0xec with 64 bytes: b0:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 65 bytes: ec:30:01:c0:10:1f:04:01:83:08:0b:3c:00:01:00:00:78:3c:00:01:00:00:78:3c:00:01:00:00:78:3c:00:01:0d:03:01:f4:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    ASUS Aura LED Controller (experimental)
    ├── ARGB channels: 4                                         
    ├──  RGB channels: 1                                         
    ├── Device Config: 1     0x10, 0x1f, 0x04, 0x01, 0x83, 0x08  
    ├── Device Config: 2     0x0b, 0x3c, 0x00, 0x01, 0x00, 0x00  
    ├── Device Config: 3     0x78, 0x3c, 0x00, 0x01, 0x00, 0x00  
    ├── Device Config: 4     0x78, 0x3c, 0x00, 0x01, 0x00, 0x00  
    ├── Device Config: 5     0x78, 0x3c, 0x00, 0x01, 0x0d, 0x03  
    ├── Device Config: 6     0x01, 0xf4, 0x00, 0x00, 0x00, 0x00  
    ├── Device Config: 7     0x00, 0x00, 0x00, 0x00, 0x00, 0x00  
    ├── Device Config: 8     0x00, 0x00, 0x00, 0x00, 0x00, 0x00  
    ├── Device Config: 9     0x00, 0x00, 0x00, 0x00, 0x00, 0x00  
    └── Device Config: 10    0x00, 0x00, 0x00, 0x00, 0x00, 0x00  
    
    [DEBUG] (cli) (main): device: CORSAIR iCUE COMMANDER Core (experimental)
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:01:03:00:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:0d:00:17:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:0d:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:08:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:08:00:06:00:07:ad:09:00:00:00:00:00:00:bb:02:dc:02:d6:02:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:05:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:05:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:0d:00:21:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:0d:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:08:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:08:00:10:00:02:00:5c:01:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:05:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:05:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
    [DEBUG] (usb) (write): writting report 0x00 with 96 bytes: 08:01:03:00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    [DEBUG] (usb) (read): read 64 bytes: 00:01:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
    CORSAIR iCUE COMMANDER Core (experimental)
    ├── Pump speed           2477  rpm
    ├── Fan speed 1             0  rpm
    ├── Fan speed 2             0  rpm
    ├── Fan speed 3             0  rpm
    ├── Fan speed 4           699  rpm
    ├── Fan speed 5           732  rpm
    ├── Fan speed 6           726  rpm
    └── Water temperature    34.8  °C
    

    Affected device

    Corsair iCUE h150i Elite Capellix

    Operating system and version

    Linux 6.1

    Installation method

    Official Arch & Fedora repos

    Version of liquidctl

    liquidctl v1.11.1 (Linux-6.1.1-arch1-1-x86_64-with-glibc2.36)

    new device bad corsair names 
    opened by kozlov-ma 2
  • Asus ROG STRIX LC

    Asus ROG STRIX LC

    Device type

    AIO liquid cooler

    Product page

    https://www.asus.com/hk/motherboards-components/cooling/rog-republic-of-gamers/filter?SubSeries=ROG-Strix-LC

    First-party software

    Armoury Crate for win10/11 (https://www.asus.com/us/supportonly/armoury%20crate/helpdesk_download/)

    What monitoring functionality does the device support?

    temperatures, fan/pump speeds or duty cycles

    What configuration functionality does the device support?

    fan/pump speeds or duty cycles

    Physical connection

    onboard (detected as USB)

    Connection protocol

    No response

    Additional information about the device

    sudo lshw | grep '*-usb:4' -A8
    *-usb:4
                       description: Keyboard
                       product: ROG STRIX LC
                       vendor: AsusTek Computer Inc.
                       physical id: c
                       bus info: usb@1:c
                       version: 0.03
                       capabilities: usb-2.00
                       configuration: driver=usbhid maxpower=100mA speed=12Mbit/s
    
    sudo lsusb -d 0b05:879e -v
    
    Bus 001 Device 010: ID 0b05:879e ASUSTek Computer, Inc. ROG STRIX LC
    Device Descriptor:
      bLength                18
      bDescriptorType         1
      bcdUSB               2.00
      bDeviceClass            0 
      bDeviceSubClass         0 
      bDeviceProtocol         0 
      bMaxPacketSize0        64
      idVendor           0x0b05 ASUSTek Computer, Inc.
      idProduct          0x879e 
      bcdDevice            0.03
      iManufacturer           1 AsusTek Computer Inc.
      iProduct                2 ROG STRIX LC
      iSerial                 0 
      bNumConfigurations      1
      Configuration Descriptor:
        bLength                 9
        bDescriptorType         2
        wTotalLength       0x0022
        bNumInterfaces          1
        bConfigurationValue     1
        iConfiguration          0 
        bmAttributes         0xe0
          Self Powered
          Remote Wakeup
        MaxPower              100mA
        Interface Descriptor:
          bLength                 9
          bDescriptorType         4
          bInterfaceNumber        0
          bAlternateSetting       0
          bNumEndpoints           1
          bInterfaceClass         3 Human Interface Device
          bInterfaceSubClass      1 Boot Interface Subclass
          bInterfaceProtocol      1 Keyboard
          iInterface              0 
            HID Device Descriptor:
              bLength                 9
              bDescriptorType        33
              bcdHID               1.10
              bCountryCode            0 Not supported
              bNumDescriptors         1
              bDescriptorType        34 Report
              wDescriptorLength      82
             Report Descriptors: 
               ** UNAVAILABLE **
          Endpoint Descriptor:
            bLength                 7
            bDescriptorType         5
            bEndpointAddress     0x81  EP 1 IN
            bmAttributes            3
              Transfer Type            Interrupt
              Synch Type               None
              Usage Type               Data
            wMaxPacketSize     0x0040  1x 64 bytes
            bInterval               1
    Device Status:     0x0001
      Self Powered
    
    
    liquidctl list --debug 
    
    [DEBUG] liquidctl.driver.usb: found HID device 0b05:879e
    [DEBUG] liquidctl.driver.usb: found HID device 0b05:879e
    [DEBUG] liquidctl.driver.usb: found HID device 0b05:879e
    

    Can you help with implementing or testing the changes needed for liquidctl to support this device?

    yes

    new device 
    opened by mingfai 1
  • TEAMGROUP Team T-Force Delta RGB DDR4 2x16GB

    TEAMGROUP Team T-Force Delta RGB DDR4 2x16GB

    Device type

    RAM

    Product page

    https://www.teamgroupinc.com/en/product/delta-rgb-ddr4

    First-party software

    It fully supports Asus AURA SYNC

    What monitoring functionality does the device support?

    No response

    What configuration functionality does the device support?

    lighting of embedded LEDs

    Physical connection

    motherboard memory slots

    Connection protocol

    No response

    Additional information about the device

    I don't know how the communication is handled, but here's the memory info.

    sudo lshw -C memory
      *-firmware                
           description: BIOS
           vendor: American Megatrends Inc.
           physical id: 0
           version: 2403
           date: 06/16/2021
           size: 64KiB
           capacity: 16MiB
           capabilities: pci apm upgrade shadowing cdboot bootselect socketedrom edd int13floppy1200 int13floppy720 int13floppy2880 int5printscreen int9keyboard int14serial int17printer acpi usb biosbootspecification uefi
      *-memory
           description: System Memory
           physical id: 31
           slot: System board or motherboard
           size: 32GiB
         *-bank:0
              description: [empty]
              product: Unknown
              vendor: Unknown
              physical id: 0
              serial: Unknown
              slot: DIMM_A1
         *-bank:1
              description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0.3 ns)
              product: TEAMGROUP-UD4-3200
              vendor: Team Group Inc.
              physical id: 1
              serial: 0104D648
              slot: DIMM_A2
              size: 16GiB
              width: 64 bits
              clock: 3200MHz (0.3ns)
         *-bank:2
              description: [empty]
              product: Unknown
              vendor: Unknown
              physical id: 2
              serial: Unknown
              slot: DIMM_B1
         *-bank:3
              description: DIMM DDR4 Synchronous Unbuffered (Unregistered) 3200 MHz (0.3 ns)
              product: TEAMGROUP-UD4-3200
              vendor: Team Group Inc.
              physical id: 3
              serial: 0104D652
              slot: DIMM_B2
              size: 16GiB
              width: 64 bits
              clock: 3200MHz (0.3ns)
      *-cache:0
           description: L1 cache
           physical id: 33
           slot: L1 - Cache
           size: 512KiB
           capacity: 512KiB
           clock: 1GHz (1.0ns)
           capabilities: pipeline-burst internal write-back unified
           configuration: level=1
      *-cache:1
           description: L2 cache
           physical id: 34
           slot: L2 - Cache
           size: 4MiB
           capacity: 4MiB
           clock: 1GHz (1.0ns)
           capabilities: pipeline-burst internal write-back unified
           configuration: level=2
      *-cache:2
           description: L3 cache
           physical id: 35
           slot: L3 - Cache
           size: 16MiB
           capacity: 16MiB
           clock: 1GHz (1.0ns)
           capabilities: pipeline-burst internal write-back unified
           configuration: level=3
    

    Can you help with implementing or testing the changes needed for liquidctl to support this device?

    testing changes on Linux, attempting to capture USB/HID traffic, attempting to capture I²C/SMBus traffic, analyzing traffic data

    new device i2c/smbus 
    opened by feiticeir0 9
  • Corsair iCUE Elite Capellix H170i

    Corsair iCUE Elite Capellix H170i

    Device type

    AIO

    Product page

    https://www.corsair.com/de/de/Kategorien/Produkte/CORSAIR-iCUE/Flüssigkühlung/iCUE-ELITE-CAPELLIX-Liquid-CPU-Cooler/p/CW-9060055-WW

    First-party software

    Corsair ICUE

    What monitoring functionality does the device support?

    fan/pump speeds or duty cycles

    What configuration functionality does the device support?

    fan/pump speeds or duty cycles, lighting of accessories like RGB fans or LED strips

    Physical connection

    USB Header

    Connection protocol

    No response

    Additional information about the device

    Bus 001 Device 011: ID 1b1c:0c39 Corsair LCD Cap for Elite Capellix coolers

    Can you help with implementing or testing the changes needed for liquidctl to support this device?

    testing changes on Linux

    new device bad corsair names 
    opened by paskalll 6
  • New NZXT RGB & Fan Controller variant

    New NZXT RGB & Fan Controller variant

    Device type

    NZXT NZXT RGB & Fan Controller

    Product page

    https://nzxt.com/product/rgb-and-fan-controller

    First-party software

    NZXT

    What monitoring functionality does the device support?

    Fan/pump speeds or duty cycles

    What configuration functionality does the device support?

    Lighting of accessories like RGB fans or LED strips

    System connection

    USB

    System protocol

    USB

    Additional information about the device

    Bus 001 Device 005: ID 1e71:2011 NZXT NZXT RGB & Fan Controller

    liquidctl does not detect this device.

    I'm using Arch Linux with kernel 6.0.10-arch2-1 I have the module loaded nzxt-smart2 if it helps...

    Thank you

    My case is a NZXT H7 Elite . Thank you lsusb-devices.txt

    Can you help with the implementation or testing of the new device?

    testing changes on Linux, attempting to capture I²C/SMBus traffic

    new device 
    opened by feiticeir0 23
Releases(v1.11.1)
  • v1.11.1(Oct 20, 2022)

    Released 19 October 2022.

    Changes since 1.11.0

    Fixed:

    • USB and HID: increase default timeout to 5s (liquidctl#526)

    Notes for downstream packagers

    See notes for 1.11.0 release.

    Known issues

    Please check the issue tracker.

    Checksums

    278c1aca8d891bfe8e0c164dfe6651261a0423b29f9c24cef060c3613f2a4fd7  dist/liquidctl-1.11.1.tar.gz
    629d6e7db0eab3d6e7d0a58c23be6765d169eb2c1d29ddaef2fde60c603429e9  dist/liquidctl-1.11.1-py3-none-any.whl
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.11.1-py3-none-any.whl(115.41 KB)
    liquidctl-1.11.1-py3-none-any.whl.asc(833 bytes)
    liquidctl-1.11.1.tar.gz(1.75 MB)
    liquidctl-1.11.1.tar.gz.asc(833 bytes)
  • v1.11.0(Oct 16, 2022)

    Released 16 October 2022.

    Changes since 1.10.0

    Added:

    • Corsair Commander Core: extend experimental monitoring and fan control support to the Commander Core XT (PR liquidctl#478)
    • Aquacomputer D5 Next: add experimental monitoring and pump/fan control support (PR liquidctl#482, PR liquidctl#489, PR liquidctl#499)
    • Aquacomputer Farbwerk 360: add experimental monitoring support (PR liquidctl#491)
    • Aquacomputer Octo: add experimental monitoring and fan control support (PR liquidctl#492, PR liquidctl#508)
    • Aquacomputer Quadro: add experimental monitoring and fan control support (PR liquidctl#493, PR liquidctl#509)
    • NZXT Kraken Z3: add experimental LCD screen support (PR liquidctl#479)
    • NZXT Kraken X3: support new USB PID (liquidctl#503)
    • NZXT RGB & Fan Controller: support new USB PID (liquidctl#485)

    Changed:

    • ASUS Aura LED: refer to as ASUS instead of AsusTek
    • Corsair RMi/HXi: rename temperature sensors according to their location
    • NZXT Kraken X40/X60: document that alerts are not supported (liquidctl#477)

    Fixed:

    • HWMON: fix Python<3.9 compatibility (PR liquidctl#483)
    • Corsair Hydro Pro: fix duplicate use of second alert temperature (PR liquidctl#484)
    • HWMON: support builtin drivers and log driver instead of module name (liquidctl#502)
    • Corsair Commander Core: support 2.10.219 firmware (PR liquidctl#501, PR liquidctl#513)
    • USB devices: add default timeouts to all IO methods (liquidctl#488)
    • USB HIDs: add default timeouts to compatible IO methods (liquidctl#488)

    Removed:

    • API: make UsbDriver.SUPPORTED_DEVICES private

    Notes for downstream packagers

    New Python dependencies: crcmod, pillow and (Windows-only:) winusbcdc.

    Known issues

    Please check the [issue tracker].

    Checksums

    a3b53e317ba9211e05be88d9158efdc02c51ae067ee974d3d9f0b79716cf7ba3  dist/liquidctl-1.11.0.tar.gz
    0c59dac7bdc09d7a16da410060154dca86258d989308034a919242a4739ca8f3  dist/liquidctl-1.11.0-py3-none-any.whl
    

    In memory of Lucinda Alves Silva Malaco (1924–2021) and Peter Eckersley (1979–2022).

    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.11.0-py3-none-any.whl(115.37 KB)
    liquidctl-1.11.0-py3-none-any.whl.asc(833 bytes)
    liquidctl-1.11.0.tar.gz(1.75 MB)
    liquidctl-1.11.0.tar.gz.asc(833 bytes)
  • v1.10.0(Jul 3, 2022)

    Released 3 July 2022.

    Changes since 1.9.1

    Added:

    • Add experimental support for NZXT H1 V2 case Smart Device (PR #451)
    • Add experimental driver for Asus Aura LED USB controllers (PR #456)

    Changed:

    • Hydro Platinum/Pro XT: only compute packets that will be sent
    • Kraken X2: report modern firmware versions in simplified form
    • Smart Device (V1)/Grid+ V3: report firmware version in simplified form
    • Debug: make it clear when a device is identified
    • Nvidia: promote all supported cards to stable status

    Fixed:

    • Skip keyval unit test on Windows when lacking sufficient permissions to create symlinks (#460)

    Removed:

    • API: remove deprecated firmware version from the output of KrakenX2.get_status()

    Know issues

    • Corsair Hydro Platinum and Pro XT coolers lock up if simultaneously accessed from more than one program and driver instance (#274)

    Checksums

    f9dc1dacaf1d3a44b80000baac490b44c5fa7443159bd8d2ef4dbb1af49cc7ba  dist/liquidctl-1.10.0.tar.gz
    acc65602e598dabca94f91b067ac7ad7f4d2920653b91d694ad421be6eaef172  dist/liquidctl-1.10.0-py3-none-any.whl
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.10.0-py3-none-any.whl(105.43 KB)
    liquidctl-1.10.0-py3-none-any.whl.asc(833 bytes)
    liquidctl-1.10.0.tar.gz(1.72 MB)
    liquidctl-1.10.0.tar.gz.asc(833 bytes)
    liquidctl-1.11.0-py3-none-any.whl(115.37 KB)
    liquidctl-1.11.0-py3-none-any.whl.asc(833 bytes)
  • v1.9.1(Apr 6, 2022)

    Released 5 April 2022.

    Changes since 1.9.0

    Fixed:

    • Remove excess _input suffix when reading pwmN attributes from hwmon (#445, PR #446)

    Notes for downstream packagers

    Starting with 1.9.0, liquidctl now uses a PEP 517 build. See the notes for the 1.9.0 release for more information.

    Know issues

    • Corsair Hydro Platinum and Pro XT coolers lock up if simultaneously accessed from more than one program and driver instance (#274)

    Checksums

    b4467e842d9a6adc804317a991354db041417f4f7dcf7d76799f2b1593ed1276  dist/liquidctl-1.9.1.tar.gz
    a23312c07b1ceec850e7739a2428e9fc47c95cd0650269653a9e726d53c12057  dist/liquidctl-1.9.1-py3-none-any.whl
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.9.1-py3-none-any.whl(101.37 KB)
    liquidctl-1.9.1-py3-none-any.whl.asc(833 bytes)
    liquidctl-1.9.1.tar.gz(1.71 MB)
    liquidctl-1.9.1.tar.gz.asc(833 bytes)
  • v1.9.0(Apr 5, 2022)

    Released 5 April 2022.

    Changes since 1.8.1

    Added:

    • Add support for persisting settings on modern Asetek 690LC coolers (#355)
    • Add support for setting fixed fan/pump speeds on the Corsair Commander Core (PR #405)
    • Identify some devices with a matching Linux hwmon device (#403, PR #429)
    • Add --direct-access to force it in spite of the presence of kernel drivers (#403, PR #429)
    • Add security policy: SECURITY.md
    • Enable experimental support for EVGA GTX 1070 and 1070 Ti cards using the existing EvgaPascal driver:
      • EVGA GTX 1070 FTW [DT Gaming|Hybrid]
      • EVGA GTX 1070 Ti FTW2
    • Enable experimental support for various ASUS GTX and RTX cards using the existing RogTuring driver:
      • ASUS Strix GTX 1050 OC
      • ASUS Strix GTX 1050 Ti OC
      • ASUS Strix GTX 1060 [OC] 6GB
      • ASUS Strix GTX 1070
      • ASUS Strix GTX 1070 Ti [Advanced]
      • ASUS Strix GTX 1080 [Advanced|OC]
      • ASUS Strix GTX 1080 Ti [OC]
      • ASUS Strix GTX 1650 Super OC
      • ASUS Strix GTX 1660 Super OC
      • ASUS Strix GTX 1660 Ti OC
      • ASUS Strix RTX 2060 <Evo|Evo OC|OC>
      • ASUS Strix RTX 2060 Super [Advanced|Evo Advanced|OC]
      • ASUS Strix RTX 2070 [Advanced|OC]
      • ASUS Strix RTX 2070 Super <Advanced|OC>
      • ASUS Strix RTX 2080 OC
      • ASUS Strix RTX 2080 Super <Advanced|OC>
      • ASUS Strix RTX 2080 Ti
      • ASUS TUF RTX 3060 Ti OC
    • API: add liquidctl.__version__
    • extra/contrib: add script for n-color RGB Fusion 2.0 color cycling (PR #424, PR #426)

    Changed:

    • Log the Python interpreter version
    • If possible, log the version of all Python requirements
    • Move reporting of Kraken X2 firmware version to initialization
    • Move reporting of Smart Device V1/Grid+ V3 firmware version and accessories to initialization (PR #429)
    • Don't re-initialize devices with a Linux hwmon driver (#403, PR #429)
    • If possible, read status from Linux hwmon (#403, PR #429)
    • Switch to a PEP 517 build (#430, PR #431)
    • Replace ah-hoc version management with setuptools_scm (#430, PR #431)
    • Allow directly invoking the CLI with python -m liquidctl
    • Windows: provide libsub-1.0.dll automatically with libusb-package
    • API: improve and clarify the documentation of BaseDriver methods
    • API: rename CorsairAsetekProDriver to HydroPro

    Deprecated:

    • Deprecate directly invoking the CLI with python -m liquidctl.cli (use python -m liquidctl)
    • API: deprecate including the firmware version in the output from KrakenX2.get_status() (read it from .initialize())
    • API: deprecate CorsairAsetekProDriver alias (use HydroPro)

    Removed:

    • API: remove long deprecated support for connecting to Kraken X2 devices with KrakenX2.initialize() (use standardized .connect())
    • API: remove long deprecated support for disconnecting from Kraken X2 devices with KrakenX2.finalize() (use standardized .disconnect())
    • API: remove long deprecated <device>.find_all_supported_devices() (use liquidctl.find_liquidctl_devices() or .find_supported_devices()`)

    Fixed:

    • Let all unexpected SMBus exceptions bubble up (#416)
    • Reset Kraken X2 fan and pump profiles during initialization (possibly related to #395)
    • Remove redundant prefix from CLI error messages

    Notes for downstream packagers

    liquidctl now uses a PEP 517 build: PyPA/build and PyPA/installer are suggested for a typical downstream package build process:

    # build
    python -m build --wheel [--no-isolation]
    
    # install
    python -m installer --destdir=<dest> dist/*.whl
    

    Additionally, liquidctl has switched from an ad-hoc solution to version management to setuptools_scm. If the git tags aren't available, setuptools_scm supports environment variables to externally inject the version number.

    export SETUPTOOLS_SCM_PRETEND_VERSION_FOR_LIQUIDCTL=1.9.0
    python -m build [args]
    python -m installer [args]
    

    Know issues

    • Corsair Hydro Platinum and Pro XT coolers lock up if simultaneously accessed from more than one program and driver instance (#274)

    Checksums

    9e1ae595be2c3ea5899e12741c11307da27e86bc88f7f93c5ae40bb2aa03dc70  dist/liquidctl-1.9.0.tar.gz
    3820c29c0fc86bd6bd601d55a593f1cd476cd563875b45488bef26fc272abf6d  dist/liquidctl-1.9.0-py3-none-any.whl
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.9.0-py3-none-any.whl(101.37 KB)
    liquidctl-1.9.0-py3-none-any.whl.asc(833 bytes)
    liquidctl-1.9.0.tar.gz(1.71 MB)
    liquidctl-1.9.0.tar.gz.asc(833 bytes)
  • v1.8.1(Jan 21, 2022)

  • v1.8.0(Jan 6, 2022)

    Released 6 January 2022.

    Changes since 1.7.2

    Added:

    • Add support for the Corsair Hydro H60i Pro XT

    Changed:

    • Support for Corsair Hydro Pro coolers is no longer considered experimental
    • Support for Corsair Hydro Platinum and Pro XT coolers is no longer considered experimental
    • Support for Corsair Hydro Pro XT coolers is no longer considered experimental
    • Support for NZXT Kraken Z coolers remains incomplete (no support for the LCD screen) but is no longer considered experimental
    • Support for Corsair Lighting Node Core and Lighting Node Pro controllers is no longer considered experimental
    • Support for the Corsair Obsidian 1000D case is no longer considered experimental

    Fixed:

    • Read DDR4 temperature sensor by word instead of with SMBus Block Read (#400)
    • Fix tolerant handling of single channel name in Corsair Lighting Node Core

    Know issues

    • Corsair Hydro Platinum and Pro XT coolers lock up if simultaneously accessed from more than one program and driver instance (#274)

    Checksums

    99b8ec4da617a01830951a8f1a37d616f50eed6d260220fe5c26d1bf90e1e91e  dist/liquidctl-1.8.0.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.8.0.tar.gz(2.01 MB)
    liquidctl-1.8.0.tar.gz.asc(833 bytes)
  • v1.7.2(Oct 5, 2021)

    Released 5 October 2021.

    Changelog since 1.7.1

    Added:

    • Enable support for new variant of the NZXT Smart Device V2 (PR #364)

    Changed:

    • Default --maximum-leds to the maximum possible number of LEDs (#367, PR #368)

    Fixed:

    • Fix moving flag in SD2/HUE2 alternating modes (#385)

    Checksums

    $ sha256sum dist/liquidctl-1.7.2*
    b2337e0ca3bd36de1cbf581510aacfe23183d7bb176ad0dd43904be213583de3  dist/liquidctl-1.7.2.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.7.2.tar.gz(1.96 MB)
    liquidctl-1.7.2.tar.gz.asc(833 bytes)
  • v1.7.1(Jul 16, 2021)

    Released 16 July 2021.

    Changelog since 1.7.0

    Fixed:

    • Fix KeyError when logging due to colorlog<6
    • Swap DEBUG and INFO level colors

    Checksums

    $ sha256sum dist/liquidctl-1.7.1*
    10f650b9486ddac184330940550433685ae0abc70b66fe92d994042491aab356  dist/liquidctl-1.7.1.tar.gz
    5f35d4ac8ad6da374877d17c7a36bbb202b0a74bd773ebe45444f0089daba27b  dist/liquidctl-1.7.1-bin-windows-x86_64.zip
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.7.1-bin-windows-x86_64.zip(7.73 MB)
    liquidctl-1.7.1-bin-windows-x86_64.zip.asc(659 bytes)
    liquidctl-1.7.1.tar.gz(1.94 MB)
    liquidctl-1.7.1.tar.gz.asc(659 bytes)
  • v1.7.0(Jul 6, 2021)

    Released 6 July 2021.

    Changelog since 1.6.1

    Added:

    • Add initial experimental support for the Corsair Commander Core/iCUE Elite Capellix AIOs (PR #340)
    • Enable experimental support for Corsair Obsidian 1000D (#346)
    • Enable support for new variant of the NZXT Smart Device V2 (#338)
    • List experimental partial support for the NZXT Kraken Z53
    • Add machine readable output with --json (PR #314)
    • Add CONTRIBUTING.md and document our development process

    Changed:

    • Change Grid+ V3/Smart Device (V1) status output (PR #326)
    • Change Commander Pro status/initialize output (PR #326)
    • Colorize the log output (new dependency: colorlog; PRs #318, #329)
    • Mark Kraken X31, X41, X61 as no longer experimental
    • Mark Vengeance RGB and DDR4 temperature sensors as no longer experimental
    • Mark Commander pro as no longer experimental
    • Mark NZXT E500, E650, E850 as no longer experimental
    • Change main branch name to "main"
    • Improve the documentation

    Fixed:

    • Make find_supported_devices() account for legacy_690lc on Asetek 690LC drivers
    • Remove accidentally inherited downgrade_to_legacy() (unstable) from Hydro690Lc

    Checksums

    $ sha256sum dist/liquidctl-1.7.0*
    053675aca9ba9a3c14d8ef24d1a2e75c592c55a1b8ba494447bc13d3ae523d6f  dist/liquidctl-1.7.0.tar.gz
    d0f8f24961a22c7664c330d286e1c63d4df753d5fbe21ac77eb6488b27508751  dist/liquidctl-1.7.0-bin-windows-x86_64.zip
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.7.0-bin-windows-x86_64.zip(7.72 MB)
    liquidctl-1.7.0-bin-windows-x86_64.zip.asc(659 bytes)
    liquidctl-1.7.0.tar.gz(1.94 MB)
    liquidctl-1.7.0.tar.gz.asc(659 bytes)
  • v1.6.1(May 1, 2021)

    Released 1 May 2021.

    Changelog since 1.6.0

    Fixed:

    • Smart Device V2/HUE 2: check if fan controller before initializing fan reporting (#331)

    Checksums

    $ sha256sum dist/liquidctl-1.5.2*
    e3b6aa5ae55204f8d9a8813105269df7dc8f80087670e3eac88b722949b3843f  dist/liquidctl-1.6.1.tar.gz
    d14a32b7c0de5a2d25bc8280c32255da25e9bc32f103d099b678810a9a1b6c9c  dist/liquidctl-1.6.1-bin-windows-x86_64.zip
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.6.1-bin-windows-x86_64.zip(7.68 MB)
    liquidctl-1.6.1-bin-windows-x86_64.zip.asc(659 bytes)
    liquidctl-1.6.1.tar.gz(1.89 MB)
    liquidctl-1.6.1.tar.gz.asc(659 bytes)
  • v1.5.2(May 1, 2021)

  • v1.6.0(Apr 6, 2021)

    Released 6 April 2021.

    Note for Linux package maintainers

    The i2c-dev kernel module may now be loaded automatically because of extra/linux/71-liquidctl.rules; this substitutes the use of extra/linux/modules-load.conf, which has been removed.

    Changelog since 1.5.1

    Added:

    • Add experimental support for the Corsair Lighting Node Core
    • Add experimental support for the Corsair Hydro H150i Pro XT
    • Add experimental support for the Corsair Hydro H100i Pro, H115i Pro and H150i Pro coolers
    • Enable support for the ASUS Strix GTX 1070
    • Enable support for new variant of the NZXT RGB & Fan Controller
    • Add sync pseudo lighting channel to Commander/Lighting Node Pro devices
    • Add duty cycles to Hydro Platinum and Pro XT status output
    • Add input power and efficiency estimates to the status output of Corsair HXi and RMi PSUs
    • Add the Contributor Covenant, version 1.4 as our code of conduct

    Changed:

    • Remove pro_xt_lighting unsafe feature guard
    • Enforce correct casing of constants in driver APIs
    • Use udev rules for automatic loading of kernel modules (replaces previous modules-load.d configuration)
    • Remove warnings when reporting or setting the OCP mode of Corsair HXi and RMi PSUs
    • Rename Corsair HXi and RMi "Total power" status item to "Total power output"
    • Handle both US and UK spellings of --direction values
    • Improve the documentation

    Fixed:

    • Replace "ID" with "#" when listing all devices
    • Add keyval.load_store method, atomic at the filesystem level
    • Add "Hydro" to Platinum and Pro XT device descriptions

    Removed:

    • Remove modules-load configuration file for Linux (use the supplied udev rules instead)
    • [extra] remove krakencurve-poc, use yoda instead

    Deprecated:

    • Deprecate -d/--device; prefer --match or other selection options

    Checksums

    $ sha256sum dist/liquidctl-1.6.0*
    486dc366f10810a4efb301f3ceda10657a09937e9bc936cecec792ac26c2f186  dist/liquidctl-1.6.0.tar.gz
    9b2e144c1fa63aaf41dc3d6a264b2e78e14a5f424b86e3a5f4b80396677000e6  dist/liquidctl-1.6.0-bin-windows-x86_64.zip
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.6.0-bin-windows-x86_64.zip(7.68 MB)
    liquidctl-1.6.0-bin-windows-x86_64.zip.asc(659 bytes)
    liquidctl-1.6.0.tar.gz(1.85 MB)
    liquidctl-1.6.0.tar.gz.asc(659 bytes)
  • v1.5.1(Feb 19, 2021)

    Released 19 February 2021.

    Changelog since 1.5.0

    Fixed:

    • Handle corrupted runtime data (#278)
    • Fix item prefixes in list output when --match is passed
    • Remove caching of temporarily stored data
    • Append formated exception to "unknown error" messages
    • Only attempt to disconnect from a device if already connected
    • Only attempt to set the USB configuration if no other errors have been detected
    • Return the context manager when overriding connect()
    • Fix construction of fallback search paths for runtime data

    Checksums

    $ sha256sums liquidctl-1.5.1*
    e2d97be0319501bcad9af80c837abdbfd820620edcf9381068a443ad971327eb  liquidctl-1.5.1-bin-windows-x86_64.zip
    9480e2dfbb0406fa8d57601a43a0f7c7573de1f5f24920b0e4000786ed236a8b  liquidctl-1.5.1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.5.1-bin-windows-x86_64.zip(7.47 MB)
    liquidctl-1.5.1-bin-windows-x86_64.zip.asc(659 bytes)
    liquidctl-1.5.1.tar.gz(325.65 KB)
    liquidctl-1.5.1.tar.gz.asc(659 bytes)
  • v1.5.0(Jan 28, 2021)

    Released 27 January 2021.

    Note for Linux package maintainers

    This release introduces a new dependency, Python 'smbus' (from the i2c-tools project); additionally, since trying to access I²C/SMBus devices without having the i2c-dev kernel module loaded will result in errors, extra/linux/modules-load.conf is provided as a suggestion; finally, extra/linux/71-liquidctl.rules will now (as provided) give unprivileged access to i801_smbus adapters.

    Changelog since 1.4.2

    Added:

    • Add SMBus and I²C support on Linux
    • Add support for EVGA GTX 1080 FTW on Linux
    • Add support for ASUS Strix RTX 2080 Ti OC on Linux
    • Add experimental support for DIMMs with TSE2004-compatible temperature sensors on Intel/Linux
    • Add experimental support for Corsair Vengeance RGB on Intel/Linux
    • Add experimental support for the Corsair Commander Pro
    • Add experimental support for the Corsair Lighting Node Pro
    • Add --direction modifier to animations
    • Add --non-volatile to control persistence of settings (NVIDIA GPUs)
    • Add --start-led, --maximum-leds and --temperature-sensor options (Corsair Commander/Lighting Node devices)
    • Add support for CSS-style hexadecimal triples
    • Implement the context manager protocol in the driver API
    • Export find_liquidctl_devices from the top-level liquidctl package
    • Add modules-load configuration file for Linux
    • Add completion script for bash
    • [extra] Add LQiNFO.py exporter (liquidctl -> HWiNFO)
    • [extra] Add prometheus-liquidctl-exporter exporter (liquidctl -> Prometheus)

    Changed:

    • Move GitHub project into liquidctl organization
    • Improve error handling and reporting
    • Make vendor and product IDs optional in drivers
    • Mark Kraken X53, X63, X73 as no longer experimental
    • Mark NZXT RGB & Fan Controller as no longer experimental
    • Mark RGB Fusion 2.0 controllers as no longer experimental
    • Change casing of "PRO" device names to "Pro"
    • Improve the documentation

    Fixed:

    • Fix potential exception when a release number is not available
    • Enforce USB port filters on HID devices
    • Fix backwards rainbow-pulse mode on Kraken X3 devices
    • Fix compatibility with hidapi 0.10 and multi-usage devices (RGB Fusion 2.0 controllers)
    • Fix lighting settings in Platinum SE and Pro XT coolers
    • Generate and verify the checksums of zip and exe built on AppVeyor

    Deprecated:

    • Deprecate backwards- pseudo modes; use --direction=backwards instead

    Checksums

    $ sha256sum liquidctl-1.5.0*
    370eb9c662111b51465ac5e2649f7eaf423bd22799ef983c4957468e9d957c15  liquidctl-1.5.0-bin-windows-x86_64.zip
    762561a8b491aa98f0ccbbab4f9770813a82cc7fd776fa4c21873b994d63e892  liquidctl-1.5.0.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.5.0-bin-windows-x86_64.zip(7.47 MB)
    liquidctl-1.5.0-bin-windows-x86_64.zip.asc(659 bytes)
    liquidctl-1.5.0.tar.gz(306.65 KB)
    liquidctl-1.5.0.tar.gz.asc(659 bytes)
  • v1.4.2(Nov 1, 2020)

    Released 1 November 2020.

    Added:

    • Add Modern690Lc.downgrade_to_legacy (unstable API)

    Changed:

    • Accept hexadecimal inputs regardless of a 0x prefix
    • Warn on faulty temperature readings from Kraken X3 coolers
    • Warn on Hydro Platinum/PRO XT firmware versions that are may be too old
    • Update PyInstaller used for the Windows executable
    • Update PyUSB version bundled with the Windows executable
    • Improve the documentation

    Fixed:

    • Fix data path on mac OS
    • Only set the sticky bit for data directories on Linux
    • Fix check of maximum number of colors in Hydro Platinum super-fixed mode
    • Fix HID writes to Corsair HXi/RMi power supplies on Windows
    • Ensure Hydro Platinum/PRO XT is in static LEDs hardware mode

    Checksums:

    $ sha256sum liquidctl-1.4.2*
    83517ccb06cfdda556bc585a6a45edfcb5a21e38dbe270454ac97639d463e96d  dist/liquidctl-1.4.2-bin-windows-x86_64.zip
    39da5f5bcae1cbd91e42e78fdb19f4f03b6c1a585addc0b268e0c468e76f1a3c  dist/liquidctl-1.4.2.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.4.2-bin-windows-x86_64.zip(7.43 MB)
    liquidctl-1.4.2-bin-windows-x86_64.zip.asc(659 bytes)
    liquidctl-1.4.2.tar.gz(155.76 KB)
    liquidctl-1.4.2.tar.gz.asc(659 bytes)
  • v1.4.1(Aug 7, 2020)

    Released 7 August 2020.

    Changed:

    • Improve the documentation
    • Improve the test suite

    Fixed:

    • Don't use report IDs when writing to NZXT E-series PSUs (#166)
    • Recognize and raise Hidapi write errors
    • Use a mocked device to test backwards compatibility with liquidctl 1.1.0

    Checksums:

    $ sha256sum liquidctl-1.4.1*
    895e55fd70e1fdfe3b2941d9139b91ffc4e902a469b077e810c35979dbe1cfdf  liquidctl-1.4.1-bin-windows-x86_64.zip
    59a3bc65b3f3e71a5714224401fe6e95dfdee591a1d6f4392bc4e6d6ad72ff8d  liquidctl-1.4.1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.4.1-bin-windows-x86_64.zip(7.45 MB)
    liquidctl-1.4.1.tar.gz(145.61 KB)
  • v1.4.0(Jul 31, 2020)

    Released 31 July 2020.

    Added:

    • Add experimental support for NZXT Kraken X53, X63 and X73 coolers
    • Add experimental partial support for NZXT Kraken Z63 and Z73 coolers
    • Add experimental support for Corsair H100i, H100i SE and H115i Platinum coolers
    • Add experimental partial support for Corsair H100i and H115i PRO XT coolers
    • Add experimental support for Gigabyte motherboards with RGB Fusion 2.0 5702 and 8297 controllers
    • Enable experimental support for the NZXT RGB & Fan Controller
    • Add support for HSV, HSL and explicit RGB color representations
    • Add sync lighting channel to HUE 2 devices
    • Add tentative names for the different +12 V rails of NZXT E-series PSUs
    • Add +uaccess udev rules for Linux distributions and users
    • Add --pump-mode option to initialize (Corsair Platinum/PRO XT coolers)
    • Add --unsafe option to enable additional bleeding-edge features
    • Add a test suite
    • [extra] Add more general yoda script for software-based fan/pump control (supersedes krakencurve-poc)

    Changed:

    • Increase resolution of fan and pump profiles in Kraken X42/X52/X62/X72 coolers
    • Use hidapi to communicate with HIDs on Windows
    • Use specific errors when features are not supported by the device or the driver
    • Store runtime data on non-Linux systems in ~/Library/Caches (macOS), %TEMP% (Windows) or /tmp (Unix)
    • Mark Corsair HXi/RMi PSUs as no longer experimental
    • Mark Smart Device V2 and HUE 2 controllers as no longer experimental
    • Switch to a consistent module, driver and guide naming scheme (aliases are kept for backwards compatibility)
    • Improve the documentation
    • [extra] Refresh krakencurve-poc syntax and sensor names, and get CPU temperature on macOS with iStats

    Fixed:

    • Add missing identifiers for some HUE2 accessories (#95; #109)
    • Fix CAM-like decoding of firmware version in NZXT E-series PSUs (#46, comment)
    • Use a bitmask to select the lighting channel in HUE 2 devices (#109)
    • Close the underlying cython-hidapi device
    • Don't allow HidapiDevice.clear_enqueued_reports to block
    • Don't allow HidapiDevice.address to fail with non-Unicode paths
    • Store each runtime data value atomically

    Deprecated:

    • Deprecate and ignore --hid override for API selection

    Removed:

    • Remove the PyUsbHid device backend for HIDs

    Checksums:

    $ sha256sum liquidctl-1.4.0*
    250b7665b19b0c5d9ae172cb162bc920734eba720f3e337eb84409077c582966  liquidctl-1.4.0-bin-windows-x86_64.zip
    b35e6f297e67f9e145794bb57b88c626ef2bfd97e7fbb5b098f3dbf9ae11213e  liquidctl-1.4.0.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.4.0-bin-windows-x86_64.zip(7.45 MB)
    liquidctl-1.4.0.tar.gz(132.97 KB)
  • v1.3.3(Feb 18, 2020)

    Released 18 February 2020.

    • Add missing identifiers for HUE+ accessories used in HUE 2 channels
    • Forward hid option from UsbHidDriver.find_supported_devices
    • Prevent reporting stale data during long lived connections to HIDs (#87)

    Check the complete CHANGELOG.md.


    Checksums:

    $ sha256sum liquidctl-1.3.3*
    1422a892f9c2c69f5949cd831083c6fef8f6a1f6e3215e90b696bfcd557924b4  liquidctl-1.3.3-bin-windows-x86_64.zip
    d13180867e07420c5890fe1110e8f45fe343794549a9ed7d5e8e76663bc10c24  liquidctl-1.3.3.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.3.3-bin-windows-x86_64.zip(6.47 MB)
    liquidctl-1.3.3.tar.gz(62.21 KB)
  • v1.3.2(Dec 11, 2019)

  • v1.3.1(Nov 23, 2019)

    Released 23 November 2019.

    • Fix parsing of --verbose in commands other than list
    • List included dependencies and versions in Windows' bundle
    • Improve the documentation

    Check the complete CHANGELOG.md.


    Checksums:

    $ sha256sum liquidctl-1.3.1*
    de272dad305dc6651265640a280bedb21bc680a62117e625004c6aad2104da63  liquidctl-1.3.1-bin-windows-x86_64.zip
    6092a6fae477908c80adc825b290e39f0b26e604593884da23d40e892e553309  liquidctl-1.3.1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.3.1-bin-windows-x86_64.zip(6.47 MB)
    liquidctl-1.3.1.tar.gz(61.49 KB)
  • v1.3.0(Nov 17, 2019)

    Released 17 November 2019.

    • Add experimental support for more devices:
      • Corsair HX750i, HX850i, HX1000i and HX1200i power supplies
      • Corsair RM650i, RM750i, RM850i and RM1000i power supplies
      • NZXT E500, E650 and E850 power supplies
      • NZXT HUE 2, HUE 2 Ambient and Smart Device V2
    • Add --match <substring> to allow filtering devices by description.
    • Add man page.
    • Reduce the number of libusb and hidapi calls during device discovery.
    • Ship patched PyUSB and libusb 1.0.22 in the Windows binary.
    • Drop dependency on appdirs.
    • Fixes and other improvements.

    Check the complete CHANGELOG.md.


    Checksums:

    $ sha256sum liquidctl-1.3.0*
    ff935fd3d57dead4d5218e02f834a825893bc6716f96fc9566a8e3989a7c19fe  liquidctl-1.3.0-bin-windows-x86_64.zip
    ce0483b0a7f9cf2618cb30bdf3ff4195e20d9df6c615f69afe127f54956e42ce  liquidctl-1.3.0.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.3.0-bin-windows-x86_64.zip(6.47 MB)
    liquidctl-1.3.0.tar.gz(61.33 KB)
  • v1.3.0rc1(Nov 3, 2019)

    Released 3 November 2019.

    Add experimental support for more devices:

    • Corsair HX750i, HX850i, HX1000i and HX1200i power supplies
    • Corsair RM650i, RM750i, RM850i and RM1000i power supplies
    • NZXT E500, E650 and E850 power supplies
    • NZXT Smart Device V2

    Add man page.

    Reduce the number of libusb and hidapi calls during device discovery.

    Fixes and other improvements; check the CHANGELOG.md for more information.


    Checksums:

    $ sha256sum liquidctl-1.3.0rc1*
    7a16a511baf5090c34cd3dfc5c21068a298515f31315be63e9b991ea17654671  liquidctl-1.3.0rc1-bin-windows-x86_64.zip
    1ef517ba33e366167f9a225c6a6afcc4899d01cbd7853bd5852ac15ae81d5005  liquidctl-1.3.0rc1-py3-none-any.whl
    15583d6ebecad722e1562164cef7097a358d6a57aa33a1a5e25741690548dbfa  liquidctl-1.3.0rc1.tar.gz
    
    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.3.0rc1-bin-windows-x86_64.zip(6.46 MB)
    liquidctl-1.3.0rc1-py3-none-any.whl(95.20 KB)
    liquidctl-1.3.0rc1.tar.gz(57.58 KB)
  • v1.2.0(Sep 27, 2019)

    Released 27 September 2019.

    Add support for many Asetek 690LC incarnations:

    • EVGA CLC 120 (CL12), 240, 280 and 360
    • NZXT Kraken X31, X40/X41 and X60/X61 (experimental)
    • Corsair H80i GTX/v2, H100i GTX/v2, H110i GTX and H115i (experimental)

    Improve support for HIDs with HIDAPI.

    Improve support for Mac OS by automatically using HIDAPI for HIDs.

    Fixes and other improvements; check the CHANGELOG.md for more information.

    Source code(tar.gz)
    Source code(zip)
    liquidctl-1.2.0-bin-windows-x86_64.zip(6.44 MB)
    liquidctl-1.2.0-py3-none-any.whl(44.09 KB)
  • v1.2.0rc4(Sep 18, 2019)

  • v1.2.0rc3(Sep 15, 2019)

  • v1.2.0rc2(Sep 12, 2019)

  • v1.2.0rc1(Apr 14, 2019)

  • v1.1.0(Dec 15, 2018)

  • v1.0.0(Dec 15, 2018)

Owner
null
Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems.

Baselining, on steroids! Baseline is a cross-platform library and command-line utility that creates file-oriented baselines of your systems. The proje

Nelson 4 Dec 9, 2022
xonsh is a Python-powered, cross-platform, Unix-gazing shell

xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt.

xonsh 6.7k Dec 31, 2022
The project help you to quickly build layouts in terminal,cross-platform

The project help you to quickly build layouts in terminal,cross-platform

gojuukaze 133 Nov 30, 2022
TUIFIManager - A cross-platform terminal-based file manager

TUIFI Manager A cross-platform terminal-based file manager (and component), mean

null 142 Dec 26, 2022
🖥️ A cross-platform modern shell.

Ergonomica WARNING: master on this repository is not the same as a stable release! Currently, this software is purely experimental, as I am cleaning i

null 813 Dec 27, 2022
Synchronization tool for external devices which does not support time stamps, e.g. over MTP.

MTP-Sync Tool to synchronize data to a slow device, e.g. a smartphone which is connected over MTP. A state file (.mtp_sync_state.json) is created in t

null 2 Jul 22, 2022
Command line tool to keep track of your favorite playlists on YouTube and many other places.

Command line tool to keep track of your favorite playlists on YouTube and many other places.

Wolfgang Popp 144 Jan 5, 2023
Ralph is a command-line tool to fetch, extract, convert and push your tracking logs from various storage backends to your LRS or any other compatible storage or database backend.

Ralph is a command-line tool to fetch, extract, convert and push your tracking logs (aka learning events) from various storage backends to your

France Université Numérique 18 Jan 5, 2023
A simple CLI tool for converting logs from Poker Now games to other formats

?? Poker Now Log Converter ?? A command line utility for converting logs from Poker Now games to other formats. Introduction Poker Now is a free onlin

null 6 Dec 23, 2022
Shellmon is a tool used to create and control a webshell remotely, created using the Python3

An Simple PHP Webshell Manager Description Shellmon is a tool used to create and control a webshell remotely, created using the Python3 programming la

22XploiterCrew 12 Dec 30, 2022
Key-control - A tool for add keys to your Termux app

Key-Control Is a tool for add keys to your Termux app. Cara Penginstalan $ pkg u

Beereva.id 1 Feb 14, 2022
A set of libraries and functions for simplifying automating Cisco devices through SecureCRT.

This is a set of libraries for automating Cisco devices (and to a lesser extent, bash prompts) over ssh/telnet in SecureCRT.

Matthew Spangler 7 Mar 30, 2022
Tool for HackMyVM platform

HMV-cli It is a tool for the HackMyVM platform. With this tool you will be able to see the machines you have pending, filter by difficulty, download d

bitc0de 11 Sep 19, 2022
Random scripts and other bits for interacting with the SpaceX Starlink user terminal hardware

starlink-grpc-tools This repository has a handful of tools for interacting with the gRPC service implemented on the Starlink user terminal (AKA "the d

null 270 Dec 29, 2022
Enriches Click with option groups, constraints, command aliases, help sections for subcommands, themes for --help and other stuff.

Enriches Click with option groups, constraints, command aliases, help sections for subcommands, themes for --help and other stuff.

Gianluca Gippetto 62 Dec 22, 2022
AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

AWS Interactive CLI - Allows you to execute a complex AWS commands by chaining one or more other AWS CLI dependency

Rafael Torres 2 Dec 10, 2021
Tiny command-line utility for mapping broken keys to other positions.

brokenkey Tiny command-line utility for mapping broken keys to other positions. Installation Clone this repository using git: git clone https://github

null 0 Oct 4, 2021
TermPair lets developers securely share and control terminals in real time🔒

View and control terminals from your browser with end-to-end encryption ??

Chad Smith 1.5k Jan 5, 2023
AlienFX is a CLI and GUI utility to control the lighting effects of your Alienware computer.

AlienFX is a Linux utility to control the lighting effects of your Alienware computer. At present there is a CLI version (alienfx) and a gtk GUI versi

Stephen Harris 218 Dec 26, 2022