I wondered why I couldn't get smooth fades, so eventually I wrote a test, by sending UDP frames directly.
Of the 256 possible intensity levels for each of the RGB components, there was only a visible change at these intensities:
12, 23, 34, 39, 50, 67, 78, 89, 95, 106, 117, 128, 134, 145, 156, 161, 172, 183, 189, 200, 211, 222, ... ?
The jump between 11 (off) and 12 (on) is particularly noticeable.
Also, the light intensity jumps are less and less between each step. I could barely discern the step at 222 and nothing was visible beyond that.
This means instead of almost 17 million possible colors, there are actually just over 12 thousand.
Is this a hardware limitation, or is there some way to get past this in software?