Motherboard Software RGB on a Z97 ITX system?

zovc

King of Cable Management
Original poster
Jan 5, 2017
852
603
Hey again,

I'm wanting to build a Mini ITX gaming system, likely in the S4 mini, so there's obviously not much room to spare. I've decided I'm going to stick with my Haswell gear for now which means I don't get any of these fancy new RGB controlled motherboards (and I don't think there's even RGB DDR3 RAM... woe is me!), so it looks like I'll have to do my lighting the old fashioned way. Never done it before but it doesn't seem all that hard.

What I'm wondering is: Is there a way for me to sync up any RGB lighting I have with software in Windows to react to things like temperature?

Pretty much, I want accent lighting that starts at Orange for room temperature, then cycles up to Blue when under a moderate load, and white when things are getting to the upper end of safe temperatures. As far as I know, there aren't any motherboards compatible with my i7-4790K that have RGB headers, but I should definitely have at least one USB 2 (or even 3, I think) header that I could use for a controller. My main concern is that there isn't a whole lot of room for a controller and it's possible it takes up precious space that could be used for routing cables or sticking LED strips.

Thanks!
 

zovc

King of Cable Management
Original poster
Jan 5, 2017
852
603
Could you use something like the NZXT Hue+ or is that too big to fit in an s4?

If it's the size of a SSD, I believe there's room for two of those and I don't plan on using both for the rest of my build. It looks like it's a little tall and that might be a concern in the S4, I'm not exactly sure. Thanks for the suggestion, do you know of any similar contollers?

@Josh | NFC do you have any specific recommendations for putting RGB lighting in a S4 when your motherboard doesn't have headers for it? Do you know if the NZXT Hue+ would fit in the case neatly? Its listed dimensions are 100mm x 70mm x 23.5mm.
 

blubblob

SFF Lingo Aficionado
Jul 26, 2016
104
127
If you know a little bit about programming microcontrollers like an arduino you could just slap a Pro Micro (or one of it's 3€ knock-offs from ebay) anywhere in the case and wire it up to the internal usb2.0 header and some WS2812/APA102 LEDs.

The dimensions are roughly ~35mm x 20mm x 5mm.

Then you just need to write a little background service that pipes for example the temperature readings from something like HWiNFO64 via serial to the Pro Micro to start whatever animation/hue shift/sparkle effect you want from the RGB-LEDs
 
  • Like
Reactions: zovc

Josh | NFC

Not From Concentrate
NFC Systems
Jun 12, 2015
1,869
4,467
www.nfc-systems.com
Yes, one of my customers whose name irl is THOR (the Norse god of RGB) did this with slight mods:




He gave me permission to share these. Also, I didn't notice until now, but he has excellent taste in Anime.
 
  • Like
Reactions: Phuncz and zovc

zovc

King of Cable Management
Original poster
Jan 5, 2017
852
603
Ok, so two things: The NZXT Hue+ is fairly large and would require me to include the drive bracket in the S4 mini. Neither of these are dealbreakers, but basically including the NZXT Hue+ would prevent me from putting a fan near my GPU which would probably be a good thing to do. One compromise that might be feasible is to find a RGB 120mm fan that can fit in this area but I still need something to control said fan.

If you know a little bit about programming microcontrollers like an arduino you could just slap a Pro Micro (or one of it's 3€ knock-offs from ebay) anywhere in the case and wire it up to the internal usb2.0 header and some WS2812/APA102 LEDs.

The dimensions are roughly ~35mm x 20mm x 5mm.

Then you just need to write a little background service that pipes for example the temperature readings from something like HWiNFO64 via serial to the Pro Micro to start whatever animation/hue shift/sparkle effect you want from the RGB-LEDs

This is looking like it might be my better option. Is there any chance you can point me to some recommended learning material for someone who's totally new to this stuff? I'll look into it myself eventually, but I have a few projects to work on before this is going to come to fruition.
 

PNP

Airflow Optimizer
Oct 10, 2015
285
257
Could also get a blinkstick and avoid having to write microcontroller firmware. Works with high level languages and comes with its own API.
 
  • Like
Reactions: zovc

zovc

King of Cable Management
Original poster
Jan 5, 2017
852
603
Those looked promising, I bumped into them when looking around earlier. My reservation was that they go into USB ports rather than USB headers, but i suppose there are those gizmos that plug into USB headers and turn them into ports... no idea if there's clearance for that and the blinkstick's header in the S4 Mini.

Do you have any idea what setting that up to react to system temperatures would look like? I know next to nothing about programming but this would be a pretty good excuse to get my feet wet.
 

PNP

Airflow Optimizer
Oct 10, 2015
285
257
Well, you'll probably need ring 0/kernel access to get data from onboard sensors.

Now, I presume two three things about your use case:
  1. You are running a Windows environment.
  2. You are not a wizard.
  3. You are willing to poke around in C# or VC++
I've had some good results with OpenHardwareMonitor. It comes with a DLL that can access the kernel and publish sensor data to WMI (Windows Management Instrumentation) which can in turn be accessed by other programs.

The tricky part is doing WMI queries. It's sort of like SQL and sort of not. The documentation that comes with OHM isn't so good in this aspect, but Microsoft has some good, if very broad, material on it.

Now, the advantage to using a BlinkStick/BlinkStrip is that once you have the data from WMI, you can just translate the data to color information on your PC, use their API to send the color data over USB and that's it. You don't need to write firmware for the other end of the pipe or decide how you want to decode the data.
 
Last edited:
  • Like
Reactions: zovc

zovc

King of Cable Management
Original poster
Jan 5, 2017
852
603
All of your presumptions are correct.

I'll see if I can start hacking around with the software end of that stuff in a little bit and see if it looks like I can get the hang of it. Thanks for the suggestion and the direction. Do you have any advice on connecting the strips to my motherboard USB headers? Is there a neat way of doing that?

We'll see if I end up throwing in the towel and looking for a controller in the end! :p
 

blubblob

SFF Lingo Aficionado
Jul 26, 2016
104
127
I don't have much experience writing software on the windows side, but the firmware for the microcontroller (if you use something arduino compatible like the 32u4 Pro Micro) is really easy to whip up.
There are a few good libraries for the standard addressable LED-Strips around - if you are using WS2811, WS2812 or SK6812 LEDs the easiest for beginners is probably the Adafruit_Neopixel Library. You can use the Arduino IDE and find a step by step guide here.

In the most basic setup (if you just continuously send the current temperature of a single temperature sensor rounded to the next integer over serial to the 32u4) the following code should work if you use the Arduino IDE with the Adafruit_Neopixel Library installed to compile.

I haven't tried the code at all (so there might be errors or completely missing lines :p).

Code:
// reference to the library
#include <Adafruit_NeoPixel.h>

// Parameter 1 = number of pixels in strip
// Parameter 2 = the pin your led strip is connected to
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, 6, NEO_GRB + NEO_KHZ800);

void setup() {
  // initialize the serial communication
  Serial.begin(9600);
  // initalize the LED strip with all pixels off
  strip.begin();
  strip.show();
}

void loop() {
  byte temperature;
  uint32_t ledcolor;

  // check if data has been sent from the computer
  if (Serial.available()) {
    // read the most recent byte
    temperature = Serial.read();
    // as an example lets make the LEDs be completely red (255,0,0) at 60°C and completely blue (0,0,255) at 30°
    // fading between the two for temperatures in between
    if (temperature > 60) {
      ledcolor = strip.Color(255, 0, 0);
    } else if (temperature < 30) {
      ledcolor = strip.Color(0, 0, 255);
    } else {
      byte x = temperature-30;
      ledcolor = strip.Color((x)*8,5), 0, 255-((x)*8,5);
    }
    // alternatively could be more complex animations and transitions that start at specific temperatures
    // set the LED color
    for (uint16_t i=0; i<strip.numPixels(); i++) {
      strip.setPixelColor(i, ledcolor);
    }
    strip.show();
  }
}
 
Last edited:

PNP

Airflow Optimizer
Oct 10, 2015
285
257
If you are comfortable taking the full-DIY approach, more power to you. My first RGB setup used NeoPixels running off my PSU with a janky Molex adapter.

There is a SerialPort class for C# and I am sure there is something similar for VC++/C++/VB/Java. A word of advice: you must either
  • write your Windows program to search all connected USB devices for the Pro Micro or
  • set it manually in your code and then never change what port the Pro Micro is connected to or
  • write a GUI or command line to change the port

Both solutions go for about the same cost (~40 USD shipped as of today's exchange rates) and have the same power limitations. The Pro Micro by virtue of being a general purpose MCU will take up some more space. Using the base BlinkStick or a Pro Micro will need some soldering.
 

zovc

King of Cable Management
Original poster
Jan 5, 2017
852
603
For the sake of 'comfort' and confidence, I'd prefer to go with the less DIY (read: accident-prone) project.

That said, the bit of looking I've done into the NZXT Hue+, its software seems limited in the sense that it can only go from one predefined color to another one predefined color when reacting to thermals, rather than cycling through two colors like I am envisioning. Straight-up needing to include the 2.5" drive bracket is fairly unattractive when it looks like I could practically plug the BlinkStick into a USB header. Am I correct in that assumption, using an adapter or something? (Or soldering some stuff around?)
 

PNP

Airflow Optimizer
Oct 10, 2015
285
257
Am I correct in that assumption, using an adapter or something? (Or soldering some stuff around?)

The BlinkStick Pro needs some soldering for attaching a strip if you buy the assembled version. The BlinkStick Flex already has an integrated strip, with the adapter I linked earlier (this one works too), it's plug-in and go...well, plug in and program.

Addendum:
Someone figured out how to make a hue cycle (hue meaning color, not Brazilian laughter) using trigonometric functions. It makes it easy to translate one value (temperature) into three (R, G, B). You might find it useful in getting the full use of whatever solution you decide to use.

Also I've been thinking of using it so I need a lab rat to try it out first. :p
 
  • Like
Reactions: zovc