Summary
This spec covers control of the Arcam T32 audio tuner via the RS232/serial interface described in Arcam's Custom Installation Notes for the AVR390/AVR550/AVR850/AV860/SR250 family. The T32 is not explicitly named anywhere in the source document — compatibility is assumed from the manufacturer's shared RS232 protocol family. Transport is serial at 38400 bps, 8N1, no flow control.
Transport
protocols:
- serial
serial:
baud_rate: 38400
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
The cable is a null-modem with Rx/Tx crossed and pin 5 ground only (no other hardware handshake lines used).
Frame format on the wire: <St> <Zn> <Cc> <Dl> [<Data...>] <Et> where:
St=0x21(!)Zn= zone (0x01= Zone 1 / master;0x02= Zone 2)Cc= command codeDl= data length (excludes Et)Et=0x0D
Responses echo St Zn Cc Ac Dl [Data...] Et where Ac is an answer code:
0x00= status update / accepted0x82= zone invalid0x83= command not recognised0x84= parameter not recognised0x85= command invalid at this time (e.g. setup menu open, wrong source selected)0x86= invalid data length
Commands 0xF0–0xFF are reserved for test and must not be used.
The AV responds within three seconds. The IP control port is 50000 (per the Set-up section), but no full IP framing is documented in this source — treat IP transport as not covered here.
Traits
- powerable # inferred from power (0x00) commands
- routable # inferred from video selection (0x0A) and source routing commands
- queryable # inferred from request-status commands throughout
- levelable # inferred from volume (0x0D), treble/bass, balance, sub trim commands
Actions
# Protocol framing: each "command:" below is the data portion AFTER the framing
# has been assembled. The literal byte sequence the controller sends is:
# 0x21 <Zn> <Cc> <Dl> <Data...> 0x0D
# Use Zn = 0x01 for Zone 1 unless otherwise stated. Examples show the full
# on-wire sequence in comments where useful.
- id: request_power_state
label: Request Power State (0x00)
kind: query
command: "0x21 <Zn> 0x00 0x01 0xF0 0x0D"
params:
- name: zone
type: integer
description: Zone number (0x01 = Zone 1, 0x02 = Zone 2)
notes: "Response Data byte: 0x00 = standby, 0x01 = powered on."
- id: power_on
label: Power On (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x7B 0x0D"
notes: "Simulates RC5 16-123 (Power On)."
- id: power_off
label: Power Off (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x7C 0x0D"
notes: "Simulates RC5 16-124 (Power Off)."
- id: standby
label: Standby (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x0C 0x0D"
notes: "Simulates RC5 16-12 (Standby)."
- id: request_display_brightness
label: Request Display Brightness (0x01)
kind: query
command: "0x21 0x01 0x01 0x01 0xF0 0x0D"
notes: "Response: 0x00 = off, 0x01 = L1, 0x02 = L2."
- id: cycle_display_brightness
label: Cycle Display Brightness (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x3B 0x0D"
notes: "Simulates RC5 16-59 (DISP / change VFD brightness)."
- id: display_off
label: Display Off (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x1F 0x0D"
- id: display_l1
label: Display L1 (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x22 0x0D"
- id: display_l2
label: Display L2 (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x23 0x0D"
- id: request_headphone_status
label: Request Headphone Status (0x02)
kind: query
command: "0x21 0x01 0x02 0x01 0xF0 0x0D"
notes: "Response: 0x00 = not connected, 0x01 = connected."
- id: request_fm_programme_type
label: Request FM Programme Type (0x03)
kind: query
command: "0x21 <Zn> 0x03 0x01 0xF0 0x0D"
notes: "Returns error 0x85 if FM not selected. Response is ASCII string (e.g. 'POP MUSIC')."
- id: request_software_version
label: Request Software Version (0x04)
kind: query
command: "0x21 0x01 0x04 0x01 0xF{0..5} 0x0D"
params:
- name: component
type: integer
description: "0xF0 = RS232 protocol, 0xF1 = Host, 0xF2 = OSD, 0xF3 = DSP, 0xF4 = NET, 0xF5 = IAP"
notes: "Response: Dl=0x03, then echo, major, minor."
- id: restore_factory_defaults
label: Restore Factory Defaults (0x05)
kind: action
command: "0x21 0x01 0x05 0x02 0xAA 0xAA 0x0D"
notes: "Confirmation pattern 0xAA 0xAA prevents accidental restore."
- id: save_secure_backup
label: Save Secure Backup (0x06)
kind: action
command: "0x21 0x01 0x06 0x07 0x00 0x55 0x55 <pin1> <pin2> <pin3> <pin4> 0x0D"
params:
- name: pin
type: string
description: Four-digit PIN bytes.
notes: "Data1=0x00 for save; confirmation 0x55 0x55; followed by 4 PIN bytes."
- id: restore_secure_backup
label: Restore Secure Backup (0x06)
kind: action
command: "0x21 0x01 0x06 0x07 0x01 0x55 0x55 <pin1> <pin2> <pin3> <pin4> 0x0D"
notes: "Data1=0x01 for restore. Returns 0x85 if no secure copy exists or if 0x1E in progress."
- id: simulate_rc5
label: Simulate RC5 IR Command (0x08)
kind: action
command: "0x21 <Zn> 0x08 0x02 <system> <command> 0x0D"
params:
- name: system
type: integer
description: RC5 system code (e.g. 0x10 for AV, 0x17 for Zone 2)
- name: command
type: integer
description: RC5 command code
notes: "An additional unsolicited status message is typically sent as a side-effect."
- id: set_display_information_type
label: Set/Request Display Information Type (0x09)
kind: action
command: "0x21 <Zn> 0x09 0x01 <mode> 0x0D"
params:
- name: mode
type: integer
description: "0x00=Processing, 0xE0=cycle, 0xF0=request. FM: 0x01=RadioText, 0x02=PTY, 0x03=Signal. DAB: 0x01=RT, 0x02=Genre, 0x03=Signal Quality, 0x04=Bit rate. NET/USB: 0x01=Track, 0x02=Artist, 0x03=Album, 0x04=audio type, 0x05=rate."
notes: "Response echoes the currently-selected display type."
- id: request_current_source
label: Request Current Source (0x1D)
kind: query
command: "0x21 <Zn> 0x1D 0x01 0xF0 0x0D"
notes: "Response: 0x00=Follow Z1, 0x01=CD, 0x02=BD, 0x03=AV, 0x04=SAT, 0x05=PVR, 0x06=VCR, 0x08=AUX, 0x09=DISPLAY, 0x0B=TUNER(FM), 0x0C=TUNER(DAB), 0x0E=NET, 0x0F=USB, 0x10=STB, 0x11=GAME."
- id: select_source_cd
label: Select CD Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x76 0x0D"
- id: select_source_bd
label: Select BD Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x62 0x0D"
- id: select_source_stb
label: Select STB Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x64 0x0D"
- id: select_source_av
label: Select AV Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x5E 0x0D"
- id: select_source_sat
label: Select SAT Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x1B 0x0D"
- id: select_source_pvr
label: Select PVR Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x60 0x0D"
- id: select_source_game
label: Select Game Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x61 0x0D"
- id: select_source_vcr
label: Select VCR Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x77 0x0D"
- id: select_source_aux
label: Select AUX Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x63 0x0D"
- id: select_source_fm
label: Select FM Tuner (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x1C 0x0D"
- id: select_source_dab
label: Select DAB Tuner (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x48 0x0D"
- id: select_source_net
label: Select NET Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x5C 0x0D"
- id: select_source_usb
label: Select USB Source (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x5D 0x0D"
- id: select_source_radio
label: Select Radio (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x5B 0x0D"
- id: select_video_input
label: Video Selection (0x0A)
kind: action
command: "0x21 0x01 0x0A 0x01 <source> 0x0D"
params:
- name: source
type: integer
description: "0x00=BD, 0x01=SAT, 0x02=AV, 0x03=PVR, 0x04=VCR, 0x05=Game, 0x06=STB, 0xF0=request"
notes: "Returns 0x85 if OSD is showing setup screen."
- id: select_audio_input
label: Select Analogue/Digital Audio (0x0B)
kind: action
command: "0x21 <Zn> 0x0B 0x01 <mode> 0x0D"
params:
- name: mode
type: integer
description: "0x00=analogue, 0x01=digital, 0x02=HDMI, 0xF0=request"
notes: "Returns 0x85 if OSD is showing setup screen."
- id: set_volume
label: Set/Request Volume (0x0D)
kind: action
command: "0x21 <Zn> 0x0D 0x01 <level> 0x0D"
params:
- name: level
type: integer
description: "Volume in dB, 0x00 (0) to 0x63 (99). 0xF0 to request current."
notes: "Returns volume even when muted. Pair with mute-status query."
- id: volume_up
label: Volume Up (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x10 0x0D"
- id: volume_down
label: Volume Down (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x11 0x0D"
- id: request_mute_status
label: Request Mute Status (0x0E)
kind: query
command: "0x21 <Zn> 0x0E 0x01 0xF0 0x0D"
notes: "Response: 0x00 = muted, 0x01 = not muted."
- id: mute
label: Mute Toggle (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x0D 0x0D"
- id: mute_on
label: Mute On (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x1A 0x0D"
- id: mute_off
label: Mute Off (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x78 0x0D"
- id: request_direct_mode_status
label: Request Direct Mode Status (0x0F)
kind: query
command: "0x21 0x01 0x0F 0x01 0xF0 0x0D"
notes: "Response: 0x00 = off, 0x01 = on."
- id: direct_mode_on
label: Direct Mode On (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x4E 0x0D"
- id: direct_mode_off
label: Direct Mode Off (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x4F 0x0D"
- id: activate_direct_mode
label: Activate Direct Mode (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x0A 0x0D"
- id: request_decode_mode_2ch
label: Request 2ch Decode Mode (0x10)
kind: query
command: "0x21 0x01 0x10 0x01 0xF0 0x0D"
notes: "Response: 0x01=Stereo, 0x04=Dolby Surround, 0x07=Neo:6 Cinema, 0x08=Neo:6 Music, 0x09=5/7 Ch Stereo, 0x0A=DTS Neural:X, 0x0B=Reserved, 0x0C=DTS Virtual:X."
- id: request_decode_mode_mch
label: Request MCH Decode Mode (0x11)
kind: query
command: "0x21 0x01 0x11 0x01 0xF0 0x0D"
notes: "Response: 0x01=Stereo down-mix, 0x02=Multi-channel, 0x03=DTS-ES/Neural:X, 0x06=Dolby Surround, 0x0B=Reserved, 0x0C=DTS Virtual:X."
- id: request_rds_information
label: Request RDS Information (0x12)
kind: query
command: "0x21 <Zn> 0x12 0x01 0xF0 0x0D"
notes: "Returns 0x85 if FM not selected. Response is ASCII string."
- id: request_video_output_resolution
label: Request Video Output Resolution (0x13)
kind: query
command: "0x21 0x01 0x13 0x01 0xF0 0x0D"
notes: "Response: 0x02=SD Progressive, 0x03=720p, 0x04=1080i, 0x05=1080p, 0x06=Preferred, 0x07=Bypass, 0x08=4k."
- id: cycle_video_output_resolution
label: Cycle Output Resolution (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x2F 0x0D"
- id: request_menu_status
label: Request Menu Status (0x14)
kind: query
command: "0x21 0x01 0x14 0x01 0xF0 0x0D"
notes: "Response: 0x00=None, 0x02=Setup, 0x03=Trim, 0x04=Bass, 0x05=Treble, 0x06=Sync, 0x07=Sub, 0x08=Tuner, 0x09=Network, 0x0A=USB."
- id: request_tuner_preset
label: Request Tuner Preset (0x15)
kind: action
command: "0x21 <Zn> 0x15 0x01 <preset|0xF0> 0x0D"
params:
- name: preset
type: integer
description: "Preset number 1..50 (0x01..0x32), or 0xF0 to request current."
notes: "Returns 0x85 if tuner not selected on zone. Response: 0xFF = none selected, else preset number."
- id: tune_step
label: Tune Increment/Decrement (0x16)
kind: action
command: "0x21 <Zn> 0x16 0x01 <direction|0xF0> 0x0D"
params:
- name: direction
type: integer
description: "0x00=decrement, 0x01=increment, 0xF0=request current"
notes: "FM step is 0.05 MHz. Response Dl=2: MHz byte, 10's-of-kHz byte."
- id: request_dab_station
label: Request DAB Station (0x18)
kind: query
command: "0x21 <Zn> 0x18 0x01 0xF0 0x0D"
notes: "Returns 0x85 if DAB not selected. Response: 16-byte service label, padded with 0x20."
- id: request_dab_programme_type
label: Request DAB Programme Type (0x19)
kind: query
command: "0x21 <Zn> 0x19 0x01 0xF0 0x0D"
notes: "Returns 0x85 if DAB not selected. Response: 16-byte ASCII label, padded with 0x20."
- id: request_dls_pdt
label: Request DLS/PDT Information (0x1A)
kind: query
command: "0x21 <Zn> 0x1A 0x01 0xF0 0x0D"
notes: "Returns 0x85 if DAB not selected. Response: 128-byte ASCII text, padded with 0x20."
- id: request_preset_details
label: Request Preset Details (0x1B)
kind: query
command: "0x21 <Zn> 0x1B 0x01 <preset> 0x0D"
params:
- name: preset
type: integer
description: Preset number 1..50.
notes: "Response: preset#, type (0x01=FM freq, 0x02=FM RDS name, 0x03=DAB), then type-specific data + name."
- id: request_network_playback_status
label: Request Network Playback Status (0x1C)
kind: query
command: "0x21 <Zn> 0x1C 0x01 0xF0 0x0D"
notes: "Returns 0x85 if network not selected. Response status byte: 0x00=Navigating, 0x01=Playing, 0x02=Paused, 0xFF=Busy."
- id: set_imax_enhanced
label: IMAX Enhanced (0x0C)
kind: action
command: "0x21 <Zn> 0x0C 0x01 <mode> 0x0D"
params:
- name: mode
type: integer
description: "0xF0=request, 0xF1=Auto, 0xF2=On, 0xF3=Off"
notes: "Valid for unit code v7.13+. Response: 0x00=Off, 0x01=On, 0x02=Auto."
- id: set_treble
label: Treble Equalisation (0x35)
kind: action
command: "0x21 <Zn> 0x35 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00..0x0C = 0..+12 dB; 0x81..0x8C = -1..-12 dB; 0xF0=request; 0xF1=+1 dB; 0xF2=-1 dB."
- id: set_bass
label: Bass Equalisation (0x36)
kind: action
command: "0x21 <Zn> 0x36 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00..0x0C = 0..+12 dB; 0x81..0x8C = -1..-12 dB; 0xF0=request; 0xF1=+1 dB; 0xF2=-1 dB."
- id: set_room_equalisation
label: Room Equalisation (0x37)
kind: action
command: "0x21 <Zn> 0x37 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0xF0=request, 0xF1=on, 0xF2=off"
notes: "Response: 0x00=off, 0x01=on, 0x02=not calculated."
- id: set_dolby_volume
label: Dolby Volume (0x38)
kind: action
command: "0x21 <Zn> 0x38 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00=off, 0x01=on, 0xF0=request"
- id: set_dolby_leveller
label: Dolby Leveller (0x39)
kind: action
command: "0x21 <Zn> 0x39 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00..0x0A = 0..10; 0xF0=request; 0xF1=inc; 0xF2=dec; 0xFF=off"
- id: set_dolby_volume_calibration_offset
label: Dolby Volume Calibration Offset (0x3A)
kind: action
command: "0x21 <Zn> 0x3A 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00..0x0F = 0..+15 dB; 0x80..0x8F = -1..-15 dB; 0xF0=request; 0xF1=inc; 0xF2=dec"
- id: set_balance
label: Balance (0x3B)
kind: action
command: "0x21 <Zn> 0x3B 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00..0x06 = 0..6 right; 0x81..0x86 = -1..-6 left; 0xF0=request; 0xF1=inc; 0xF2=dec"
- id: balance_left
label: Balance Left (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x26 0x0D"
- id: balance_right
label: Balance Right (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x28 0x0D"
- id: set_subwoofer_trim
label: Subwoofer Trim (0x3F)
kind: action
command: "0x21 <Zn> 0x3F 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00..0x14 = 0..+10 dB in 0.5 dB steps; 0x81..0x94 = -0.5..-10 dB; 0xF0=request; 0xF1=+0.5 dB; 0xF2=-0.5 dB"
- id: set_lipsync_delay
label: Lipsync Delay (0x40)
kind: action
command: "0x21 <Zn> 0x40 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00..0x32 in 5 ms steps (e.g. 0x08 = 40 ms); 0xF0=request; 0xF1=+5 ms; 0xF2=-5 ms"
- id: lipsync_increase
label: Lipsync +5 ms (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x0F 0x0D"
- id: lipsync_decrease
label: Lipsync -5 ms (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x65 0x0D"
- id: set_compression
label: Compression (0x41)
kind: action
command: "0x21 <Zn> 0x41 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00=off, 0x01=medium, 0x02=high, 0xF0=request"
- id: request_incoming_video_parameters
label: Request Incoming Video Parameters (0x42)
kind: query
command: "0x21 0x01 0x42 0x01 0xF0 0x0D"
notes: "Response Dl=7: H-res MSB, H-res LSB, V-res MSB, V-res LSB, refresh rate, interlaced flag, aspect ratio."
- id: request_incoming_audio_format
label: Request Incoming Audio Format (0x43)
kind: query
command: "0x21 <Zn> 0x43 0x01 0xF0 0x0D"
notes: "Response Dl=2: stream format (0x00=PCM, 0x02=Dolby Digital, 0x05=DD+, 0x06=DD TrueHD, 0x07=DTS, 0x0D=DTS HD MA, 0x16=Dolby Atmos, 0x17=DTS:X, 0x18=IMAX ENHANCED, ...) + channel config."
- id: request_incoming_audio_sample_rate
label: Request Incoming Audio Sample Rate (0x44)
kind: query
command: "0x21 0x01 0x44 0x01 0xF0 0x0D"
notes: "Response: 0x00=32k, 0x01=44.1k, 0x02=48k, 0x03=88.2k, 0x04=96k, 0x05=176.4k, 0x06=192k, 0x07=Unknown, 0x08=Undetected."
- id: set_sub_stereo_trim
label: Set/Request Sub Stereo Trim (0x45)
kind: action
command: "0x21 0x01 0x45 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x00 = 0 dB; 0x81..0x94 = -0.5..-10 dB; 0xF0=request; 0xF1=+0.5 dB; 0xF2=-0.5 dB"
- id: set_zone1_osd
label: Set/Request Zone 1 OSD On/Off (0x4E)
kind: action
command: "0x21 0x01 0x4E 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0xF0=request, 0xF1=on, 0xF2=off"
notes: "Response: 0x00=on, 0x01=off."
- id: set_video_output_switching
label: Set/Request Video Output Switching (0x4F)
kind: action
command: "0x21 0x01 0x4F 0x01 <value> 0x0D"
params:
- name: value
type: integer
description: "0x02=HDMI Out 1, 0x03=HDMI Out 2, 0x04=HDMI Out 1+2, 0xF0=request"
- id: select_hdmi_out1
label: Select HDMI Out 1 (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x49 0x0D"
- id: select_hdmi_out2
label: Select HDMI Out 2 (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x4A 0x0D"
- id: select_hdmi_out_both
label: Select HDMI Out 1 & 2 (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x4B 0x0D"
- id: set_input_name
label: Set/Request Input Name (0x20)
kind: action
command: "0x21 <Zn> 0x20 <n> <ASCII bytes...> 0x0D"
params:
- name: name
type: string
description: Up to 10 ASCII characters.
notes: "For query, use Dl=0x01 with Data=0xF0. Response Dl=0x0A on query."
- id: fm_scan_up
label: FM Scan Up (0x23)
kind: action
command: "0x21 0x01 0x23 0x01 0x01 0x0D"
notes: "Only valid on FM input. Response Data=0xFF while scanning."
- id: fm_scan_down
label: FM Scan Down (0x23)
kind: action
command: "0x21 0x01 0x23 0x01 0x02 0x0D"
notes: "Only valid on FM input. Response Data=0xFF while scanning."
- id: dab_scan
label: DAB Scan (0x24)
kind: action
command: "0x21 0x01 0x24 0x01 0xF0 0x0D"
notes: "Only valid on DAB input. Response Data=0xFF while scanning."
- id: heartbeat
label: Heartbeat (0x25)
kind: action
command: "0x21 0x01 0x25 0x01 0xF0 0x0D"
notes: "Resets the EuP standby timer."
- id: reboot
label: Reboot (0x26)
kind: action
command: "0x21 0x01 0x26 0x06 0x52 0x45 0x42 0x4F 0x4F 0x54 0x0D"
notes: "ASCII payload 'REBOOT'."
- id: headphone_override_set
label: Headphone Override Set (0x1F)
kind: action
command: "0x21 <Zn> 0x1F 0x01 0x01 0x0D"
notes: "Activates the mute relays without zeroing the volume."
- id: headphone_override_clear
label: Headphone Override Clear (0x1F)
kind: action
command: "0x21 <Zn> 0x1F 0x01 0x00 0x0D"
- id: zone2_power_on
label: Zone 2 Power On (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x7B 0x0D"
- id: zone2_power_off
label: Zone 2 Power Off (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x7C 0x0D"
- id: zone2_volume_up
label: Zone 2 Volume Up (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x01 0x0D"
- id: zone2_volume_down
label: Zone 2 Volume Down (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x02 0x0D"
- id: zone2_mute
label: Zone 2 Mute Toggle (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x03 0x0D"
- id: zone2_mute_on
label: Zone 2 Mute On (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x04 0x0D"
- id: zone2_mute_off
label: Zone 2 Mute Off (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x05 0x0D"
- id: zone2_select_cd
label: Zone 2 Select CD (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x06 0x0D"
- id: zone2_select_bd
label: Zone 2 Select BD (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x07 0x0D"
- id: zone2_select_stb
label: Zone 2 Select STB (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x08 0x0D"
- id: zone2_select_av
label: Zone 2 Select AV (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x09 0x0D"
- id: zone2_select_game
label: Zone 2 Select Game (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0B 0x0D"
- id: zone2_select_aux
label: Zone 2 Select AUX (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0D 0x0D"
- id: zone2_select_pvr
label: Zone 2 Select PVR (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0F 0x0D"
- id: zone2_select_fm
label: Zone 2 Select FM (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0E 0x0D"
- id: zone2_select_dab
label: Zone 2 Select DAB (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x10 0x0D"
- id: zone2_select_usb
label: Zone 2 Select USB (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x12 0x0D"
- id: zone2_select_net
label: Zone 2 Select NET (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x13 0x0D"
- id: zone2_select_sat
label: Zone 2 Select SAT (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x14 0x0D"
- id: zone2_select_vcr
label: Zone 2 Select VCR (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x15 0x0D"
- id: zone2_follow_zone1
label: Zone 2 Follow Zone 1 (RC5)
kind: action
command: "0x21 0x02 0x08 0x02 0x10 0x14 0x0D"
notes: "RC5 system 16 (Zone 1) command 20."
- id: zone_change_next
label: Change Control to Next Zone (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x5F 0x0D"
- id: cycle_decode_modes
label: Cycle Between Decoding Modes (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x20 0x0D"
- id: decode_mode_stereo
label: Decode Mode: Stereo (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x6B 0x0D"
- id: decode_mode_multichannel
label: Decode Mode: Multi-Channel (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x6A 0x0D"
- id: decode_mode_dolby_surround
label: Decode Mode: Dolby Surround (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x6E 0x0D"
- id: decode_mode_neo6_cinema
label: Decode Mode: DTS Neo:6 Cinema (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x6F 0x0D"
- id: decode_mode_neo6_music
label: Decode Mode: DTS Neo:6 Music (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x70 0x0D"
- id: decode_mode_neural_x
label: Decode Mode: DTS Neural:X (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x71 0x0D"
- id: decode_mode_dts_virtual_x
label: Decode Mode: DTS Virtual:X (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x73 0x0D"
- id: decode_mode_5_7ch_stereo
label: Decode Mode: 5/7 Ch Stereo (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x45 0x0D"
- id: decode_mode_dolby_d_ex
label: Decode Mode: Dolby D EX (RC5)
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x17 0x0D"
- id: treble_up
label: Treble +1 dB (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x2E 0x0D"
- id: treble_down
label: Treble -1 dB (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x66 0x0D"
- id: bass_up
label: Bass +1 dB (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x2C 0x0D"
- id: bass_down
label: Bass -1 dB (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x2D 0x0D"
- id: sub_trim_up
label: Sub Trim +0.5 dB (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x69 0x0D"
- id: sub_trim_down
label: Sub Trim -0.5 dB (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x6C 0x0D"
- id: menu_navigate_up
label: Menu Navigate Up (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x56 0x0D"
- id: menu_navigate_down
label: Menu Navigate Down (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x55 0x0D"
- id: menu_navigate_left
label: Menu Navigate Left (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x51 0x0D"
- id: menu_navigate_right
label: Menu Navigate Right (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x50 0x0D"
- id: menu_ok
label: Menu OK (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x57 0x0D"
- id: menu_home
label: Menu Home (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x2B 0x0D"
- id: menu_open_system
label: Enter System Menu (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x52 0x0D"
- id: menu_open_trim
label: Enter Trim Menu (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x5A 0x0D"
- id: transport_play
label: Transport Play (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x35 0x0D"
- id: transport_pause
label: Transport Pause (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x30 0x0D"
- id: transport_stop
label: Transport Stop (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x36 0x0D"
- id: transport_fast_forward
label: Transport Fast Forward (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x34 0x0D"
- id: transport_rewind
label: Transport Rewind (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x79 0x0D"
- id: transport_skip_forward
label: Transport Skip Forward (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x0B 0x0D"
- id: transport_skip_back
label: Transport Skip Back (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x21 0x0D"
- id: transport_random
label: Transport Random (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x4C 0x0D"
- id: transport_repeat
label: Transport Repeat (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x31 0x0D"
- id: numeric_1
label: Numeric 1 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x01 0x0D"
- id: numeric_2
label: Numeric 2 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x02 0x0D"
- id: numeric_3
label: Numeric 3 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x03 0x0D"
- id: numeric_4
label: Numeric 4 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x04 0x0D"
- id: numeric_5
label: Numeric 5 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x05 0x0D"
- id: numeric_6
label: Numeric 6 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x06 0x0D"
- id: numeric_7
label: Numeric 7 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x07 0x0D"
- id: numeric_8
label: Numeric 8 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x08 0x0D"
- id: numeric_9
label: Numeric 9 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x09 0x0D"
- id: numeric_0
label: Numeric 0 (RC5)
kind: action
command: "0x21 <Zn> 0x08 0x02 0x10 0x00 0x0D"
- id: amx_duet_discovery
label: AMX Duet Discovery
kind: query
command: "\"AMX\\r\""
notes: "ASCII, sent as a bare line ending in 0x0D. Response identifies model and RS232 protocol version."
Feedbacks
- id: power_state
type: enum
values: [standby, on]
- id: display_brightness
type: enum
values: [off, l1, l2]
- id: headphone_connected
type: enum
values: [disconnected, connected]
- id: fm_programme_type
type: string
description: "ASCII string, e.g. 'POP MUSIC'. Returned by 0x03."
- id: dab_programme_type
type: string
description: "16-byte ASCII label padded with 0x20. Returned by 0x19."
- id: dab_station
type: string
description: "16-byte service label padded with 0x20. Returned by 0x18."
- id: dab_dls
type: string
description: "128-byte ASCII text padded with 0x20. Returned by 0x1A."
- id: rds_information
type: string
description: "ASCII RDS radio text. Returned by 0x12."
- id: software_version
type: object
description: "{ echo: 0xF0..0xF5, major, minor }. Returned by 0x04."
- id: rs232_protocol_version
type: string
description: "Reported in AMX Duet discovery response as x.y.z."
- id: video_input
type: enum
values: [bd, sat, av, pvr, vcr, game, stb]
description: "From 0x0A."
- id: audio_input
type: enum
values: [analogue, digital, hdmi]
description: "From 0x0B."
- id: current_source
type: enum
values: [follow_zone_1, cd, bd, av, sat, pvr, vcr, aux, display, tuner_fm, tuner_dab, net, usb, stb, game]
description: "From 0x1D."
- id: volume
type: integer
description: "0..99 dB. From 0x0D."
- id: mute_state
type: enum
values: [muted, unmuted]
- id: direct_mode
type: enum
values: [off, on]
- id: decode_mode_2ch
type: enum
values: [stereo, dolby_surround, neo6_cinema, neo6_music, five_seven_ch_stereo, dts_neural_x, reserved, dts_virtual_x]
description: "From 0x10."
- id: decode_mode_mch
type: enum
values: [stereo_downmix, multichannel, dts_es_neural_x, dolby_surround, reserved, dts_virtual_x]
description: "From 0x11."
- id: video_output_resolution
type: enum
values: [sd_progressive, 720p, 1080i, 1080p, preferred, bypass, "4k"]
- id: menu_open
type: enum
values: [none, setup, trim, bass, treble, sync, sub, tuner, network, usb]
description: "From 0x14."
- id: tuner_preset
type: integer
description: "1..50, or 0xFF meaning none selected. From 0x15."
- id: fm_frequency
type: object
description: "{ mhz, tens_of_khz } in 0.05 MHz steps. From 0x16."
- id: preset_details
type: object
description: "{ preset, type: 0x01=FM freq | 0x02=FM RDS | 0x03=DAB, data, name }."
- id: network_playback_status
type: object
description: "{ state: navigating|playing|paused|busy, label }."
- id: incoming_video_parameters
type: object
description: "{ h_res, v_res, refresh_hz, interlaced, aspect_ratio }."
- id: incoming_audio_format
type: object
description: "{ stream_format, channel_config }."
- id: incoming_audio_sample_rate
type: enum
values: ["32k", "44.1k", "48k", "88.2k", "96k", "176.4k", "192k", unknown, undetected]
- id: zone1_osd
type: enum
values: [on, off]
- id: video_output_switching
type: enum
values: [hdmi_out_1, hdmi_out_2, hdmi_out_1_and_2]
- id: input_name
type: string
description: "Up to 10 ASCII characters. From 0x20."
- id: imax_enhanced_state
type: enum
values: [off, on, auto]
- id: room_eq_state
type: enum
values: [off, on, not_calculated]
- id: dolby_volume_state
type: enum
values: [off, on]
- id: dolby_leveller_value
type: integer
description: "0..10, or 0xFF=off."
- id: dolby_volume_calibration_offset
type: integer
description: "-15..+15 dB."
- id: balance
type: integer
description: "-6..+6."
- id: subwoofer_trim
type: number
description: "-10..+10 dB in 0.5 dB steps."
- id: lipsync_delay_ms
type: integer
description: "0..250 ms in 5 ms steps."
- id: compression
type: enum
values: [off, medium, high]
- id: treble_eq_db
type: integer
description: "-12..+12 dB."
- id: bass_eq_db
type: integer
description: "-12..+12 dB."
- id: sub_stereo_trim_db
type: number
description: "-10..0 dB in 0.5 dB steps."
Variables
# Settable numeric/enum parameters covered as actions above (0x0D, 0x35, 0x36,
# 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3F, 0x40, 0x41, 0x45). No additional standalone
# settable variables beyond these discrete command-bearing actions.
Events
# The device emits unsolicited status messages when state changes (e.g. front
# panel DISPLAY pressed, decode mode change). These are reported on the same
# wire format as responses, with the originating command code and answer
# code 0x00. Their full enumeration is not given in this source document; a
# controller should treat any response with answer code 0x00 received outside
# a command/response pair as an event reflecting the change.
Macros
# UNRESOLVED: no multi-step sequences described explicitly in source.
Safety
confirmation_required_for:
- restore_factory_defaults # requires 0xAA 0xAA confirmation pattern
- reboot # requires ASCII payload 'REBOOT'
- save_secure_backup # requires 0x55 0x55 + 4-digit PIN
- restore_secure_backup # requires 0x55 0x55 + 4-digit PIN
interlocks: []
# UNRESOLVED: no power-on sequencing or interlock procedure stated in source.
Notes
- Source document is titled for AVR390/AVR550/AVR850/AVR860/SR250; the Arcam T32 is not explicitly named anywhere. Compatibility is inferred from the shared Arcam RS232 protocol family. Verify before relying on this spec for a T32.
- IP control uses TCP port 50000 according to the Set-up section, but no IP message framing is given in this source — only the port number is stated.
- AMX Duet discovery is ASCII, terminating with
0x0D(\r), and replies with a model-specific banner; the<Device-Revision>field is the RS232 protocol versionx.y.z. - Commands
0xF0–0xFFare reserved for test functions and must not be transmitted. - Many commands return
0x85("Command invalid at this time") when the Setup Menu is on screen, when the wrong source is selected for a tuner/network command, or while a0x1E(save) command is in progress. - Volume commands report dB directly:
Data = dB(e.g.0x2D= 45 dB). - Subwoofer trim and sub stereo trim encode 0.5 dB steps:
0x00..0x14= 0..+10 dB,0x81..0x94= -0.5..-10 dB. - Lipsync delay is in 5 ms steps:
0x00..0x32= 0..250 ms. - Treble/bass EQ, balance, and Dolby Volume calibration offset use two's-complement-style split ranges (
0x00..0x0Cfor 0..+12 / 0..+15,0x81..0x8C/0x80..0x8Ffor negative values). - Many RC5 IR commands in the source's IR table are reproduced as RS232 actions via the Simulate RC5 (0x08) command — that is the canonical way to invoke them over serial.
Provenance
source_domains:
- arcam.co.uk
source_urls:
- https://www.arcam.co.uk/ugc/tor/avr390/RS232/RS232_860_850_550_390_250_SH274E_D_181018.pdf
retrieved_at: 2026-06-25T21:41:27.911Z
last_checked_at: 2026-09-02T22:16:46.782Z
Verification Summary
verdict: verified
checked_at: 2026-09-02T22:16:46.782Z
matched_actions: 156
action_count: 156
confidence: medium
summary: "All 156 spec actions match source command tables (49 direct opcodes + AMX Duet + ~96 RC5 codes); transport params verbatim; shapes agree. (3 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source document is titled for AVR390/AVR550/AVR850/AVR860/SR250; the Arcam T32 is not mentioned. Treat this spec as provisional and verify against a T32-specific datasheet or the actual device before relying on it."
- "no multi-step sequences described explicitly in source."
- "no power-on sequencing or interlock procedure stated in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0