Re: [PATCH v2 1/2] hwmon: (asus_rog_ryujin) Fix pump control source on the Ryujin III

From: Guenter Roeck

Date: Mon Oct 26 2026 - 16:53:06 EST


On Mon, Sep 28, 2026 at 07:41:05AM -0400, Zac Lanzon wrote:
> The RYUJIN III pump has a 4-pin cable for a motherboard fan header in
> addition to USB. Byte 2 of the set cooler duty command selects the pump
> control source: 0 hands the pump to its internal controller, which
> follows the PWM of the header its 4-pin cable is plugged into, and 1
> makes it follow the pump duty in byte 3. Byte 3 of the cooler duty
> report returns the current source.
>
> The driver fills byte 2 with duty_channel, which is 1 for the RYUJIN
> III, and a pwm2 write re-sends the reported pump duty with the new fan
> duty. So writing only the internal fan duty takes the pump away from
> its internal controller.
>
> Measured on a RYUJIN III 360 (firmware AURJ2-S750-0108) with the pump
> cable on AIO_PUMP and the header PWM set through nct6775, after loading
> the driver with the pump on its internal controller (pump rpm):
>
> header 50% header 80% source
> no write yet 2160 3090 0
> pwm2 = 40%, before this patch 1740 1740 1
> pwm2 = 40%, with this patch 2130 3090 0
>
> Send the reported source with pwm2 writes. The fan duty applies with
> either source (40%: 1545 to 1590 rpm, 30%: 870 rpm). A pwm2 write sent
> right after a pwm1 write that took the pump over, before the report
> could show the change, left the pump on USB and applied its fan duty
> (2 of 2 trials, and 7 of 7 with raw commands up to 0.9 s after).
>
> pwm1 writes keep selecting source 1. The cooler reports the pump duty of
> the last write, whichever source it selected, and 40% after power-on.
> Byte 9 of the status report follows the duty the pump runs at. Measured
> from power-on (PSU switched off) once per driver, with the header at
> 100%:
>
> before this patch with this patch
> source duty rpm source duty rpm
> no write yet 0 100 3570 0 100 3570
> pwm2 = 40% 1 100 3570 0 100 3570
> pwm1 = 40%, the reported duty 1 100 3570 1 40 1710
> pwm1 = 60% 1 60 2430
> pwm1 = 40% 1 40 1725
>
> So a pwm1 write of the reported duty did not reach the pump, while
> other duties applied in one write, also when taking the pump from its
> internal controller (60%: 2460 rpm). When a pwm1 write requests the
> reported duty, write a duty 1% away first (below at 100%), then the
> requested one. Sent back to back, the two writes left the pump at the
> requested duty in all 19 trials, 9 with raw commands and 10 through
> this driver.
>
> Tested on the RYUJIN III 360 only. The EXTREME, EVA and WHITE EDITION
> use the same rog_ryujin_iii_info and send the same command, and Edward
> Blair's analysis of the WHITE EDITION firmware shows the same pump
> control source. The RYUJIN II, whose duty_channel is 0, is unchanged.
>
> Fixes: cd258aca0dc4 ("hwmon: (asus_rog_ryujin) Add ROG Ryujin III support")
> Closes: https://github.com/aleksamagicka/asus_rog_ryujin-hwmon/issues/12
> Suggested-by: Edward Blair <edward.blair@xxxxxxxxx>
> Cc: stable@xxxxxxxxxxxxxxx
> Assisted-by: Claude:claude-opus-5-5
> Signed-off-by: Zac Lanzon <lanzonza@xxxxxxxxx>

Applied.

Thanks,
Guenter