This document describes a ConMon control protocol that uses a simple pseudo GPIO interface to manipulate control points on an AudioScience Dante Iyo. It also outlines how status returns work.

The control protocol is defined for a 32 input and 32 output Iyo Dante device. Devices that have fewer inputs and outputs use the same ConMon control layout, but ignore controls that do not apply.

The Dante Iyo devices do not support Preset Save and Restore, but any settings made are restored after a power cycle.

Throughout this document IYO is used to mean and Iyo Dante device with a Dante module installed.

ConMon Protocol

Header Structure

This section is reproduced here from Symetrix document ComMon_Control_Interface_V2.doc.

What we refer to below as the “header” is actually the first few bytes of the message body or payload in terms of Audinate’s terminology. It does not include the Dante “opaque” header. It consists of a 32-bit message type identifier field, 16-bit header version, 16-bit message length, and 32 bits of reserved data.

uint16 message_version;	// 0x0001 for the first AudioScience version
uint16 message_type;	// pseudo-GPIO command/response = 0x8000, asynchronous response = 0x8001
uint16 header_version;	// 0x0000 for now
uint16 byte_count;	// number of bytes in message, including this header
uint32 reserved;	// future expansion, set to zero
char data[];	        // payload data

For pseudo-GPIO messages, the payload data looks like this:

uint16 gpio_count;	// number of 32-bit GPIO mask/value pairs in this message
uint16 gpio_offset;	// offset into the total number of 32-bit GPIO words supported by this device
uint32 mask0;	        // mask of values that are “significant” in this packet (active high)
uint32 value0;	        // values of the bits that are set to 0x1 in the mask
uint32 mask1;	        // similar for words 1 through N
uint32 value1;
    …
uint32 maskN;
uint32 valueN;
Note
gpio_offset is typically 0 but can be set to a non-zero offset to address a subset of the complete address space.
Note
All fields are in network byte order. Hence macros such as ntohs() and ntohl() may be necessary.

The offset field provides a way to expand to more GPIO words than can fit into a single 500-byte packet. (Ultimo limits all packets to 500 bytes.) It is not anticipated that this will be needed, but is added to match the Dante GPIO command set. It could also be used to change just word 1, for example. This field is unused by the IYO.

An identical packet format is used for communication in both directions. When a ConMon Control interface wishes to change a parameter, it sends a message type 0x8000 with the appropriate mask bits set. The IYO responds with the complete status, with mask bits set for each parameter that is valid. For example, the bits for things such as presets would not be set, but most everything else (phantom, switch state, LED status, version, etc.) would be set. This creates a way for a ConMon Control interface to query the complete device state. It could send a command with mask with all zeros, and would receive the complete status in return.

Asynchronous responses can be sent from the IYO to a ConMon Control interface. The main use for these is switch changes. Asynchronous changes are indicated with message type 0x8001. The mask field will indicate what value was changed. (It may be possible to integrate both responses and asynchronous changes into a single 0x8000 message. But it seems like differentiating these will simplify things and is more consistent with the Audinate query/status message pair system.)

Word and bit definitions

Note
Direction is from the perspective of the IYO ConMon device.
Table 1. Word 0 bit definitions - Control
Bit Usage Direction

0

Asynchronous response enable

Input

1

Flash/Find Unit (turns off after ~8 seconds)

Input

2

Reserved

3

Reserved

4

Reserved

5

Reserved

6

Reserved

7

Reserved

8..15

Minor version number as 8-bit value

Output

16..23

Major version number as 8-bit value

Output

24..31

LED brightness (percent)

Input

Note
Valid LED brightness values are 25, 50, 75, 100 (percent)
Table 2. Word 1 bit definitions - Device Information
Bit Usage Direction

0-15

AudioScience Adapter Type

Output

16..23

Audio Input Channel Count

Output

24..31

Audio Output Channel Count

Output

Table 3. Word 2 bit definitions - Phantom Power
Bit Usage Direction

0

Phantom Power Channel 1

Input

1

Phantom Power Channel 2

Input

2

Phantom Power Channel 3

Input

3

Phantom Power Channel 4

Input

4

Phantom Power Channel 5

Input

5

Phantom Power Channel 6

Input

6

Phantom Power Channel 7

Input

7

Phantom Power Channel 8

Input

8

Phantom Power Channel 9

Input

9

Phantom Power Channel 10

Input

10

Phantom Power Channel 11

Input

11

Phantom Power Channel 12

Input

12

Phantom Power Channel 13

Input

13

Phantom Power Channel 14

Input

14

Phantom Power Channel 15

Input

15

Phantom Power Channel 16

Input

16

Phantom Power Channel 17

Input

17

Phantom Power Channel 18

Input

18

Phantom Power Channel 19

Input

19

Phantom Power Channel 20

Input

20

Phantom Power Channel 21

Input

21

Phantom Power Channel 22

Input

22

Phantom Power Channel 23

Input

23

Phantom Power Channel 24

Input

24

Phantom Power Channel 25

Input

25

Phantom Power Channel 26

Input

26

Phantom Power Channel 27

Input

26

Phantom Power Channel 28

Input

28

Phantom Power Channel 29

Input

29

Phantom Power Channel 30

Input

30

Phantom Power Channel 31

Input

31

Phantom Power Channel 32

Input

Table 4. Word 3 bit definitions - Input Mute
Bit Usage Direction

0

Input Mute Channel 1

Input

1

Input Mute Channel 2

Input

2

Input Mute Channel 3

Input

3

Input Mute Channel 4

Input

4

Input Mute Channel 5

Input

5

Input Mute Channel 6

Input

6

Input Mute Channel 7

Input

7

Input Mute Channel 8

Input

8

Input Mute Channel 9

Input

9

Input Mute Channel 10

Input

10

Input Mute Channel 11

Input

11

Input Mute Channel 12

Input

12

Input Mute Channel 13

Input

13

Input Mute Channel 14

Input

14

Input Mute Channel 15

Input

15

Input Mute Channel 16

Input

16

Input Mute Channel 17

Input

17

Input Mute Channel 18

Input

18

Input Mute Channel 19

Input

19

Input Mute Channel 20

Input

20

Input Mute Channel 21

Input

21

Input Mute Channel 22

Input

22

Input Mute Channel 23

Input

23

Input Mute Channel 24

Input

24

Input Mute Channel 25

Input

25

Input Mute Channel 26

Input

26

Input Mute Channel 27

Input

26

Input Mute Channel 28

Input

28

Input Mute Channel 29

Input

29

Input Mute Channel 30

Input

30

Input Mute Channel 31

Input

31

Input Mute Channel 32

Input

Table 5. Word 4 bit definitions - Input 1-4 Trim
Bit Usage Direction

0-7

Input 1 Trim (signed char) -60..+24dBu

Input

8-15

Input 2 Trim (signed char) -60..+24dBu

Input

16-23

Input 3 Trim (signed char) -60..+24dBu

Input

24-31

Input 4 Trim (signed char) -60..+24dBu

Input

Table 6. Word 5 bit definitions - Input 5-8 Trim
Bit Usage Direction

0-7

Input 5 Trim (signed char) -60..+24dBu

Input

8-15

Input 6 Trim (signed char) -60..+24dBu

Input

16-23

Input 7 Trim (signed char) -60..+24dBu

Input

24-31

Input 8 Trim (signed char) -60..+24dBu

Input

Table 7. Word 6 bit definitions - Input 9-12 Trim
Bit Usage Direction

0-7

Input 9 Trim (signed char) -60..+24dBu

Input

8-15

Input 10 Trim (signed char) -60..+24dBu

Input

16-23

Input 11 Trim (signed char) -60..+24dBu

Input

24-31

Input 12 Trim (signed char) -60..+24dBu

Input

Table 8. Word 7 bit definitions - Input 13-16 Trim
Bit Usage Direction

0-7

Input 13 Trim (signed char) -60..+24dBu

Input

8-15

Input 14 Trim (signed char) -60..+24dBu

Input

16-23

Input 15 Trim (signed char) -60..+24dBu

Input

24-31

Input 16 Trim (signed char) -60..+24dBu

Input

Table 9. Word 8 bit definitions - Input 17-20 Trim
Bit Usage Direction

0-7

Input 17 Trim (signed char) -60..+24dBu

Input

8-15

Input 18 Trim (signed char) -60..+24dBu

Input

16-23

Input 19 Trim (signed char) -60..+24dBu

Input

24-31

Input 20 Trim (signed char) -60..+24dBu

Input

Table 10. Word 9 bit definitions - Input 21-24 Trim
Bit Usage Direction

0-7

Input 21 Trim (signed char) -60..+24dBu

Input

8-15

Input 22 Trim (signed char) -60..+24dBu

Input

16-23

Input 23 Trim (signed char) -60..+24dBu

Input

24-31

Input 24 Trim (signed char) -60..+24dBu

Input

Table 11. Word 10 bit definitions - Input 25-28 Trim
Bit Usage Direction

0-7

Input 25 Trim (signed char) -60..+24dBu

Input

8-15

Input 26 Trim (signed char) -60..+24dBu

Input

16-23

Input 27 Trim (signed char) -60..+24dBu

Input

24-31

Input 28 Trim (signed char) -60..+24dBu

Input

Table 12. Word 11 bit definitions - Input 29-32 Trim
Bit Usage Direction

0-7

Input 29 Trim (signed char) -60..+24dBu

Input

8-15

Input 30 Trim (signed char) -60..+24dBu

Input

16-23

Input 31 Trim (signed char) -60..+24dBu

Input

24-31

Input 32 Trim (signed char) -60..+24dBu

Input

Table 13. Word 12 bit definitions - Output Mute
Bit Usage Direction

0

Output Mute Channel 1

Input

1

Output Mute Channel 2

Input

2

Output Mute Channel 3

Input

3

Output Mute Channel 4

Input

4

Output Mute Channel 5

Input

5

Output Mute Channel 6

Input

6

Output Mute Channel 7

Input

7

Output Mute Channel 8

Input

8

Output Mute Channel 9

Input

9

Output Mute Channel 10

Input

10

Output Mute Channel 11

Input

11

Output Mute Channel 12

Input

12

Output Mute Channel 13

Input

13

Output Mute Channel 14

Input

14

Output Mute Channel 15

Input

15

Output Mute Channel 16

Input

16

Output Mute Channel 17

Input

17

Output Mute Channel 18

Input

18

Output Mute Channel 19

Input

19

Output Mute Channel 20

Input

20

Output Mute Channel 21

Input

21

Output Mute Channel 22

Input

22

Output Mute Channel 23

Input

23

Output Mute Channel 24

Input

24

Output Mute Channel 25

Input

25

Output Mute Channel 26

Input

26

Output Mute Channel 27

Input

26

Output Mute Channel 28

Input

28

Output Mute Channel 29

Input

29

Output Mute Channel 30

Input

30

Output Mute Channel 31

Input

31

Output Mute Channel 32

Input

Table 14. Word 13 bit definitions - Output 1-4 Trim
Bit Usage Direction

0-7

Output 1 Trim (signed char) -10..+24dBu

Input

8-15

Output 2 Trim (signed char) -10..+24dBu

Input

16-23

Output 3 Trim (signed char) -10..+24dBu

Input

24-31

Output 4 Trim (signed char) -10..+24dBu

Input

Table 15. Word 14 bit definitions - Output 5-8 Trim
Bit Usage Direction

0-7

Output 5 Trim (signed char) -10..+24dBu

Input

8-15

Output 6 Trim (signed char) -10..+24dBu

Input

16-23

Output 7 Trim (signed char) -10..+24dBu

Input

24-31

Output 8 Trim (signed char) -10..+24dBu

Input

Table 16. Word 15 bit definitions - Input 9-12 Output
Bit Usage Direction

0-7

Input 9 Output (signed char) -10..+24dBu

Input

8-15

Input 10 Output (signed char) -10..+24dBu

Input

16-23

Input 11 Output (signed char) -10..+24dBu

Input

24-31

Input 12 Output (signed char) -10..+24dBu

Input

Table 17. Word 16 bit definitions - Input 13-16 Output
Bit Usage Direction

0-7

Input 13 Output (signed char) -10..+24dBu

Input

8-15

Input 14 Output (signed char) -10..+24dBu

Input

16-23

Input 15 Output (signed char) -10..+24dBu

Input

24-31

Input 16 Output (signed char) -10..+24dBu

Input

Table 18. Word 17 bit definitions - Output 17-20 Trim
Bit Usage Direction

0-7

Input 17 Output (signed char) -10..+24dBu

Input

8-15

Input 18 Output (signed char) -10..+24dBu

Input

16-23

Input 19 Output (signed char) -10..+24dBu

Input

24-31

Input 20 Output (signed char) -10..+24dBu

Input

Table 19. Word 18 bit definitions - Output 21-24 Trim
Bit Usage Direction

0-7

Output 21 Trim (signed char) -10..+24dBu

Input

8-15

Output 22 Trim (signed char) -10..+24dBu

Input

16-23

Output 23 Trim (signed char) -10..+24dBu

Input

24-31

Output 24 Trim (signed char) -10..+24dBu

Input

Table 20. Word 19 bit definitions - Output 25-28 Trim
Bit Usage Direction

0-7

Output 25 Trim (signed char) -10..+24dBu

Input

8-15

Output 26 Trim (signed char) -10..+24dBu

Input

16-23

Output 27 Trim (signed char) -10..+24dBu

Input

24-31

Output 28 Trim (signed char) -10..+24dBu

Input

Table 21. Word 20 bit definitions - Output 29-32 Trim
Bit Usage Direction

0-7

Output 29 Trim (signed char) -10..+24dBu

Input

8-15

Output 30 Trim (signed char) -10..+24dBu

Input

16-23

Output 31 Trim (signed char) -10..+24dBu

Input

24-31

Output 32 Trim (signed char) -10..+24dBu

Input

Total payload size is

21 x 4 x 2 = 168 bytes