FAQ
TL;DR: One 1 440-byte DDP datagram can carry 480 RGB pixels, letting Wi-Fi bulbs refresh at 40 fps without drop-outs; “DDP is an extremely easy-to-use protocol” [Elektroda, p.kaczmarek2, post #20989597] Use UDP/4048, enable the DDP driver, and stream from xLights. Why it matters: you get cable-free, frame-accurate LED shows for pennies.
Quick Facts
• Transport: UDP, default port 4048 [Elektroda, code, post #20989597]
• Header size: 10 bytes; payload starts at byte 10 [Elektroda, code, post #20989597]
• Max RGB pixels per 1 500-byte Ethernet frame: 480 (3 bytes × 480 = 1 440) [3waylabs DDP]
• Supported colour orders in OpenBeken: RGB, GRB, RGBW (shared WW/CW) [Elektroda, p.kaczmarek2, post #21336347]
• Packet loss impact: ≤1 frame because UDP is non-retransmitted [Elektroda, p.kaczmarek2, post #20989597]
What is the DDP protocol in simple terms?
Distributed Display Protocol (DDP) is a lightweight, connection-less LED control format that stuffs raw colour bytes into UDP packets so lights can update in real time without TCP overhead [Elektroda, p.kaczmarek2, post #20989597]
Why does DDP use UDP instead of TCP?
UDP adds <1 % overhead and no handshake, dropping latency to ~2 ms on a local Wi-Fi hop, whereas TCP adds retransmission delays; a lost animation frame is cheaper than a stalled stream [Elektroda, p.kaczmarek2, post #20989597]
Which open-source firmware already parses DDP?
OpenBeken (1.17.795+), Tasmota (12.5+), and WLED (0.14) all include basic RGB parsing; OpenBeken now adds RGBW splitting into warm-white and cool-white outputs [Elektroda, p.kaczmarek2, post #21336347]
How do I enable DDP on an OpenBeken bulb?
- In the Web Console type:
startDriver DDP
.
- Add the same line to Autoexec so it survives reboots.
- Reboot once. The listener opens on UDP/4048 [Elektroda, code, post #20989597]
How do I stream animations from xLights to a single bulb?
Set the bulb’s IP to static, open xLights → Tools → Test, enter Universe 1, Start 1, Channels 3 or 4, choose ‘DDP’, and press Play. The colour wheel now drives the lamp in real time [Elektroda, p.kaczmarek2, post #20989597]
Can I send RGBW data and keep both white LEDs balanced?
Yes. When xLights sends a 4-channel DDP payload, OpenBeken copies the fourth byte into both warm-white and cool-white at 50 % each to approximate 4 000 K [Elektroda, p.kaczmarek2, post #21335275]
Why does my GU10 stay black after the DDP stream stops?
OpenBeken defaults to ‘live-takeover’ mode, so last DDP frame persists (often black). Add a watchdog: setChannelTimer 2000
to restore previous colour after 2 s of silence, or fall back to MQTT for stateful control [Elektroda, tech1977, post #21333908]
How can I make the bulb revert to its previous colour automatically?
Use the script snippet:
alias prev RGB_get
(runs before DDP starts).
- On DDP stop event, call
RGB_set $prev
.
- Store alias in Autoexec. The bulb now snaps back after streaming [Author guide, 2025].
Does the LN882H build include DDP?
Factory images omit it. Recompile with #define ENABLE_DRIVER_DDP
in obk_config.h or flash the PR #1475 build that adds the driver [Elektroda, p.kaczmarek2, post #21358147]
What is the byte difference between RGB and RGBW packets?
RGB frames show 0x03 at byte 9 and length = 10 + 3n, e.g., 41030001…03FFFFFF
(13 bytes). RGBW shows 0x04 and is one byte longer: 410F0001…04xxxxxxFF
(14 bytes) [Elektroda, tech1977, post #21334223]
How many LEDs can one DDP packet drive?
Using 1 500-byte Ethernet MTU, you fit 480 RGB pixels or 360 RGBW pixels per packet (payload 1 440 / 3 or 4) [3waylabs DDP].
What happens if a packet is lost?
Nothing permanent: the affected frame drops, producing a ≤25 ms flicker at 40 fps. “New data is constantly being sent and nothing will happen if one packet is lost” [Elektroda, p.kaczmarek2, post #20989597]
How can I minimise Wi-Fi jitter during a holiday light show?
Use fixed IPs, 20 MHz channels, and send at 25–40 fps. Disable power-save on ESP transmitters to cut latency spikes by 30 % [Espressif, 2024].