chestm007/linux_thermaltake_riing

Therlamtake Riing Trio 12 Radiator Fan TT Premium edition

Opened this issue · 4 comments

Hi, thanks a lot for this software.

Are thermaltake riing trio premium edition currently supported?
Can't seem to make them work: service runs, and it seems to think it changes colors and fan speed but it actually doesn't.

I am running Ubuntu 18.04.2, python 3.6.7.
With debug on I get this:

sudo /usr/bin/python3 /usr/local/bin/linux-thermaltake-rgb
initializing thermaltake rgb daemon
loading config
raw config file
** start **

controllers:
  - unit: 1
    type: riingtrio
    devices:
      1: Riing Plus  # These are incorrectly specified as Riing Plus
      2: Riing Plus  # there is nothing in the code that will break this
      3: Riing Plus  # but we should not be doing confusing things like this
fan_manager:
  model: locked_speed
  speed: 1
lighting_manager:
 speed: normal
 model: full
 r: 40
 g: 0
 b: 0

** end **

/usr/local/lib/python3.6/dist-packages/linux_thermaltake_rgb/daemon/config.py:61: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
  return yaml.load(cfg)
[{'unit': 1, 'type': 'riingtrio', 'devices': {1: 'Riing Plus', 2: 'Riing Plus', 3: 'Riing Plus'}}]
{'model': 'locked_speed', 'speed': 1}
{'speed': 'normal', 'model': 'full', 'r': 40, 'g': 0, 'b': 0}
creating fan manager
creating FanManager object: [model: locked speed 1%]
creating lighting manager
initializing FullLightingEffect light controller
configuring controllers
kernel driver already detached
 configuring devices for controller riingtrio: 1
created ThermaltakeRiingPlusFan device
  registering Riing Plus with fan manager
  registering Riing Plus with lighting manager
 configuring devices for controller riingtrio: 1
created ThermaltakeRiingPlusFan device
  registering Riing Plus with fan manager
  registering Riing Plus with lighting manager
 configuring devices for controller riingtrio: 1
created ThermaltakeRiingPlusFan device
  registering Riing Plus with fan manager
  registering Riing Plus with lighting manager
starting main thread
starting lighting manager
Setting lighting for device
ThermaltakeRiingPlusFan set lighting: raw hex: [50, 82, 1, 25, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0]
Setting lighting for device
ThermaltakeRiingPlusFan set lighting: raw hex: [50, 82, 2, 25, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0]
Setting lighting for device
ThermaltakeRiingPlusFan set lighting: raw hex: [50, 82, 3, 25, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0, 0, 40, 0]
starting fan manager
Starting fan manager (locked speed 1%)...
entering FanManager main loop
Setting fan speed to 1%
new fan speed 1
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
Setting fan speed to 1%
^CException ignored in: <module 'threading' from '/usr/lib/python3.6/threading.py'>
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 1294, in _shutdown
    t.join()
  File "/usr/lib/python3.6/threading.py", line 1056, in join
    self._wait_for_tstate_lock()
  File "/usr/lib/python3.6/threading.py", line 1072, in _wait_for_tstate_lock
    elif lock.acquire(block, timeout):
KeyboardInterrupt

Corresponding lsusb -v output seems to be:

Bus 001 Device 004: ID 264a:2135  
Couldn't open device, some information will be missing
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0         8
  idVendor           0x264a 
  idProduct          0x2135 
  bcdDevice            0.02
  iManufacturer           1 
  iProduct                2 
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           41
    bNumInterfaces          1
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xc0
      Self Powered
    MaxPower              100mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.11
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      28
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x01  EP 1 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0040  1x 64 bytes
        bInterval               1

Not sure it's relevant, but the box says that there are "30 single LEDs", while the code implies 12 (and for some lighting models like "full" it's even hard-coded):

class ThermaltakeRiingPlusFan(ThermaltakeRGBDevice, ThermaltakeFanDevice):
    model = 'Riing Plus'
    num_leds = 12
    index_per_led = 3

Windows Thermaltake app works fine and best fitting option seems to be Riing Trio fan model.

Theres alot of legacy code in there that i would love to remove, left over from alot of the initial development on my personal system, hardcoded values are the worst.

Looking at the device and vendor id's the controller itself is supported, but I'm very certain i havent done anything related to those specific fans, if you could spin up a virtual machine, passthrough the usb device and get some packet captures of changing the colours on the fans it'd be super helpful!

Hello,

First.... this software helps me a lot, thanks!!

I'm on Ubuntu 19.10 and check this software from source code (run with python3) with this yml file.


** start **

controllers:
  - unit: 1
    type: riingtrio
    devices:
      1: Riing Plus
      2: Riing Plus
      3: Riing Plus
      4: Riing Plus
      5: Riing Plus
  - unit: 2
    type: riingtrio
    devices:
      1: Riing Plus
      2: Riing Plus
      3: Riing Plus
      4: Riing Plus
      5: Riing Plus
  - unit: 3
    type: riingtrio
    devices:
      1: Riing Plus
      2: Riing Plus
      3: Riing Plus
      4: Riing Plus
      5: Riing Plus
  - unit: 4
    type: riingtrio
    devices:
      1: Riing Plus
      2: Riing Plus
      3: Riing Plus
      4: Riing Plus
      5: Riing Plus
  - unit: 5
    type: riingtrio
    devices:
      1: Riing Plus
      2: Riing Plus
      3: Riing Plus
      4: Riing Plus
      5: Riing Plus
  - unit: 6
    type: riingtrio
    devices:
      1: Riing Plus
      2: Riing Plus
      3: Riing Plus
      4: Riing Plus
      5: Riing Plus
fan_manager:
  model: locked_speed
  speed: 50
lighting_manager:
 speed: normal
 model: full
 r: 100
 g: 0
 b: 0

** end **

I can control my fan's speed, but I can't the lights. I have 23 fans with 6 hubs (Riing Trio 12 and Riing Trio 14 radiator fan TT premium edition)

I tried to install a VMware workstation with windows 10 then install a TT RGB PLUS software from the Thermaltake website (https://ttrgbplus.thermaltake.com/). But the TT RGB plus can't connect to the USB hubs through VMware, so I think I can't get any packets from the Wireshark.

Do you have any idea, how can I grab packets from these hubs?

Any update on this issue? (Edited after realizing the profiles must be stored in windows not on the controller, shame)

Same as Bearbite I managed to install and got it running after dealing with the exit-code issue and one other you can read about here: https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation
However I also have the same issue with my Riing Trio fans where I can change their speed but not the LED colors.

I also have Windows installed on a 2nd sdd so let me know if there's anything I can provide, and how, which would be helpful.