feat: add RGB ring support for Kraken 2024 Elite (0x3012)#882
Open
i-am-logger wants to merge 1 commit into
Open
feat: add RGB ring support for Kraken 2024 Elite (0x3012)#882i-am-logger wants to merge 1 commit into
i-am-logger wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Pull request overview
Adds RGB ring LED control support for the NZXT Kraken 2024 Elite RGB (USB 1e71:3012) within the existing Kraken 3 driver, including ring-without-logo initialization behavior and test coverage for the new device behavior.
Changes:
- Add Kraken 2024 Elite ring accessory ID and expose new ring+external color channel mapping.
- Update Kraken 3 LED initialization parsing to handle devices that have a ring but no logo channel.
- Redirect
fixedmode on the 2024 Elite ring tosuper-fixed(Hue 2 direct protocol) and add tests for initialization and color setting.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
liquidctl/driver/kraken3.py |
Adds 2024 Elite color channels, improves LED info parsing for ring-without-logo devices, and redirects fixed on ring to super-fixed. |
liquidctl/util.py |
Adds Hue2Accessory.KRAKEN_2024_ELITE_RING enum value (0x1E). |
tests/test_kraken3.py |
Adds a 2024 Elite mock and tests for initialization and ring color modes. |
flake.nix |
Introduces a Nix flake for building and a dev shell (currently has dependency/input issues). |
shell.nix |
Adds a non-flake Nix dev shell (currently has dependency/input issues). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
c51969d to
64bb7ac
Compare
Add RGB ring LED control for the NZXT Kraken 2024 Elite RGB, which has a 24-LED pump ring on the external channel but no logo LEDs. Changes: - Add KRAKEN_2024_ELITE_RING (0x1E) to Hue2Accessory enum - Add color channel mapping for 2024 Elite: ring on external channel (cid=1) - Update parse_led_info to handle ring-only devices (no logo channel) - Redirect "fixed" mode to "super-fixed" (Hue 2 direct protocol 0x22) for static per-LED color control on the ring - Add device flag (_hue2_direct_ring) for redirect instead of dict identity - Add named constant for ring LED count (24) Tested on real hardware: all color modes (fixed, super-fixed, breathing, fading, spectrum-wave, pulse, etc.), LCD control, pump/fan speed, and monitoring all work correctly. Closes liquidctl#800
64bb7ac to
708a375
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds RGB ring LED control for the NZXT Kraken 2024 Elite RGB (USB
1e71:3012).The 2024 Elite has a 24-LED pump ring on the external channel but no logo LEDs, which differs from earlier Kraken models that have both ring and logo on separate channels.
Changes
liquidctl/util.py: AddKRAKEN_2024_ELITE_RING(0x1E) toHue2Accessoryenumliquidctl/driver/kraken3.py:_COLOR_CHANNELS_KRAKEN2024_ELITEmapping: ring on external channel (cid=1)_KRAKEN2024_ELITE_RING_LEDS = 24constant_hue2_direct_ringdevice flag in__init__for explicit redirect detectionparse_led_info()to handle ring-only devices (no logo channel)fixedmode tosuper-fixed(Hue 2 direct protocol 0x22) using device flagtests/test_kraken3.py:mock_kraken2024elitefixture with accurate ring-only mockfixedon ring uses 0x22 protocol (not 0x2A), with write assertionsHardware tested
Verified on real NZXT Kraken 2024 Elite RGB (firmware 1.2.0):
Closes #800