[PATCH] hwmon: (asus_rog_ryujin) Add ROG Ryujin III 360
From: Zac Lanzon
Date: Wed Sep 02 2026 - 20:41:23 EST
Add the USB product ID of the base ASUS ROG RYUJIN III 360 (0b05:1aa2,
USB product string "ROG RYUJIN III"). It uses the same status report
layout and cooler duty channel as the RYUJIN III EXTREME, EVA and
WHITE editions, so it can share rog_ryujin_iii_info.
Tested on a ROG RYUJIN III 360: coolant temperature, pump speed and
internal fan speed report plausible values that track load, and the
internal fan follows pwm2 (30% -> 870 RPM, 40% -> 1590 RPM).
Assisted-by: Claude:claude-fable-5-1
Signed-off-by: Zac Lanzon <lanzonza@xxxxxxxxx>
---
One firmware behavior observed while testing duty writes on this unit,
kept out of the commit message since it is not about the ID itself.
The first duty write, a pwm2 write that re-sends the current 40% pump
duty alongside the new fan duty, takes the cooler out of automatic
mode and the pump runs at maximum while still reporting 40%. Writing
40% back does not apply; only a different pwm1 value does. liquidctl
behaves the same with the hwmon driver unloaded, so this is firmware
behavior. Only a reboot returns the cooler to automatic mode.
Measured with liquidctl 1.16 (pump-fan is pwm2, pump is pwm1):
automatic mode pump 40% / 1710 RPM fan 30% / 870 RPM
set pump-fan 40 pump 40% / 3690 RPM fan 40% / 1590 RPM
set pump-fan 30 pump 40% / 3660 RPM fan 30% / 870 RPM
set pump 60 pump 60% / 2400 RPM
set pump 40 pump 40% / 1740 RPM
set pump-fan 40, 30 pump stays 1740 RPM fan follows
So the firmware applies a pump duty only when the stored value changes,
and leaving automatic mode does not apply the stored one. Does the
EXTREME or EVA do the same? If so, the driver's read-then-rewrite of
the pump duty on a pwm2 write may deserve a documentation note.
Documentation/hwmon/asus_rog_ryujin.rst | 1 +
drivers/hwmon/asus_rog_ryujin.c | 3 +++
2 files changed, 4 insertions(+)
diff --git a/Documentation/hwmon/asus_rog_ryujin.rst b/Documentation/hwmon/asus_rog_ryujin.rst
index b0d7ce8dd..3ebab230e 100644
--- a/Documentation/hwmon/asus_rog_ryujin.rst
+++ b/Documentation/hwmon/asus_rog_ryujin.rst
@@ -6,6 +6,7 @@ Kernel driver asus_rog_ryujin
Supported devices:
* ASUS ROG RYUJIN II 360
+* ASUS ROG RYUJIN III 360
* ASUS ROG RYUJIN III EXTREME
* ASUS ROG RYUJIN III EVA EDITION
* ASUS ROG RYUJIN III WHITE EDITION
diff --git a/drivers/hwmon/asus_rog_ryujin.c b/drivers/hwmon/asus_rog_ryujin.c
index 702edb831..4b9859351 100644
--- a/drivers/hwmon/asus_rog_ryujin.c
+++ b/drivers/hwmon/asus_rog_ryujin.c
@@ -20,6 +20,7 @@
#define USB_PRODUCT_ID_RYUJIN_III_EXTREME 0x1bcb
#define USB_PRODUCT_ID_RYUJIN_III_EVA 0x1ade
#define USB_PRODUCT_ID_RYUJIN_III_WHITE 0x1ada
+#define USB_PRODUCT_ID_RYUJIN_III 0x1aa2
struct rog_ryujin_device_info {
u8 temp_offset;
@@ -593,6 +594,8 @@ static const struct hid_device_id rog_ryujin_table[] = {
.driver_data = (kernel_ulong_t)&rog_ryujin_iii_info },
{ HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_III_WHITE),
.driver_data = (kernel_ulong_t)&rog_ryujin_iii_info },
+ { HID_USB_DEVICE(USB_VENDOR_ID_ASUS_ROG, USB_PRODUCT_ID_RYUJIN_III),
+ .driver_data = (kernel_ulong_t)&rog_ryujin_iii_info },
{ }
};
--
2.53.0