This information is presented as is. In common practice, this information will never be necessary as MMS will always configure this automatically.
In blocks showing communication with an amplifier or amplifiers, right facing arrows indicate data sent to the amplifier and left facing arrows indicate data received from the amplifier. Additionally, the document will refer to the bytes after the zone byte in a command or response as the “data bytes”. All commands and response are formatted:
<command byte><zone byte><data bytes>
Indexing Remote Sources
In order to configure eAudioCast sources manually, it’s important to first understand how amplifiers figure out where to request audio from when an eAudioCast source is selected. Consider a scenario where there are two eSeries amplifers, A and B. Each have two sources. Their model is irrelevant for this example. In order for amp B to receive audio from source 2 on amp A, amp B must know the eAudioCast device ID for A, a UUID, and the 0-based source position on that amp. This source position does not correspond to the source IDs used in the source selection command (03
). Rather, source 1 is 0, source 2 is 1, etc.
Assigning Amplifier UUIDs
The eAudioCast device ID is always a UUID. By definition, it must be universally unique if “the universe” is defined as the network on which the amps reside. It doesn’t actually matter what the UUID is derived from, but MMS will always define an amp’s UUID automatically upon inclusion into its System. If an MMS is present, it is imperative that an amp’s UUID not be changed. The MMS will change it back, causing confusion between MMS and other control points.
Retrieving Short IDs
To actually assign a UUID to an amp, that device’s short ID is required. This can be retrieve in a number of ways.
Short ID Retrieval Method One (Device Info)
To get the short ID for all amps in a given amp stack, use the 14
command:
--> 14FF06 <-- 94FF00069301B605060708 <-- 9byte4FF0006A00006090A0B0C0D0E0F10 <-- 94FF000693015A01020304
Three amplifiers replied, two M120es (model ID 93
) and one M801e (model ID A0
). The format of the data bytes of the 94
response is structured as follows
byte 1: 00
byte 2: major firmware version (6
)
byte 3: model
byte 4-5: short ID
byte 6-n: assigned zones
In our example, the M120es have short IDs of 01B6
and 015A
while the M801e has a short ID of 0006
.
Short ID Retrieval Method Two (Zone Assignments)
This method gets the ID of the specific amp the command is received by over a TCP tunnel.
--> 2FFF <-- AFFF01B605060708
The format of the data bytes of the AF
response is structured as follows:
byte 0-1: short ID
byte 2-n: assigned zones
Using the Short ID
Once the amp’s short ID is known, its UUID can be define. To do this, use the Network Settings command (3A
) with the UUID option (05
).
The format of the data bytes of this command is:
byte 0-1: short ID
byte 2: option (always 05
in this case)
byte 3-18: UUID
This command should always be sent to all zones (FF
) so this command will look like:
--> 3AFF01B605001F77C6F99C075442C3C570081522B3
To verify that the value was stored properly, send a Network Settings command with the UUID query option (85
). The amp should respond with exactly what you sent it to set the UUID.
--> 3AFF01B685 <-- 3AFF01B605001F77C6F99C075442C3C570081522B3
Remote Source Structure
All remote sources contain the slot the sources exists in, the UUID of the device that backs the remote source, and the 0-based source index that backs the remote source. They may have a hex encoded UTF-8 string for a name as well, although this is not required. There are 32 remote source slots, 00
through 1F
.
To inspect the remote sources, send the 4F
command to all zones. Without any data bytes, this command will retrieve all remote sources. If the data bytes contain a single byte, that byte will be interpreted as a slot request and the amplifier stack will respond just that slot’s definition. If more than one byte is provided, it will be interpreted as a remote source definition.
--> 4FFF <-- 4FFF00DE04ACF7D206224B846970A359BEF63300506C617965725F4140373042334435393733364342 <-- 4FFF01DE04ACF7D206224B846970A359BEF63301506C617965725F4240373042334435393733364342 <-- 4FFF02DE04ACF7D206224B846970A359BEF63300506C617965725F4140373042334435393733364342 <-- 4FFF03009E731E4F7FFD1F90C3531F98803C7703 <-- 4FFF04009E731E4F7FFD1F90C3531F98803C7704 <-- 4FFF05009E731E4F7FFD1F90C3531F98803C7705 <-- 4FFF06009E731E4F7FFD1F90C3531F98803C7706 <-- 4FFF07009E731E4F7FFD1F90C3531F98803C7707 <-- 4FFF08009E731E4F7FFD1F90C3531F98803C7708 <-- 4FFF09009E731E4F7FFD1F90C3531F98803C7709 <-- 4FFF0A009E731E4F7FFD1F90C3531F98803C770A <-- 4FFF0B009E731E4F7FFD1F90C3531F98803C770B <-- 4FFF0C44212E00156B4640903810449FC6E9EF00506C617965725F4140443436413931363030363638 <-- 4FFF0D44212E00156B4640903810449FC6E9EF01506C617965725F4240443436413931363030363638 <-- 4FFF0EDE04ACF7D206224B846970A359BEF63301506C617965725F4240373042334435393733364342 <-- 4FFF0F00 <-- 4FFF1000 <-- 4FFF1100 <-- 4FFF1200 <-- 4FFF1300 <-- 4FFF1400 <-- 4FFF1500 <-- 4FFF1600 <-- 4FFF1700 <-- 4FFF1800 <-- 4FFF1900 <-- 4FFF1A00 <-- 4FFF1B00 <-- 4FFF1C00 <-- 4FFF1D00 <-- 4FFF1E00 <-- 4FFF1F00
The format of the data bytes of a given response is:
byte 0: slot ID
byte 1-17: UUID of device that backs remote source
byte 18: 0-based source index of the source that backs the remote source
byte 19-n: hex encoded UTF-8 string for a remote source name
Empty remote source slots will only contain the slot ID and no further bytes.
Consider the first response:
4FFF00DE04ACF7D206224B846970A359BEF63300506C617965725F4140373042334435393733364342
It resides in slot 00
.
It is backed by a device with a UUID of DE04ACF7D206224B846970A359BEF633
.
The source on that device is the 00
th source.
It has a name of Player_A@70B3D59736CB
(in this case, it’s an MMS output)
Defining Remote Sources
To define a remote source, send a command structured exactly like the responses received. Using the UUID from our UUID discussion, this example will define a new remote source into the last slot (1F
) backed by the second source on that device. It will also request that slot back for verification.
--> 4FFF1F001F77C6F99C075442C3C570081522B3014D7920536F75726365 --> 4FFF1F <-- 4FFF1F001F77C6F99C075442C3C570081522B3014D7920536F75726365
Selecting Remote Sources
Use the same source selection command as for physical sources. Offset the remote source’s slot by 0x20
. For example, to select remote source slot 02
into zone 1, send:
--> 030122