Arduino Controller for Thermaltake RIING RGB Fans

Hello Arduino Community! I have a question regarding the feasibility of a project involving making a custom controller for RGB computer fans using an Arduino Uno. Thanks in advance for your patience as this is my first time using the Arduino platform. I certainly look forward to learning, though!

Here is some context about the project:

A few months ago, Thermaltake released a series of RGB Fans with their RIING branding. Basically, these computer fans have RGB LEDs in the corners and a light-diffusing ring around the plastic housing. To control these fans, Thermaltake provides a controller box that accepts the proprietary 5-pin connector from the fan and a 4 pin connector from the computer. It then applies several presets the user can choose from using the three buttons on the box. While this setup may be sufficient for some, I would prefer to have the fans controlled by my PC, LEDs and all.

For that purpose I would propose using an Arduino board to control the fans. Basically, I would program the Arduino to respond to data packets sent over a USB port from my PC and apply certain color patterns to the fans based upon the contents of that package. Pins on the fan that only relate to the spinning of the fan would be routed directly to the motherboard, while color control pins would be routed to the Arduino, allowing me to control both the fan speed and the color independently. I will have to determine which pins are which because the connector is proprietary, and while I assume from the pictures that it fits the general form factor of 4-pin connections, the order of the pins may have changed. I intend to use a voltmeter to determine which pin is which and what its function is as it relates to the color and rpm of the fan, which will obviously affect the Arduino configuration.

There will certainly be a steep learning curve for me in terms of getting this project accomplished, but I feel as though the pay off of having fully programmable RGB fans in my computer is worth the effort. I suppose my fundamental question to the community is if this project is in the realm of possibility for this platform, and what the general procedure would be aside from what I have described.

I will definitely have several follow-up questions once the project gets underway. Thanks for reading and I look forward to your replies!

-Kent Ashfield

If you want to build your own controller, as a replacement and enhancement of the controller box, you have to collect all related informations, from data sheets or other information sources. Without such information your project depends solely on your hacking and re-engineering skills.

In general you have to figure out the signals, sent by the controller box, then implement the same behaviour in both hardware and Arduino software.

My procedure would be:

Connect and measure voltages on the pins of the connector during operation (will require an exactoknife to get onto the wires it looks like :-/
You say 5 pins... and the marketing material says it supports PWM speed control and presumably has the speed output. So that means they've got Vcc, Gnd, Speed output, PWM speed control input.
So it's got only one wire for the LEDs - implying it's a single-wire LED controller.

Take fan, disassemble (this will likely be a "destructive disassembly"), trace out the wiring, draw out schematic.
Be on the lookout for a buck converter or voltage regulator, because the LEDs don't run at 12v, so somewhere it's gotta be making a LED-friendly voltage, or putting the LEDs in series and using a controller that can deal with that.

If you can find a part number for an LED controller on a part, you're home free.

I've reached out to Thermaltake to see if they can provide me with more information on the fan pinout and LEDs. If indeed we are looking at 1 pin for color control, is there a standard control method that we can assume is being used? Again, what exactly is going on with the controller and fan will be clearer to me when they arrive, but this is certainly a good start. I'm also unsure if these fans are indeed PWM as there are some reports to the contrary. So maybe this is 3 pin LED control and then a 2 pin for the fan (with the cathodes using the fan ground). I'll report back with my findings when the fans arrive.

If indeed we are looking at 1 pin for color control, is there a standard control method that we can assume is being used?

No, there are a number of protocols; there's no standard. Unless thermaltake tells you anything (I suspect they won't), you'll have to take the fan apart and try to work out what they're using to control the LEDs. There are a bunch of LED controller chips, and a great many of them have Arduino code to control them already written - so if you're lucky, it'll be one of those.

Here is a look at the inside of the control box. The fans just arrived.

Ran a few searches for model numbers. Nothing of interest. I'm about to start taking apart a fan to get a better sense of the wiring and look for a part number on the diodes.

Below are images from the internals of the fan itself. Here is where I really need help:
I identified a GND and a +12v pin for the fan. I have no information about the other pins save for the labels that appeared on the control box pcb (YPK). Does anyone know what YPK could be a reference to? Additionally, I had set up a simple circuit and code to fade in and out a blue LED strip I had around using an extra computer PSU molex connection for power. When I removed my LED and plugged into one of the three pins and the known ground, nothing happened. Are these diodes not controlled by changes in voltage like the led strip was? If so, what do you think I need to do get the diodes in the fan to light up? Thanks for your replies and your patience.


I have 9 of these fans, so i have 3 controllers in my PC. I managed it to be able to controll the buttons from the controllers through my arduino.

This is just the simple way of having controll, but i am fine to just send a serial command to my arduino and my arduino is pressing the button for me :wink:

There is a five pin port which isnt mentioned anywhere(left side top). I used this port to send a simple button command to the controller.

The pins are like this : (from left to right)
1 - speed (high low)
2 - stop/start (when the rgb loop is running)
3 - switch between the 4 predefined colours
4 - seems to be ground
5 - haven't found out yet

I know this isn't very helpfull for your project, but at least if you fail, you can try my workaround :slight_smile:

I definitely appreciate the reply!

How foolish of me to not investigate those other pins! While a very tempting suggestion, I think my ambitions would be better served by cutting the LED wires and linking them up to longer cables I can run to the Arduino to run as a normal LED provided I am careful about voltages. Nonetheless, your idea is creative and interesting, and if I get frustrated with the path I am on and see no value in continuing down that path in the future, I will definitely default to your solution.

Sorry to revive a dead thread, but could the leds be WS2811 or WS2812?

OP, Has there been any movement on this topic? I want to do the same thing but with a Raspberry PI controlling my water cooling setup and fans... I was thinking the fans were I2C devices possibly (since each RGB LED and each FAN is individually addressable



Sorry to revive a dead thread, but could the leds be WS2811 or WS2812?

sorry for the necroposting but you are right, it bugged not being able to synchronize my front panel strip with the simple analog rgb in my cooler so i carefully remove the metal panel to take a look, see the attachment.

the g and k pin are for the button of the integrated controller.