Skip to content

Add ryujin iii 360 support#865

Merged
jonasmalacofilho merged 3 commits intoliquidctl:mainfrom
zgwx24:add-ryujin-iii-360-support
Feb 28, 2026
Merged

Add ryujin iii 360 support#865
jonasmalacofilho merged 3 commits intoliquidctl:mainfrom
zgwx24:add-ryujin-iii-360-support

Conversation

@zgwx24
Copy link
Contributor

@zgwx24 zgwx24 commented Feb 27, 2026

Added the USB Product ID for the standard ASUS Ryujin III 360 (0xb05:0x1aa2). This allows proper identification of the device and enables control of the embedded pump fan to mitigate noise. Verified on physical hardware.


Checklist:

  • Adhere to the development process
  • Conform to the style guide
  • Verify that the changes work as expected on real hardware
  • Add automated tests cases
  • Update/add documentation (README, Man Page, Bash Completion)
  • Regenerate extra/linux/71-liquidctl.rules

Added the USB Product ID for the standard ASUS Ryujin III 360 (0xb05:0x1aa2). This allows proper identification of the device and enables control of the embedded pump fan to mitigate noise. Verified on physical hardware.
Includes update to udev rules, man page, bash completion, and automated tests. Verified on physical hardware.
Copilot AI review requested due to automatic review settings February 27, 2026 16:13
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds recognition and (partial) control support for the standard ASUS Ryujin III 360 by introducing its USB product ID (0x1aa2) across the driver, tests, docs, and Linux udev rules.

Changes:

  • Register ASUS Ryujin III 360 (0x0b05:0x1aa2) in the AsusRyujin USB HID driver match table.
  • Extend the Ryujin test fixtures with a mock device configuration for product ID 0x1aa2.
  • Update user-facing artifacts (man page, README device list, bash completion, udev rules) to include the new device/channel.

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
liquidctl/driver/asus_ryujin.py Adds the new 0x1aa2 USB match entry for ASUS Ryujin III 360 with appropriate offsets/channel config.
tests/test_asus_ryujin.py Adds mock responses/expected status for 0x1aa2 (Ryujin III 360).
liquidctl.8 Adds a new “ASUS Ryujin III 360” subsection under device specifics.
extra/linux/71-liquidctl.rules Adds udev access rule for 0x0b05:0x1aa2 and reflects regenerated ordering.
extra/completions/liquidctl.bash Adds pump-fan to the bash completion channel suggestions.
README.md Lists ASUS Ryujin III 360 as a supported device with a link to the Ryujin III guide.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +89 to +95
0x1AA2: {
"name": "Mock Ryujin III 360",
"fan_count": 0,
"pump_speed_offset": 7,
"pump_fan_speed_offset": 10,
"temp_offset": 5,
"duty_channel": 1,
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added a new DEVICE_CONFIGS entry for product_id 0x1AA2, but the parametrized test lists below (test_initialize/test_status) don’t include 0x1AA2, so this new device isn’t actually exercised by the test suite. Include 0x1AA2 in the @pytest.mark.parametrize product_id lists (or derive the list from DEVICE_CONFIGS keys) to ensure initialization/status behavior is covered.

Copilot uses AI. Check for mistakes.
Comment on lines +68 to +72
(
0x0B05,
0x1AA2,
"ASUS Ryujin III 360",
{
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The module/class docstrings still say this driver is for Ryujin II and Ryujin III EXTREME only, but this change adds support for the Ryujin III 360 as well. Update the docstrings to reflect the expanded supported device set so users/devs aren’t misled when reading the driver source.

Copilot uses AI. Check for mistakes.
liquidctl.8 Outdated
Comment on lines 249 to 251
.SS ASUS Ryujin III 360
.SS ASUS Ryujin III EVA
.SS ASUS Ryujin III EXTREME
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This adds a subsection header for “ASUS Ryujin III 360” but no content is associated with it; the subsequent “Cooling channels” line applies only to the “ASUS Ryujin III EXTREME” subsection. Add the appropriate “Cooling channels” (and any other notes) under the Ryujin III 360 subsection, or restructure the Ryujin III subsections so the shared content clearly applies to all relevant models.

Suggested change
.SS ASUS Ryujin III 360
.SS ASUS Ryujin III EVA
.SS ASUS Ryujin III EXTREME
.SS ASUS Ryujin III 360, ASUS Ryujin III EVA, ASUS Ryujin III EXTREME

Copilot uses AI. Check for mistakes.
# possibly use some command here to get a list of all the possible channels from liquidctl
local cur="${COMP_WORDS[COMP_CWORD]}"
COMPREPLY=($(compgen -W "fan fan1 fan2 fan3 fan4 fan5 fan6 led led1 led2 led3 led4 led5 led6 pump sync ring logo external lcd" -- "$cur"))
COMPREPLY=($(compgen -W "fan fan1 fan2 fan3 fan4 fan5 fan6 led led1 led2 led3 led4 led5 led6 pump pump-fan sync ring logo external lcd" -- "$cur"))
Copy link

Copilot AI Feb 27, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bash completion now suggests the “pump-fan” channel, but the parser logic in _liquidctl_set_command only recognizes “pump” (not “pump-fan”) as a fan-channel token, so completing/handling arguments after “pump-fan” won’t work correctly. Update the case pattern that dispatches to _liquidctl_set_fan to include “pump-fan” as well.

Copilot uses AI. Check for mistakes.
@zgwx24
Copy link
Contributor Author

zgwx24 commented Feb 27, 2026

Thanks for the thorough review! I have addressed all the identified issues in the latest commit (a31c824):

Tests: Included 0x1AA2 in the @pytest.mark.parametrize lists for both

test_initialize
and

test_status
to ensure the new device is fully exercised.
Docstrings: Updated the driver's module and class docstrings to reflect support for the Ryujin III 360.
Man Page: Restructured the Ryujin III subsection headers in

liquidctl.8
to correctly apply cooling channel info to all models.
Bash Completion: Updated the parser logic in

_liquidctl_set_command
to correctly recognize and handle the pump-fan channel.
Everything has been verified on physical hardware. Ready for further review!

Copy link
Member

@jonasmalacofilho jonasmalacofilho left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks!

@jonasmalacofilho jonasmalacofilho merged commit 0337181 into liquidctl:main Feb 28, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants