Skip to content
Open
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
0be2ccc
hwmon: (corsair-hydro-platinum) Add driver for Corsair H150i Elite RGB
ProjectSynchro Jan 28, 2026
ea894c8
corsair-hydro-platinum: Cleanup unused includes
ProjectSynchro Jan 28, 2026
2056edf
corsair-hydro-platinum: Improve resiliance to userspace interference
ProjectSynchro Jan 28, 2026
99808a6
corsair-hydro-platinum: Improve logging of command write failures
ProjectSynchro Jan 28, 2026
ce45c17
corsair-hydro-platinum: Fix compiler warnings
ProjectSynchro Jan 28, 2026
0afdc64
corsair-hydro-platinum: Fix checkpatch linter errors
ProjectSynchro Jan 28, 2026
ce5cc6f
corsair-hydro-platinum: Add fallback implementation for when CONFIG_C…
ProjectSynchro Jan 28, 2026
e1cabe3
Vagrantfile: Add new USD ids (corsair-hydro-platinum)
ProjectSynchro Jan 28, 2026
5ce0308
corsair-hydro-platinum: Add firmware version to debugfs as "firmware_…
ProjectSynchro Jan 28, 2026
032b57b
corsair-hydro-platinum: Add hwmon documentation for driver
ProjectSynchro Jan 28, 2026
fa60875
README.md: Add corsair-hydro-platinum to README
ProjectSynchro Jan 28, 2026
a194878
Revert "corsair-hydro-platinum: Add fallback implementation for when …
ProjectSynchro Jan 29, 2026
1b28bd5
CI: Fix CRC8 build failure on mainline kernel
ProjectSynchro Jan 30, 2026
294d525
corsair-hydro-platinum: Remove tested/untested annotations from sourc…
ProjectSynchro Mar 25, 2026
c0f5ccf
corsair-hydro-platinum: Use 'typical' instead of 'standard' for HID d…
ProjectSynchro Mar 25, 2026
2632a0c
corsair-hydro-platinum: Remove ad-hoc command name from header comment
ProjectSynchro Mar 25, 2026
e18fe2d
corsair-hydro-platinum: Remove unnecessary null check for device info
ProjectSynchro Mar 25, 2026
f84408a
corsair-hydro-platinum: Remove redundant comment about waiting for in…
ProjectSynchro Mar 25, 2026
c4cfa24
corsair-hydro-platinum: Fail probe if device initialization fails
ProjectSynchro Mar 25, 2026
4624ea6
corsair-hydro-platinum: Add reset_resume handler for power management
ProjectSynchro Mar 25, 2026
1c62777
corsair-hydro-platinum: Add mutex_destroy to error and remove paths
ProjectSynchro Mar 25, 2026
722bac0
README.md: Improve spacing before inline comments in insmod examples
ProjectSynchro Mar 25, 2026
fe16fc3
corsair-hydro-platinum: Return -ENODATA when sensor data is stale
ProjectSynchro Mar 25, 2026
75b0dee
corsair-hydro-platinum: Increase STATUS_VALIDITY to 2000ms
ProjectSynchro Mar 25, 2026
439d0eb
corsair-hydro-platinum: Use late_initcall instead of module_hid_driver
ProjectSynchro Mar 25, 2026
858f5c6
corsair-hydro-platinum: Reduce probe logging verbosity
ProjectSynchro Mar 25, 2026
0dc1a49
corsair-hydro-platinum: Use hid_err/hid_warn consistently for logging
ProjectSynchro Mar 25, 2026
d5e9508
corsair-hydro-platinum: Filter responses by sequence number in raw_event
ProjectSynchro Mar 25, 2026
206bebe
corsair-hydro-platinum: Add retry loop and sequence validation to tra…
ProjectSynchro Mar 25, 2026
e12263b
corsair-hydro-platinum: Fix checkpatch style warning
ProjectSynchro Mar 25, 2026
f73327d
corsair-hydro-platinum: Fix rx_buffer data race between raw_event and…
ProjectSynchro Mar 25, 2026
657842e
corsair-hydro-platinum: Use mutex_lock_interruptible in update and wr…
ProjectSynchro Mar 25, 2026
c4d0afb
corsair-hydro-platinum: Replace priv->valid with jiffies initializati…
ProjectSynchro Mar 25, 2026
0451b8e
corsair-hydro-platinum: Extract cooling payload init and build Fan 3 …
ProjectSynchro Mar 25, 2026
7d31c93
corsair-hydro-platinum: Remove unnecessary comments and unused RESPON…
ProjectSynchro Mar 25, 2026
3df0f92
corsair-hydro-platinum: Document sequence number field
ProjectSynchro Mar 25, 2026
4de0670
corsair-hydro-platinum: Simplify report ID comment
ProjectSynchro Mar 25, 2026
addba43
corsair-hydro-platinum: Fix misleading CRC range comment
ProjectSynchro Mar 25, 2026
ea41fed
corsair-hydro-platinum: Remove redundant inline comments in send_command
ProjectSynchro Mar 25, 2026
1d9718f
corsair-hydro-platinum: Fix checkpatch alignment warning
ProjectSynchro Mar 25, 2026
b190847
corsair-hydro-platinum: Clarify raw_event comment about incoming data
ProjectSynchro Mar 25, 2026
98bccfa
corsair-hydro-platinum: Fix off-by-one in memcpy size for command pay…
ProjectSynchro Mar 25, 2026
fb9c8b6
corsair-hydro-platinum: Use loop with offset table for fan sensor par…
ProjectSynchro Mar 25, 2026
a733725
corsair-hydro-platinum: Remove unnecessary safety padding from buffer…
ProjectSynchro Mar 25, 2026
0e07e6a
corsair-hydro-platinum: Move TRANSACTION_RETRIES define to fix -Werro…
ProjectSynchro Mar 25, 2026
d81232f
corsair-hydro-platinum: Remove sequence number filtering and validation
ProjectSynchro Mar 25, 2026
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 thread
ProjectSynchro marked this conversation as resolved.

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 thread
ProjectSynchro marked this conversation as resolved.

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
Comment thread
ProjectSynchro marked this conversation as resolved.
Outdated
```

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