Skip to content

Open Pixel Control (OPC)

Open Pixel Control (OPC) — Lightweight Pixel Protocol

Open Pixel Control (OPC) is a minimal, TCP/IP-based protocol for streaming pixel data to LED controllers. It was designed by Micah Scott for the Fadecandy project and is widely used in creative coding environments.

Fadecandy USB LED controller board

Technical Specifications

ParameterValue
TransportTCP/IP (port 7890 default)
Max pixels per message65,535 bytes (~21,845 RGB pixels)
Max channels256
Command typesSet pixel colors, set color correction, system exclusive
FramingSimple binary header + data payload

Protocol Header Format

ByteFieldDescription
0ChannelOutput channel (0–255)
1Command0 = set pixels, 1 = set color correction, 255 = system exclusive
2–3LengthNumber of data bytes (big-endian, 16-bit)
4+DataPixel data (RGB 0–255 per channel)

A pixel data message for 3 LEDs (RGBRGBRGB) would be: [0, 0, 0, 9, R, G, B, R, G, B, R, G, B]

Comparison with Other Protocols

FeatureOPCArt-NetsACN (E1.31)
TransportTCPUDPUDP
Max pixels per packet~21,845512 (RGB) / 680 (RGBW)512 (RGB) / 680 (RGBW)
Universe/channel support256 channels32,768 universes63,999 universes
Error checkingNone (TCP handles it)NoneCID + sequence numbers
ComplexityVery lowModerateModerate
LatencyLow (TCP overhead)Very lowVery low

Tools That Use OPC

ToolPurpose
FadecandyUSB LED controller with OPC server
ProcessingPixelBender, OPC library for Java sketches
openFrameworksofxOPC addon for C++ creative coding
GlediatorLED matrix control software
PixelControllerWeb-based LED matrix control
OPC Python clientLightweight Python library for LED control

Use Cases

  • Interactive installations — Low latency, easy to integrate with Processing, openFrameworks, TouchDesigner
  • Fadecandy setups — The native protocol for Fadecandy controllers (8 outputs, 512 pixels each)
  • Prototyping — Minimal overhead makes it ideal for quick LED sketches
  • Small-to-medium installations — Up to ~21K pixels per channel without multiplexing

Art-Net vs sACN Comparison →