Overview
The OS2L (Open Show 2 Light) plugin enables QLC+ to receive control commands from third-party show control software over a TCP network connection. OS2L is designed specifically for integration with professional show control systems like Depence², Capture, Realizzer, and similar visualization software.The plugin name as reported by QLC+ is “OS2L”
Capabilities
The OS2L plugin supports:- Input - Receive commands from show control software
- Infinite - Unlimited channels through hash-based mapping
Protocol Specifications
- Protocol: OS2L (TCP-based)
- Transport: TCP (Transmission Control Protocol)
- Default Port: 9996
- Connection: Server mode (QLC+ listens for connections)
- Message Format: Text-based commands
Architecture
OS2L operates as a TCP server:Connection Flow
Configuration
Custom Parameters
Setting Port
Network Configuration
Server setup:- QLC+ listens on all network interfaces (0.0.0.0)
- Default port: 9996
- Single client connection at a time
- Connect to QLC+ computer’s IP address
- Use configured port (default 9996)
- Send OS2L text commands
Input Configuration
Opening Input
- Plugin creates TCP server
- Binds to configured port
- Starts listening for connections
Connection Management
- Client connects →
slotProcessNewTCPConnection() - Data arrives →
slotProcessTCPPackets() - Client disconnects →
slotHostDisconnected()
Only one client can connect at a time. If a new client connects, the previous connection is closed.
OS2L Command Format
OS2L uses text-based commands:Common Commands
Cue control:Command syntax rules
Command syntax rules
- Commands start with
/ - Categories and commands are case-sensitive
- Parameters separated by spaces
- No quotes needed for single-word parameters
- Newline terminates command
Channel Mapping
OS2L uses hash-based channel mapping:How Hashing Works
- Command received:
/channel/dimmer1 255 - Extract channel name:
dimmer1 - Calculate hash: 16-bit checksum of string
- Map to channel: Hash value becomes QLC+ channel number
- Store mapping: Save in hash map for future lookups
- Emit value:
valueChanged(universe, input, channel, value)
Hash Benefits
Unlimited Channels
Any number of uniquely-named channels
Human-Readable
Use descriptive names like “stage_left_dimmer”
No Pre-Configuration
Channels auto-created on first use
Consistent Mapping
Same name always maps to same channel
Packet Processing
OS2L handles fragmented packets:Packet Assembly
- Data arrives via TCP socket
- Append to buffer - Concatenate with any leftover data
- Find complete commands - Split on newlines
- Process commands - Parse and execute each command
- Store remainder - Keep incomplete command in buffer
Use Cases
Visualization Software
- Depence²
- Capture
- Realizzer
Depence² - Professional 3D visualizationIntegration:
- Configure Depence² to send OS2L commands
- Set QLC+ IP and port 9996
- Map Depence² channels to OS2L commands
- Pre-visualize lighting before programming
- Real-time visualization during show
- Export cue lists to QLC+
Timeline Software
OS2L enables timeline-based control: Applications:- Chamsys MagicQ - Professional console
- GrandMA2/3 - High-end control
- Custom software - DIY show control
- Design show in timeline software
- Program cues and sequences
- Timeline sends OS2L commands to QLC+
- QLC+ executes lighting changes
Custom Integration
OS2L’s simple text format makes custom integration easy: Python example:Network Configuration
Firewall Settings
Allow incoming TCP connections:Network Topology
Same Computer
Configuration:
- Connect to 127.0.0.1 (localhost)
- Port 9996
Local Network
Configuration:
- Connect to QLC+ computer’s IP (e.g., 192.168.1.100)
- Port 9996
- Ensure same subnet
Finding QLC+ IP Address
Windows:Troubleshooting
Connection Refused
Check input is opened
Check input is opened
Verify OS2L input line is opened in QLC+ (universe patched)
Verify port number
Verify port number
Ensure client software uses same port as QLC+ (default 9996)
Check firewall
Check firewall
Temporarily disable firewall to test, then configure proper rules
Verify IP address
Verify IP address
Ensure client connects to correct IP (not 0.0.0.0, but actual IP)
No Data Received
- Verify connection established - Check if TCP connection succeeded
- Monitor network traffic - Use Wireshark to see if data is sent
- Check command format - Ensure commands match OS2L syntax
- Test with telnet:
- Check QLC+ logs - Enable debug logging for plugin
Commands Not Working
- Verify command syntax - OS2L commands are case-sensitive
- Check newlines - Each command must end with
\n - Test simple command - Try
/channel/test 255\n - Monitor QLC+ channels - Check if channels are updating
- Verify universe mapping - Ensure input universe is patched
Connection Drops
Performance Considerations
TCP vs UDP
OS2L uses TCP for reliability: Advantages:- Guaranteed delivery
- Ordered packets
- Connection-oriented
- Suitable for show control commands
- Higher latency than UDP
- Connection overhead
- Not suitable for real-time DMX streaming
Message Rate
OS2L can handle high message rates:- Low priority: 1-10 commands/sec
- Normal: 10-50 commands/sec
- High: 100+ commands/sec
- QLC+ must process each command
- Channel updates take time
- Too many commands can cause lag
Buffer Management
The plugin manages packet buffering:- Commands sent too fast
- QLC+ processing bottleneck
- Network issues
Protocol Extensions
While OS2L is not formally standardized, common extensions:Feedback (Not Supported)
Some software expects feedback:Extended Commands
You can define custom commands:Alternative Protocols
If OS2L doesn’t meet your needs:OSC
More flexible, bidirectional, UDP-based
Art-Net
Real-time DMX streaming over Ethernet
E1.31
Standardized DMX streaming protocol
Related Pages
OSC Plugin
Open Sound Control protocol
Art-Net
DMX over Ethernet
Plugin Overview
Learn about the plugin architecture
