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:

ChipUSB VID:PIDWhere you’ll find it
CH3401A86:7523Most cheap Arduino-clone ambilight kits; “ambilight USB kit” on the usual marketplaces.
CH3411A86:5523CH340’s sibling; some module vendors label them interchangeably.
FTDI FT232R0403:6001Higher-end kits, DIY boards using genuine FTDI.
FTDI FT232H0403:6014High-speed FTDI variant; behaves identically to FT232R at 115200 baud.
Prolific PL2303067B:2303Common on legacy Arduino-clone boards.
Silicon Labs CP210410C4:EA60Compact, 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 ManagerPorts (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_6001 or VID_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/ttyUSB0 doesn’t appear, your user probably isn’t in the dialout group: sudo usermod -aG dialout $USER then 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:

  1. Plug it in and note the device path (macOS: ls /dev/tty.usbserial*; Linux: ls /dev/ttyUSB*; Windows: Device Manager → Ports).
  2. Settings → DeviceEnter port manually.
  3. 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.

Type to search. Up and down arrows to navigate, Enter to open.