Commit 42ac68e3 authored by Aleksa Savic's avatar Aleksa Savic Committed by Guenter Roeck
Browse files

hwmon: Add driver for Gigabyte AORUS Waterforce AIO coolers

This driver exposes hardware sensors of the Gigabyte AORUS Waterforce
all-in-one CPU liquid coolers, which communicate through a proprietary
USB HID protocol. Report offsets were initially discovered in [1] and
confirmed by me on a Waterforce X240 by observing the sent reports from
the official software.

Available sensors are pump and fan speed in RPM, as well as coolant
temperature. Also available through debugfs is the firmware version.

Attaching a fan is optional and allows it to be controlled from the
device. If it's not connected, the fan-related sensors will report
zeroes.

The addressable RGB LEDs and LCD screen are not supported in this
driver and should be controlled through userspace tools.

[1]: https://github.com/liquidctl/liquidctl/issues/167



Signed-off-by: default avatarAleksa Savic <savicaleksa83@gmail.com>
Link: https://lore.kernel.org/r/20231207122402.107032-1-savicaleksa83@gmail.com


Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
parent 7ae587eb
Loading
Loading
Loading
Loading
+47 −0
Original line number Diff line number Diff line
.. SPDX-License-Identifier: GPL-2.0-or-later

Kernel driver gigabyte_waterforce
=================================

Supported devices:

* Gigabyte AORUS WATERFORCE X240
* Gigabyte AORUS WATERFORCE X280
* Gigabyte AORUS WATERFORCE X360

Author: Aleksa Savic

Description
-----------

This driver enables hardware monitoring support for the listed Gigabyte Waterforce
all-in-one CPU liquid coolers. Available sensors are pump and fan speed in RPM, as
well as coolant temperature. Also available through debugfs is the firmware version.

Attaching a fan is optional and allows it to be controlled from the device. If
it's not connected, the fan-related sensors will report zeroes.

The addressable RGB LEDs and LCD screen are not supported in this driver and should
be controlled through userspace tools.

Usage notes
-----------

As these are USB HIDs, the driver can be loaded automatically by the kernel and
supports hot swapping.

Sysfs entries
-------------

=========== =============================================
fan1_input  Fan speed (in rpm)
fan2_input  Pump speed (in rpm)
temp1_input Coolant temperature (in millidegrees Celsius)
=========== =============================================

Debugfs entries
---------------

================ =======================
firmware_version Device firmware version
================ =======================
+1 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ Hardware Monitoring Kernel Drivers
   ftsteutates
   g760a
   g762
   gigabyte_waterforce
   gsc-hwmon
   gl518sm
   gxp-fan-ctrl
+7 −0
Original line number Diff line number Diff line
@@ -8916,6 +8916,13 @@ F: Documentation/filesystems/gfs2*
F:	fs/gfs2/
F:	include/uapi/linux/gfs2_ondisk.h
GIGABYTE WATERFORCE SENSOR DRIVER
M:	Aleksa Savic <savicaleksa83@gmail.com>
L:	linux-hwmon@vger.kernel.org
S:	Maintained
F:	Documentation/hwmon/gigabyte_waterforce.rst
F:	drivers/hwmon/gigabyte_waterforce.c
GIGABYTE WMI DRIVER
M:	Thomas Weißschuh <thomas@weissschuh.net>
L:	platform-driver-x86@vger.kernel.org
+10 −0
Original line number Diff line number Diff line
@@ -664,6 +664,16 @@ config SENSORS_FTSTEUTATES
	  This driver can also be built as a module. If so, the module
	  will be called ftsteutates.

config SENSORS_GIGABYTE_WATERFORCE
	tristate "Gigabyte Waterforce X240/X280/X360 AIO CPU coolers"
	depends on USB_HID
	help
	  If you say yes here you get support for hardware monitoring for the
	  Gigabyte Waterforce X240/X280/X360 all-in-one CPU liquid coolers.

	  This driver can also be built as a module. If so, the module
	  will be called gigabyte_waterforce.

config SENSORS_GL518SM
	tristate "Genesys Logic GL518SM"
	depends on I2C
+1 −0
Original line number Diff line number Diff line
@@ -80,6 +80,7 @@ obj-$(CONFIG_SENSORS_FSCHMD) += fschmd.o
obj-$(CONFIG_SENSORS_FTSTEUTATES) += ftsteutates.o
obj-$(CONFIG_SENSORS_G760A)	+= g760a.o
obj-$(CONFIG_SENSORS_G762)	+= g762.o
obj-$(CONFIG_SENSORS_GIGABYTE_WATERFORCE) += gigabyte_waterforce.o
obj-$(CONFIG_SENSORS_GL518SM)	+= gl518sm.o
obj-$(CONFIG_SENSORS_GL520SM)	+= gl520sm.o
obj-$(CONFIG_SENSORS_GSC)	+= gsc-hwmon.o
Loading