From: Zac Lanzon <lanzonza@gmail.com>
To: linux-hwmon@vger.kernel.org
Cc: Guenter Roeck <linux@roeck-us.net>,
Aleksa Savic <savicaleksa83@gmail.com>,
Edward Blair <edward.blair@gmail.com>,
Jonathan Corbet <corbet@lwn.net>,
Shuah Khan <skhan@linuxfoundation.org>,
Randy Dunlap <rdunlap@infradead.org>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
Zac Lanzon <lanzonza@gmail.com>
Subject: [PATCH 0/2] hwmon: (asus_rog_ryujin) Ryujin III pump control source
Date: Sun, 27 Sep 2026 08:09:25 -0400 [thread overview]
Message-ID: <20260927120927.72810-1-lanzonza@gmail.com> (raw)
The RYUJIN III pump either runs at the duty set over USB or is handed
to its internal controller, which follows the PWM of the motherboard
header its 4-pin cable is plugged into. Byte 2 of the set cooler duty
command selects which. The driver sends 1 there with every duty write,
so a pwm2 write takes the pump away from its internal controller, and
after power-on a pwm1 write of the reported 40% leaves the pump at full
speed. Patch 1 fixes both. Patch 2 adds pwm1_enable to switch between
the two and to report which one is in control.
Patch 1 fixes a user-visible bug and applies to v7.3-rc4 as well as to
hwmon-next. On v7.3-rc4 the driver does not bind the base RYUJIN III
360, whose ID is only in hwmon-next, so there patch 1 changes behavior
for the EXTREME, EVA and WHITE EDITION, none of which I could test.
Edward Blair's analysis of the WHITE EDITION firmware shows the same
pump control source. Patch 2 is a new feature for hwmon-next.
Tested on a RYUJIN III 360, firmware AURJ2-S750-0108, with out-of-tree
builds of drivers/hwmon/asus_rog_ryujin.c on 7.0.0-34-generic:
hwmon-next 9edd5ab2656 as is, with patch 1, and with both patches. The
pump cable is on AIO_PUMP (nct6799 pwm7, set by hand for the tests); it
was on CPU_FAN at the time of the first comments in the linked issue.
Pump rpm at header 50% / 80%, then the reported source:
before patch 1 patches 1-2
a on header, pwm2 = 40% 1710/1710 1 2100/3060 0 2145/3090 0
b on header, pwm1 = 40% 1725/1740 1 1740/1740 1 1740/1740 1
c pwm1 = 60%, then 40% 2460, 1740 2460, 1740 2475, 1740
d then pwm2 = 40% 1740/1740 1 1740/1740 1 1740/1740 1
e1 reload with the pump on USB 1740/1740 1 1740/1740 1 1740/1740 1
then pwm2, pwm1 = 40% 1740, 1740 1755, 1740 1740, 1755
e2 reload with the pump on header 2160/3090 0 2160/3090 0 2160/3105 0
then pwm2 = 40% 1740/1740 1 2130/3090 0 2130/3090 0
then pwm1 = 60% 2475 1 2460 1 2475 1
f pwm1_enable = 2 2130/3090 0
pwm1_enable = 1 1740/1740 1
pwm1_enable = 0, 3 -EINVAL
"On header" is the state after EC 1A 00 28 1E, which leaves the pump on
its internal controller. The internal fan followed pwm2 in every column
(40%: 1545 to 1590 rpm).
Written back to back, 2 runs each, final state:
pwm1 = 60%, pwm2 = 40% (patch 1) source 1, pump 60%, fan 40%
pwm1 = 40%, pwm1 = 60% (patch 1) source 1, pump 60%
pwm1_enable = 2, pwm1 = 60% source 1, pump 60%
pwm1_enable = 1, 2, 1 source 1
pwm1 = 60%, pwm1_enable = 2 source 0
The failure in the linked issue needs the power-on state, which a USB
reset does not bring back, so it was measured from power-on (PSU
switched off), once per column, with the header at 100%. Source,
byte 9 of the status report (the duty the pump runs at) and pump rpm:
before patch 1 patches 1-2
no write yet 0 100 3570 0 100 3570 0 100 3570
pwm2 = 40% 1 100 3570 0 100 3570 0 100 3570
pwm1 = 40% (reported) 1 100 3570 1 40 1710 1 40 1710
pwm1 = 60% 1 60 2430
pwm1 = 40% 1 40 1725
pwm1_enable = 2 0 100 3585
The two writes that patch 1 sends for a pwm1 write of the reported duty
reached the requested duty in all 19 trials, 9 with raw commands and 10
through the driver.
The commit in the Fixes: tag, cd258aca0dc4, first appeared in v7.3-rc1.
Zac Lanzon (2):
hwmon: (asus_rog_ryujin) Fix pump control source on the Ryujin III
hwmon: (asus_rog_ryujin) Add pwm1_enable for the Ryujin III pump
Documentation/hwmon/asus_rog_ryujin.rst | 10 ++
drivers/hwmon/asus_rog_ryujin.c | 164 +++++++++++++++++++++++-
2 files changed, 171 insertions(+), 3 deletions(-)
base-commit: 9edd5ab2656f040d726b5388f49ceac10bb2944f
--
2.53.0
next reply other threads:[~2026-09-27 12:09 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-27 12:09 Zac Lanzon [this message]
2026-09-27 12:09 ` [PATCH 1/2] hwmon: (asus_rog_ryujin) Fix pump control source on the Ryujin III Zac Lanzon
2026-09-27 12:09 ` [PATCH 2/2] hwmon: (asus_rog_ryujin) Add pwm1_enable for the Ryujin III pump Zac Lanzon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260927120927.72810-1-lanzonza@gmail.com \
--to=lanzonza@gmail.com \
--cc=corbet@lwn.net \
--cc=edward.blair@gmail.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-hwmon@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@roeck-us.net \
--cc=rdunlap@infradead.org \
--cc=savicaleksa83@gmail.com \
--cc=skhan@linuxfoundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®