Skip to content

Support for Corsair iCUE H100i RGB ELITE#557

Merged
jonasmalacofilho merged 8 commits intoliquidctl:mainfrom
st1vms:icue-rgb-elite
Jan 14, 2023
Merged

Support for Corsair iCUE H100i RGB ELITE#557
jonasmalacofilho merged 8 commits intoliquidctl:mainfrom
st1vms:icue-rgb-elite

Conversation

@st1vms
Copy link
Contributor

@st1vms st1vms commented Jan 13, 2023

Describe what the changes are meant to address.

If the implementation is not trivial, please also include a short overview.

Fixes:
Closes:
Related:


Checklist:

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 e) and git MRLV

New driver?

  • Document the protocol in docs/developer/protocol/

@st1vms
Copy link
Contributor Author

st1vms commented Jan 13, 2023

Would really like some help filling the checklist...

Copy link
Member

@jonasmalacofilho jonasmalacofilho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Besides the comments on the diff, I'm worried that you might not have fully tested the code you're proposing.

Your code seems to only register the new VID:PID with (what's essentially) the existing HydroPlatinum driver, but this was already attempted before, on a model that we reasonably assume uses the same protocol as your device (H150i ELITE RGB). And, according to #498 (comment), LED control does not seem to work well that way.

Can you also take a look into that?


Another possibility is that you accidentally only committed or pushed part of your changes. This might also explain why you felt it was necessary to duplicate the entire module, while so far the only functional difference between then is registering a new VID:PID pair.

@jonasmalacofilho jonasmalacofilho changed the title iCue RGB ELITE (Only H100i) | No docs | hydro_platinum adaptation Support for Corsair iCUE H100i RGB ELITE Jan 13, 2023
@jonasmalacofilho jonasmalacofilho linked an issue Jan 13, 2023 that may be closed by this pull request
@st1vms
Copy link
Contributor Author

st1vms commented Jan 13, 2023

I probably overcoded this, it was actually much simpler, as adding the _MATCHES entry into the existing hydro_platinum driver. Along with the udev rule.

All of the funcionalities work properly, from fan duties (using temperature steps) to pump duty and led control.

@st1vms

This comment was marked as off-topic.

@jonasmalacofilho
Copy link
Member

jonasmalacofilho commented Jan 14, 2023

All of the funcionalities work properly, from fan duties (using temperature steps) to pump duty and led control.

That's good to hear!

But, just to double check (given the problem we saw in the past, that I mentioned above), can you please run

$ liquidctl -m h100i set led color fixed ff0000 --debug

and report what happens (visually), as well as post the complete output from the command (including all debug info)?

@st1vms
Copy link
Contributor Author

st1vms commented Jan 14, 2023

~$ liquidctl -m h100i set led color fixed ff0000 --debug

[DEBUG] (cli) (_log_env_infos): script: /home/st1v/.local/bin/liquidctl
[DEBUG] (cli) (_log_env_infos): version: 1.13.0.dev10+gae478d5.d20230114
[DEBUG] (cli) (_log_env_infos): platform: Linux-5.15.0-58-generic-x86_64-with-glibc2.35
[DEBUG] (cli) (_log_env_infos): python: 3.10.6 (main, Nov 14 2022, 16:10:14) [GCC 11.3.0]
[DEBUG] (cli) (_log_env_infos): encoding: UTF-8 default, UTF-8 preferred, utf8_mode 0
[DEBUG] (cli) (_log_env_infos): with colorlog: 6.7.0
[DEBUG] (cli) (_log_env_infos): with crcmod: 1.7
[DEBUG] (cli) (_log_env_infos): with docopt: 0.6.2
[DEBUG] (cli) (_log_env_infos): with hidapi: 0.13.1
[DEBUG] (cli) (_log_env_infos): with pyusb: 1.2.1
[DEBUG] (cli) (_log_env_infos): with pillow: 9.4.0
[DEBUG] (cli) (_log_env_infos): with smbus: 1.1.post2
[DEBUG] (cli) (_log_env_infos): with winusbcdc: version n/a (No package metadata was found for winusbcdc)
[DEBUG] (cli) (_log_env_infos): with 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: i2c-1
[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-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: i2c-5
[DEBUG] (smbus) (find_devices): I²C adapter: i2c-12
[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: 1b1c:0c35 (usage_page=0xff00 usage=0x0001)
[DEBUG] (hydro_platinum) (probe): HydroPlatinum identified: Corsair iCue H100i RGB ELITE
[DEBUG] (usb) (find_devices): HID device: 0b05:19af (usage_page=0xff72 usage=0x00a1)
[DEBUG] (usb) (find_devices): HID device: 046d:c07d (usage_page=0x0001 usage=0x0002)
[DEBUG] (usb) (find_devices): HID device: 046d:c07d (usage_page=0x0001 usage=0x0001)
[DEBUG] (usb) (find_devices): HID device: 046d:c07d (usage_page=0x0001 usage=0x0006)
[DEBUG] (usb) (find_devices): HID device: 046d:c07d (usage_page=0x000c usage=0x0001)
[DEBUG] (usb) (find_devices): HID device: 046d:c07d (usage_page=0x0001 usage=0x0080)
[DEBUG] (usb) (find_devices): HID device: 046d:c07d (usage_page=0xff00 usage=0x0001)
[DEBUG] (usb) (find_devices): HID device: 046d:c07d (usage_page=0xff00 usage=0x0002)
[DEBUG] (usb) (find_devices): HID device: 1b1c:1b49 (usage_page=0x0001 usage=0x0006)
[DEBUG] (usb) (find_devices): HID device: 1b1c:1b49 (usage_page=0x000c usage=0x0001)
[DEBUG] (usb) (find_devices): HID device: 1b1c:1b49 (usage_page=0xffc0 usage=0x0002)
[DEBUG] (usb) (find_devices): HID device: 1b1c:1b49 (usage_page=0xffc2 usage=0x0003)
[DEBUG] (usb) (find_devices): HID device: 1b1c:1b49 (usage_page=0x0001 usage=0x0002)
[DEBUG] (usb) (find_devices): HID device: 1b1c:1b49 (usage_page=0x0001 usage=0x0001)
[DEBUG] (usb) (find_devices): HID device: 1b1c:1b49 (usage_page=0xffc2 usage=0x0004)
[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: 1b1c:1b49
[DEBUG] (usb) (find_devices): USB device: 046d:c07d
[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: 1d6b:0003
[DEBUG] (usb) (find_devices): USB device: 0b05:19af
[DEBUG] (usb) (find_devices): USB device: 1a40:0801
[DEBUG] (usb) (find_devices): USB device: 18a5:0302
[DEBUG] (usb) (find_devices): USB device: 1d6b:0002
[DEBUG] (usb) (find_devices): USB device: 1d6b:0003
[DEBUG] (usb) (find_devices): USB device: 1b1c:0c35
[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: Corsair iCue H100i RGB ELITE
[DEBUG] (keyval) (__init__): data in /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5
[DEBUG] (keyval) (load): no data (file) found for leds_enabled
[DEBUG] (keyval) (load_store): no data (file) found for sequence
[DEBUG] (keyval) (load_store): replaced with sequence=1 (stored in /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/sequence)
[DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
[DEBUG] (usb) (write): writing report 0x00 with 64 bytes: 3f:09:01:01:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:7f:7f:7f:7f:ff:00:ff:ff:ff:ff:00:ff:ff:ff:ff:00:ff:ff:ff:ff:00:ff:ff:ff:ff:00:ff:ff:ff:ff:00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:65
[DEBUG] (usb) (read): read 64 bytes: ff:48:12:07:00:09:00:b0:1d:14:00:64:e8:03:64:c4:02:00:64:e8:03:64:bb:02:00:8c:00:00:8c:d6:07:00:00:00:00:00:00:00:00:45:32:33:45:00:00:e4:cd:9d:00:05:2d:32:37:41:b6:1d:00:00:00:00:00:00:00:37
[DEBUG] (keyval) (load_store): loaded sequence=1 (from /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/sequence)
[DEBUG] (keyval) (load_store): replaced with sequence=2 (stored in /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/sequence)
[DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
[DEBUG] (usb) (write): writing report 0x00 with 64 bytes: 3f:12:00:01:02:03:04:05:06:07:08:09:0a:0b:0c:0d:0e:0f:10:11:12:13:14:15:16:17:18:19:1a:1b:1c:1d:1e:1f:20:21:22:23:24:25:26:27:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:22
[DEBUG] (usb) (read): read 64 bytes: ff:50:12:07:00:0a:00:b0:1d:14:00:64:e8:03:64:c4:02:00:64:e8:03:64:bb:02:00:8c:00:00:8c:d6:07:00:00:00:00:00:00:00:00:45:32:33:45:00:00:ed:cd:9d:00:05:2d:32:37:41:b6:1d:00:00:00:00:00:00:00:a7
[DEBUG] (keyval) (load_store): loaded sequence=2 (from /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/sequence)
[DEBUG] (keyval) (load_store): replaced with sequence=3 (stored in /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/sequence)
[DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
[DEBUG] (usb) (write): writing report 0x00 with 64 bytes: 3f:1b:28:29:2a:2b:2c:2d:2e:2f:30:31:32:33:34:35:36:37:38:39:3a:3b:3c:3d:3e:3f:40:41:42:43:44:45:46:47:48:49:4a:4b:4c:4d:4e:4f:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:8e
[DEBUG] (usb) (read): read 64 bytes: ff:58:12:07:00:0b:00:b0:1d:14:00:64:e8:03:64:c4:02:00:64:e8:03:64:bb:02:00:8c:00:00:8c:d6:07:00:00:00:00:00:00:00:00:45:32:33:45:00:00:f5:cd:9d:00:05:2d:32:37:41:b6:1d:00:00:00:00:00:00:00:f8
[DEBUG] (keyval) (store): stored leds_enabled=1 (in /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/leds_enabled)
[DEBUG] (keyval) (load_store): loaded sequence=3 (from /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/sequence)
[DEBUG] (keyval) (load_store): replaced with sequence=4 (stored in /run/user/1000/liquidctl/vid1b1c_pid0c35/loc5/sequence)
[DEBUG] (usb) (clear_enqueued_reports): discarded 0 previously enqueued reports
[DEBUG] (usb) (write): writing report 0x00 with 64 bytes: 3f:24:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:ff:00:00:00:00:00:00:00:00:00:00:00:00:00:63
[DEBUG] (usb) (read): read 64 bytes: ff:60:12:07:00:0c:00:b0:1d:14:00:64:e8:03:64:c4:02:00:64:e8:03:64:bb:02:00:8c:00:00:8c:d6:07:00:00:00:00:00:00:00:00:45:32:33:45:00:00:fd:cd:9d:00:05:2d:32:37:41:b6:1d:00:00:00:00:00:00:00:d4

Pump led successfully turned red.

@jonasmalacofilho
Copy link
Member

I'll complete the rest of the PR checklist and push directly to your branch (assuming you left that option enabled).

@jonasmalacofilho
Copy link
Member

I'll merge this as soon as CI completes (successfully).


@st1vms do you which other Elite RGB models exist, and their corresponding PIDs? We know of the H150i (0x0c37), but is there are there H115i, H60i or other SKUs from this same family?

@jonasmalacofilho jonasmalacofilho merged commit 3c22727 into liquidctl:main Jan 14, 2023
@st1vms st1vms deleted the icue-rgb-elite branch January 14, 2023 15:34
@st1vms
Copy link
Contributor Author

st1vms commented Jan 14, 2023

@jonasmalacofilho Not really, I'd rather stick with an automatic VID:PID lsusb -v wrapper, the actual challenge would be to parse the output and selecting the correct entry based on a pre-defined product table ( for all of the available supported devices ).

Afterall, some of the properties are retrievable just by crawling the product offical page, like number of fans, leds, and so on...

@jonasmalacofilho jonasmalacofilho added this to the liquidctl 1.13.0 milestone Jan 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support for Corsair iCUE H100i RGB ELITE

2 participants