Skip to content

feat: add RGB ring support for Kraken 2024 Elite (0x3012)#882

Open
i-am-logger wants to merge 1 commit into
liquidctl:mainfrom
i-am-logger:feat/kraken-2024-elite-rgb
Open

feat: add RGB ring support for Kraken 2024 Elite (0x3012)#882
i-am-logger wants to merge 1 commit into
liquidctl:mainfrom
i-am-logger:feat/kraken-2024-elite-rgb

Conversation

@i-am-logger
Copy link
Copy Markdown

@i-am-logger i-am-logger commented Apr 5, 2026

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: Add KRAKEN_2024_ELITE_RING (0x1E) to Hue2Accessory enum
  • liquidctl/driver/kraken3.py:
    • Add _COLOR_CHANNELS_KRAKEN2024_ELITE mapping: ring on external channel (cid=1)
    • Add _KRAKEN2024_ELITE_RING_LEDS = 24 constant
    • Set _hue2_direct_ring device flag in __init__ for explicit redirect detection
    • Update parse_led_info() to handle ring-only devices (no logo channel)
    • Redirect fixed mode to super-fixed (Hue 2 direct protocol 0x22) using device flag
  • tests/test_kraken3.py:
    • Add mock_kraken2024elite fixture with accurate ring-only mock
    • Test initialization detects pump ring LEDs
    • Test fixed on ring uses 0x22 protocol (not 0x2A), with write assertions
    • Test animated modes (spectrum-wave, breathing) work
    • Test invalid channel raises KeyError

Hardware tested

Verified on real NZXT Kraken 2024 Elite RGB (firmware 1.2.0):

Capability Status
Ring: fixed (single color) Working
Ring: super-fixed (per-LED) Working
Ring: breathing, fading, pulse Working
Ring: spectrum-wave, rainbow-flow Working
Ring: marquee, alternating, candle Working
Ring: off Working
LCD: liquid temp, static, GIF Working (unchanged)
Pump/fan speed control Working (unchanged)
Monitoring (temp, RPM, duty) Working (unchanged)

Closes #800

Copilot AI review requested due to automatic review settings April 5, 2026 19:57
Copy link
Copy Markdown

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 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 fixed mode on the 2024 Elite ring to super-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.

Comment thread flake.nix Outdated
Comment thread flake.nix Outdated
Comment thread flake.nix Outdated
Comment thread shell.nix Outdated
Comment thread liquidctl/driver/kraken3.py
Comment thread liquidctl/driver/kraken3.py
Comment thread tests/test_kraken3.py Outdated
Comment thread tests/test_kraken3.py Outdated
@i-am-logger i-am-logger force-pushed the feat/kraken-2024-elite-rgb branch from c51969d to 64bb7ac Compare April 7, 2026 05:21
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
@i-am-logger i-am-logger force-pushed the feat/kraken-2024-elite-rgb branch from 64bb7ac to 708a375 Compare April 7, 2026 05:29
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.

Lights/colors not exposed on Kraken 2024 Elite RGB

2 participants