Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/all.config
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
1 change: 1 addition & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ jobs:
path: linux
ref: ${{ matrix.kernel_version }}
- run: cp src/.github/workflows/all.config linux/
- run: sed -i 's/tristate$/tristate "CRC8"/' linux/lib/crc/Kconfig linux/lib/Kconfig 2>/dev/null || true
- run: scripts/config --file all.config ${{ matrix.kconfig_pm }} ${{ matrix.kconfig_debug_fs }}
working-directory: linux
- run: KCONFIG_ALLCONFIG=1 KCFLAGS=-Werror make C=1 allnoconfig
Expand Down
85 changes: 85 additions & 0 deletions Documentation/hwmon/corsair-hydro-platinum.rst
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
Comment on lines +38 to +42
Copy link
Member

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?

Copy link
Contributor Author

@ProjectSynchro ProjectSynchro Feb 19, 2026

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?)


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
Copy link
Member

Choose a reason for hiding this comment

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

Copy link
Contributor Author

@ProjectSynchro ProjectSynchro Feb 19, 2026

Choose a reason for hiding this comment

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

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`
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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`
Expand Down Expand Up @@ -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
Copy link
Member

Choose a reason for hiding this comment

The 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 #, to make clearer what is command and what is comment.

Copy link
Contributor Author

Choose a reason for hiding this comment

The 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`.
Expand Down
13 changes: 13 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,19 @@ USB_IDS = [
{ :vendor => "0x1e71", :product => "0x2010" },
{ :vendor => "0x1e71", :product => "0x2011" },
{ :vendor => "0x1e71", :product => "0x2019" },
# corsair-hydro-platinum
{ :vendor => "0x1b1c", :product => "0x0c18" }, # H100i Platinum
{ :vendor => "0x1b1c", :product => "0x0c19" }, # H100i Platinum SE
{ :vendor => "0x1b1c", :product => "0x0c17" }, # H115i Platinum
{ :vendor => "0x1b1c", :product => "0x0c29" }, # H60i Pro XT
{ :vendor => "0x1b1c", :product => "0x0c20" }, # H100i Pro XT
{ :vendor => "0x1b1c", :product => "0x0c21" }, # H115i Pro XT
{ :vendor => "0x1b1c", :product => "0x0c22" }, # H150i Pro XT
{ :vendor => "0x1b1c", :product => "0x0c35" }, # H100i Elite RGB
{ :vendor => "0x1b1c", :product => "0x0c36" }, # H115i Elite RGB
{ :vendor => "0x1b1c", :product => "0x0c37" }, # H150i Elite RGB
{ :vendor => "0x1b1c", :product => "0x0c40" }, # H100i Elite RGB (White)
{ :vendor => "0x1b1c", :product => "0x0c41" }, # H150i Elite RGB (White)
]

Vagrant.configure("2") do |config|
Expand Down
2 changes: 1 addition & 1 deletion drivers/hwmon/Makefile
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
Loading
Loading