Art-Net and sACN universe sizes — the colour rotation bug
A classic symptom: the first pixel is the right colour, and further along the strip the colours have rotated — red becomes green, green becomes blue. Often it gets worse the further down the run you go, and it changes when you add pixels.
The cause
A DMX universe is 512 channels. An RGB pixel is 3 channels. 512 does not divide by 3 — it leaves 2 channels spare (512 ÷ 3 = 170 remainder 2).
If a universe is padded out to the full 512 channels, those two leftover channels push the next universe's first pixel out of alignment by two. Every universe after that drifts further, and the visible result is rotating colour.
The fix
Declare the real channel count, not 512. For 170 RGB pixels that is 170 × 3 = 510 channels. LMS sends variable-length universes for exactly this reason — you do not have to pad.
| Pixels per universe | Channels to declare |
|---|---|
| 170 RGB | 510 |
| 128 RGB | 384 |
| 170 RGBW | 680 — too many, use 128 |
| 128 RGBW | 512 |
RGBW is different
RGBW is 4 channels per pixel, and 4 does divide into 512 — 128 pixels exactly. So RGBW at 128 pixels per universe is naturally clean, which is one reason it is worth considering for large installs.
If it still rotates
Check the receiving end. Some controllers assume a fixed 512 regardless of what is sent, in which case you have to match their assumption rather than the other way around — set 170 pixels and accept the two wasted channels on both sides.
Written by the Smartshow LMS community. LMS is free software for driving LED matrices over Art-Net, sACN, DMX and more.
Get LMS free Browse the wiki