Skip to content

SK6812 RGBW

SK6812RGBW addressable RGBW LED strip: the WS2812-family single-wire protocol with 32 bits per LED.

Live catalog

Prefer labwired_describe with the catalog id over guessing pins or addresses.

Status at a glance

Aspect Status
Catalog id sk6812
Bus Single-wire NRZ (GPIO observer)
Address —
Datasheet OPSCO SK6812RGBW SPC/SK6812RGBW Rev. 01: §10 timing, §13 32-bit data structure
Source configs/devices/sk6812.yaml (declarative, no Rust model)
Tier smoke-proven (register-level tests: crates/core/tests/parts_batch5.rs)

Pins / attachment

Pin / net Role
DIN data_pin
DO Cascade (not modelled)
VDD/GND Power (digital twin)

Support matrix

Behavior Status Notes
Bit decode by HIGH duration (450 ns threshold) ✅ T0H 0.3 µs / T1H 0.6 µs
32 bits per LED: R, G, B, W ✅ white byte on each pixel
Latch on ≥ 50 µs low (Trst ≥ 80 µs) ✅
Artifact sk6812_rgbw, 4 bytes per LED, lit_pixels counts W ✅
Luminance, current, cascade delay ❌

Stimulus

None — the stimulus is the firmware's own edge timing.

How to run

  1. Place the part and an MCU in Playground, or add it to a system YAML:
    external_devices:
      - id: "sk6812"
        type: "sk6812"
        connection: "gpio"
        config:
          data_pin: "GPIO48"
    
  2. Agent: labwired_list → labwired_describe id=sk6812 → wire → labwired_validate → labwired_run / labwired_verify.
  3. Register-level smoke: cargo test -p labwired-core --test parts_batch5 — a two-LED frame at the datasheet timing (one LED lit by W alone) decoded to its wire bytes plus the artifact; the negative control runs the same check against the 24-bit WS2812 decoder and a strip on another pad, and both must fail. The same file's negative control proves the check fails against a stand-in that answers only 0x00 or only 0xFF.

Limitations

  • Wire order is published verbatim (R, G, B, W per the datasheet); strips with a G-R-B-W die order publish G first.

See the YAML header for the full datasheet trace and every named approximation.