Summary
Serial and TCP/IP control spec for the Anthem STR Preamplifier and STR Integrated Amplifier. The device exposes an RS-232C interface (115200 8N1, straight DB9) and a TCP/IP socket that accepts the exact same command set; the semicolon ; is the only valid line terminator. Documented here are the system, zone, input, volume, level, balance, tone, listening-mode, trigger, simulated-IR, and identification commands.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
addressing:
port: null # UNRESOLVED: TCP port is a user-configurable setup menu setting, not a fixed value
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from ZxPOWy
- routable # inferred from ZxINPyy input selection
- queryable # inferred from ?-suffixed query commands
- levelable # inferred from ZxVOL, ZxMUT, Z1LEV, Z1BAL, Z1TON
Actions
- id: fp_brightness
label: Front Panel Brightness
kind: action
command: "FPB{x};"
params:
- name: x
type: integer
description: "0=off, 1=low, 2=medium, 3=high, 4=max, n=cycle to next"
- id: fp_brightness_query
label: Front Panel Brightness Query
kind: query
command: "FPB?;"
params: []
- id: set_speaker_profile
label: Set Speaker Profile
kind: action
command: "SSP{xx}{y};"
params:
- name: xx
type: string
description: "Input number 00-ZZ (00 = current input), two-digit zero-padded"
- name: y
type: integer
description: "Profile number 1-4"
- id: query_speaker_profile
label: Query Speaker Profile
kind: query
command: "SSP{xx}?;"
params:
- name: xx
type: string
description: "Input number 00-ZZ, two-digit zero-padded"
- id: query_speaker_profile_name
label: Query Speaker Profile Name
kind: query
command: "SPN{y}?;"
params:
- name: y
type: integer
description: "Profile number 1-4"
- id: zone_power
label: Zone Power
kind: action
command: "Z{x}POW{y};"
params:
- name: x
type: integer
description: "Zone: 0=all zones, 1=main, 2/3 where applicable. For STR only Z0 and Z1 apply."
- name: y
type: integer
description: "0=off, 1=on"
notes: "In ECO standby, send twice to wake (e.g. Z0POW1;Z0POW1;). Z0 only valid for power."
- id: zone_power_query
label: Zone Power Query
kind: query
command: "Z{x}POW?;"
params:
- name: x
type: integer
description: "Zone 0-3. Z0/Z1 only meaningful for STR."
- id: id_query_full
label: Query Model and Firmware
kind: query
command: "IDQ?;"
params: []
- id: id_query_model
label: Query Model
kind: query
command: "IDM?;"
params: []
- id: id_query_sw_version
label: Query Software Version
kind: query
command: "IDS?;"
params: []
- id: id_query_sw_build_date
label: Query Software Build Date
kind: query
command: "IDB?;"
params: []
- id: id_query_hw_version
label: Query Hardware Version
kind: query
command: "IDH?;"
params: []
- id: id_query_mac
label: Query MCU MAC Address
kind: query
command: "IDN?;"
params: []
- id: query_input_count
label: Query Number of Active Inputs
kind: query
command: "ICN?;"
params: []
- id: query_input_name
label: Query Input Name
kind: query
command: "ISN{yy}?;"
params:
- name: yy
type: string
description: "Input number 01-ZZ, two-digit zero-padded. Max 10 ASCII characters in name."
- id: zone_input_select
label: Zone Input Select
kind: action
command: "Z{x}INP{yy};"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- name: yy
type: string
description: "Input number 01-ZZ, two-digit zero-padded"
- id: zone_input_query
label: Zone Input Query
kind: query
command: "Z{x}INP?;"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- id: volume_up
label: Zone Volume Up
kind: action
command: "Z{x}VUP{yy.y};"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- name: yy.y
type: number
description: "Step in dB, 0.0-10.0, or m for model minimum. Rounded to nearest valid value."
- id: volume_down
label: Zone Volume Down
kind: action
command: "Z{x}VDN{yy.y};"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- name: yy.y
type: number
description: "Step in dB, 0.0-10.0, or m for model minimum. Rounded to nearest valid value."
- id: volume_set
label: Zone Volume Set
kind: action
command: "Z{x}VOL{s}{yy.y};"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- name: s
type: string
description: "Sign: + or -"
- name: yy.y
type: number
description: "Volume in dB. Rounded to nearest valid value."
- id: volume_query
label: Zone Volume Query
kind: query
command: "Z{x}VOL?;"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- id: mute
label: Zone Mute
kind: action
command: "Z{x}MUT{y};"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- name: y
type: string
description: "0=unmute, 1=mute, t=toggle"
- id: mute_query
label: Zone Mute Query
kind: query
command: "Z{x}MUT?;"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- id: arc
label: Zone ARC On/Off
kind: action
command: "Z{x}ARC{y};"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- name: y
type: integer
description: "0=off, 1=on. Returns error if no ARC co-efficients loaded or input is analog direct."
- id: arc_query
label: Zone ARC Query
kind: query
command: "Z{x}ARC?;"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- id: balance_left
label: Balance Left
kind: action
command: "Z1BLT{yyy};"
params:
- name: yyy
type: integer
description: "Percent 0-100, or m for model minimum. Rounded to nearest valid value."
- id: balance_right
label: Balance Right
kind: action
command: "Z1BRT{yyy};"
params:
- name: yyy
type: integer
description: "Percent 0-100, or m for model minimum. Rounded to nearest valid value."
- id: balance_set
label: Balance Set
kind: action
command: "Z1BAL{yyy};"
params:
- name: yyy
type: integer
description: "Percent 0-100. 0=full left, 50=center, 100=full right. Rounded to nearest valid value."
- id: balance_query
label: Balance Query
kind: query
command: "Z1BAL?;"
params: []
- id: level_up
label: Channel Level Up
kind: action
command: "Z1LUP{y}{zz.z};"
params:
- name: y
type: integer
description: "Channel: 0=subs (only group valid for STR), 1=fronts, 2=center, 3=surrounds, 4=backs, 5=LFE, 6=Heights1, 7=Heights2"
- name: zz.z
type: number
description: "Step in dB, 0.0-10.0, or m for model minimum."
- id: level_down
label: Channel Level Down
kind: action
command: "Z1LDN{y}{zz.z};"
params:
- name: y
type: integer
description: "Channel: 0=subs, 1=fronts, 2=center, 3=surrounds, 4=backs, 5=LFE, 6=Heights1, 7=Heights2"
- name: zz.z
type: number
description: "Step in dB, 0.0-10.0, or m for model minimum."
- id: level_set
label: Channel Level Set
kind: action
command: "Z1LEV{y}{s}{zz.z};"
params:
- name: y
type: integer
description: "Channel: 0=subs, 1=fronts, 2=center, 3=surrounds, 4=backs, 5=LFE, 6=Heights1, 7=Heights2"
- name: s
type: string
description: "Sign: + or -"
- name: zz.z
type: number
description: "Subs/fronts/center/surrounds/backs: -10.0 to +10.0 dB. LFE: -10 to 0 dB. Rounded to nearest valid value."
- id: level_query
label: Channel Level Query
kind: query
command: "Z1LEV{y}?;"
params:
- name: y
type: integer
description: "Channel: 0=subs, 1=fronts, 2=center, 3=surrounds, 4=backs, 5=LFE, 6=Heights1, 7=Heights2"
- id: tone_up
label: Tone Up
kind: action
command: "Z1TUP{y}{zz.z};"
params:
- name: y
type: integer
description: "0=bass, 1=treble"
- name: zz.z
type: number
description: "Step in dB, 0.0-10.0, or m for model minimum."
- id: tone_down
label: Tone Down
kind: action
command: "Z1TDN{y}{zz.z};"
params:
- name: y
type: integer
description: "0=bass, 1=treble"
- name: zz.z
type: number
description: "Step in dB, 0.0-10.0, or m for model minimum."
- id: tone_set
label: Tone Set
kind: action
command: "Z1TON{y}{s}{zz.z};"
params:
- name: y
type: integer
description: "0=bass, 1=treble"
- name: s
type: string
description: "Sign: + or -"
- name: zz.z
type: number
description: "Tone delta in dB."
- id: tone_query
label: Tone Query
kind: query
command: "Z1TON{y}?;"
params:
- name: y
type: integer
description: "0=bass, 1=treble"
- id: simulate_ir
label: Simulate IR Command
kind: action
command: "Z{x}SIM{yyyy};"
params:
- name: x
type: integer
description: "Zone. For STR always Z1."
- name: yyyy
type: string
description: "Four-digit IR key code. Valid values: 10=Power On, 11=Power Off, 12=Setup, 13=Input, 14=Mode, 16=Level, 17=Info, 18=Up, 19=Down, 20=Left, 21=Right, 22=Select, 25=Volume Up, 26=Volume Down, 27=Mute Toggle. Zero-pad (e.g. Key 10 = 0010)."
- id: setup_menu_display
label: Setup Menu Display
kind: action
command: "Z1SMD{x};"
params:
- name: x
type: string
description: "0=close, 1=open, t=toggle"
- id: setup_menu_display_query
label: Setup Menu Display Query
kind: query
command: "Z1SMD?;"
params: []
- id: query_audio_input_format
label: Query Audio Input Format
kind: query
command: "Z1AIF?;"
params: []
notes: "Response code: 0=no input, 1=Analog, 2=PCM, 3=Dolby, 4=DSD, 5=DTS, 6=Atmos. Not all models support all formats."
- id: query_sample_rate
label: Query Audio Sample Rate
kind: query
command: "Z1SRT?;"
params: []
notes: "Returns kHz; 0=analog direct or no input."
- id: listening_mode
label: Audio Listening Mode
kind: action
command: "Z1ALM{yy};"
params:
- name: yy
type: string
description: "00=None, 01=AnthemLogic-Movie, 02=AnthemLogic-Music, 03=PLIIx Movie, 04=PLIIx Music, 05=Neo:6 Cinema, 06=Neo:6 Music, 07=Stereo, 08=All-Channel Mono, 09=Mono, 10=Mono-Academy, 11=Mono(L), 12=Mono(R), 13=High Blend, 14=Dolby Surround, 15=Neo:X-Cinema, 16=Neo:X-Music, na=cycle next applicable, pa=cycle previous applicable. For STR only Stereo, Mono, Both=L, Both=R are valid."
- id: listening_mode_query
label: Audio Listening Mode Query
kind: query
command: "Z1ALM?;"
params: []
- id: trigger_control
label: Trigger Control Source
kind: action
command: "R{x}CTL{y};"
params:
- name: x
type: integer
description: "Trigger number: 0=trigger 1, 1=trigger 2"
- name: y
type: integer
description: "0=menu control, 1=RS-232/IP"
- id: trigger_control_query
label: Trigger Control Source Query
kind: query
command: "R{x}CTL?;"
params:
- name: x
type: integer
description: "Trigger number: 0=trigger 1, 1=trigger 2"
- id: trigger_set
label: Trigger Set
kind: action
command: "R{x}SET{y};"
params:
- name: x
type: integer
description: "Trigger number: 0=trigger 1, 1=trigger 2"
- name: y
type: integer
description: "0=off, 1=on. Only valid if trigger control is set to RS-232/IP."
- id: trigger_set_query
label: Trigger State Query
kind: query
command: "R{x}SET?;"
params:
- name: x
type: integer
description: "Trigger number: 0=trigger 1, 1=trigger 2"
Feedbacks
- id: power_state
type: enum
values: [on, off]
description: "Response to ZxPOW? includes the original prefix, e.g. Z1POW1."
- id: front_panel_brightness
type: enum
values: [0, 1, 2, 3, 4]
description: "Response to FPB? is FPB<0-4>."
- id: volume
type: string
description: "Response to ZxVOL? is Z{x}VOL{s}{yy.y}, e.g. Z1VOL-35 for -35 dB."
- id: mute
type: enum
values: [0, 1]
description: "Response to ZxMUT? is Z{x}MUT<0|1>."
- id: arc
type: enum
values: [0, 1]
description: "Response to ZxARC? is Z{x}ARC<0|1>."
- id: balance
type: integer
description: "Response to Z1BAL? is Z1BAL<0-100> percent. 0=full left, 50=center, 100=full right."
- id: channel_level
type: string
description: "Response to Z1LEV{y}? is Z1LEV{y}{s}{zz.z} dB. Subs/fronts/center/surrounds/backs: -10.0 to +10.0 dB. LFE: -10 to 0 dB."
- id: tone
type: string
description: "Response to Z1TON{y}? is Z1TON{y}{s}{zz.z} dB for y=0 (bass) or y=1 (treble)."
- id: audio_input_format
type: enum
values: [0, 1, 2, 3, 4, 5, 6]
description: "Response to Z1AIF?. 0=no input, 1=Analog, 2=PCM, 3=Dolby, 4=DSD, 5=DTS, 6=Atmos. Not all models support all formats."
- id: sample_rate_khz
type: integer
description: "Response to Z1SRT? is the sample rate in kHz. 0 = analog direct or no input."
- id: listening_mode
type: string
description: "Response to Z1ALM? is Z1ALM{yy}. See listening_mode action for the full value list."
- id: setup_menu_display
type: enum
values: [0, 1]
description: "Response to Z1SMD? is Z1SMD<0|1>."
- id: input_active_count
type: integer
description: "Response to ICN? is ICN<yy>, the number of active input configurations."
- id: input_name
type: string
description: "Response to ISN{yy}? is ISN{yy}<name> where <name> is up to 10 ASCII characters set in the setup menu."
- id: speaker_profile
type: string
description: "Response to SSP{xx}? is SSP{xx}{y} indicating which of profiles 1-4 is active for input {xx}."
- id: speaker_profile_name
type: string
description: "Response to SPN{y}? is SPN{y}<name> where <name> is the profile name in ASCII as set in setup."
- id: model_id
type: string
description: "Response to IDM? is IDM<model>, e.g. IDMSTR IA."
- id: software_version
type: string
description: "Response to IDS? is IDS<version>, e.g. IDS1.0.5560."
- id: software_build_date
type: string
description: "Response to IDB? is IDB<date>, e.g. IDB5/18/17."
- id: hardware_version
type: string
description: "Response to IDH? is IDH<version>."
- id: mac_address
type: string
description: "Response to IDN? is IDN<mac>, e.g. IDN0004A393FA62 (12 hex chars)."
- id: model_firmware
type: string
description: "Response to IDQ? is IDQ<model> <sw_ver> <build_date> <build_time>, e.g. IDQSTR IA 1.0.5560 5/18/17 16:32."
- id: trigger_control
type: enum
values: [0, 1]
description: "Response to RxCTL? is RxCTL<0|1>. 0=menu, 1=RS-232/IP."
- id: trigger_state
type: enum
values: [0, 1]
description: "Response to RxSET? is RxSET<0|1>. 0=off, 1=on."
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlocks, or power-on sequencing requirements
# documented in source.
Notes
- Semicolon
;is the only valid line terminator. The device treats incoming data on the TCP socket identically to the RS-232 port. - Pinout: DB9 pin 2=TX, pin 3=RX, pin 5=GND. Straight-wired DB9 cable used for PC connection.
- Factory-default serial: 115200 baud, 8 data bits, no parity, 1 stop bit, no flow control.
- Max command length 256 bytes including terminator; max response 258 bytes. Average latency <30 ms, individual command max 100 ms. RS-232 clients should wait at least 1 s for a response before retransmission. Continuous polling should be ~200 ms apart.
- For STR models,
Zxis alwaysZ1for every command except power, whereZ0(all zones) is also valid alongsideZ1. - Power-on from ECO standby may require the power-on command to be sent twice (e.g.
Z0POW1;Z0POW1;); the first wakes the unit, the second is the actual power-on. - Only
IDM?,ZxPOWy, andZxPOW?are valid while the system is in standby; all other commands return!E<command>. - Error responses:
;on success,!E<cmd>for recognized-but-not-executable,!R<cmd>for out-of-range (MRX/AVM; STR rounds to nearest valid value),!Z<cmd>for command sent to a zone that is off while the system is on. - TCP listening port is set in the setup menu; the source does not publish a default. Discovery uses Anthem DDP v1 (
PARCmagic, 16-byte device_name, 16-byte model_name, 16-byte MAC; broadcast on local subnet on connect and on graceful shutdown). - Balance/level/tone commands are on-the-fly adjustments only; use the setup menu and Anthem Room Correction for system-level calibration.
Provenance
source_domains:
- storage.googleapis.com
source_urls:
- https://storage.googleapis.com/sandbox1-anthemav/an/STR-IP-RS232-20251205192153957.xlsx
retrieved_at: 2026-04-30T04:24:14.903Z
last_checked_at: 2026-06-02T21:39:42.697Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:39:42.697Z
matched_actions: 48
action_count: 48
confidence: medium
summary: "All 48 spec actions matched exactly against source command reference; full bidirectional coverage; transport parameters verified. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "TCP listening port is not fixed in source; it is set via the unit's setup menu. No published safety warnings, interlocks, or error-recovery procedures appear in the source."
- "TCP port is a user-configurable setup menu setting, not a fixed value"
- "no safety warnings, interlocks, or power-on sequencing requirements"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0