Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

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

Open
Luisj5231 opened this issue Dec 27, 2022 · 8 comments
Open
Labels
new device Support for a new device

Comments

@Luisj5231
Copy link

Luisj5231 commented Dec 27, 2022

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

@Luisj5231 Luisj5231 added the new device Support for a new device label Dec 27, 2022
@jonasmalacofilho
Copy link
Member

Sorry for the long response time.


Odd, the protocol appears to have some similarity with the HUE2 and RGB & Fan Controller, but clearly something is different in how LED colors are passed to the device.

Can you try capturing some traffic between CAM and the device?

(By the way, there usually isn't a lot of value in capturing the traffic between liquidctl and the device: we already have quite a bit of info available with --debug, and we can also just hack the sources and add more traces... or even use an interactive debugger).

@Luisj5231
Copy link
Author

Luisj5231 commented Jan 17, 2023

Hello Jonas.

Sure. just let me setup a Windows env in my machine and I will check it but, how could I do this? I'm not too skilled with Windows.

@jonasmalacofilho
Copy link
Member

You can still capture the traffic on the Linux host (using usbmon + Wireshark), as any USB device forwarded to the Windows VM will still go throw the host's USB stack.


P.S. The Wireshark part is arguably unnecessary, but I find the format a lot easier to work than what usbmon natively outputs.

@nemat-rakhmatov
Copy link

I've got the same NZXT case and attaching some traffic from CAM on virtualbox windows
usbmon-capture.zip

Please have a look and let me know if you need something else.
BTW, on the first install CAM didn't work, and after it updated RGB controller firmware it started working

@nemat-rakhmatov
Copy link

@jonasmalacofilho
Hi.
No time to look into this issue? Maybe you can give me some clue to try to fix this myself?

@jonasmalacofilho
Copy link
Member

@nemat-rakhmatov,

No time to look into this issue?

Yeah... (and also #569).

Maybe you can give me some clue to try to fix this myself?

Thanks!

My strategy would be to start by comparing what our driver does and what we see in the captures from CAM, for a few specific (but arbitrarily chosen) cases of modes & colors.

@PauloMPereira
Copy link

Hello,

Any news about this topic?
I'm also have the same issue :/

@Mindgamesnl
Copy link

I started working on a small implementation while trying to reverse engineer some other stuff, currently have barebones rgb working in the h5 elite (https://github.com/Mindgamesnl/nzxt-linux-driver). I'll contribute here once I have most stuff implemented and figured out.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
new device Support for a new device
Projects
None yet
Development

No branches or pull requests

5 participants