Skip to content

Add T-Force Delta RGB DDR5 support (8 LEDs)#80

Open
pedroezaya wants to merge 4 commits intoCalcProgrammer1:masterfrom
pedroezaya:claude/setup-openrgb-ram-iYmHh
Open

Add T-Force Delta RGB DDR5 support (8 LEDs)#80
pedroezaya wants to merge 4 commits intoCalcProgrammer1:masterfrom
pedroezaya:claude/setup-openrgb-ram-iYmHh

Conversation

@pedroezaya
Copy link

The T-Force Xtreem controller was DDR4-only and hardcoded 15 LEDs. The T-Force Delta RGB DDR5 uses the same ENE SMBus protocol but has 8 LEDs in a linear (non-folded) bar arrangement.

Changes:

  • Make TForceXtreemController parameterizable: led_count and folded strip layout are now constructor parameters with defaults that preserve existing DDR4 Xtreem behaviour
  • Replace the XTREEM_LED_OFFSET macro with a GetLEDOffset() method that handles both folded (Xtreem) and linear (Delta) layouts
  • Make RGBController_TForceXtreem accept a device_name parameter
  • Use controller->GetLEDCount() in SetupZones() instead of hardcoded 15
  • Fix latent bug: new_led.value was never set, causing UpdateZoneLEDs and UpdateSingleLED to always address LED 0
  • Refactor shared remap logic into RemapENERamModules() helper
  • Add DetectTForceDeltaControllers() and register it for SPD_DDR5_SDRAM

https://claude.ai/code/session_012VktdCkNKbhAyMyMH5127H

claude added 4 commits March 16, 2026 19:21
The T-Force Xtreem controller was DDR4-only and hardcoded 15 LEDs.
The T-Force Delta RGB DDR5 uses the same ENE SMBus protocol but has
8 LEDs in a linear (non-folded) bar arrangement.

Changes:
- Make TForceXtreemController parameterizable: led_count and folded
  strip layout are now constructor parameters with defaults that
  preserve existing DDR4 Xtreem behaviour
- Replace the XTREEM_LED_OFFSET macro with a GetLEDOffset() method
  that handles both folded (Xtreem) and linear (Delta) layouts
- Make RGBController_TForceXtreem accept a device_name parameter
- Use controller->GetLEDCount() in SetupZones() instead of hardcoded 15
- Fix latent bug: new_led.value was never set, causing UpdateZoneLEDs
  and UpdateSingleLED to always address LED 0
- Refactor shared remap logic into RemapENERamModules() helper
- Add DetectTForceDeltaControllers() and register it for SPD_DDR5_SDRAM

https://claude.ai/code/session_012VktdCkNKbhAyMyMH5127H
The Delta DDR5 uses the standard ENE SMBus DRAM protocol, not the
Xtreem-specific ENE protocol. Testing confirmed the generic ENE DRAM
controller already detects both DIMMs with all 8 LEDs correctly.

https://claude.ai/code/session_012VktdCkNKbhAyMyMH5127H
The Delta DDR5 uses the ENE 0xExxx register range (same as Xtreem) but
responds to the standard ENE test pattern (0xA0-0xAF incrementing
0x00-0x0F) rather than the Xtreem-specific pattern (0x90-0xA0). The
generic "ENE SMBus DRAM" detector uses wrong registers (0x8xxx),
resulting in only 2 of 8 LEDs being controllable.

This adds a dedicated DDR5 detector using the correct test pattern and
the TForceXtreem controller which writes to the correct 0xExxx registers.
Also refactors RemapENERamModules to accept a test function parameter.

https://claude.ai/code/session_012VktdCkNKbhAyMyMH5127H
The DIMM-based detector (REGISTER_I2C_DIMM_DETECTOR) relies on DDR5
SPD detection which doesn't work on all systems. Switch to a bus-based
detector (REGISTER_I2C_DETECTOR) that scans DRAM SMBus interfaces
directly, similar to how the generic ENE DRAM detector works.

Users should disable "ENE SMBus DRAM" in Settings > Supported Devices
to avoid duplicate detection, as that detector uses wrong registers
(0x8xxx instead of 0xExxx) for the Delta DDR5.

https://claude.ai/code/session_012VktdCkNKbhAyMyMH5127H
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.

2 participants