Summary
Onkyo TX-RZ Series AV Receivers support the ISCP (Integra Serial Control Protocol) over both RS-232 and TCP/IP (eISCP). The protocol uses 3-character command codes with variable-length parameters, covering power, volume, input selection, listening modes, Zone 2/3/4 control, tuner, network/USB playback, and multi-zone audio routing. Commands are sent as ASCII strings with a unit-type prefix and termination characters.
Transport
protocols:
- tcp
- serial
addressing:
port: 60128 # default; configurable 49152-65535
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
traits:
- powerable # PWR, ZPW, PW3, PW4 commands
- queryable # QSTN parameter on nearly every command
- routable # SLI, SLZ, SL3, SL4 input selector commands
- levelable # MVL, ZVL, VL3, VL4 volume commands
Actions
# All commands use ISCP format: "!" + unit_type + 3-char command + parameter + end_char
# Unit type "1" = Receiver. End chars: RS-232=[CR]/[LF]/[CR][LF]; TCP=[EOF]/[EOF][CR]/[EOF][CR][LF]
# Hex parameter values are uppercase ASCII hex (e.g. "0A", "64").
# === Main Zone Power & Audio ===
- id: power_on
label: Power On
kind: action
command: "!1PWR01"
params: []
- id: power_off
label: Power Standby
kind: action
command: "!1PWR00"
params: []
- id: mute_on
label: Mute On
kind: action
command: "!1AMT01"
params: []
- id: mute_off
label: Mute Off
kind: action
command: "!1AMT00"
params: []
- id: mute_toggle
label: Mute Toggle
kind: action
command: "!1AMTTG"
params: []
- id: volume_set
label: Set Volume Level
kind: action
command: "!1MVL{level}"
params:
- name: level
type: string
description: "Hex 00-64 (0-100) or 00-50 (0-80) depending on model"
- id: volume_up
label: Volume Up
kind: action
command: "!1MVLUP"
params: []
- id: volume_down
label: Volume Down
kind: action
command: "!1MVLDOWN"
params: []
- id: volume_up_1db
label: Volume Up 1dB
kind: action
command: "!1MVLUP1"
params: []
- id: volume_down_1db
label: Volume Down 1dB
kind: action
command: "!1MVLDOWN1"
params: []
- id: sleep_set
label: Set Sleep Timer
kind: action
command: "!1SLP{minutes}"
params:
- name: minutes
type: string
description: "Hex 01-5A (1-90 min) or OFF"
- id: sleep_off
label: Sleep Timer Off
kind: action
command: "!1SLPOFF"
params: []
- id: sleep_up
label: Sleep Timer Wrap Up
kind: action
command: "!1SLPUP"
params: []
# === Main Zone Input Selection ===
- id: select_input
label: Select Input
kind: action
command: "!1SLI{input}"
params:
- name: input
type: enum
values:
- "00" # VCR/DVR (VIDEO1)
- "01" # CBL/SAT (VIDEO2)
- "02" # GAME/TV (VIDEO3)
- "03" # AUX1
- "04" # AUX2 (VIDEO5)
- "05" # VIDEO6
- "06" # VIDEO7
- "10" # DVD
- "20" # TAPE/TV/TAPE
- "21" # TAPE2
- "22" # PHONO
- "23" # CD
- "24" # FM
- "25" # AM
- "26" # TUNER
- "27" # MUSIC SERVER
- "28" # INTERNET RADIO
- "29" # USB/USB Front
- "2A" # USB Rear
- "30" # MULTI CH
- "40" # Universal PORT
- "80" # SOURCE (Zone 2/3/4 only)
description: Input selector code in hex
- id: input_up
label: Input Selector Up
kind: action
command: "!1SLIUP"
params: []
- id: input_down
label: Input Selector Down
kind: action
command: "!1SLIDOWN"
params: []
# === Listening Mode ===
- id: set_listening_mode
label: Set Listening Mode
kind: action
command: "!1LMD{mode}"
params:
- name: mode
type: enum
values:
- "00" # STEREO
- "01" # DIRECT
- "02" # SURROUND
- "0F" # MONO
- "11" # PURE AUDIO
- "40" # 5.1ch Surround / Straight Decode
- "80" # PLII/PLIIx Movie
- "81" # PLII/PLIIx Music
- "82" # Neo:6 Cinema
- "83" # Neo:6 Music
description: "Listening mode code (partial list - source has 50+ modes)"
- id: listening_mode_up
label: Listening Mode Up
kind: action
command: "!1LMDUP"
params: []
- id: listening_mode_down
label: Listening Mode Down
kind: action
command: "!1LMDDOWN"
params: []
# === Audio Processing ===
- id: set_late_night
label: Set Late Night Mode
kind: action
command: "!1LTN{mode}"
params:
- name: mode
type: enum
values: ["00", "01", "02", "03"]
description: "00=Off, 01=Low(DD)/On(TrueHD), 02=High(DD), 03=Auto(TrueHD)"
- id: set_audyssey_eq
label: Set Audyssey EQ
kind: action
command: "!1ADY{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
- id: set_audyssey_dyn_eq
label: Set Audyssey Dynamic EQ
kind: action
command: "!1ADQ{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
- id: set_audyssey_dyn_vol
label: Set Audyssey Dynamic Volume
kind: action
command: "!1ADV{state}"
params:
- name: state
type: enum
values: ["00", "01", "02", "03"]
description: "00=Off, 01=Light, 02=Medium, 03=Heavy"
- id: set_music_optimizer
label: Set Music Optimizer
kind: action
command: "!1MOT{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
# === Speaker Commands ===
- id: set_speaker_a
label: Set Speaker A
kind: action
command: "!1SPA{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
- id: set_speaker_b
label: Set Speaker B
kind: action
command: "!1SPB{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
# === Tone Control (Front) ===
- id: set_front_bass
label: Set Front Bass
kind: action
command: "!1TFRB{value}"
params:
- name: value
type: string
description: "-A to +A (-10 to +10, 2-step increments)"
- id: set_front_treble
label: Set Front Treble
kind: action
command: "!1TFRT{value}"
params:
- name: value
type: string
description: "-A to +A (-10 to +10, 2-step increments)"
# === Dimmer ===
- id: set_dimmer
label: Set Dimmer Level
kind: action
command: "!1DIM{level}"
params:
- name: level
type: enum
values: ["00", "01", "02", "03", "08", "DIM"]
description: "00=Bright, 01=Dim, 02=Dark, 03=Shut-Off, 08=Bright & LED OFF, DIM=Wrap"
# === Audio Selector ===
- id: set_audio_selector
label: Set Audio Selector
kind: action
command: "!1SLA{mode}"
params:
- name: mode
type: enum
values: ["00", "01", "02", "03", "04", "05", "06"]
description: "00=AUTO, 01=MULTI-CHANNEL, 02=ANALOG, 03=iLINK, 04=HDMI, 05=COAX/OPT, 06=BALANCE"
# === 12V Triggers ===
- id: set_trigger_a
label: Set 12V Trigger A
kind: action
command: "!1TGA{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
- id: set_trigger_b
label: Set 12V Trigger B
kind: action
command: "!1TGB{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
- id: set_trigger_c
label: Set 12V Trigger C
kind: action
command: "!1TGC{state}"
params:
- name: state
type: enum
values: ["00", "01"]
description: "00=Off, 01=On"
# === HDMI Output ===
- id: set_hdmi_output
label: Set HDMI Output
kind: action
command: "!1HDO{mode}"
params:
- name: mode
type: enum
values: ["00", "01", "02", "03", "04", "05"]
description: "00=No Analog, 01=Out Main, 02=Out Sub, 03=Both, 04=Both(Main), 05=Both(Sub)"
# === Monitor Out Resolution ===
- id: set_resolution
label: Set Monitor Out Resolution
kind: action
command: "!1RES{mode}"
params:
- name: mode
type: enum
values: ["00", "01", "02", "03", "04", "05", "06", "07"]
description: "00=Through, 01=Auto, 02=480p, 03=720p, 04=1080i, 05=1080p, 06=Source, 07=1080p/24fs"
# === Network/USB Playback ===
- id: net_play
label: Network/USB Play
kind: action
command: "!1NTCPLAY"
params: []
- id: net_stop
label: Network/USB Stop
kind: action
command: "!1NTCSTOP"
params: []
- id: net_pause
label: Network/USB Pause
kind: action
command: "!1NTCPAUSE"
params: []
- id: net_track_up
label: Network/USB Track Up
kind: action
command: "!1NTCTRUP"
params: []
- id: net_track_down
label: Network/USB Track Down
kind: action
command: "!1NTCTRDN"
params: []
- id: net_repeat
label: Network/USB Repeat
kind: action
command: "!1NTCREPEAT"
params: []
- id: net_random
label: Network/USB Random
kind: action
command: "!1NTCRANDOM"
params: []
# === OSD Navigation ===
- id: osd_menu
label: OSD Menu
kind: action
command: "!1OSDMENU"
params: []
- id: osd_up
label: OSD Up
kind: action
command: "!1OSDUP"
params: []
- id: osd_down
label: OSD Down
kind: action
command: "!1OSDDOWN"
params: []
- id: osd_left
label: OSD Left
kind: action
command: "!1OSDLEFT"
params: []
- id: osd_right
label: OSD Right
kind: action
command: "!1OSDRIGHT"
params: []
- id: osd_enter
label: OSD Enter
kind: action
command: "!1OSDENTER"
params: []
- id: osd_exit
label: OSD Exit
kind: action
command: "!1OSDEXIT"
params: []
# === Zone 2 Power & Audio ===
- id: zone2_power_on
label: Zone 2 Power On
kind: action
command: "!1ZPW01"
params: []
- id: zone2_power_off
label: Zone 2 Power Standby
kind: action
command: "!1ZPW00"
params: []
- id: zone2_mute_on
label: Zone 2 Mute On
kind: action
command: "!1ZMT01"
params: []
- id: zone2_mute_off
label: Zone 2 Mute Off
kind: action
command: "!1ZMT00"
params: []
- id: zone2_mute_toggle
label: Zone 2 Mute Toggle
kind: action
command: "!1ZMTTG"
params: []
- id: zone2_volume_set
label: Zone 2 Set Volume
kind: action
command: "!1ZVL{level}"
params:
- name: level
type: string
description: "Hex 00-64 (0-100) or 00-50 (0-80)"
- id: zone2_volume_up
label: Zone 2 Volume Up
kind: action
command: "!1ZVLUP"
params: []
- id: zone2_volume_down
label: Zone 2 Volume Down
kind: action
command: "!1ZVLDOWN"
params: []
- id: zone2_select_input
label: Zone 2 Select Input
kind: action
command: "!1SLZ{input}"
params:
- name: input
type: string
description: "Same hex codes as main SLI command (subset available)"
# === Zone 3 Power & Audio ===
- id: zone3_power_on
label: Zone 3 Power On
kind: action
command: "!1PW301"
params: []
- id: zone3_power_off
label: Zone 3 Power Standby
kind: action
command: "!1PW300"
params: []
- id: zone3_mute_on
label: Zone 3 Mute On
kind: action
command: "!1MT301"
params: []
- id: zone3_mute_off
label: Zone 3 Mute Off
kind: action
command: "!1MT300"
params: []
- id: zone3_volume_set
label: Zone 3 Set Volume
kind: action
command: "!1VL3{level}"
params:
- name: level
type: string
description: "Hex 00-64 (0-100) or 00-50 (0-80)"
- id: zone3_volume_up
label: Zone 3 Volume Up
kind: action
command: "!1VL3UP"
params: []
- id: zone3_volume_down
label: Zone 3 Volume Down
kind: action
command: "!1VL3DOWN"
params: []
- id: zone3_select_input
label: Zone 3 Select Input
kind: action
command: "!1SL3{input}"
params:
- name: input
type: string
description: "Same hex codes as main SLI command (subset available)"
# === Zone 4 Power & Audio ===
- id: zone4_power_on
label: Zone 4 Power On
kind: action
command: "!1PW401"
params: []
- id: zone4_power_off
label: Zone 4 Power Standby
kind: action
command: "!1PW400"
params: []
- id: zone4_mute_on
label: Zone 4 Mute On
kind: action
command: "!1MT401"
params: []
- id: zone4_mute_off
label: Zone 4 Mute Off
kind: action
command: "!1MT400"
params: []
- id: zone4_volume_set
label: Zone 4 Set Volume
kind: action
command: "!1VL4{level}"
params:
- name: level
type: string
description: "Hex 00-64 (0-100) or 00-50 (0-80)"
- id: zone4_volume_up
label: Zone 4 Volume Up
kind: action
command: "!1VL4UP"
params: []
- id: zone4_volume_down
label: Zone 4 Volume Down
kind: action
command: "!1VL4DOWN"
params: []
- id: zone4_select_input
label: Zone 4 Select Input
kind: action
command: "!1SL4{input}"
params:
- name: input
type: string
description: "Same hex codes as main SLI command (subset available)"
# UNRESOLVED: Tone commands for all speaker zones (TFR, TFW, TFH, TCT, TSR, TSB, TSW, ZTN, TN3)
# documented in source but omitted here for brevity. Follow same ISCP pattern.
# UNRESOLVED: Tuner commands (TUN, PRS, PRM) and HD Radio commands documented but model-dependent.
# UNRESOLVED: XM/SIRIUS commands model-dependent.
# UNRESOLVED: RI System commands (CCD, CT1, CT2, CDV, CMD, CCR, CDS) for external RI devices.
# UNRESOLVED: RECOUT selector (SLR), ISF mode, Memory setup (MEM), Display commands.
Feedbacks
# Query any command by appending "QSTN" as the parameter.
# Device returns current state as a status message.
# Example: "!1PWRQSTN" -> "!1PWR01" (power on)
- id: power_state
label: System Power State
type: enum
command: "!1PWRQSTN"
values: ["00", "01"]
value_meaning:
"00": standby
"01": on
- id: mute_state
label: Audio Mute State
type: enum
command: "!1AMTQSTN"
values: ["00", "01"]
value_meaning:
"00": unmuted
"01": muted
- id: volume_level
label: Master Volume Level
type: string
command: "!1MVLQSTN"
description: "Returns hex value (00-64 or 00-50 depending on model)"
- id: input_selected
label: Selected Input
type: string
command: "!1SLIQSTN"
description: "Returns hex input code matching SLI parameter values"
- id: listening_mode
label: Listening Mode
type: string
command: "!1LMDQSTN"
description: "Returns hex listening mode code"
- id: zone2_power_state
label: Zone 2 Power State
type: enum
command: "!1ZPWQSTN"
values: ["00", "01"]
value_meaning:
"00": standby
"01": on
- id: zone2_mute_state
label: Zone 2 Mute State
type: enum
command: "!1ZMTQSTN"
values: ["00", "01"]
value_meaning:
"00": unmuted
"01": muted
- id: zone2_volume_level
label: Zone 2 Volume Level
type: string
command: "!1ZVLQSTN"
description: "Returns hex value"
- id: zone2_input_selected
label: Zone 2 Selected Input
type: string
command: "!1SLZQSTN"
description: "Returns hex input code"
- id: zone3_power_state
label: Zone 3 Power State
type: enum
command: "!1PW3QSTN"
values: ["00", "01"]
value_meaning:
"00": standby
"01": on
- id: zone3_volume_level
label: Zone 3 Volume Level
type: string
command: "!1VL3QSTN"
- id: zone3_input_selected
label: Zone 3 Selected Input
type: string
command: "!1SL3QSTN"
- id: zone4_power_state
label: Zone 4 Power State
type: enum
command: "!1PW4QSTN"
values: ["00", "01"]
value_meaning:
"00": standby
"01": on
- id: zone4_volume_level
label: Zone 4 Volume Level
type: string
command: "!1VL4QSTN"
- id: zone4_input_selected
label: Zone 4 Selected Input
type: string
command: "!1SL4QSTN"
- id: audio_info
label: Audio Information
type: string
command: "!1IFAQSTN"
description: "Audio program info (same as front-panel display)"
- id: video_info
label: Video Information
type: string
command: "!1IFVQSTN"
description: "Video format info (same as front-panel display)"
- id: net_play_status
label: Network/USB Play Status
type: string
command: "!1NSTQSTN"
description: "3-char string: p=Play status (S=STOP, P=Play, p=Pause, F=FF, R=FR), r=Repeat, s=Shuffle"
- id: net_track_info
label: Network/USB Track Info
type: string
command: "!1NTRQSTN"
description: "Format: cccc/tttt (current/total)"
- id: net_time_info
label: Network/USB Time Info
type: string
command: "!1NTMQSTN"
description: "Format: mm:ss/mm:ss (elapsed/total)"
# UNRESOLVED: Feedbacks for tone (TFR, ZTN, TN3), sleep timer (SLP), dimmer (DIM),
# Audyssey settings, late night, trigger states, HDMI output, resolution, etc.
Variables
- id: master_volume
label: Master Volume
type: integer
min: 0
max: 100
unit: "level (hex-encoded)"
set_command: "!1MVL{value}"
query_command: "!1MVLQSTN"
description: "Volume 0-100 in hex (00-64). Some models 0-80 (00-50)."
- id: zone2_volume
label: Zone 2 Volume
type: integer
min: 0
max: 100
unit: "level (hex-encoded)"
set_command: "!1ZVL{value}"
query_command: "!1ZVLQSTN"
- id: zone3_volume
label: Zone 3 Volume
type: integer
min: 0
max: 100
unit: "level (hex-encoded)"
set_command: "!1VL3{value}"
query_command: "!1VL3QSTN"
- id: zone4_volume
label: Zone 4 Volume
type: integer
min: 0
max: 100
unit: "level (hex-encoded)"
set_command: "!1VL4{value}"
query_command: "!1VL4QSTN"
- id: sleep_timer
label: Sleep Timer
type: integer
min: 0
max: 90
unit: minutes
set_command: "!1SLP{value}"
query_command: "!1SLPQSTN"
description: "Hex 01-5A (1-90 min). Send OFF to disable."
- id: dimmer_level
label: Front Panel Dimmer
type: enum
values: ["00", "01", "02", "03", "08"]
value_meaning:
"00": bright
"01": dim
"02": dark
"03": shut-off
"08": bright & LED off
set_command: "!1DIM{value}"
query_command: "!1DIMQSTN"
Events
# The receiver sends unsolicited status notifications when state changes.
# Format: "!1" + 3-char command + parameter value
# Example: "!1SLI03" when input changes to AUX1
# The controller must maintain a persistent TCP connection to receive these.
# Only one client connection is supported at a time.
- id: status_notification
label: Unsolicited Status Change
type: string
description: >-
Sent when receiver state changes autonomously (e.g. front-panel button press,
remote control, internal timer). Format is identical to query response:
"!1" + command + parameter. Covers all QSTN-addressable commands.
Macros
# UNRESOLVED: no multi-step sequences described in source
Safety
confirmation_required_for: []
interlocks:
- description: >-
Only one TCP client connection allowed at a time. A new connection
will disconnect the previous client, preventing it from receiving
event notifications.
- description: >-
Zone 2 volume/tone commands only work when main zone is ON and
Zone 2 is powered or set to variable output.
# UNRESOLVED: full power-on sequencing requirements not stated in source
# UNRESOLVED: fault behavior and error recovery not documented
Notes
ISCP Message Format (RS-232): "!" + unit_type + command(3 chars) + parameter + [CR|LF|CR LF]. Unit type "1" for receivers.
eISCP Packet Format (TCP): Binary header followed by ISCP data. Header is 16 bytes: magic "ISCP" (4B), header size 0x00000010 (4B, big-endian), data size (4B, big-endian), version 0x01 (1B), reserved 0x000000 (3B). Data payload is the ISCP message terminated with [EOF] (0x1A), optionally followed by [CR][LF].
Query convention: Append QSTN as the parameter to any command to query its current value. The receiver responds with a status message containing the current parameter value.
Timing constraints:
- Minimum 50ms between received messages.
- Receiver responds within 50ms; if no response, communication has failed.
- Persistent TCP connection required to receive unsolicited event notifications.
Volume encoding: Volume levels are hex-encoded ASCII. E.g., MVL0A sets volume to 10 (decimal). Range depends on model: 00-64 (0-100) or 00-50 (0-80).
Zone 2/3/4 commands: Follow the same ISCP pattern with zone-specific command codes (ZPW/ZMT/ZVL/SLZ for Zone 2, PW3/MT3/VL3/SL3 for Zone 3, PW4/MT4/VL4/SL4 for Zone 4).
Network/USB FF/REW: Must be sent continuously with no more than 100ms between codes.
Source document version: ISCP Version 1.15, dated 31 August 2009.
Provenance
source_domains:
- community.symcon.de
source_urls:
- https://community.symcon.de/uploads/short-url/7mxbIQ7qRIghfbEQrvcrEkU57ad.pdf
retrieved_at: 2026-04-29T11:13:56.778Z
last_checked_at: 2026-06-02T22:12:48.289Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:12:48.289Z
matched_actions: 74
action_count: 74
confidence: medium
summary: "All 74 spec actions traced to source (dip-safe re-verify). (16 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "exact TX-RZ sub-models covered by this protocol version not stated"
- "firmware version compatibility not stated"
- "Tone commands for all speaker zones (TFR, TFW, TFH, TCT, TSR, TSB, TSW, ZTN, TN3)"
- "Tuner commands (TUN, PRS, PRM) and HD Radio commands documented but model-dependent."
- "XM/SIRIUS commands model-dependent."
- "RI System commands (CCD, CT1, CT2, CDV, CMD, CCR, CDS) for external RI devices."
- "RECOUT selector (SLR), ISF mode, Memory setup (MEM), Display commands."
- "Feedbacks for tone (TFR, ZTN, TN3), sleep timer (SLP), dimmer (DIM),"
- "no multi-step sequences described in source"
- "full power-on sequencing requirements not stated in source"
- "fault behavior and error recovery not documented"
- "protocol version compatibility across firmware generations not stated"
- "maximum volume range for TX-RZ models specifically not confirmed"
- "behavior when TCP connection is lost during operation not documented"
- "RS-232 pinout details for DB9 connector (pin 2=TX, pin 3=RX, pin 5=GND, straight-thru cable)"
- "whether TX-RZ series supports Zone 4 commands or if that is limited to specific models"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0