I looked around but didn’t see any detailed measurements for the 3-wire cable a lot of WS28xx strips used, and it looked handy for a project so I tested this spool of 3/20 AWG cable from Amazon:
3-wire cable is a little strange because the data has 2 return “ground” wires, the actual white ground wire and the red positive supply voltage (which functions as an AC signal ground). Since there are two grounds tightly flanking the data, the impedance should be a bit more than half a similar 2 wire cable. I guessed 80 ohms from the look of the cable … and was wrong. Measurement showed just 65 ohms.
Next I tested it with a QuinLED data booster. I set to 33 ohms, which combined with the 9 ohms (measured) source impedance of the driver IC and traces gives 42 ohms. 42 < 65, so we should get some overshoot.
Not bad at all. Voltage hits 5.64V and the undershoot goes down to -720mV, but the waveform looks clean even at ~19 m (I cut off a few feet for testing first). We can make this better by adding a 22 ohm resistor (64 ohm total) to match the impedance exactly:
Looks perfect even after ~19m. Also interesting, I tried tightly coiling and uncoiling the cable and it made no difference, meaning the field is almost entirely contained between the outer wires with almost nothing leaking out, so noise immunity should be high. Since I can barely measure a difference after ~19 meters, you could probably run this for hundreds of meters with the extra resistor (and probably much further than 19m even without).
Finally, I tried driving with an ESP32 directly and adjusting the source impedance with a small resistor to raise the voltage a little:
The ESP32 has a source impedance of 32 ohms (by default, it can be adjusted in software), and the WS2812B says the minimum data voltage should be 3.5V, and we’d like a little margin for error. Since the cable is 65 ohm, aiming for about 75% on the source impedance should give a nice overshoot without too much distortion. Here is 32+15 ohms = 47 ohms source into the same ~19m of 65 ohm cable:
That gives a 3.8V signal, which is within spec for WS2812B and works well (no data corruption observed). There is some distortion because it is running with the impedance a little mismatched, but it is quite small. Not sure how that would hold up at 100m+, but not a good idea to drive long lines without a level shifter anyway.
One other warning: since the data return current passes through the positive (red) wire, it is important that the positive wire connects to the controller, meaning if you’re using an ESP32 it probably works best with 5V strips. The data boost solves this problem by supporting 12/24V supply voltages and is a good idea if you want to drive WS2811, etc.
I was a little surprised at the impedances measured. I had thought it would be higher, and had tried using the standard 50 ohm recommended resistor on an ESP32 and had some data corruption, which makes sense since that would actually attenuate the peak voltage below 3.3V. Anyway, hope this helps someone else.





