Jump to content
Corsair Community

HowTo: HD120 RGB Custom Lighting Controller


Recommended Posts

Timr:

I don't have data on the SP120 RGBs, but their controller will not work with the HD120 RGBs and vice versa. The -HUB- will work just fine. The controller is the long, skinny box with three buttons.

 

Since the hub works okay, it stands to reason that the SP120 RGBs are single-wire, single-chip, multi-LED units. They are -NOT- data-signal compatible with WS2811s though, or the HD controller would treat them as the first <fan> many LEDs on an HD120 RGB. I have the three SP120RGBs that came with the 570X case, so I'll see if I can toss some chipset tests at them. :)

 

red-ray:

Gift for you! Or... git for you?

https://github.com/Charixfox/HD120-Controller

Link to comment
Share on other sites

  • Replies 271
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Timr:

I don't have data on the SP120 RGBs, but their controller will not work with the HD120 RGBs and vice versa. The -HUB- will work just fine. The controller is the long, skinny box with three buttons.

 

Since the hub works okay, it stands to reason that the SP120 RGBs are single-wire, single-chip, multi-LED units. They are -NOT- data-signal compatible with WS2811s though, or the HD controller would treat them as the first <fan> many LEDs on an HD120 RGB. I have the three SP120RGBs that came with the 570X case, so I'll see if I can toss some chipset tests at them. :)

 

Ah, that all makes sense. I'll wait till you've had a play around - I won't have time to start a new project for a couple months anyway.

Link to comment
Share on other sites

The fox does things and stuff! I threw the SP120 RGB fan LEDs onto the board and tested some changes in code on the demo reel. Success!

 

Findings:

SP120 RGB fans use four surface mount 5050 RGB LEDs per fan with a UCS1903 chipset per fan. This means each fan can be controlled as a "Single LED" with the FastLED library set to LED_TYPE = UCS1903

Link to comment
Share on other sites

The fox does things and stuff! I threw the SP120 RGB fan LEDs onto the board and tested some changes in code on the demo reel. Success!

 

Findings:

SP120 RGB fans use four surface mount 5050 RGB LEDs per fan with a UCS1903 chipset per fan. This means each fan can be controlled as a "Single LED" with the FastLED library set to LED_TYPE = UCS1903

 

Awesome! And basically what I was hoping for. Two or three more paychecks and I'll be in a position to start mucking about with things myself (I just blew an awful lot of money on the PC itself, and I suspect my girlfriend might literally murder me if I spend any more).

Link to comment
Share on other sites

Awesome! And basically what I was hoping for. Two or three more paychecks and I'll be in a position to start mucking about with things myself (I just blew an awful lot of money on the PC itself, and I suspect my girlfriend might literally murder me if I spend any more).

 

O.o Might not take that many paychecks...

 

Wires: https://www.amazon.com/dp/B00AC4NQYG/

Controller: https://www.amazon.com/dp/B012FOV17O/

 

Total Cost: < $15

Link to comment
Share on other sites

O.o Might not take that many paychecks...

 

Wires: https://www.amazon.com/dp/B00AC4NQYG/

Controller: https://www.amazon.com/dp/B012FOV17O/

 

Total Cost: < $15

Right, but I have yet to tell her about the 21:9 monitor, mechanical keyboard, and high-end mouse I, uh, already kinda ordered for next month - I'm already in line for a fair amount of grief. :biggrin:

 

Plus, thanks to an acquisitive sibling, I got to replace nearly every tool I (used to) own. But I'm kind of getting used to that particular trial, and one day I may even learn not to lend things out.

Link to comment
Share on other sites

  • 2 weeks later...

Given now there is the CORSAIR Lighting Node PRO I plan to get SIV to support this. All I need to do not is figure out the protocol it uses as the chances of Corsair making this available to me are close to zero.

 

Looking at the picture I suspect it can drive 2 x HD hubs, what do you think please?

Edited by red-ray
Link to comment
Share on other sites

Given now there is the CORSAIR Lighting Node PRO I plan to get SIV to support this. All I need to do not is figure out the protocol it uses as the chances of Corsair making this available to me are close to zero.

 

Looking at the picture I suspect it can drive 2 x HD hubs, what do you think please?

 

O.o XD

 

It's a little-known thing that factories in China are able to prototype and start producing copies of ideas or things within two weeks. I could easily see this product having been developed, coded, tooled in a factory, and produced since I brought up this thread. Apparently we got their attention. XD

 

Anyway, yeah, it claims to run two fan hubs and has an adapter, which is likely a cable that doesn't connect the 5V line from the hub.

 

At first I was confused about why it would handle only "four strips of ten LEDs per port" which would be 80 total when it can handle 144 fan LEDs, but it may be due to the strips being powered off this directly, which would make it an amperage issue.

 

The strips and fans both use WS2812s, I now know, so communication with the LEDs is no longer an issue, just a matter of deciphering the communication between CL4 and the LNP.

Link to comment
Share on other sites

It's a little-known thing that factories in China are able to prototype and start producing copies of ideas or things within two weeks. I could easily see this product having been developed, coded, tooled in a factory, and produced since I brought up this thread. Apparently we got their attention. XD.

 

Thank you for your reply. I suspect this is not the situation as I recall posts by Corsair Dustbin eluding to there being a new lighting node planned and these must have been at least 14 months ago as by the time CL4 came out he had almost stopped posting at all. Further given the CL4 development team can't even fix simple bugs there is no way they could add support to CL4 in two weeks. The latest CL 4.5.0.55 doesn't report/control any of my LED DIMMs when CL 4.3.0.154 managed to report/control 1 or 2.

Link to comment
Share on other sites

I have 6 SP120's in the PC I'm building soon so I'm going to mess with the FastLED project code to see if I can get temperature based colors going.

 

Anyone have experience with this? or wiring diagrams/gotchas? I used arduino drivers in grad school and even fixed a few bugs i found in them, so I dont need help with that part. Mainly just how to wire the arduino to the fans.

Link to comment
Share on other sites

I have 6 SP120's in the PC I'm building soon so I'm going to mess with the FastLED project code to see if I can get temperature based colors going.

 

Anyone have experience with this? or wiring diagrams/gotchas? I used arduino drivers in grad school and even fixed a few bugs i found in them, so I dont need help with that part. Mainly just how to wire the arduino to the fans.

 

Somebody asked about the SP120 RGB fans so I ran tests on them quickly.

 

They are UCS1903 control chips IIRC, so that will be the "LED Type" in FastLED.

 

The fan LED cable pinout is identical to HD120 RGBs, but I recommend just using a hub. Then the GND from the hub can go to GND on the Arduino, +5 on the hub to VCC or RAW on the Arduino, and tie the data pin you use to the DATA on the hub.

 

It'll look pretty boring if your system is running well, but that's okay. :)

Link to comment
Share on other sites

Somebody asked about the SP120 RGB fans so I ran tests on them quickly.

 

They are UCS1903 control chips IIRC, so that will be the "LED Type" in FastLED.

 

The fan LED cable pinout is identical to HD120 RGBs, but I recommend just using a hub. Then the GND from the hub can go to GND on the Arduino, +5 on the hub to VCC or RAW on the Arduino, and tie the data pin you use to the DATA on the hub.

 

It'll look pretty boring if your system is running well, but that's okay. :)

 

Couple questions/comments!

 

You have the pin diagram on your first post so I got that (thank you). I'm curious about the hub that comes with the kit and the data return line. If I use the hub, I'm guessing I dont need to worry about the data return line at all? I assume I just send the input to the input of the hub and it will send the signal to all the fans?

 

So with fastLED, you dont even need to tell it the baud rate or anything? just say "hey i have this chip" and it takes care of everything? That would be awesome... I'm not used to this level of awesome. This would be the easiest pet project ever if this is the case.

 

Also, do you know if the SP120's are limited to the colors we have using their controller (white/blue/green/orange/red/??)? Can I just give it an RGB code and tell it to do it?

 

And yea, it might end up being boring seeing as my PC is water cooled... Temps stay below 35 degrees so I might end up switching stuff up a bit. My plan is to create my own software so I can send whatever I want whenever I want. I could then make different profiles. One for cpu temp, one for gpu temp, one that just changes based on the time of day, one for just a static color where you input the rgb code yourself (if you can do that), etc.

Link to comment
Share on other sites

Couple questions/comments!

 

You have the pin diagram on your first post so I got that (thank you).

 

Very welcome. ^.^

 

I'm curious about the hub that comes with the kit and the data return line. If I use the hub, I'm guessing I dont need to worry about the data return line at all? I assume I just send the input to the input of the hub and it will send the signal to all the fans?

 

Correct. The hub properly chains all the fans together 1 through 6, so no worry about "Data return to data in".

 

So with fastLED, you dont even need to tell it the baud rate or anything? just say "hey i have this chip" and it takes care of everything? That would be awesome... I'm not used to this level of awesome. This would be the easiest pet project ever if this is the case.

 

Again, correct, with caveats. FastLED handles the communication with the LEDs only. You just need to tell it what kind of control chip is in use and what data pin it's connected to on the Arduino. For size and capability, I highly recommend Pro Micros for this. However you do still have to write the Arduino code to handle communication with the computer. If this is serial, you'll need baud and such. If you use an AVR board that has a limited UART hardware buffer, you'll also have to ensure that your communications timing is clean, because the Arduino has its interrupts disabled while writing out to the LEDs for single-wire chips. However since the hub can only handle six LEDs, you're looking at a few tenths of a millisecond so it's probably not an issue for your situation.

 

Also, do you know if the SP120's are limited to the colors we have using their controller (white/blue/green/orange/red/??)? Can I just give it an RGB code and tell it to do it?

 

They are 24-bit, PWM-faded RGB. FastLED will also handle HSV, which is nice, but remember that HSV does not go to true black with these. You can use them interchangeably too, so you can use HSV to step through Hue and make a rainbow, then use RGB for specific things that RGB is useful for. (HSV is nice for stuff like royal purples, since full red and blue makes a kind of fuchsia.)

 

One gotchya to be aware of: Most of the FastLED examples do color correction (typicalledstrip) and this should NOT be done unless you want to have video-accurate colors, which are not as bright or saturated. You will get much nicer results for "blinkenlights" displays without that.

 

And yea, it might end up being boring seeing as my PC is water cooled... Temps stay below 35 degrees so I might end up switching stuff up a bit. My plan is to create my own software so I can send whatever I want whenever I want. I could then make different profiles. One for cpu temp, one for gpu temp, one that just changes based on the time of day, one for just a static color where you input the rgb code yourself (if you can do that), etc.

 

O.o

 

You can do anything. You can have one fan give one temp, another give another, and so on. You can have a set of code that cycles through spectrum hue based on temp, so cool goes between purple and green, warmer is green to yellow, then yellow to red, and pulsing red if doomed. Colors are a thing though. :)

 

I'm surprised you're using SPs, which have "One light per fan" as opposed to HDs, which have 12 lights per fan. But yeah, the code at the Git repository is an example of listening on the serial port for control data and doing different internal pre-built color functions based on the settings. I have no PC code yet ( T^T ) so no user-friendly way to use it, but it handles numerous things. A Pro Micro can also act as an HID device for comms instead of Serial, which opens up that as a possible way to do things.

 

That's what I get for giving up programming a decade ago. Now I have to re-learn alllllll the things.

Link to comment
Share on other sites

Sorry for the noobish question, but I dont know a ton about these rgb setups. My LED experience has been limited to cars and offroad vehicles.

 

So what are the odds that the sp120rgb can run on 12v input. I have been trying to look up info on the controller you said was in them and I have found a few places that claim it can handle anywhere from 5v-24 but I dont know if those are using different controller designs for 5, 12 and 24v or all the same one. I have one of the sp120rgb fans and I just ordered a commander mini that came with the free led strips and two fans (fans are for another build) and was hoping it could control the sp120rgb fan.

 

If it cant handle the 12v from the commander mini could I just pull the 5v pin out of connector and supply it with 5v from a separate source or even solder in resistor to drop it to 5v? I have other fans and a AIO cooler from corsair so the commander mini wont go unused I just assumed there would be some way I could control the fan through an adapter cable of some sort, but after reading around about it more it seems like corsair might not ever get around to linking the two products.

Link to comment
Share on other sites

So what are the odds that the sp120rgb can run on 12v input. I have been trying to look up info on the controller you said was in them and I have found a few places that claim it can handle anywhere from 5v-24 but I dont know if those are using different controller designs for 5, 12 and 24v or all the same one. I have one of the sp120rgb fans and I just ordered a commander mini that came with the free led strips and two fans (fans are for another build) and was hoping it could control the sp120rgb fan.

 

If it cant handle the 12v from the commander mini could I just pull the 5v pin out of connector and supply it with 5v from a separate source or even solder in resistor to drop it to 5v? I have other fans and a AIO cooler from corsair so the commander mini wont go unused I just assumed there would be some way I could control the fan through an adapter cable of some sort, but after reading around about it more it seems like corsair might not ever get around to linking the two products.

 

Chances of running on 12V: Very, Very slim. More likely to fry it than anything. Doesn't matter, since the commander mini can't actually make the LEDs on an SP120 RGB light up, since it doesn't have the data information to do so. Just giving the LEDs power without data will result in no lights at all. The SP120 RGBs being UCS1903 control chips makes them somewhat of the Wednesday of the family, since even the Lighting Node Pro is out, but only controls the WS2812 LEDs on the strips and HD120 RGB fans.

 

So the old strip-addressable LED systems (Commander Mini) and the WS2812 LED systems (Lighting Node Pro) are out there, but SP120 RGB is left with NOOOOOothing.

Link to comment
Share on other sites

@Intender:

When in doubt, pull it apart and see. ^.^ Yeah, chances are the controller would fry on 12v too. I was relatively pleased that the HD controller and the hub were straightforward in traces so I was able to eyeball all the connections easily. The LNP by comparison has a black-painted PCB so the traces are impossible to see, so I had to look up chips to see why it has a 3.3v source pull.

 

But isn't the controller that comes with the 3-pack of HD120s and SP120s the same controller?

 

Even if you only populate it with SP120's, the LNP can't do anything? That's a major oversight on Corsair's part.

 

The SP controller is not the same as the HD controller. The hub is the same though, but the only thing the hub has is wiring and a decoupling capacitor.

 

The first (small) difference is that the SPs have "One address per fan" and the HDs have 12 addresses per fan. That's six addresses per hub of SPs and 72 addresses per hub of HDs.

 

The second (HUGE) difference is that the HDs and SPs LEDs use completely different hardware communications protocols. The HDs (And the strips that come with LNP) are WS2812 control chips. The SPs are UCS1903 control chips. When provided power and no instructions, they do nothing. Since they don't talk the same way for instructions, they will not work happily.

 

The SP120 HDs feel like a "This would be cool" idea using the UCS1903 chipset since it can be paired with four LEDs with the single chip, but not taking into account the fact that it doesn't talk the same as anything else.

Link to comment
Share on other sites

Ah, thanks for clearing that up! I mistakenly assumed that Corsair would have the foresight to make a single controller that could handle both (even if not at the same time) to cut down on confusion.

 

Then I remembered that the US webstore was briefly selling Commander Mini's with free single HD120 RGB fans, because looking at features and connectors, there'd be no reason to think it wouldn't work. I can only imagine how many burned out fans that lead to...

 

It seems like there's like 5 dev teams all trying stuff at the same time without telling the others.

Link to comment
Share on other sites

Ah, thanks for clearing that up! I mistakenly assumed that Corsair would have the foresight to make a single controller that could handle both (even if not at the same time) to cut down on confusion.

 

Then I remembered that the US webstore was briefly selling Commander Mini's with free single HD120 RGB fans, because looking at features and connectors, there'd be no reason to think it wouldn't work. I can only imagine how many burned out fans that lead to...

 

It seems like there's like 5 dev teams all trying stuff at the same time without telling the others.

 

 

Ya they have the commander mini on sale right now and its coming with the led strip kit and two sp120 red led fans and there is a note at the bottom thats says the previous deal had the hd120rgb but they realized the items wouldnt work together and changed it. So obviously there was a lack of info even within the groups at corsair.

Link to comment
Share on other sites

  • 3 weeks later...

I finally gave in and got myself a 570X case and six HD120s so I could actually do more on the project and be able to test it without having to bug somebody who is perfectly happy with Angry Myia Mode.

 

Hey, red-ray? If I were to make Arduino firmware for SIV (or something else) to talk to, how would you like comms to work? Still HID and such? "Dumb" firmware (That is, "Take this LED array and do it") or "smart" firmware ("Use this mode and do your own calculations so I don't have to tell you every little thing")?

Link to comment
Share on other sites

Hey, red-ray? If I were to make Arduino firmware for SIV (or something else) to talk to, how would you like comms to work?

 

Once Corsair released the LNP I got one of those, deduced the protocol and added LNP support to SIV.

 

Looking at http://forum.corsair.com/forums/showthread.php?p=892386 you can see the LNP is a HID device and in an ideal world the Arduino would implement a superset of the LNP protocol. CL4 can only control units of either 10 or 12 LEDs, but in SIV units of 6, 5, 4, 3 and 2 are also possible unfortunately the LNP firmware only supports 6 items (6 x HD120) and I would like to be able to have more items as with 6 fans SIV could easily support 24 x 3 LEDs. With SIV I could easily add support what whatever VID/PID you choose and I suspect if you use the same as the LNP then CL4 would talk to the Arduino :eek:.

 

At the moment I have not published the LNP protocol, but could. It's quite simple and it only took be a couple of days to get most things working, but there are some packet types which I an not totally sure about. It's also possible to update the LNP firmware, but CL 4.5.0.55 can't do this so I can't deduce the protocol. One aspect of the LNP seems to be that it's a WOM and SIV can't read the current LED configuration :(:. For a controlling SIV this is not an issue, but it means that SIV can't just monitor what the LNP is displaying and with the old LN (Lighting Node) it can.

Link to comment
Share on other sites

LNP has two channels and each channel can connect either to a string of four LED strips (10 LEDs each) or to a hub that powers 6 HD120 RGB fans.

 

This makes sense due to the specs on the power connector it uses. A SATA power connector is rated for 4.5A on each of the 3.3, 5, and 12 volt lines. This is mildly disconcerting when you realize that the eight strips of ten LEDs each can draw up to 4.8A when set to full white, so hopefully there is some current-limiting set into the system (generally presented in the form of brightness limitations for the LEDs). Though I suppose it could be pulling power from the USB (up to .5A) as well to supplement things. Anyway... O.o Even with such, PWM means that there are still spikes and dips, which is why the capacitor is present.

 

By comparison, the six 12-LED fans only get data from the LNP and sata power directly to the hub, which feeds up to 4.32A of fan colors.

 

I was under the impression that LNP was able to connect to two fan hubs and control lighting on 12 fans total though.

 

As for VID/PID, while technically i "could" potentially control that report, it would be a lie. Those are assigned globally by USB peeps and you "shouldn't" use one unless you have it assigned to you. It would be an interesting hack to see if I could replicate the LNP stuff on the Arduino though. <.<

 

In any case, the primary reason for the offer was to have access to a controller that (isn't $60 and) you have full insight into the firmware of. ;)

Link to comment
Share on other sites

I don't expect the LNP uses USB power for the LEDs at all as I have found as follows:

  • Just USB connecting the LNP is enough to get the USB device to show up and seem to work.
  • The LNP only claims to take 50mA in the Configuration Interface USB descriptor.
  • If I power the HD120 hub, but not the LNP the HD120 LEDs don't light.
  • As soon as I power the LNP all the LEDs light.

 

  1. I should have made it clear that the limits I was quoting were per port.
  2. I quoted per port as it would be possible for SIV to easily control 8 ports.
  3. Using the LNP VID/PID should only be for a test.
  4. If you could get as far as reporting the firmware IDs then adding the remainder should be easy enough.
  5. Below is the SIV LNP startup trace.
  6. Byte 0 is the RID and the Arduino won't get that.
  7. Byte 1 is the write command code or status return read.
  8. Commands 02 + 06 read the two firmware IDs
  9. Command 03 reads the LNP ID that CL4 set. SIV does not use this.
  10. All the writes are 65/64 bytes in size and the reads are 33/32.

CID 12    @ 23:38:36.365 seq 02 Open( \\?\hid#vid_1b1c&pid_0c0b#7&88bba26&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030} )
CID 12    @ 23:38:36.365 seq 02 -> 00 02
CID 12      23:38:36.375 seq 02 <- 00 00 00 01 2E
CID 12    @ 23:38:36.375 seq 03 -> 00 06
CID 12      23:38:36.380 seq 03 <- 00 00 00 02 00
CID 12    @ 23:38:36.380 seq 04 -> 00 03
CID 12      23:38:36.395 seq 04 <- 00 00 24 D3 DE

Link to comment
Share on other sites


×
×
  • Create New...