Skip to content

mustafa-ansari/TTController

 
 

Repository files navigation

This is home to TTController, a windows service for controlling various Thermaltake RGB Plus devices.

It allows you to fully customize them by using speed controllers, which control the speed, and effects, which control the led color. Each can be enabled or disabled dynamically by using various triggers.

The soruce code also provides an easy way to write your own speed controller, effect or trigger.


undefined

Quick start

Install

  • Unpack latest release to a desired directory
  • Run TTController.Service.exe
  • Select Manage Service from command line menu and install the service

The service will start automatically and will create a default empty config. See Configure section on how to configure it.

Configure

  • If the service is running
    • Stop the service using either Manage Service menu, services.msc or net stop
  • Edit the config.json file located in the same directory as TTController.Service.exe
  • Start the service using either Manage Service menu, services.msc or net start

You can use Show hardware info option from the commandline menu to determine what controllers are detected and find out your port and temperature sensor identifiers to be used in config.json.

Uninstall

  • Run TTController.Service.exe
  • Select Manage Service from command line menu and uninstall the service
  • Remove the folder containing service files

Update

  • If the service is running
    • Stop the service using either Manage Service menu, services.msc or net stop
  • Remove all files but leave the config.json file
  • Unpack newest release to the same directory
  • Start the service using either Manage Service menu, services.msc or net start

Device support

Device Support Confirmed Notes
Riing Plus 12/14/20 ✔️ ✔️
Pure Plus 12/14 ✔️ ✔️
Floe Riing RGB 240/280/360 ✔️ ✔️
WaterRam RGB ✔️
Pacific PR22-D5 Plus ✔️
Pacific CL360/RL360 ✔️
Pacific W4 ✔️
Pacific V-GTX/V-RTX ✔️
Pacific Lumi/Rad/R1/Fitting ✔️
Pacific W5/W6 temperature sensor unsupported
Riing Trio 12/14 unknown RGB, speed supported
Toughpower iRGB PLUS not implemented

Plugins

Speed Controllers:

  • StaticSpeedController
  • PwmSpeedController

Effects:

  • BlinkEffect
  • ByLedColorEffect
  • FlowEffect
  • FullColorEffect
  • PulseEffect
  • SpectrumEffect
  • RippleEffect
  • WaveEffect
  • SnakeEffect
  • TemperatureEffect
  • SoundEffect
  • RawEffect

Triggers

  • AlwaysTrigger
  • OneTimeTrigger
  • ProcessTrigger
  • PulseTrigger
  • LogicTrigger

Config

The documentation is still WIP, if you have problems with configuration please make a new issue.

Example

{
  "Profiles": [
    {
      "Name": "Default",
      "Guid": "10af9207-7e67-4581-9d13-506cad5d53c1",
      "Ports": [
        [9802, 8101, 1]
      ],
      "SpeedControllers": [
        {
          "Type": "StaticSpeedController", 
          "Config": {
            "Speed": 50,
            "Trigger": {
              "Type": "AlwaysTrigger"
            }
          }
        }
      ],
      "Effects": [
        {
          "Type": "RippleEffect",
          "Config": {
            "Length": 4,
            "Color": [
              [255, 0, 0]
            ],
            "TickInterval": 2,
            "Trigger": {
              "Type": "OneTimeTrigger"
            }
          }
        }
      ]
    }
  ],
  "PortConfig": [],
  "CriticalTemperature": {
    "/intelcpu/0/temperature/8": 90
  },
  "TemperatureTimerInterval": 250,
  "DeviceSpeedTimerInterval": 2500,
  "DeviceRgbTimerInterval": 32
}

Documentation

Root

{
  "List of profiles"
  "Profiles": ["<Profile>"],

  "List of computer state profiles"
  "ComputerStateProfiles": ["<ComputerStateProfile>"],

  "List of port configs"
  "The values in this list are optional, if PortConfig for a port is not present"
  "the default values will be used"
  "PortConfig": ["<PortConfig>"],

  "Sensor -> Critical Temperature map"
  "If the temperature of a sensor exceeds critical temperature"
  "the speed on all ports is set to 100% ignoring speed controllers"
  "CriticalTemperature": {},

  "Miliseconds between temperature updates"
  "TemperatureTimerInterval": "<int>",

  "Miliseconds between speed updates"
  "DeviceSpeedTimerInterval": "<int>",

  "Miliseconds between rgb updates"
  "DeviceRgbTimerInterval": "<int>",

  "Miliseconds between log update when running in console mode"
  "LoggingTimerInterval": "<int>"
}
Examples:
{
  "Profiles": ["..."],
  "PortConfig": ["..."],
  "CriticalTemperature": {
    "/intelcpu/0/temperature/8": 90
  },
  "TemperatureTimerInterval": 250,
  "DeviceSpeedTimerInterval": 2500,
  "DeviceRgbTimerInterval": 32
}

Profile

{
  "Name of the profile"
  "Name": "<string>",

  "GUID string"
  "Guid": "<string>",

  "List of port identifiers that this profile controls"
  "Ports": ["<PortIdentifier>"],

  "List of speed controllers"
  "SpeedControllers": ["<SpeedController>"],

  "List of effects"
  "Effects": ["<Effect>"]
}
Examples:
{
  "Name": "Default",
  "Guid": "10af9207-7e67-4581-9d13-506cad5d53c1",
  "Ports": [
    [9802, 8101, 3],
    [9802, 8101, 2],
    [9802, 8101, 1]
  ],
  "SpeedControllers": ["..."],
  "Effects": ["..."]
}

Speed Controller

{
  "The class name of the speed controller"
  "Type": "<string>", 

  "Config json for this speed controller, depends on controller type"
  "Must contain a 'Trigger' property"
  "Config": {}
}
Examples:
{
  "Type": "StaticSpeedController", 
  "Config": {
    "Speed": 50,
    "Trigger": {
      "Type": "AlwaysTrigger"
    }
  }
}

Effect

{
  "The class name of the effect"
  "Type": "<string>", 

  "Config json for this effect, depends on effect type"
  "Must contain a 'Trigger' property"
  "Config": {}
}
Examples:
{
  "Type": "RippleEffect",
  "Config": {
    "Length": 4,
    "Color": [
      [255, 0, 0]
    ],
    "TickInterval": 2,
    "Trigger": {
      "Type": "OneTimeTrigger"
    }
  }
}

Trigger

{
  "The class name of the trigger"
  "Type": "<string>", 

  "Config json for this trigger, depends on trigger type"
  "Config": {}
}
Examples:
{
  "Type": "AlwaysTrigger"
}
{
  "Type": "ProcessTrigger",
  "Config": {
    "Processes": ["cmd"]
  }
}

ComputerStateProfile

{
  "State type. One of:"
  "[Boot, Shutdown, Suspend]" 
  "StateType": "<string>",

  "List of port identifiers that this profile controls"
  "Ports": ["<PortIdentifier>"],

  "Speed from 0% to 100%"
  "If not set the speed is not changed" 
  "Speed": "<int>",

  "Effect type, depends on the controller type"
  "If not set the rgb effect is not changed" 
  "EffectType": "<string>",

  "List of LedColor that the effect should use."
  "EffectColors": ["<LedColor>"]
}

If you want to update or add a profile with Boot type you first need to remove <add key="boot-profile-saved" value="" /> line from TTController.Service.exe.Config file and restart the service.

Examples:
{
  "StateType": "Boot",
  "Ports": [
    [9802, 8101, 3],
    [9802, 8101, 2],
    [9802, 8101, 1]
  ],
  "Speed": 35,
  "EffectByte": 25,
  "EffectColors": [
    [0, 255, 0]
  ]
}

Port Config

{
  "Port identifier that this config applies to"
  "Key": "<PortIdentifier>",

  "Port config"
  "Value": {
    "Port name"
    "Name": "<string>",

    "Port led count"
    "LedCount": "<int>",

    "Led rotation/offset for rgb effects"
    "LedRotation": "<int>",

    "If true led indexes are reversed"
    "LedReverse": "<bool>"
  }
}
Examples:
{
  "Key": [9802, 8101, 1],
  "Value": {
    "Name": "Top Left",
    "LedCount": 12,
    "LedRotation": 10,
    "LedReverse": true
  }
}

About

controller software for thermaltake devices

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%