Communications Protocol | RS-232 | IP ()

28 Kaysal Court, Armonk, NY 10504
914 . 598 .1647
Communications Protocol
For the Mirage Audio System
Data acquisition and control of Autonomic equipment is
performed by home automation systems or personal computers
using a special protocol developed by Autonomic. This document
explains the protocol itself and the low level transport.
1. Transport
1.1 RS-232
The cable must be a straight wired, Only RX, TX & 0V (pin 5) are used. Baud Rate = 9600.
Each byte in the command is encoded into two ASCII encoded hexadecimal characters. A line feed signals the end of the command. The carriage
return that is typically used in combination with the line feed is optional and is ignored. XON and XOFF (characters 11h and 13h) are used for
flow control where the XOFF state times out after approximately 1.5 seconds in order to prevent an inadvertent system lock up.
If the device that is receiving a command is capable of transmission, it should transmit the command back to the originator. This is required
because of connection issues with RS-232. For example a PC’s TX is connected to an amplifier’s RX and the amplifier’s TX is connected to a
keypad and the PC’s RX. For the PC to communicate successfully with the keypad, everything that arrives on the amplifier’s RX must be sent
back out of its TX. To avoid possible endless cycles, the device originally sending a command must ignore the command if it is received again.
1.2 USB
Previously the CDC class (abstract control model) was employed to emulate RS-232, enabling software to interact with devices supporting USB
theoretically without need of change. However from the Mirage M-800 Amplifier onwards a proprietary protocol is in use.
1.3 Mirage Amplifier Bus
The Mirage bus is based on the I²C bus and allows multiple devices to be attached to a common bus. All transmissions are performed using
multi-master mode and take the following form:
<start bit><address byte><command data><stop bit>
The address byte is a requirement of the I²C bus. 7 bit address mode is used and the R/W bit is always 0 (always writing). Address 30h is used
for the Mirage Amplifier protocol (02h was used by older devices until this address was declared as being reserved). Other addresses are used
such as 3Ah (for Ethernet packets) and 20h (for transmission preambles to ensure collision free access to the bus). Other devices using
different protocols can be connected to the Mirage Amplifier bus if they use different addresses and support multi-master mode.
1.4 Infrared
The infrared interface allows Mirage Amplifier devices to be controlled using the Mirage Amplifier Communications Protocol. It is not suitable
for two-way communications unless combined with RS232 or the Mirage Amplifier bus.
The modulation frequency is 44.1 kHz and all bursts of IR are 1ms in length. The length of the pauses between the IR bursts is what contains
the data. The first pause is 3ms and represents the start bit. All following pauses are either 1ms or 2ms, which represent logic 0 and logic 1
respectively. Each IR stream takes the following form:
Converge with a higher standard
<start bit><product ID><command data><checksum><stop bit>
The product ID is a three bit code and is 001 for Mirage Amplifiers.
The checksum is built using the command data: the sum of each byte in the command plus the checksum must equal zero. The stop bit is
represented by a 15ms pause before there is any further IR activity. A receiver can however decide as soon as 4ms after IR activity has ceased
that the packet is complete.
1.5 Ethernet
On Ethernet equiped devices, commands can also be sent via Ethernet in the same format as RS232 commands to TCP port 17037. However
unlike RS232, commands sent to the device are not echoed back. A telnet session can be used for experimentation purposes.
2. Command Protocol
Command structure: <command><zone>[<data>[<data>[...]]]
The command byte can have the following values:
(Hex Value)
No Operation
Source Selection
Request Protocol Version
Send All Parameters
Amplifier special features
Maximum Volume Limit
Unsupported IR command received
Volume Up
Volume Down
Amp Source - Keypad Bank Assignment
Request Device information
Preset Parameters
Zone Name
Preamplifier Volume Mode
Preset Selection / Status
Report Key press in preset
Request amp source - Keypad Bank Assignments
Converge with a higher standard
Request device log entry
Set time zone, date and time
Source Name
Preset Name
Request preset name
Source Up
Source Down
Zone assignment
Request zone assignments
Link zones
Audio delay
Source Gain
Page Preset 2 Selection
Clipping notification
IR routing assignments
Party mode select/deselect
Party mode configuration
Zone name request
Request extended device information
Network settings
List sources
Report message
Request time
Settings management
PCM stream management
Zone gain
Source specific metadata
Source specific metadata request
60 – 6F
Reserved (undocumented commands)
70 – 7F
User defined commands
80 + command value
Command Response
The commands are also used as notifications. If an amplifier is switched on by pressing the standby button on the amplifier’s front panel, it
will notify the other devices by sending the standby command. Any other amplifiers on the same zone will take the notification as a command
and also switch on. This can be used for synchronising two amplifiers.
This byte is used for checking if the command is applicable to the device receiving the command. If the command is applicable, it will be
used for optionally selecting a “sub-device”, e.g. a bank or part of a device.
The lower 5 bits of the zone byte equal 00 – 1F for zones 0 to 31. The upper 3 bits can represent a sub-zone or extended zones. FF is used for
addressing all zones and can be used for turning all amplifiers on.
Converge with a higher standard
Bits 7 is set for extended zones 32..95. Bit 5..7 represent three zone ranges:
000 common zone range (0..31)
100 extended zones 32..63
110 extended zones 64..95
Some commands use a unique 16 bit device ID, which is assigned to the device during manufacturing. The number of data bytes is dependent
on the command. The maximum number of data bytes should be restricted to 20. If a multi-byte parameter containing large numbers (e.g. the
device ID) then the left most bytes in the string (the ones received first) are the most significant (big-endian format).
If fewer than the expected number of data bytes are received, the Mirage M-800 Amplifier and later devices treat the command as a request
and will return the requested data.
Data field length
Content ( Hex value )
( 01 )
1 byte
00 Standby A off
01 Standby A on
04 Toggle standby A
( 02 )
1 byte
00 mute
01 unmute
02 toggle mute
( 03 )
1 byte
00 select S5 (CD)
01 select S6 (Tape)
02 select S7 (Tuner)
03 select S4 (Aux)
04 select S8 (Utility)
05 select S1 (SAT)
06 select S2 (DVD)
07 select S3 (Video)
08 .. 0F select S9..S16
10 Reserved
11 Reserved
12 Media Player
13 Reserved
Bit 5 is reserved and should be set to 0.
Bit 6 is set if Video source is not to be switched, i.e.
40 select S5 (CD) audio only
41 select S6 (Tape) audio only
42 select S7 (Tuner) audio only
43 select S4 (Aux) audio only
44 select S8 (Utility) audio only
45 select S1 (SAT) audio only
46 select S2 (DVD) audio only
47 select S3 (Video) audio only
48 .. 4F select S9..S16 audio only
Bit 7 is set to turn the zone on.
( 04 )
1 byte
00 – A0 ( 0 – 160 )
Decimal value is only in increments of 4.
Converge with a higher standard
( 05 )
1 byte
F4 – 0C ( -12 – 12 )
( 06 )
1 byte
F4 – 0C ( -12 – 12 )
( 07 )
1 byte
EC – 14 ( -20 – 20 )
( 08 )
0 bytes in command,
1 byte in response
01 in response for the current version.
Send All
( 09 )
0 bytes
Do not send to all zones because this will generate an unreasonable amount of
traffic, particularly on large amplifier stacks.
( 0C )
1 byte
Bit 0 = loudness enable
Bits 1..3 = not used
Bit 4 = Preamplifier controls Ampon signal when set, otherwise the amplifier
controls Ampon.
Bit 5 = Ampon control supported when set.
Bit 6 = Sound played back on page preset. Obsolete, use the flag in the Preset
Parameters command.
Bit 7 = Sound playback enable supported when set (deprecated).
( 0D )
1 byte
00 – A0 ( 0 – 160 )
IR command
( 10 )
1 byte
The command received. This can be used for controlling other devices using the
amplifier as an IR receiver.
Volume Up
( 11 )
0 bytes
00 ( value ignored )
Volume Down
( 12 )
0 bytes
00 ( value ignored )
Amp Source Keypad Bank
3 bytes
First two bytes are the device ID followed by one byte where the upper 4 bits
is the amplifier source and the lower 4 bits are the keypad bank. If the upper 4
bits are all set ( F ), the assignment is deleted for the bank.
This command is deprecated – try to use requests for specific parameters if
( 13 )
Converge with a higher standard
( 14 )
0 or 1 bytes in
5+ bytes in response
Request: if a data byte exists, bit 0 is set if devices should not reply on the
Mirage Amplifier bus. This enables information retrieval of devices directly
connected to a serial port, usb, etc. If bit 1 is set devices should only reply on
the port that received that command. This prevents flooding the stack with
responses. If bit 2 is set all zones on the unit responding are listed after the data.
Response: First byte is the device type. Second byte is the firmware version.
Third byte is device specific information. Fourth & firth bytes are a unique ID for
the device (MSD first). If more than 5 bytes are returned, the remaining data are
specific to the type of device. Zones are added to the response if bit 2 is set in
the options byte in the request.
( 1B )
12 - 24 bytes
Like the preset select command, this command should be sent to all zones.
The first byte is the preset to set up using the same constants as the preset
select command, where preset 1 = 2. 10h can be used for specifying settings for
the preset used by the second page contact.
Three bytes for the auto activation schedule in local time:
• Hour (0..23)
• Minute (0..59)
• Weekdays (bit 0 = Sun, bit 1 = Mon, .., bit 6 = Sat). Bit 7 is set to deactivate
auto activation.
8 bytes for the zone selection: lower 32 bits (last 4 bytes) represent the 32 zones
for the amp rooms, upper 32 bits represent the 32 zones for the Preamp rooms.
Optionally 3 more bytes for DND (do not disturb). First two bytes are the time
window (time from, time to) where bits 2..6 represent the hour and bits 0..1
represent the minute in quarter hour resolution (minute in {00, 15, 30, 45}).
The third byte represents the preset to substitute when inside the time window
(where preset 1 = 2). Set to 0 when DND is unused. DND is only supported for
page presets.
Optionally 1 byte for flags:
• Bits 0..1 preset sound selection (4 sounds)
• Bit 2 enables sound playback on preset activation by contact closure (page
• Bit 3 enables sound playback on preset activation by Preset Selection
• Bit 4 enables sound looping.
• Bit 5 disables preset macro transmission.
Optionally 8 bytes for zone 32..95 selection.
Zone name
( 1C )
Data field contains the string. Character encoding is UTF-8.
volume mode
( 1D )
1 byte
A signed number in the same units as the volume command. –128 ( 80h ) represents independent mode, otherwise tracking mode is specified and the offset is
equal to Preamp – Amp volume.
Converge with a higher standard
Selection /
( 1E )
1 or 2 bytes
Supports up to 15 presets (including page preset) and is intended to always be
transmitted to all zones (zone byte should be FF).
1st byte commands the preset selection:
00 = default (page preset input selects between standard and page preset
01 = force page preset mode
02 = select preset 1
03 = select preset 2
0F = select preset 15
10 = select preset assigned to the second page contact
Bit 7 selects the preset load function, which loads the preset settings but stays in
non-preset mode.
Bit 6 selects sound playback.
Bit 5 locks all settings when set. Prevents inadvertent changes to the preset via
front panel, IR or otherwise.
2nd optional byte specifies the current preset status:
00 = standard mode
01 = page preset selected
02 = preset 1 selected
03 = preset 2 selected
FF = unspecified
Report key
press in preset
( 1F )
1 byte
Same as the “Emulate key press on Keypad” command except that this is only
used for reporting the keys in a preset macro for information only.
Request amp
source to
keypad bank
( 21 )
2 bytes
Device ID. The keypad then sends all its assignments.
Converge with a higher standard
device log
( 22 )
3 - 5 bytes in request,
11 or more bytes in
response when entry
exists, 4 bytes when
Request contains:
• Device ID (2 bytes)
• Log entry ID low byte
• Log entry ID high byte (optional)
• Number of entries to return (optional)
Responses are returned with:
• Device ID (2 bytes)
• Log entry ID low byte (1 byte)
• Log entry type (1 byte), FFh for no entry
• Hour (0..23)
• Minute (0..59)
• Second (0..59)
• Weekday (0 = Sun, 1 = Mon, .., 6 = Sat). Lower 3 bits only.
• Day (1..31)
• Month (1..12)
• Year (0..255, where 0 = 2000)
Further bytes may be sent as parameters. The number and format depend on
the log entry type. Multiple responses are returned if the request asks for more
than 1 log entry.
Set time
zone, date
and time
( 27 )
19 bytes
• Standard time offset in minutes (2 bytes)
• Daylight saving time (DST) offset in minutes (2 bytes)
• DST to standard time changeover month (1..12)
• DST to standard time changeover week (1 = first week in month, 2 = second
week, 5 = last week in month)
• DST to standard time changeover weekday (0 = Sun, 1 = Mon, .., 6 = Sat)
• DST to standard time changeover hour (0..23)
• Standard time to DST changeover month
• Standard time to DST changeover week
• Standard time to DST changeover weekday
• Standard time to DST changeover hour
• Hour (0..23). Bit 7 set if in DST, bit 6 set if standard time. If neither bit is set,
time is local time (either DST or standard time).
• Minute (0..59)
• Second (0..59)
• Weekday (0 = Sun, 1 = Mon, .., 6 = Sat). Lower 3 bits only.
• Day (1..31)
• Month (1..12)
• Year (0..255, where 0 = 2000)
The offset values are 16 bit signed values in minutes (high byte first). The following rule applies:
local time = UTC + offset
If no daylight saving applies, all changeover parameters are 0. Changeover times
are in the standard local time.
Converge with a higher standard
Source Name
( 29 )
Min 4 bytes
First byte is the source ID (00 – 0B). Bytes 2 – 4 represent a short name of up
to three characters. If the name is shorter than three characters, the remaining
bytes are set to 00. After the short name an optional long name can be specified. Character encoding is UTF-8.
Preset Name
( 2A )
Min 1 byte
The first byte is the preset to set up using the same constants as the preset
select command, where preset 1 = 2. Following bytes is the preset name. Character encoding is UTF-8.
preset name
( 2B )
1 byte
The preset to set up using the same constants as the preset select command,
where preset 1 = 2. The response is the “Preset Name” command.
Source Up
( 2C )
1 byte
00 audio source up with video source sync
01 audio source up
02 video source up
Source Down
( 2D )
1 byte
00 audio source down with video source sync
01 audio source down
02 video source down
Zone assignment
( 2E )
2+ bytes
Device ID followed by a list of zone numbers
Request zone
( 2F )
0 or 2 bytes in
request, n bytes in
Request: device ID of device to request the zones from. If no device ID is specified, the device receiving the command will answer and the command will not
be relayed to another interface.
Response: device ID followed by a list of zone numbers.
Link zones
( 30 )
2+ bytes
Replaces the “link zone pair” command (0F) and can link any number of zones
into a group. This command should be sent to all zones (zone byte = FF).
The first byte specifies the options for the zone link group:
• Bit 0 is set for source linking
• Bit 1 is set for volume linking
• Bit 2 is set for standby (power on/off) linking
• Bit 7 is set if the list of zones is preceded by a 4 byte group identifier. Group
identifiers are not enabled in all amplifier firmwares.
• Bit 6 is reserved for internal purposes.
• Bit 5 can be set in requests for suppressing responses for ungrouped zones.
Sending 30FF20 will request only the grouped zones.
The remaining bytes list the zones in the group and are in {0..95}. Zones can
be removed from the group by defining new groups which exclude the zone or
by defining groups which contain only the zone to exclude. Similarly if a group
contains {A, B, C, D} and a new group is defined containing {A, C} then {B,
D} will remain in the original group. A zone cannot belong to more than one
group. Zone groupings are not affected by presets.
Audio delay
( 31 )
1 byte
Output delay of audio stream in 5ms steps. 00 = no delay.
Converge with a higher standard
Source Gain
( 32 )
2 bytes
First byte is the source ID (00 – 0B). Second byte is analogue input gain 00 – 12
( 0dB – +18dB ).
Page Preset 2
( 33 )
1 byte
The preset to be selected when the second page contact is closed.
( 34 )
2 bytes
IR routing
( 35 )
6+ bytes
First two bytes is the unit ID.
3 bytes in request
Third byte is the IR source (keypads, bus run, expansion bus, etc) where the first
keypad is 0. The bus run is 4 on the Mirage M-400 Amp and 8 on the Mirage
M-800 Amp. The expansion bus is 5 and 9 on the M-400 and M-800 Amplifiers.
Sent to all zones.
First byte is type of clipping event. The second byte is information pertaining to
the event. The following events are currently defined:
• 01 – analogue input clipped. The following byte represents the source that is
• 02 – analogue input unclipped.
Fourth byte is the zone to monitor for source selection in {0..95}.
Then for each source starting from S1, two bytes which represent a bitmap of IR
output enables. IR output 1 is at bit 0, IR sum output follows bit for last output,
expansion bus follows bit for IR sum output.
If the IR source is the expansion port or bus run, the zone is ignored and only
two bytes for the IR output enables is used.
Sent to all zones.
Party mode
select /
( 36 )
1 byte
00 = deselect party mode (selects standard mode)
01 = select party mode
The party mode selection is stored in presets so that presets can activate or
deactivate this mode.
Sent to all zones.
Party mode
( 37 )
3 bytes
Zone name
( 38 )
0 bytes
First two bytes is the unit ID of the party master. Third byte is the source selected
for its party mode output.
Sent to all zones.
Requests the zone name.
Converge with a higher standard
( 39 )
2 bytes in command,
Command: two bytes for the unit ID.
response length is
device specific
Response for Mirage M-800 Amplifier:
( 3A )
Minimum 3 bytes
Two bytes for the unit ID, followed by setting ID which is followed by the
setting. Setting IDs:
• 4 bytes for 32 bit unit ID where bytes 3-4 match the standard 16 bit unit ID.
• 3 bytes for firmware version: major, minor and beta version (0 for release
• 1 byte current temperature (signed).
• 1 byte peak temperature (signed).
• 4 bytes for IP address.
• 6 bytes for MAC address.
• 3 bytes manufacture date: year (0..255 = 2000..2255), month (1..12), day
• 1 byte flags (bit 0 set when settings are locked)
• 01h = Network name
• 02h = Time server name
• 03h = 1 byte flags where bit 0: 0 = DHCP, 1 = Static, bit 1: 0 = Time server
disabled, 1 = Time server enabled, bit 2: reserved. 16 bytes IP addresses (4
bytes per address): IP address, subnet mask, DNS server, default router.
• 81h = Request network name
• 82h = Request time server name
• 83h = Request IP addresses and flags
Sent to all zones.
List sources
( 3C )
0 bytes to query
Lists the available sources on the zone. Notifications are sent if the available
sources change.
( 40 )
2+ bytes
First byte is message type:
• 00 = Information
• 01 = Error
• 02 = Success
Followed by UTF-8 string. Sent to whichever zones and interfaces are relevant.
Request time
( 41 )
1 byte in request,
7 bytes in response
Requests the time. 00 = Immediately, 01 = the next time it changes. The
response contains the time in UTC if available:
• Hours (0..23 decimal)
• Minutes (0..59 decimal)
• Seconds (0..59 decimal)
• Weekday (0 = Sun, 1 = Mon, .., 6 = Sat). Lower 3 bits only.
Bit 4 is set for UTC and clear for local time.
• Day (1..31)
• Month (1..12)
• Year (0..255, where 0 = 2000)
Converge with a higher standard
( 42 )
3+ bytes
Two bytes for the unit ID, followed by instruction:
• 00 = Query settings lock state.
• 01 = Lock settings.
• 02 = Unlock settings. If a command, this must be followed by 4 bytes for the
password. If status is being reported only the instruction byte is sent.
• 03 = Restore default settings. Must be followed by two bytes 55h and AAh.
Sent to all zones.
Zone gain
( 44 )
1 byte
F4 – 0C ( -12 dB – +12dB )
User accounts
( 45 )
3+ bytes
Two bytes for the unit ID, one byte for list entry index, followed by strings for
user name and password. Each string is null terminated. 1 byte follows the
strings which specifies the resource being protected. Currently only 01 is defined
for the web application which uses the following further parameters.
• 12 bytes for zone enable (zones 0..95). Bit 0 of the 12th byte corresponds to
zone 0 and bit 7 of the 1st byte corresponds to zone 95.
• 3 bytes for source enable (S1..S16, Media player). Bit 0 of the 3rd byte
corresponds to S1 and bit 7 of the 2nd byte corresponds to S16. Bit 2 of the
1st byte is the media player, bits 0 and 1 are reserved.
• 2 bytes for preset enable (presets 1..14). Bit 0 of the 2nd byte corresponds to
preset 1.
• 1 byte for other enable where bit 0 enables the Settings button.
No parameters follow the list entry index for the last entry in the list. The list
entry index begins at 0 and is FFh to request the list. Entries must be sent in
ascending order.
specific metadata
( 46 )
2+ bytes
First byte is source ID. Second byte is metadata entry index beginning at 0.
Remaining bytes is the metadata in UTF-8 format. Support for this command
and the number of supported metadata entries is device specific.
specific metadata request
( 47 )
2 bytes
First byte is source ID. Second byte is metadata entry index beginning at 0.
Support for this command and the number of supported metadata entries is
device specific.
Converge with a higher standard
• ‘Standby On’ commands imply that the amplifier is not muted if the amplifier was previously off. A mute command must follow the
standby command if it should be muted.
• The Volume Up and Volume down commands increment or decrement the amplifiers volume at each command string reception. Therefore
to achieve a volume ramp, the commands must be sent continuously for the duration of the ramp.
* Zone Grouping
The “link zones” command tells all the zones in the command to be linked into one group. Commands sent to any of the zones in
the group will cause all the zones in the group to implicitly track the change. Devices therefore need to know about all the zones in
the group, even if they are otherwise not used by the device. In addition, devices reporting their linked zones using this command
must be able to list zones in the group that are not used by the device.
• The first byte of the response to the “request device information” has the following values:
* 00 = amplifier
* 01 = keypad
* 02 = remote control
• The third byte of the response to the “request device information” has the following meanings for the amplifier when bit 7 is 1:
* 87h = M400
* 88h = M800
• The “send all parameters” command applies to amp/preamp groups and not to individual rooms.
The preamp bit of the zone byte is ignored.
Converge with a higher standard