Docs USB LEDs
USB controllers
The USB-to-serial chipsets LumaSync recognises out of the box, supported strip chip types (WS2812B / SK6812 RGBW), how to identify what you have, and what kits ship with them.
LumaSync’s USB LED path drives a WS2812B (RGB) or SK6812 RGBW strip through a USB-to-serial controller, streaming frames at 115200 baud using the LumaSync v1 serial frame format — not Adalight. An opt-in Adalight profile shipped in v1.4; flip Settings → Device → Firmware profile to Adalight to keep existing Adalight controllers running unchanged.
Supported chipsets
Six USB-to-serial chipsets are auto-detected from v1.5.0 onwards:
| Chip | USB VID:PID | Where you’ll find it |
|---|---|---|
| CH340 | 1A86:7523 | Most cheap Arduino-clone ambilight kits; “ambilight USB kit” on the usual marketplaces. |
| CH341 | 1A86:5523 | CH340’s sibling; some module vendors label them interchangeably. |
| FTDI FT232R | 0403:6001 | Higher-end kits, DIY boards using genuine FTDI. |
| FTDI FT232H | 0403:6014 | High-speed FTDI variant; behaves identically to FT232R at 115200 baud. |
| Prolific PL2303 | 067B:2303 | Common on legacy Arduino-clone boards. |
| Silicon Labs CP2104 | 10C4:EA60 | Compact, low-power, frequently shipped on ESP32 dev kits when the ESP isn’t routing serial directly. |
LumaSync scans the OS’s serial port list, matches against these VID:PIDs, and rejects anything that isn’t a USB-class endpoint up-front (PORT_UNSUPPORTED) — so Bluetooth virtual ports like /dev/cu.Bluetooth-Incoming-Port on macOS, PCI / motherboard serial, and “Unknown”-classed ports are filtered out before they can be opened. If your controller reports a different USB VID:PID, the Device panel flags it manual_required — you can still connect it by pointing at the port explicitly.
Strip chip type — WS2812B vs SK6812 RGBW
Each connected USB controller has a chip type selector under Settings → Device → Strip chip:
- WS2812B (RGB, 24 bits per pixel) — the default for the vast majority of ambilight kits. Three bytes per LED on the wire.
- SK6812 RGBW (RGB + dedicated white, 32 bits per pixel) — adds a true-white channel. LumaSync’s host-side encoder derives W with the standard
W = min(R, G, B)extraction so RGB stays accurate while the white LED carries the achromatic component. Four bytes per LED on the wire.
The selection is persisted per controller, so a WS2812B strip on one port and an SK6812 RGBW strip on another both work simultaneously.
How to check what you have
macOS
ioreg -p IOUSB -l -w 0 | grep -iE 'idVendor|idProduct|CH34|FT232|PL2303|CP210'
Look for 0x1a86 (WCH / CH340 / CH341), 0x0403 (FTDI), 0x067b (Prolific), or 0x10c4 (Silicon Labs) in the vendor field.
Windows
Device Manager → Ports (COM & LPT) — the device name usually spells out the chipset:
- “USB-SERIAL CH340 (COM3)” → CH340
- “USB Serial Port (COM4)” → FTDI; Properties → Details → Hardware IDs shows
VID_0403&PID_6001orVID_0403&PID_6014. - “Prolific USB-to-Serial Comm Port” → PL2303
- “Silicon Labs CP210x USB to UART Bridge” → CP2104
Linux
lsusb | grep -iE '1a86|0403|067b|10c4'
And the serial port is typically /dev/ttyUSB0 once the kernel driver loads (ch341 for CH340 / CH341, ftdi_sio for FTDI, pl2303 for Prolific, cp210x for Silicon Labs).
Drivers
- macOS 13+: all six chipsets work with bundled drivers. No third-party install needed.
- Windows 10/11: CH340 / CH341 drivers sometimes need a manual install from WCH’s website (search “CH340 driver”). FTDI, Prolific, and Silicon Labs drivers install automatically through Windows Update.
- Linux: kernel ships all four drivers (
ch341,ftdi_sio,pl2303,cp210x) since forever. If/dev/ttyUSB0doesn’t appear, your user probably isn’t in thedialoutgroup:sudo usermod -aG dialout $USERthen log out and back in.
Firmware on the controller
The controller needs to run LumaSync v1 firmware at 115200 baud — see Serial protocol for the full wire spec.
- A companion reference sketch will ship alongside the firmware companion repo; until then, the serial-protocol page has the byte-level format so you can port or write your own (~40 lines of Arduino code).
- Most “ambilight USB kit” marketplace products ship pre-flashed with Adalight firmware. From v1.4, LumaSync includes an opt-in Adalight encoder profile — pick “Firmware profile: LumaSync v1 | Adalight” in Settings → Device, and LumaSync emits the legacy Adalight framing instead of its native v1 frame. Alternatively, reflash the controller with LumaSync v1 firmware.
- Don’t change the baud rate from 115200. LumaSync hard-codes it for the handshake, and most firmware ships at 115200 by default.
”My controller isn’t on the list”
The auto-detect list covers the vast majority of marketplace ambilight kits and ESP32 dev boards. If your chip is something else (e.g. CP2102, WCH CH9102) but is still a standard USB-to-serial bridge at 115200 baud:
- Plug it in and note the device path (macOS:
ls /dev/tty.usbserial*; Linux:ls /dev/ttyUSB*; Windows: Device Manager → Ports). - Settings → Device → Enter port manually.
- Paste the path. LumaSync rejects non-USB endpoints up-front, so virtual / Bluetooth / PCI ports won’t be accepted. For an actual USB chip it attempts the LumaSync v1 handshake and connects if the firmware responds.
Adding the chipset to the auto-detect list requires a code change in the shared contracts — please open an issue with the VID:PID if you’d like it bundled.
Related
- WLED bridge — drive ESP32 / ESP8266 boards over Wi-Fi instead of USB
- Serial protocol — what goes over the wire
- LED calibration — once connected, map the strip to your screen
- USB troubleshooting