All commands are initiated by the console. All state is maintained primarily by the amplifier so the console requires the echoed responses to update its state.
There is no way to do automatic power on without modifying the firmware. It is not otherwise possible to make the console light up and respond to input unless it is powered on through its own power button or remote control.
All messages are one byte except for AA
that starts a longer message.
The longer messages have the following format:
AA <U8 type> <U8 length of data> <variable length data> <U8 checksum>
The checksum is verified by calculating the U8 sum of all bytes from the type (inclusive) to the checksum (inclusive) so that the final result is 0.
Communication is represented as follows:
> Message from console to amplifier
< Message from amplifier to console
Do not send additional requests to the amplifier while it is/will be sending a multi-byte response. It cannot handle this and will overwrite part of the output with any new single byte responses. For multi-byte responses it will start again instead of finishing the earlier response. Wait for it to finish responding before making additional requests. The console does not have this problem.
> 34
< AA
< 0A = type
< 14 = length of remaining data (excluding checksum)
< 0A = main volume (0 to 43)
< 15 = rear level (0 to 43)
< 15 = centre level (0 to 43)
< 15 = subwoofer level (0 to 43)
< 00 = input (0 to 5 => 1 to 6)
< 00 = mute (0 = off, 1 = on)
< 00 = input 4 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 5 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 2 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 6 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 03 = input 1 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 3 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = digital signal status (amplifier)
< 00
< 01
< 05
< 04
< 00 = standby (0 = on, 1 = standby)
< 00
< 00 = auto standby (0 = enabled, 1 = disabled)
< XX = checksum
This can also be used in reverse, to get the status from the console. The console reports the input effects in ascending order 1-6 (and only if they have been set using the console). Allowing the response to go to the amplifier will overwrite the effect settings with incorrect values and the current idle time will become over 24 days which would normally result in an automatic standby occurring. It will also overwrite the digital signal status with the console's value until it next changes.
> 34
> AA
> 0E = type
> 03 = length of remaining data (excluding checksum)
> 20 = set most significant byte of the idle time (lower bytes are reset to 0)
> 00
> 00
> CF = checksum
< AA
< 0A = type
< 14 = length of remaining data (excluding checksum)
< 0A = main volume (0 to 43)
< 15 = rear level (0 to 43)
< 15 = centre level (0 to 43)
< 15 = subwoofer level (0 to 43)
< 00 = input (0 to 5 => 1 to 6)
< 00 = mute (0 = off, 1 = on)
< 00 = input 1 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 2 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 3 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 4 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 5 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = input 6 effect (0 = 3D, 1 = 2.1, 2 = 4.1, 3 = disabled)
< 00 = digital signal status (console)
< 00
< 06
< 01
< 03
< 00 = standby (0 = on, 1 = standby)
< 00
< 00 = auto standby (0 = enabled, 1 = disabled)
< XX = checksum
The console stores the signal status differently from the amplifier so it will be confused by receiving the amplifier values while running (use the Decode state message to fix this).
00
= N/A01
= 5.1 signal detected (5.1 levels, no effects)0C
= 2.0 signal detected (5.1 levels, effects mandatory)0E
= unknown signal (decode/effect LEDs cycle continuously)
The console reports the signal status differently from the amplifier.
00
= N/A or unknown signal (decode/effect LEDs cycle continuously)01
= no signal02
= 5.1 signal detected (5.1 levels, no effects)03
= 4.1 signal detected (4.1 levels, no effects)04
= 3.1 signal detected (5.1 levels, no effects)05
= 2.1 signal detected (2.1 levels, no effects)06
= 2.0 signal detected (2.1 levels, no effects)07
= 2.0 signal detected (5.1 levels, effects mandatory)08
= signal detected (5.1 levels, no effects)
Send the AA 0A
message from the section above
(Read status/configuration).
There's an amplifier bug in that standby status is never restored to 1, but it can be set. Changing it from 1 to 0 will power on, changing it from 0 to 1 will not go into standby. Try to avoid changing the power state with this command.
Sent liberally by the console whenever user input is provided. Resets the idle time maintained by the amplifier.
> 30
< 30
The idle time is not just reset by the console, it is also reset by the amplifier itself when non-silent audio is being output. The console will send this command every 60 seconds after the last user input.
If automatic standby is enabled and the time is reached the console will turn the power off.
> 31
< 31
< AA
< 0F = type
< 03 = length of remaining data (excluding checksum)
< 00 06 1C = idle time (U24BE in seconds)
< XX = checksum
The console doesn't use this command, but you can find out the current volume of the input. Silence is 0 and it looks like it goes up to 1,000,000 with some maximum amplitude square waves. Normal values are around 1,000 to 2,000. Above a certain volume the idle time will be reset and held at 0.
> 2F
< 2F
< AA
< 08 = type
< 03 = length of remaining data (excluding checksum)
< 00 00 00 = volume (U24BE in unknown units)
< XX = checksum
The console doesn't use this command, but you can find out the current temperature in the amplifier.
> 25
< 25
< AA
< 0C = type
< 05 = length of remaining data (excluding checksum)
< 00
< 00 = temperature 1 in Celsius
< 00 = temperature 2 in Celsius
< 00 = temperature 3 in Celsius
< 00
< XX = checksum
The first part of this is identical to Headphones disconnected so it should be possible to power on with the Headphones connected sequence in its place.
The amplifier will power on with the currently configured input active, but the effect is sent by the console automatically (Effect selection).
> 11 11
> XX (effect selection)
> 39 38 30 39
< 11 11
< XX (effect selection)
> 39 38 30 39
The 36
command here turns the speakers off and saves settings.
The 37
command's purpose is unknown.
Sends Read status/configuration at the end to update the console state.
> 30 37 36
< 30 37 36
> 34
< AA 0A ...
> 10 10
> 3F (effect selection)
< 10 10
< 3F (effect selection)
> 11 11
> XX (effect selection)
< 11 11
< XX (effect selection)
The console implements the mute operation by setting the volume to 0 using lots of Main volume down commands and then back up using lots of Main volume up commands. Going into standby while muted may result in a volume of 0 being saved.
Turning the volume up above level 43 is ignored and no command is sent.
> 08
< 08
Turning the volume down below level 0 is ignored and no command is sent.
> 09
< 09
Turn the volume down to level 0.
> 09
> 09
> 09 ...
< 09
< 09
< 09 ...
The amplifier can also report a muted status (without changing the volume). When the volume is next adjusted the console will unmute immediately:
< 20
...
> 38
> 08 or 09
> 39
The console has its own independent "muted volume" and will use this to report the mute status and when the button is pressed to unmute. At every power on this "muted volume" is reset to 0.
Turn the volume back up.
> 38
> 08
> 08
> 08 ...
> 39
< 38
< 08
< 08
< 08 ...
< 39
The amplifier can also report an unmuted status (without changing the volume).
< 21
If the console had muted then the volume level will still be 0.
Turning the subwoofer level up above 43 is ignored and no command is sent.
> 0A
< 0A
Turning the subwoofer level down below 0 is ignored and no command is sent.
> 0B
< 0B
Turning the centre level up above 43 is ignored and no command is sent.
> 0C
< 0C
Turning the centre level down below 0 is ignored and no command is sent.
> 0D
< 0D
Turning the rear level up above 43 is ignored and no command is sent.
> 0E
< 0E
Turning the rear level down below 0 is ignored and no command is sent.
> 0F
< 0F
Mute the volume before changing inputs (Volume/level commands) and switch to the configured effect for the input (Effect selection) before unmuting.
The "decode" light turns on if there is a digital signal from inputs 3, 4 or 5.
> 09 ... (mute)
> 02
> XX (effect selection)
> 08 ... (unmute)
< 09 ... (mute)
< 02
< XX (effect selection)
< 08 ... (unmute)
< 39
> 09 ... (mute)
> 05
> XX (effect selection)
> 08 ... (unmute)
< 09 ... (mute)
< 05
< XX (effect selection)
< 08 ... (unmute)
< 39
> 09 ... (mute)
> 03
> XX (effect selection)
> 08 ... (unmute)
< 09 ... (mute)
< 03
< XX = `Decode state`_
< XX (effect selection)
< 08 ... (unmute)
< 39
> 09 ... (mute)
> 04
> XX (effect selection)
> 08 ... (unmute)
< 09 ... (mute)
< 04
< XX = `Decode state`_
< XX (effect selection)
< 08 ... (unmute)
< 39
> 09 ... (mute)
> 06
> XX (effect selection)
> 08 ... (unmute)
< 09 ... (mute)
< 06
< XX = `Decode state`_
< XX (effect selection)
< 08 ... (unmute)
< 39
> 09 ... (mute)
> 07
> XX (effect selection)
> 08 ... (unmute)
< 09 ... (mute)
< 07
< XX (effect selection)
< 08 ... (unmute)
< 39
17
= 5.1 signal detected (5.1 levels, no effects)18
= no signal19
= 4.1 signal detected (4.1 levels, no effects)1A
= 3.1 signal detected (5.1 levels, no effects)1B
= 2.1 signal detected (2.1 levels, no effects)1C
= 2.0 signal detected (2.1 levels, no effects)1D
= signal detected (5.1 levels, no effects)1E
= 2.0 signal detected (5.1 levels, effects mandatory)1F
= unknown signal (decode/effect LEDs cycle continuously)
The default state on the console is 1F
until this is provided by the
amplifier. The console will update the effect when the decode state changes (no
signal = effect disabled).
Using effects that are not compatible with the selected input has not been tested.
> 14
< 14
> 15
< 15
> 16
< 16
> 35
< 35
> 3F
< 3F
While powered on hold down the "input" button for 5 seconds.
Tests speakers in this order:
- Front left
- Centre
- Front right
- Rear right
- Rear left
- Subwoofer
Enter speaker test mode and Select test speaker "front left".
> 36
> 22
< 22
> AA 07 ... (Select test speaker: front left)
< 36
> AA
> 07 = type
> 08 = length of remaining data (excluding checksum)
> 01
> 01 = speaker (01 front left, 10 centre, 02 front right,
08 rear right, 04 rear left, 20 sub, 00 none)
> 00 00 00 00 09 2B
> XX = checksum
Exit speaker test mode, Select test speaker "none" and restore the previously selected input (Input selection).
> 33
> AA 07 ... (Select test speaker: none)
> 00
< 33
< 00
While in standby hold down the "input" button for 8 seconds.
Sends Read status/configuration at the end to update the console state.
> AA
> 0E = type
> 03 = length of remaining data (excluding checksum)
> 20 = most significant byte of the idle time (lower bytes are reset to 0)
> 00
> 00
> CF = checksum
> AA
> 0A = type
> 14 = length of remaining data (excluding checksum)
> 0A 15 15 15 00 00 00 00 00 00 03 00 00 00 06 01 03 00 00 00
> 8C = checksum
> 36
< AA
< FF = type
< 01 = length of remaining data (excluding checksum)
< 8A
< 76 = checksum
< 36
> 34
< AA 0A 14 0A 15 15 15 00 00 00 00 00 00 03 00 00 00 01 05 04 00 00 00 8C
While powered on hold the "level" button for 5 seconds (until the level change light goes out). The setting will be toggled. The console will also send the current effect configuration in the wrong order so all of the effects set for the inputs will be changed.
> AA
> 0E = type
> 03 = length of remaining data (excluding checksum)
> 20 = set most significant byte of the idle time (lower bytes are reset to 0)
> 00
> 00
> CF = checksum
> AA
> 0A = type
> 14 = length of remaining data (excluding checksum)
> 0A 15 15 15 00 00 00 00 00 00 03 00 00 00 01 05 04 00 00
> XX = auto standby (0 = enabled, 1 = disabled)
> XX = checksum
> 36
< AA
< FF = type
< 01 = length of remaining data (excluding checksum)
< 8A
< 76 = checksum
< 36
The current idle time will become over 24 days which would normally result in an automatic standby occurring but holding the button also repeatedly sends the command to reset the idle time so it's unlikely to happen.