Pixelblaze for RGB LED PC accessories

(Skip down to “Wiring” section for technical info.)

Summary

RGB LEDs have become trendy in certain (“gamer”) segments of the PC market. Some of these colorful accessories could be controlled by a Pixelblaze instead of a PC. This topic seeks to collect information that bridge between the world of colorful PC accessories and the world of Pixelblaze LED creations.

Background

Computer manufacturers have found that certain customers are willing to pay extra for RGB bling, producing a ton of stuff enticing such people to hand over their money. Many of these products are “just” WS2812 (or compatible) LEDs in various formats sold at a hefty profit margin.

Opportunity

Valuing form over function, the fickle nature of fashion cycles through products quickly. High profit margins entice small startups hoping to make it big. (Most don’t.) Older gear or broken gear with still-shining LEDs end up on eBay/CraigsList. Whether it’s unsold inventory on clearance, out-of-business liquidation, or the secondhand market, bargain hunters can find LED-bedazzled components cheaper than directly buying new LEDs.

Challenge

There are a few de-facto standards in this space, but companies are motivated to try proprietary lock-in in the interest of profits. Circumventing that will require reverse engineering of individual products.

Branding

Part names like WS2812 or APA102 are terrible for marketing purposes. Here are some computer equipment companies and their branding for RGB LED accessories. Though not all of these products will be Pixelblaze-compatible, it’s a starting point for finding addressable LED products.

  • Gigabyte RGB Fusion
  • Asus Aura
  • MSI Mystic Light whose FAQ item “What is Mystic Light Extension?” served as reference for the following section.

Wiring

This picture shows two four-pin headers for RGB LEDs on a Gigabyte B365M motherboard.
Motherboard LED headers

  • The top connector labeled D_LED1 has one unused space for orientation and three pins labeled V, D, and G. This layout, sometimes called JRAINBOW or JRAINBOW1, is directly compatible with Pixelblaze. Anything that connects to this header can be wired to V = VIN, D = DATA, and G = GND on a Pixelblaze set for WS2812 LEDs and we’re off to the races. No PC required.
  • The bottom connector labeled LED_C has a +12V supply rail and three low-side controls, one each for red/green/blue channels. This layout, sometimes called JRGB or JRGB1, is not individually addressable (entire strip will show the same color) and not compatible with Pixelblaze.

Intermediate

Sometimes items are plugged into a mystery box which is plugged into a JRAINBOW header. The box might repeat control signal to multiple devices. (See this forum post) Or the box may convert to custom/proprietary connectors. It’s possible WS2812 data is forwarded unchanged to one of the wires. Connecting them to a Pixelblaze bypassing the box requires finding that wire. For an example, see my next post in this forum topic.

Advanced

Some accessories do not plug into a JRAINBOW connector. Examples include lights on the motherboard, video card, or memory modules. These RGB LEDs are controlled via proprietary apps sending custom messages over motherboard SMBus. These LEDs are beyond easy reach of a Pixelblaze. But if you’re interested, take a look at OpenRGB or other similar projects working to reverse-engineer those SMBus messages.

2 Likes

Pixelblaze control of PC case fans with RGB LED

PC case cooling fans are sold with LEDs embedded in various ways:

  1. Fixed: This is the easiest and cheapest way, a single color that lights up whenever the fan has power.
  2. Self-contained: Colorful LEDs but controller is embedded within.
  3. JRGB style: Color can be controlled but all LEDs will be the same color (not individually addressable.)
  4. JRAINBOW style: individually addressable WS2812-style RGB LEDs.

JRAINBOW style fans may be controlled by a Pixelblaze in place of a PC. Such a project’s difficulty level depends on how the manufacturer decided to implement its wiring.

  1. Two separate connectors: one connector for controlling the fan, and a separate connector for LED control. Usually found on individually sold RGB fans like this CPU cooler solution example on NewEgg. Separate connector makes it easier to connect to a Pixelblaze.
  2. Single integrated connector combining fan and LED control, usually plugs into a mystery box that combines power input and JRAINBOW LED interface to the computer motherboard. Usually found on RGB fan multipacks like this example on NewEgg.

A Pixelblaze can connect to the input port of that mystery box, which will suffice for some projects. But if not, we have to dig deeper.

The rest of this post is my experience “digging deeper”, which is an intermediate level electronics project requiring access to tools like an oscilloscope or logic analyzer. I describe how I worked with a specific product, with some generalizations that I hope is helpful for others who wants to do the same thing to a different product.


The subject of my digging is the Asiahorse Magic-i 120 V2 which is a trio of fans that plug into a mystery box hub. The hub has a connector for PC power supply and a JRAINBOW connector for the motherboard. This bundle also included a remote control, which I wanted for this project because independent operation meant there’s no risk of damaging a computer if I should make any mistakes.

The proprietary fan connector has six wires. Doing the easiest thing first, I probed for electrical continuity on the hub between its output fan pins and its input power connector. A PC accessory will use one of the following types of power plug:

In the case of my hub, there was electrical continuity for three of the six pins corresponding to +12V, +5V, and Ground. Three down, three to go. What are the remaining three wires? Here are some candidates:

  • Fan Control: (Optional) one or none of the following:
    • High side: Fan motor may be internally connected to the ground line, leaving the high side to be externally connected to +12V via a power transistor. May be used for on/off control or PWM modulating the transistor for speed control. Can connect directly to +12V which will run the fan at max speed whenever there’s power.
    • Low side: Same idea but reversed. The motor is internally connected to +12V and this line allows external power transistor to connect to ground. Can connect directly to ground which will run the fan at max speed whenever there’s power.
    • PWM: Neither of the above. Instead of leaving high or low open for connection via external power transistor, a suitable power transistor is built into the fan itself. Speed is controlled by an external 25kHz PWM signal. Typically found on CPU cooling fans. OK to leave disconnected, as absence of PWM signal typically default to running the fan at some preset speed. (That may or may not be 100%.)
  • Fan tachometer: (Optional) an open collector/open drain line for a square wave whose period corresponds to fan speed. OK to leave disconnected if we don’t care about monitoring fan RPM.
  • LED Data In: (Required) LED control signal. Likely WS2812 style directly forwarded from motherboard through hub, but possibly translated by hub to a different LED type. OK to leave disconnected if we don’t want to control integrated LEDs. (But if so, why are we even here?)
  • LED Data Out: (Optional) LED control signal that comes out of the tail end of the string of LEDs, allowing multiple devices to be chained together. When absent, we won’t have a way to chain multiple fans together and controlling them would require the Pixelblaze output expander. OK to leave disconnected if we don’t care about chaining.

To narrow down my candidates, I connected those three unknown lines (plus a fourth wire for ground) to my logic analyzer acting as analog waveform capture tool. Connected to the bundled hub, I powered it up and used the remote control to command a solid color. This activity generated the following trace:

The top line in white stayed low, so it might be either low-side fan control or fan tachometer in the absence of a pull-up resistor. To figure out which, I connected just the +12V and Ground pins. The fan did not move. I connected this wire to ground, and the fan started spinning. Conclusion: it is the low side of fan motor.

The middle brown line showed signs of a digital control signal repeating at regular intervals. The bottom red line showed a very similar pattern but delayed by 12 cycles. I counted 12 LEDs in each fan, so the middle brown line is LED Data In and the bottom red line is LED Data Out. To verify, I connected +5V, Ground, and Data In pins to a Pixelblaze. This gave me control of the ring of 12 LEDs in the hub of these fans.

Having the LED data out line was a pleasant surprise, it meant I didn’t need a Pixelblaze output expander to control this trio of fans. Curiously, the bundled hub didn’t bother using that feature. Every Data In line is wired in parallel.

In order to control these fans separately, I would have to create my own circuit board and chain their data in/out lines together for a Pixelblaze to control.

Asiahorse fan control board for Pixelblaze

Once that was done, I could control them with the full power of Pixelblaze, including my favorite feature: 3D pixel coordinate mapping. I lashed the three fans at right angles to each other using twist-ties, and mapped them to XY plane, YZ plane, and XZ plane. Here is the contraption running my coordinate test program which sweeps through X axis in red, then Y-axis in green, finally Z-axis in blue. (I have the Z-axis backwards in this video, but that’s a problem with my map and doesn’t affect the electronics focus of this post.)

Here is my pinout diagram for these fans. I have no idea how common this layout is. Perhaps all 6-pin LED fan connectors are laid out this way, perhaps they are all different. I don’t have the money or patience to buy them all and test them. But I hope the information above will help somebody else figure out their own LED fans to use with a Pixelblaze.

5 Likes

Very nice tutorial!! Thank you @Regorlas!

2 Likes

Since I started this topic I’ve learned that Corsair has their “iCUE” branding for controllable RGB LED accessories. I wanted to add this information to the branding names list in my first post, but it appears I could no longer edit that post.

I also learned that, as part of Corsair’s lineup of iCUE accessories, they sell memory modules with just LEDs and no memory. (SKU# CMWLEKIT2) I guess so people do not have to live with the unsightly appearance of dark empty memory slots on their motherboard.

I am not sure if these little circuit boards are Pixelblaze friendly.

But I am very sure I’m not willing to pay MSRP $40 for just 20 LEDs.