Tech Note | Using External Commands Via TCP from Doremi or DOLBY IMS Cinema Servers

Learn how to send external commands to Doremi or Dolby IMS Cinema Servers using TCP for enhanced control and efficiency.

Updated at March 10th, 2025

Information


QSC Q-SYS Core Processors can be set up to accept external commands from different media servers, including those made by Doremi and Dolby IMS. This technical note describes how to make use of this ability for Doremi and Dolby IMS servers only, as they may require extra characters to be added. The media network will be set up in a way that AES67 traffic is on the Core processor’s LAN A, while management traffic, including commands, flows on LAN B.

Named Controls Enabled for External Control

The Q-SYS design must have Named Controls set up, and they must be made available for external control. See the External Control Protocol (ECP) > Named Controls topic in the Q-SYS Help for details. The external commands from the media server will be TCP packets to Port 1702 on LAN B. The server will have to be configured to send its commands to this port on the core processor’s IP address.

Command Format

All commands and responses end with the End of Message (EOM) character, <LF> (0x0A). The Core processor will not start parsing and executing a command until it also receives the EOM.

The Core processor will ignore <CR> (0x0D) if it immediately precedes the EOM. This allows you to use Telnet for testing and debugging, because pressing Enter produces the two-character string <CR><LF> (carriage return + line feed). It also allows you to execute commands through your computer using a terminal program such as PuTTY.

The Core processor will terminate all responses with <CR><LF>. This is useful for testing and debugging because each response will therefore appear as a separate line in Telnet. But this also requires that the client (in this case, the media server) must ignore the <CR> character.

If a command contains extra arguments before the EOM, the Core processor’s response will be a bad_command error message. 

For example:

cg text extra
-> bad_command "expected EOM"

Note

(cg = Control Get)

 

A string argument may contain an <LF> and/or a <CR> character, but they must be coded differently so they will be interpreted correctly by the Core processor:

\n = <LF>
\r = <CR>

For example:

cg text
-> cv "text" "" 0 0
css text "multi\r\nline (this will show as two lines of text in the GUI)
-> cv "text" "multi\r\nline" 0 0

The Doremi and Dolby IMS servers and some other external devices use specific characters for specific functions. For example, Doremi advises:

  • Use \r to send a carriage return at the end of a string defined for a raw device.
  • Use \t to insert a tab in an automation string.
  • Use \w to insert a short wait in a command.

The proper structure of a command line from a Doremi or Dolby IMS server to the Core processor should therefore be this:

\w 'command_string' syntax\EOM

For example, if your Named Control in the Q-SYS design is a toggle button called mute, a typical command might be:

\wcsv mute 1\n

Note

(csv = Control Set Value)

 

IMS3000: Set Up the Core Processor as a Raw Device in the Server

Set up the Q-SYS Core processor in the device manager of the server's software. The example below depicts the IMS3000 Device Manager:

Use the server's macro editor to build a library of commands for the Core processor. Each command uses one or more messages associated with Named Controls in the Core processor.

 
 

Doremi Servers: Set Up the Core Processor as a Raw Device in the Server

Set up the Q-SYS Core processor in the device manager of the server's software. The example below depicts the Doremi Device Manager.

Use the server's macro editor to build a library of commands for the Core processor. Each command uses one or more messages associated with Named Controls in the Core processor.