Skip to main content

Overview

The DMX USB plugin provides support for USB-to-DMX interfaces from various manufacturers. It handles device detection, initialization, and data transmission for both input and output operations.
The plugin name as reported by QLC+ is “DMX USB”

Capabilities

The DMX USB plugin supports:
  • Output - Send DMX data to fixtures
  • Input - Receive DMX data from other sources
  • RDM - Remote Device Management (device-dependent)

Supported Devices

ENTTEC Devices

DMX USB Pro

Professional USB-to-DMX interface with RDM support

DMX USB Pro Mk2

Dual DMX output, 1 input, MIDI I/O

Open DMX USB

Entry-level output-only interface

DMXKing Devices

ultraDMX Pro

High-performance 2 output + 1 input interface

Other Supported Hardware

  • Eurolite USB DMX512 Pro - Output interface
  • Vince USB-DMX512 - TX/RX interface
  • DMX4ALL - Output-only interface
  • usbdmx.com - Legacy interface support
See the ENTTEC and DMXKing pages for device-specific details.

Widget Types

The plugin recognizes different widget types from the DMXUSBWidget base class:
enum Type
{
    ProRXTX,    // Enttec Pro widget (TX/RX)
    OpenTX,     // Enttec Open widget (TX only)
    OpenRX,     // FTDI DMX widget (RX only)
    ProMk2,     // Enttec Pro Mk2 (2 TX, 1 RX, MIDI)
    UltraPro,   // DMXKing Ultra Pro (2 TX, 1 RX)
    DMX4ALL,    // DMX4ALL widget (TX only)
    VinceTX,    // Vince USB-DMX512 (TX)
    Eurolite,   // Eurolite USB DMX512 Pro
    USBDMXLegacy // usbdmx.com legacy interface
};

Configuration

The plugin supports configuration through the QLC+ interface.

Device Detection

Devices are automatically detected when:
  • QLC+ starts
  • The plugin is initialized
  • USB hotplug events occur (device connected/disconnected)
bool rescanWidgets();  // Manually trigger device scan

Hotplug Support

The plugin automatically detects USB device changes:
public slots:
    void slotDeviceAdded(uint vid, uint pid);    // Device connected
    void slotDeviceRemoved(uint vid, uint pid);  // Device disconnected
When a device is connected or disconnected, the plugin automatically updates its configuration and notifies QLC+ via the configurationChanged() signal.

Hardware Drivers

The plugin supports three different USB driver interfaces:

FTDI D2XX (FTD2XX)

Propriety FTDI driver for Windows and macOS:
#if defined(FTD2XX)
  #include "ftd2xx-interface.h"
#endif
Pros:
  • High performance
  • Official FTDI support
  • Low latency
Cons:
  • Proprietary (not open source)
  • Conflicts with VCP drivers

libFTDI

Open-source alternative to FTDI’s proprietary driver:
#if defined(LIBFTDI) || defined(LIBFTDI1)
  #include "libftdi-interface.h"
#endif
Pros:
  • Open source
  • Cross-platform
  • No driver conflicts
Cons:
  • Slightly lower performance than D2XX

QtSerialPort (QTSERIAL)

Qt’s built-in serial port library:
#if defined(QTSERIAL)
  #include "qtserial-interface.h"
#endif
Pros:
  • No external dependencies
  • Cross-platform
  • Modern Qt API
Cons:
  • Limited to serial-compatible devices
Important: FTDI VCP (Virtual COM Port) interface is not directly supported. The plugin requires either D2XX, libFTDI, or QtSerialPort drivers.

Output Configuration

Each USB widget can have multiple output lines:
bool openOutput(quint32 output, quint32 universe);
void closeOutput(quint32 output, quint32 universe);

Writing DMX Data

void writeUniverse(quint32 universe, quint32 output, 
                   const QByteArray& data, bool dataChanged);
Parameters:
  • universe - QLC+ universe index
  • output - Plugin output line number
  • data - DMX channel data (0-512 bytes)
  • dataChanged - Optimization flag indicating if data changed

Output Frequency

DMX output follows the DMX512 specification:
#define DEFAULT_OUTPUT_FREQUENCY 44  // 44 Hz per DMX spec
Some devices allow custom output frequencies:
virtual int outputFrequency();
virtual void setOutputFrequency(int frequency);

Input Configuration

Devices with input capabilities can receive DMX data:
bool openInput(quint32 input, quint32 universe);
void closeInput(quint32 input, quint32 universe);
Received data is reported via signals:
signal void valueChanged(quint32 universe, quint32 input, 
                        quint32 channel, uchar value);

RDM Support

Remote Device Management is supported on compatible hardware:
bool sendRDMCommand(quint32 universe, quint32 line, 
                    uchar command, QVariantList params);
RDM commands include:
  • Discovery - Find RDM-capable devices
  • Get - Read device parameters
  • Set - Write device parameters
Currently, RDM is supported on:
  • ENTTEC DMX USB Pro
  • ENTTEC DMX USB Pro Mk2
  • DMXKing ultraDMX Pro
The device must have supportRDM() returning true.

Multi-Port Widgets

Some widgets support multiple DMX ports:

Port Flags

enum LineFlags
{
    None   = 0,
    DMX    = 1 << 0,      // DMX512 protocol
    MIDI   = 1 << 1,      // MIDI protocol
    Input  = 1 << 2,      // Input capability
    Output = 1 << 3,      // Output capability
    ArtNet_sACN_Forward = 1 << 4  // Network forwarding
};

ENTTEC Pro Mk2

The Pro Mk2 has 5 ports:
  • Port 1: DMX Output
  • Port 2: DMX Output
  • Port 3: DMX Input
  • Port 4: MIDI Output
  • Port 5: MIDI Input

DMXKing ultraDMX Pro

The ultraDMX Pro has 3 ports:
  • Port 1: DMX Output
  • Port 2: DMX Output
  • Port 3: DMX Input

Platform-Specific Notes

Windows

1

Install FTDI D2XX drivers

Download from FTDI website or use the bundled installer
2

Uninstall VCP drivers

D2XX and VCP drivers cannot coexist
3

Connect device

QLC+ should automatically detect the device

Linux

# Add user to dialout group for serial port access
sudo usermod -a -G dialout $USER

# Install libftdi (if using libFTDI driver)
sudo apt-get install libftdi1

# Logout and login for group changes to take effect

macOS

Drivers are typically included with QLC+ or automatically installed via FTDI.
macOS may require driver signing approval in System Preferences > Security & Privacy.

Troubleshooting

Device Not Detected

Ensure the device is firmly plugged in and powered
Check that the appropriate driver (D2XX, libFTDI, or QtSerialPort) is installed
Ensure your user is in the dialout group
Use the configuration dialog to manually rescan for widgets

No DMX Output

  1. Verify the output is opened in QLC+ (check universe patching)
  2. Check DMX cables and connections
  3. Ensure fixtures are addressed correctly
  4. Test with a known-working fixture

Performance Issues

  • Use D2XX driver for best performance (Windows/macOS)
  • Reduce output frequency if experiencing timing issues
  • Check for USB hub issues (use direct connection if possible)

ENTTEC Devices

Detailed ENTTEC device information

DMXKing Devices

DMXKing-specific configuration

Plugin Overview

Learn about the plugin architecture

Build docs developers (and LLMs) love