Axium Comms Protocol
Axium Comms Protocol
13/12/2019
Data acquisition and control of Axium equipment is performed by home automation systems or personal
computers using a special protocol developed by Axium. This document explains the protocol itself and the low
level transport.
1. Transport
1.1. RS-232
The lead must be a straight wired cable, except on the AX4752 and prior models this was a “null modem”,
which is a 9 pin female ‘D’ connectors at both ends (pin connections 2 and 3 swapped at one end). 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 linefeed character
signals the end of the command. The carriage return character 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, all that arrives on the amplifier's RX must be sent back out 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 AX400/AX800
generation onwards a proprietary protocol is in use.
1.3. Expansion Bus
The expansion 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 Axium 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).
1.4. Infrared
The infrared interface allows Axium devices to be controlled using the Axium Communications Protocol. It is
not suitable for two-way communications unless combined with another interface such as RS232.
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:
<start bit><product ID><command data><checksum><stop bit>
The product ID is a three bit code and is 001 for Axium 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 equipped devices, commands can also be sent via Ethernet to TCP port 17037. Each byte in the
command is encoded into two ASCII encoded hexadecimal characters. A line feed character signals the end of
the command. The carriage return character that is typically used in combination with the linefeed is optional
and is ignored. A telnet session can be used for experimentation purposes.
1.6. Ethernet expansion
The expansion bus is now obsolete and has been replaced by “expansion bus over Ethernet”. Commands are
sent and received using multicasting to/from IP address 239.195.188.235 and UDP port 17037. The commands
are in the same form as on TCP port 17037.
2.
Command Protocol
Command structure: <command><zone>[<data>[<data>[...]]]
Command:
The command byte can have the following values:
Command (Hex Value) Description
00 No Operation
01 Standby / Power
02 Mute
03 Source Selection
04 Volume
05 Bass
06 Treble
07 Balance
08 Request Protocol Version
09 Send All Parameters
0A Report Error (obsolete)
0B Emulate key press on Keypad (obsolete)
0C Amplifier special features
0D Maximum volume
0E Preset Selection / Status (obsolete)
0F Link zone pair (obsolete)
10 Media Favourites
11 Volume Up
12 Volume Down
13 Auto distributed source assignment advisory
14 Request Device information
15 Firmware update
16 Auto power on/off
17 Digital input/output options
18 Dynamic zone linking
19 Master volume
1A Unused
1B Preset Parameters
1C Zone name
1D Preamp volume mode
1E Preset Selection / Status
1F No longer in use
20 Preset Sound set up
21 Equalisation
22 Request device log entry
23 Preset alarm control
24 Request PCM capabilities (obsolete)
25 PCM Stream (obsolete)
26 Keypad port options
27 Set time zone, date and time
28 Video Source Selection
29 Source Name and Options
2A Preset Name
2B Request preset name
2C Source Up
2D Source Down
2E Zone assignment
2F Request zone assignments
30 Link zones
31 Audio delay
32 Source Gain
33 Page Preset 2 Selection
34 Clipping notification
35 IR routing assignments
36 Party mode select/deselect (obsolete)
37 Party mode configuration (obsolete)
38 Zone name request
39 Request extended device information
3A Network settings
3B Media servers
3C List sources
3D Media Player play control
3E Play status notification
3F Play status request
40 Report message
41 Request time
42 Settings management
43 Miscellaneous device settings and management
44 Zone gain
45 User accounts (obsolete)
46 Source specific metadata
47 Source specific metadata request
48 Power on volume level
49 Request keypad zone assignment
4A Keypad port/zone mapping
4B KPE key event
4C KPE LED control
4D Keypad port occupancy
4E Arbitrary data storage
4F Distributed Source Definition
50 Distributed Source Audio Delay
51 Register Service
52 Extended Play Control
53 Extended Play Status
54 Extended Play Status Request
55 Service Status
56 Source Mapping
57 Arbitrary and extensible command handling
60 – 6F Reserved (undocumented commands)
70 – 7F Unused
88 Response to Request Protocol Version
94 Response to Request Device information
A2 Response to Request device log entry
A4 Response to Request PCM capabilities (obsolete)
A5 Response to PCM Stream (obsolete)
AF Response to Request zone assignments
B9 Response to Request extended device information
C1 Response to Request time
C9 Response to Request keypad zone assignment
CD Response to Keypad port occupancy
The commands are also used as notifications. If an amplifier is switched on by pressing the power/standby
button on the amplifier’s front panel, it will notify the other devices by sending the standby/power command.
Zone:
This byte is used for checking if the command is applicable to the device receiving the command and if so, for
optionally selecting a “sub-device”, e.g. a bank or part of a device.
The lower 5 bits of the zone byte equal 00h..1Fh 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, for example.
The sub-zone codes for the AX4750I and AX4752 amplifiers are as follows:
000 standard amplifier
001 page preset amplifier (obsolete) - add 20h
010 standard preamplifier (obsolete) - add 40h
011 page preset preamplifier (obsolete) - add 60h
Bits 7 is set for extended zones 32..95. Bits 5..7 represent three zone ranges:
000 common zone range (0..31)
100 extended zones 32..63
110 extended zones 64..95
Keypad errors:
10h frequency error
11h too many different period lengths
12h IR function too long
13h compressed IR function too long
18h EEPROM comms error
19h EEPROM erase error
1Ah EEPROM full
In case four bytes of data are transmitted, 2nd byte is an extra information
byte for the error, 3rd and 4th bytes are the device ID.
Emulate key press on 1 byte Keypad key code in lower 5 bits, number of repeats in upper 3 bits. FFh
Keypad (obsolete) means stop repeating the current key.
( 0B )
Amplifier special 1 or 2 bytes Bit 0: loudness enable (1) / disable (0)
features Bits 1..5 = reserved, set to 0.
( 0C ) Bit 6: Sound played back on page preset. Obsolete, replaced by Preset
Parameters.
Bit 7: Sound playback enable supported when 1. Obsolete, replaced by
Preset Parameters.
Second byte
Bit 0: mono (1) / stereo (0).
Bit 1: mono / stereo control supported when 1.
Bit 2: power on volume enable (1) / disable (0). See Power on volume level.
Bit 3: power on volume supported when 1.
Bit 4: low pass filter enable (1) / disable (0)
Bit 5: low pass filter supported when 1.
Bit 6..7: low pass filter cut off frequency, where 00 = 80Hz, 01 = 120Hz, 10 =
180Hz, 11 = 240Hz
Maximum volume 1 byte 00 – A0 ( 0 – 160 )
( 0D )
Preset Selection / 1 byte Bits 0-3 command the preset selection:
Status (obsolete) 0 = default (page preset input selects between standard and page preset
( 0E ) modes)
1 = select standard mode
3 = select page preset mode
4 = select preset 1
5 = select preset 2
6 = load preset 1 parameters
7 = load preset 2 parameters
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 3 is set for merging zones so user interfaces show only the linked
zone group instead of the individual zones. Implies that the zone
names are linked.
• 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 30FF20h 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. All clients are
expected to support this command and update their corresponding states
when linked zones change their settings.
Audio delay 1+ byte Output delay of audio stream in 5ms steps. 00h = no delay. Multiple data
( 31 ) bytes can be used for specifying the delay for each source where the first
byte represents S1, then S2, etc. If fewer bytes are used than sources, the
remaining sources are set to the last delay in the command. (This ensures
compatibility with commands with a single data byte that applied to all
sources.) No delay can be configured for the media player source.
Source Gain 2 bytes or First byte is the source ID as defined by the Source Selection command (00h
( 32 ) 2+ bytes – 0Bh) or FFh in which case this is followed by gains for all sources
beginning with S1. Second byte is the gain applied to the source 00h – 12h
( 0dB – +18dB ). On the AX400/AX800 generation of amplifier the source
gain setting affected the gain of the analogue input which could cause
clipping if set too high. Later amplifiers adjust the output level when the
source is selected and affects analogue and digital inputs.
Page Preset 2 1 byte The preset to be selected when the second page contact is closed.
Selection Sent to all zones.
( 33 )
Clipping notification 2 bytes First byte is type of clipping event. The second byte is information
( 34 ) pertaining to the event. The following events are currently defined:
• 01h = analogue input clipped. The following byte represents the source
that is clipped.
• 02h = analogue input unclipped.
IR routing 6+ bytes First two bytes is the unit ID.
assignments 3 bytes in request Third byte is the IR source (keypads, bus run, expansion bus, etc) where the
( 35 ) first keypad is 0. The bus run is 4 on the AX-400DA and 8 on the AX-800DAV
and AX-1250. The expansion bus is 5 and 9 respectively on the AX-400DA
and AX-800DAV.
Fourth byte is the zone to monitor for source selection in {0..95} or FFh for
none.
Then for each source starting from S1, two bytes which represent a bitfield
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 1 byte 00h = deselect party mode (selects standard mode)
select/deselect 01h = select party mode
(obsolete) The party mode selection is stored in presets so that presets can activate or
( 36 ) deactivate this mode.
Sent to all zones.
Party mode 3 bytes First two bytes is the unit ID of the party master. Third byte is the source
configuration selected for its party mode output.
(obsolete) Sent to all zones.
( 37 )
Zone name request 0 bytes Requests the zone name. See also Zone name.
( 38 )
Request extended 2 bytes in Command: two bytes for the unit ID.
device information command, Response:
( 39 ) response length is • 4 bytes for 32 bit unit ID where bytes 3-4 match the standard 16 bit
device specific unit ID.
• 3 bytes for firmware version: major, minor and beta version (0 for
release versions).
• 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..31)
• 1 byte flags (bit 0 set when settings are locked)
• Firmware micro version (optional)
Also see Request Device information.
Network settings Minimum 3 bytes Two bytes for the unit ID, followed by setting ID which is followed by the
( 3A ) setting. Setting IDs:
• 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: KNX enabled (read
only), bit 3: OvrC connected (read only and applicable only for OvrC
enabled devices), bit 4: 1 = Vantage Ethernet Bus enabled, 0 = disabled
(applicable only if Vantage Ethernet Bus supported and is optional). 16
bytes IP addresses (4 bytes per address): IP address, subnet mask, DNS
server, default router.
• 04h = IP address of KNX interface (4 bytes), KNX interface type (1 byte
where 00 – disabled).
• 05h = Device GUID (16 bytes). Words in GUID are stored in little endian
format!
• 06h = Amplifier stack assignment. 1 byte for the amplifier stack
(0..255). Amp stack 0 is on UDP port 17037, stacks 1..255 are on UDP
ports 17090..17344.
• 07h = Reserved.
• 08h = Airplay enable, 1 byte 0 = auto, 1 = enable, 2 = disable.
• 81h = Request network name
• 82h = Request time server name
• 83h = Request IP addresses and flags
• 84h = Request KNX IP BAOS 771/772 address.
• 85h = Request device GUID.
• 86h = Request amplifier stack assignment.
• 87h = Reserved.
• 88h = Request Airplay enable status.
Sent to all zones.
Media servers 3+ bytes Two bytes for the unit ID, one byte for list entry index, followed by strings
( 3B ) for UNC path, user name and password. Each string is null terminated. No
strings are listed for last entry in the list. If an alias name is used this is
written into the UNC path field and is appended to the path with a colon
separating it and the alias. The list entry index begins at 0 and is FFh to
request the list. Entries must be sent in ascending order.
List sources 0 or 1 byte in Lists the available sources on the zone. Notifications are sent if the
( 3C ) request available sources change.
1+ bytes in The data byte represents flags for which sources to list. If the flags are
response specified then the first byte of the response is the flags byte (this is so the
receiver knows what exactly the list of sources represents):
Bit 0 = list non-independent local sources*.
Bit 1 = list independent local sources*.
Bit 2 = list distributed sources hosted by other devices*.
Bit 3 = list distributed sources hosted by the device.
Bit 4 = list distributed sources with local equivalent sources (must be used
with bit 3 but not with bits 0 and 1).
Bit 5 = include local sources even if disabled.
Bit 7 must be set so flags in requests and responses can be distinguished
from sources.
*Option enabled by default when no flags byte is specified in request.
A response that contains no sources should have FFh appended to it so that
it is not confused with a request. Responses should always include the flags
byte.
See Source Selection for source IDs.
Media Player play 2+ bytes First byte is the source ID followed by play control command and command
control dependent data:
( 3D ) 01h = Play. Next two bytes is an optional 16 bit track index, numbered from
0.
02h = Pause/Resume
03h = Stop
04h = Previous track
05h = Next track
06h = Set repeat mode. Next byte: 00h = no repeat, 01h = repeat track, 02h
= repeat all.
07h = Select. Next two bytes is the 16 bit item index. Selecting a track will
play it. Selecting a folder will change to it.
08h = Shuffle mode. Next byte: 0 = no shuffle, 1 = shuffle tracks
09h = Open server. Normally not required since same as Select.
0Ah = Select favourite. Next byte is favourite ID (00h..FEh, see Media
Favourites).
0Bh = Add currently playing content to favourites list.
0Ch = Remove currently playing content from favourites list. Next byte
must be the favourite ID.
0Dh = Closes the session and returns to the root menu.
Play status 2+ bytes First byte is the source ID followed by status parameter and data:
notification 00h = Play status flags: 1 data byte (1 = player available, 2 = loading
( 3E ) directory, 4 = playback active, 8 = playback paused, 10h = reserved, 20h =
repeat track, 40h = repeat disc, 80h = shuffle)
01h = Playlist length: 9 bytes total. 2 bytes for directory count, 2 bytes for
file count, 2 bytes for previous directory index (after going back a directory
only, otherwise FFFFh) and 1 byte flags where bit 0 is set if there is a “..”
directory.
02h = Playing track index: 2 data bytes for 16 bit index, numbered from 0.
Always sent after the playlist length. Only sent if playing or paused.
03h = Playlist name: data is UTF-8 string.
04h = Playlist item name: 2 data bytes for 16 bit index followed by UTF-8
string.
05h = Playing track artist: data is UTF-8 string.
06h = Playing track album: data is UTF-8 string.
07h = Playing track title: data is UTF-8 string.
08h = Cover art file name. The image is retrieved from
http://<host>/artwork/<file name>. Only sent to Ethernet based interfaces.
09h = Track position in seconds.
0Ah = Track length in seconds. Note that the track length can change if it is
not available via metadata and it needs to be estimated using the file size
and average byte rate.
0Bh = Buffer status in percent, FFh when not filling buffer.
0Ch = Bitfield of available functions, for first byte 01h = play, 02h =
pause/resume, 04h = stop, 08h = prev track, 10h = next track, 20h = repeat
track, 40h = repeat disc, 80h = shuffle. If a second byte is specified then 01h
= favourites available.
0Dh = Favourite ID of currently playing content. FFh if not a favourite.
Automatic notifications for any changes to play status are sent to all zones
on the unit implementing the source.
Play status request 2+ bytes First byte is the source ID followed by one or two bytes which is a bitfield of
( 3F ) parameters to query (bit 0 = play status flags, bit 1 = playlist length, etc). If
the request is sent to all zones, the responses are sent to all zones using the
source. Otherwise the responses are sent to the zone sending the request.
If parameter 4 (playlist item name) is selected, 4 bytes are required for
start – end indexes after the parameter bitfield.
Report message 2+ bytes First byte is message type:
( 40 ) 00h = Information
01h = Error
02h = Success
Followed by UTF-8 string. Sent to whichever zones and interfaces are
relevant.
Request time 1 byte in request, Requests the time. 00h = Immediately, 01h = the next time it changes. The
( 41 ) 7 bytes in response contains the time in UTC if available:
response • 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)
Settings management 3+ bytes Two bytes for the unit ID, followed by instruction:
( 42 ) 00h = Query settings lock state.
01h = Lock settings.
02h = 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.
03h = Restore default settings. Must be followed by two bytes 55h and
AAh.
Sent to all zones.
Miscellaneous device 4+ bytes Two bytes for the unit ID, followed by an Option byte (00h if unused), and
settings and then a Command byte. Any additional bytes are Command+Option specific.
management Commands:
( 43 ) • 01h: reserved (originally for deleting PCM sounds but now obsolete).
• 02h: disable compression. Option byte is unused. For testing specific
amplifiers only, setting is not stored permanently.
• 03h: enable compression. See above.
• 04h: set/report parameter specified by option byte. The following
parameters exist:
◦ 01h: Service tag. Not used by all amplifiers.
◦ 02h: Ethernet Bus mode. Data is 00h..06h or FFh.
◦ 03h: Auto distributed source assignments enable. Data is 00h =
disable, 01h = enable. Applies to all amplifiers so the Device ID is
ignored when setting this.
◦ 04h: HDANYWHERE video switch settings. First data byte is switch
type followed by source selections per video input and then
amplifier zone selections per video output.
◦ 05h: Onkyo designated zone assignment.
◦ 06h: Onkyo designated source assignment.
◦ 07h: Onkyo available zones count (read-only).
◦ 08h: Onkyo available sources list (read-only).
◦ 09h: Onkyo preset name. First data byte is the preset number
(1..40). Following bytes is the preset name. Character encoding is
UTF-8.
• 05h: check setting for conflicts result. The setting is specified by option
byte. The following settings exist:
◦ 01h: Auto distributed source assignments enable status. Data is
00h = no conflict, 01h conflict.
◦ 02h: Distributed source definition. First data byte is the distributed
source 00h..1Fh, followed by the conflict code: 00h = no conflict,
01h = the device does not define the distributed source but the
request does, 02h = the device does define it but the setting
doesn’t, 03h = the definition differs in way of the device hosting it,
04h = the definition differs in way of the local source being
distributed, 05h = the definition differs in way of the name.
• 82h: request compression enable/disable status. See 02h/03h above.
• 84h: request parameter specified by option byte. See 04h above.
• 85h: request a check for settings conflicts. See 05h above. This
command is used to compare the given setting with the setting used by
the device receiving the command. The data used is in the same
format expected of the command responsible for the setting – ie for
the following settings:
◦ 01h: Data is 00h = disable, 01h = enable
◦ 02h: See the Distributed Source Definition command format
Zone gain 1 byte F4h – 0Ch ( -12 dB – +12dB )
( 44 )
User accounts 3+ bytes Two bytes for the unit ID, one byte for list entry index, followed by strings
(obsolete) for user name and password. Each string is null terminated. 1 byte follows
( 45 ) the strings which specifies the resource being protected. Currently only 01h
is defined for the web application which uses the following further
parameters.
• 12 bytes for zone enable (zone numbers 0..95). Bit 0 of the 12 th byte
corresponds to zone number 0 and bit 7 of the 1 st byte corresponds to
zone 95. Note that zone number 0 is zone 96.
• 3 bytes for source enable (S1..S16, Media player). Bit 0 of the 3 rd 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 2 nd 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.
Source specific 2+ bytes First byte is source ID. Second byte is metadata entry index beginning at 0.
metadata Remaining bytes is the metadata in UTF-8 format. Support for this
( 46 ) command and the number of supported metadata entries is device specific.
Source specific 2 bytes First byte is source ID. Second byte is metadata entry index beginning at 0.
metadata request Support for this command and the number of supported metadata entries
( 47 ) is device specific.
Power on volume 1 byte 00h – A0h ( 0 – 160 )
level Use the Amplifier special features command to enable/disable this feature.
( 48 )
Request keypad zone 4 bytes in request, Intended to be only sent by keypads connected to amplifier keypad ports.
assignment 5 bytes in Data is a 4 byte unique identifier which is returned in the response followed
( 49 ) response by the zone (0..95 or FFh). If the amplifier has received the same unique
identifier in a request from another keypad, the amplifier will not respond
and the keypad must time out the request and retry using another
identifier.
Sent to all zones. Request not relayed to other interfaces and response is
returned only on interface receiving the request.
Keypad port/zone 2+ bytes Used for setting up the zones assigned by the Request keypad zone
mapping assignment command.
( 4A ) First two bytes for the unit ID. This is followed by a series of bytes which
are the zones for each keypad port and are 0..95 or FFh. If FFh, the
corresponding output zone is used. For example if the amp is on zones 11
to 18 and the data bytes are “0B 0B 0B FF FF FF FF FF” then keypads on
ports 1..4 are all assigned to zone 11 and keypads on ports 5..8 are assigned
zone 15..18. If there are only two data bytes then the command acts as a
request.
Unsupported by Axium products. Also see Keypad port options.
KPE key event 2 bytes Used for extending the built-in functionality of the KPE keypad and is
( 4B ) reported on key press, long press and release events.
First two bytes represent a key code where buttons 1..8 (top left to bottom
right) are 01h..80h. The “set” button is 100h. Buttons can be combined in
which case the key codes are ORed together. These codes are ORed with
the following:
• 1000h = press event
• 2000h = long press event
• 4000h = release event after short press
• 8000h = release event after long press
Events can be aggregated together if they occur in quick succession after
one another. This command can be sent to the KPE without data for
querying the current key.
Unsupported by Axium products.
KPE LED control 4 bytes Two bytes per LED group. The first byte of each group is a bitfield which
( 4C ) selects if the LED is controlled by the KPE (0) or if the LED is controlled by
commands (1). The second byte is a bitfield of the active LEDs. The first
group is for the button LEDs and uses the same key codes as the KPE key
event command. The second group is for the top row of LEDs where 01h is
the left most LED and 80h is the right most LED. The command can be sent
to the KPE without data for querying the LED status.
Unsupported by Axium products.
Keypad port 2 bytes in request, First two bytes for the unit ID. The 3rd byte of the response is a bitfield of
occupancy 3 bytes in keypad ports that are occupied by a keypad which sends Request keypad
( 4D ) response zone assignment commands. The response is returned a few seconds after
the request.
Unsupported by Axium products.
Arbitrary data storage 2+ bytes First two bytes provide an ID for the string of data in the range 0000h to
( 4E ) 3FFFh. This is followed by the data to be stored (length restricted only by
available RAM and storage space). If the MSB of the ID is set (i.e. ID is in the
range 8000h to BFFFh) and there are no data bytes then the entry will be
deleted. Note: storage space is limited so although there are 16384
possible IDs, this does not imply that 16384 strings can be stored. To
reduce communications overhead, responses to requests are only returned
on the interface that received the request.
Unsupported by Axium products.
Distributed Source 0 or 1 bytes for Requests:
Definition requests. 2 or 18+ • 0 data bytes: request for all distributed source definitions.
( 4F ) bytes in command. • 1 data byte: request for a specific distributed source definition.
Commands/Responses:
• 2 data bytes (where second byte = 00h): unused distributed source.
• 18+ data bytes: distributed source definition where first byte is
00h..1Fh for the distributed source (00h = distributed source 1). Bytes
2..17 is the device GUID (see Network settings) of the device hosting
the source. Byte 18 is the physical source on the host device using
device specific IDs. Remaining bytes is the UTF-8 name of the
distributed source.
Commands must be sent to all zones, but requests may specify a target
zone. Generally commands are responded to only on the connection the
request was received on. However, if the request is for a specific zone, then
response will also be sent to the Amplifier stack.
Distributed Source 4+ bytes for First 4 bytes is a big endian bit field specifying which of the 32 distributed
Audio Delay command. 0 bytes sources are specified by the command. This field will only contain valid
( 50 ) for request. distributed sources when generated by an amplifier. Remaining bytes
specify the audio delay as defined by the Audio delay command.
Register Service 3 or 7 bytes in Bytes in requests:
( 51 ) command. • Source ID – see Source Selection
1+ bytes in • Flags (optional)
request. • 4 random bytes (optional – if present flags must be also)
Bytes in responses:
• Source ID
• Flags
• Service ID
• The same 4 bytes used in the request (only if they were included)
Media player sends register service command upon initialisation. A 4 byte
random id may be included in a request which can be useful for
distinguishing the results of a response when the automatic media player
mode is used. Upon a successful registration, the service id will be anything
but FFh, which is an error. Flags:
Bit 7 is set if it is a response.
Bit 6 is set in responses if the service is to unregister.
Bit 5 is reserved for internal use.
Bit 4 is set to power the zone upon successful registration.
Bit 3 is set if media player events are to be sent directly to the connection
this is received on.
Bit 2 is set if media player events are to be sent by multicast to the
Amplifier stack port – see Ethernet expansion and Amplifier stack
assignment.
Bit 1 is set if the media player is to be controlled directly without any zone
or source considerations.
Bit 0 is set if the media player is to be auto-determined.
Extended Play Status 2+ bytes Extension of Play status notification, but the service id is used instead of
( 53 ) the source id.
Extended Play Status 4+ bytes Extension of Play status request, but the service id is used instead of the
Request source id. Unlike the original version, there are 3 or 4 flag bytes instead of 1
( 54 ) or 2.
Service Status 2+ bytes Used as a notification for the status of a service. Bytes are the service id,
( 55 ) flags and list of zones participating in the service.
Flags:
• Bit 0 is set if the service is not able to send to all registered connections
directly such as if using a KPC on a keypad port. In this state the service
will instead only notify events using multicast on the amplifier stack
(see Ethernet expansion and Amplifier stack assignment) which would
then be propagated to all clients that way (flag not currently
implemented).
• Bit 6 is set if the service has membership changes. The zones
participating in the service are appended to the response and should
be used by the controller to determine if the registration is still
relevant for it.
• Bit 7 is set in requests (not currently implemented – internal
notification of changes only).
Sent to all zones.
Source Mapping 4+ bytes Defines how the digital outputs of the AMM are used, i.e. the source and
( 56 ) zone of an amplifier that they are connected to.
First 2 bytes is the unit id of the AMM. Third byte is the digital output. A
request may use FFh to indicate that all outputs are being queried. The
fourth byte is the amplifier source in the usual encoded form. If FFh then
no source mapping is set. Any remaining bytes are the zones for which the
mapping applies. Sent to all zones or the AMM zone.
Arbitrary and 4+ bytes The first byte indicates the Purpose and the second byte is the Command.
extensible command Any additional bytes are Command+Purpose specific.
handling The Purpose byte indicates what the nature of the command is so it can be
( 57 ) interpreted and handled as appropriate (00h = no purpose, 01h = generic,
02h = onkyo).
• Onkyo purpose:
◦ 01h: Tuner preset selection. Has up to additional 2 data bytes –
the first is mandatory as an instruction (00h = current value, 01h =
set parameter value, 02h = step up value, 03h = step down value),
and an optional second parameter is the preset number (0 = no
preset, 1 – 40 [01h – 28h] = specific preset). When the current
value instruction is used, the omission of the parameter byte
makes it a request. If the command is for a feature not supported
by the Onkyo zone, a response will be generated with the
instruction byte set to FFh.
◦ 02h: Bass. Same format as above. The parameter is the bass level
(-10 – 10 [F6h – 0Ah]).
◦ 03h: Treble. Same format as above. The parameter is the treble
level (-10 – 10 [F6h – 0Ah]).
◦ 04h: Balance. Same format as above. The parameter is the balance
level (-10 – 10 [F6h – 0Ah]).
◦ 05h: Listening mode. Same format as above. The parameter is the
same value used as the "LMD" - Listening Mode Command in the
Onkyo ISCP documentation.
Notes:
• AX450I, AX4750I and all later amplifiers ignore standby/power B commands.
• ‘Power On’ commands imply that the zone is not muted if the zone was previously off. A mute command
must follow the power on 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.
• All tracking modes require some intelligence on the part of the receiver. This means that a device
transmitting a command does not need to account for all tracking modes and settings that it is perhaps not
aware of. This is important because not all devices have sufficient memory to store all the settings for all
zones. Furthermore, it means that devices only need to query the parameters for zones that they are
interested in, thus reducing traffic when a device goes on line or is set to a zone.
- Zone linking behaviour:
The “Link zone pair” command tells the zone specified in the zone byte “A” to follow the settings in
the zone to be linked “B”. However it also implicitly tells zone “B” to follow “A”. Likewise if a link zone
command is transmitted that either terminates the zone linking or tells either zones “A” or “B” to link
to another, then both zones “A” and “B” are to stop tracking each other. Similar behaviour is expected
when tracking the settings, if zone “A” changes its source, volume, mute, Preamp tracking mode/offset
or standby settings, devices on zone “B” are expected to synchronise their internal settings and
without sending notifications of any changes on zone “B”. It is not the responsibility of the device on
zone “A” that is making the change to inform zone “B” of any changes and it is not the responsibility of
devices on zone “B” to inform of changes resulting from a change on zone “A”.
The “Link zones” commands tells all the zones in the command to be linked into one group.
Commands sent to any of the zones in the group 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 its linked zones using this command must be
able to list zones in the group that are not used by the device.
• The “no operation” command is useful for resetting the receive status of the amplifier after long periods or
when random signals could have been transmitted to it (e.g. when booting the computer controlling the
amplifier). The zone and data byte should be 00h.