-
Notifications
You must be signed in to change notification settings - Fork 18
corsair-hydro-platinum: Add hwmon driver for Corsair H150i Elite RGB and other Hydro AIOs #78
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
base: master
Are you sure you want to change the base?
Changes from all commits
0be2ccc
ea894c8
2056edf
99808a6
ce45c17
0afdc64
ce5cc6f
e1cabe3
5ce0308
032b57b
fa60875
a194878
1b28bd5
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,11 @@ | ||
| CONFIG_MODULES=y | ||
| CONFIG_INPUT=y | ||
| CONFIG_HID=y | ||
| CONFIG_CRC8=y | ||
| CONFIG_HID_SUPPORT=y | ||
| CONFIG_USB_SUPPORT=y | ||
| CONFIG_USB=y | ||
| CONFIG_USB_HID=y | ||
| CONFIG_HWMON=y | ||
| CONFIG_CRC8=y | ||
| CONFIG_WERROR=y |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,85 @@ | ||
| .. SPDX-License-Identifier: GPL-2.0+ | ||
|
|
||
| Kernel driver corsair-hydro-platinum | ||
| ==================================== | ||
|
|
||
| Supported devices: | ||
|
|
||
| * Corsair Hydro H100i Platinum | ||
| * Corsair Hydro H100i Platinum SE | ||
| * Corsair Hydro H115i Platinum | ||
| * Corsair Hydro H60i Pro XT | ||
| * Corsair Hydro H100i Pro XT | ||
| * Corsair Hydro H115i Pro XT | ||
| * Corsair Hydro H150i Pro XT | ||
| * Corsair iCUE H100i Elite RGB | ||
| * Corsair iCUE H115i Elite RGB | ||
| * Corsair iCUE H150i Elite RGB | ||
| * Corsair iCUE H100i Elite RGB (White) | ||
| * Corsair iCUE H150i Elite RGB (White) | ||
|
|
||
| Author: Jack Greiner <jack@emoss.org> | ||
|
|
||
| Description | ||
| ----------- | ||
|
|
||
| This driver enables hardware monitoring support for Corsair Hydro Platinum, | ||
| Pro XT and Elite RGB all-in-one CPU liquid coolers. | ||
|
|
||
| The driver exposes the following sensor readings: | ||
| * Liquid temperature | ||
| * Pump speed | ||
| * Fan speeds (up to 3 fans, depending on model) | ||
|
|
||
| The driver exposes the following controls: | ||
| * Pump mode (Quiet, Balanced, Extreme) | ||
| * Fan duty cycle (0-100%) | ||
|
|
||
| The RGB LEDs are not supported in this driver, but can be controlled through | ||
| existing userspace tools, such as `liquidctl`_ or `OpenRGB`_. | ||
|
|
||
| .. _liquidctl: https://github.com/liquidctl/liquidctl | ||
| .. _OpenRGB: https://gitlab.com/CalcProgrammer1/OpenRGB | ||
|
|
||
| Usage Notes | ||
| ----------- | ||
|
|
||
| Pump Control | ||
| ~~~~~~~~~~~~ | ||
| The pump does not support precise PWM duty cycle control. Instead, it supports | ||
| three distinct modes: Quiet, Balanced, and Extreme. The driver maps standard | ||
| PWM values (0-255) to these modes as follows: | ||
|
|
||
| * 0 - 84: Quiet Mode | ||
| * 85 - 169: Balanced Mode | ||
| * 170 - 255: Extreme Mode | ||
|
Comment on lines
+53
to
+55
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Interesting workaround. I'm not sure if Guenter will approve, but IMO it's worth a try.
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
I may be able to find something a bit more elegant, as this always seemed a bit hacky to me (That said it does seem to work provided you understand that we are only providing 3 speeds 😅 ) Do you know of any other hwmon drivers that might have the same limitations? Maybe I can take some inspiration there |
||
|
|
||
| Fan Control | ||
| ~~~~~~~~~~~ | ||
| Fans support standard PWM duty cycle control (0-255). | ||
|
|
||
| Sysfs entries | ||
| ------------- | ||
|
|
||
| ============================== =========================================== | ||
| fan1_input Pump speed (in rpm) | ||
| fan1_label "Pump" | ||
| pwm1 Pump mode control (0-255, see above) | ||
| fan2_input Fan 1 speed (in rpm) | ||
| fan2_label "Fan 1" | ||
| pwm2 Fan 1 duty cycle (0-255) | ||
| fan3_input Fan 2 speed (in rpm) | ||
| fan3_label "Fan 2" | ||
| pwm3 Fan 2 duty cycle (0-255) | ||
| fan4_input Fan 3 speed (in rpm) (If supported) | ||
| fan4_label "Fan 3" | ||
| pwm4 Fan 3 duty cycle (0-255) (If supported) | ||
| temp1_input Coolant temperature (millidegrees C) | ||
| temp1_label "Coolant temp" | ||
| ============================== =========================================== | ||
|
|
||
| Debugfs entries | ||
| --------------- | ||
|
|
||
| The driver exposes the firmware version via debugfs: | ||
| `/sys/kernel/debug/corsair_hydro_platinum-<device>/firmware_version` | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -25,6 +25,7 @@ This is the current state of the drivers in regards to this process: | |
| | NZXT Kraken X42/X52/X62/X72 | `nzxt-kraken2` | `kraken2` | in Linux 5.13 ([patch][p-kraken2-v2]) | | ||
| | NZXT Kraken X53/X63/X73, Z53/Z63/Z73, Kraken 2023 (standard, Elite) | `nzxt-kraken3` | `kraken3` | in Linux 6.9 ([patch][p-kraken3]), Kraken 2023 - in Linux 6.10 ([patch][p-kraken2023]) | | ||
| | NZXT Smart Device V2/RGB & Fan Controller | `nzxt-smart2` | `nzxtsmart2` | in Linux 5.17 ([patch][p-smart2]) | | ||
| | Corsair Hydro H100i/H115i Platinum/SE, H60i/H100i/H115i/H150i Pro XT, iCUE H100i/H115i/H150i Elite RGB | `corsair-hydro-platinum` | `corsair_hydro_platinum` | | | ||
|
|
||
| This repository contains the latest state of each driver, including features | ||
| and bug fixes that are not yet submitted upstream. | ||
|
|
@@ -43,6 +44,7 @@ $ sudo modprobe nzxt-grid3 # NZXT Grid+ V3/Smart Device (V1) | |
| $ sudo modprobe nzxt-kraken2 # NZXT Kraken X42/X52/X62/X72 | ||
| $ sudo modprobe nzxt-kraken3 # NZXT Kraken X53/X63/X73, Z53/Z63/Z73, Kraken 2023 (standard, Elite) | ||
| $ sudo modprobe nzxt-smart2 # NZXT Smart Device V2/RGB & Fan Controller | ||
| $ sudo modprobe corsair-hydro-platinum # Corsair Hydro H100i/H115i Platinum/SE, Pro XT, Elite RGB | ||
| ``` | ||
|
|
||
| Those on other distros can install DKMS files using `dkms_install` `Makefile` | ||
|
|
@@ -74,6 +76,7 @@ $ sudo insmod drivers/hwmon/nzxt-grid3.ko # NZXT Grid+ V3/Smart Device ( | |
| $ sudo insmod drivers/hwmon/nzxt-kraken2.ko # NZXT Kraken X42/X52/X62/X72 | ||
| $ sudo insmod drivers/hwmon/nzxt-kraken3.ko # NZXT Kraken X53/X63/X73, Z53/Z63/Z73, Kraken 2023 (standard, Elite) | ||
| $ sudo insmod drivers/hwmon/nzxt-smart2.ko # NZXT Smart Device V2/RGB & Fan Controller | ||
| $ sudo insmod drivers/hwmon/corsair-hydro-platinum.ko # Corsair Hydro H100i/H115i Platinum/SE, Pro XT, Elite RGB | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe adjust the previous lines to keep at least 2 paces before the
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Makes sense, can mirror the spacing of the NXZT drivers to make this look a bit better. |
||
| ``` | ||
|
|
||
| To unload them, use `rmmod` or `modprobe -r`. | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1 +1 @@ | ||
| obj-m := nzxt-kraken2.o nzxt-grid3.o nzxt-kraken3.o nzxt-smart2.o | ||
| obj-m := nzxt-kraken2.o nzxt-grid3.o nzxt-kraken3.o nzxt-smart2.o corsair-hydro-platinum.o |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
But won't they trample over the kernel's sequence number and possibly cause issues?
What did you observe in your testing?
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After running this for a few weeks, sending commands at the same time will occasionally cause failures on the kernel side.
Since we have a CRC check there aren't any invalid successes reported so there isn't anything uncaught happening.
It may be that this needs to be handled in a different way to avoid this kind of problem.. not quite sure how best to approach that (is there some kind of interface I can expose for RGB software to talk to?)