When I recently built a gaming PC, I got a Fractal Design Meshify 2 RGB case. This case includes a built in ARGB controller with an effect called Northern Lights. It’s a pretty subtle animation in blues, greens and purples that I found quite nice. You can see it in the pictures on the Fractal product page linked above.
However, the colors did not look quite as nice on the CPU fans (of a different brand) as on the case fans, which made me curious about the implementation.
First off, I figured out that ARGB LEDs in modern PC cases typically use the WS2812b protocol. This pretty simple protocol is documented in a datasheet. There are also some quite nice web resources available, including a very useful article describing some simplified timings.
As a next step, I used a cheap USB logic analyzer to dump the output from the data pin of the ARGB controller for a minute or so. The raw data is available in the repo in CSV format, although I had to trim it somewhat to avoid going over the Github file size limit. Some screen captures of the signal:
Finally, I wrote a quick Python script (also in the repo) to analyze the data. Here are some observations:
I’ve made a simple JS animation of the colors.
By interpolating the starting offsets at other angles, I think it should be possible to achieve visually similar effects for fans with more than 6 LEDs.
Here are some visualizations generated in this way, for 6, 8 and 15 LEDs:
Each line corresponds to one step in the animation and is divided horizontally into the number of configured LEDs.