Summary
Arcam binary RS-232/IP control protocol. Each transmission framed <St=0x21> <Zn> <Cc> <Dl> <Data...> <Et=0x0D>. Responses add an answer code byte after Cc. Includes a Simulate-RC5 wrapper (Cc 0x08) that exposes the full RC5 IR code set over serial/IP. Supports two zones: 0x01 master, 0x02 secondary.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 38400
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
addressing:
port: 50000 # IP control via port 50000 of unit's IP
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from power state query + RC5 Power On/Off commands
- queryable # inferred from many 0xF0 query commands
- routable # inferred from video selection (0x0A) + per-source RC5 commands
- levelable # inferred from volume (0x0D), bass/treble/balance/trim commands
Actions
# === Discovery ===
- id: amx_duet_discovery
label: AMX Duet Discovery Probe
kind: query
command: "AMX\\r"
params: []
notes: ASCII probe; device replies with "AMXB<Device-SDKClass=Receiver><Device-Make=ARCAM><Device-Model=...><Device-Revision=x.y.z>\\r"
# === System (Cc 0x00 - 0x06, 0x08, 0x09) ===
- id: power_status_query
label: Power Status (Query)
kind: query
command: "0x21 {zone} 0x00 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
description: Zone byte 0x01 master / 0x02 secondary
- id: display_brightness_query
label: Display Brightness (Query)
kind: query
command: "0x21 0x01 0x01 0x01 0xF0 0x0D"
params: []
- id: headphone_status_query
label: Headphone Connection Status (Query)
kind: query
command: "0x21 0x01 0x02 0x01 0xF0 0x0D"
params: []
- id: fm_genre_query
label: FM Programme Type (Query)
kind: query
command: "0x21 {zone} 0x03 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: software_version_query
label: Software Version (Query)
kind: query
command: "0x21 0x01 0x04 0x01 {component} 0x0D"
params:
- name: component
type: byte
description: 0xF0 RS232, 0xF1 Host, 0xF2 OSD, 0xF3 DSP, 0xF4 NET, 0xF5 IAP
- id: restore_factory_defaults
label: Restore Factory Default Settings
kind: action
command: "0x21 0x01 0x05 0x02 0xAA 0xAA 0x0D"
params: []
notes: Confirmation pattern 0xAA 0xAA required
- id: save_restore_secure_backup
label: Save / Restore Secure Backup
kind: action
command: "0x21 0x01 0x06 0x07 {op} 0x55 0x55 {pin1} {pin2} {pin3} {pin4} 0x0D"
params:
- name: op
type: byte
description: 0x00 save, 0x01 restore
- name: pin1
type: byte
- name: pin2
type: byte
- name: pin3
type: byte
- name: pin4
type: byte
- id: simulate_rc5
label: Simulate RC5 IR Command (Generic Wrapper)
kind: action
command: "0x21 {zone} 0x08 0x02 {sys} {cmd} 0x0D"
params:
- name: zone
type: byte
- name: sys
type: byte
description: RC5 System code
- name: cmd
type: byte
description: RC5 Command code
- id: display_info_type_set
label: Display Information Type (Set / Cycle / Query)
kind: action
command: "0x21 {zone} 0x09 0x01 {mode} 0x0D"
params:
- name: zone
type: byte
- name: mode
type: byte
description: 0x00 Processing, 0xE0 Cycle, 0xF0 Query; source-specific values 0x01-0x05 per FM/DAB/NET/USB
# === Input (Cc 0x0A, 0x0B, 0x0C) ===
- id: video_selection_set
label: Video Source Selection (Set / Query)
kind: action
command: "0x21 0x01 0x0A 0x01 {source} 0x0D"
params:
- name: source
type: byte
description: 0x00 BD, 0x01 SAT, 0x02 AV, 0x03 PVR, 0x04 VCR, 0x05 Game, 0x06 STB, 0xF0 Query
- id: analogue_digital_select
label: Analogue/Digital/HDMI Audio Select (Set / Query)
kind: action
command: "0x21 {zone} 0x0B 0x01 {audio_type} 0x0D"
params:
- name: zone
type: byte
- name: audio_type
type: byte
description: 0x00 analogue, 0x01 digital, 0x02 HDMI, 0xF0 Query
- id: imax_enhanced_set
label: IMAX Enhanced Control (Set / Query)
kind: action
command: "0x21 {zone} 0x0C 0x01 {state} 0x0D"
params:
- name: zone
type: byte
- name: state
type: byte
description: 0xF0 Query, 0xF1 Auto, 0xF2 On, 0xF3 Off
# === Output / Volume (Cc 0x0D - 0x13) ===
- id: volume_set
label: Volume Set / Query
kind: action
command: "0x21 {zone} 0x0D 0x01 {vol} 0x0D"
params:
- name: zone
type: byte
- name: vol
type: byte
description: 0x00-0x63 (0-99dB), 0xF0 Query
- id: mute_status_query
label: Mute Status (Query)
kind: query
command: "0x21 {zone} 0x0E 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: direct_mode_status_query
label: Direct Mode Status (Query)
kind: query
command: "0x21 0x01 0x0F 0x01 0xF0 0x0D"
params: []
- id: decode_mode_2ch_query
label: Decode Mode 2-channel (Query)
kind: query
command: "0x21 0x01 0x10 0x01 0xF0 0x0D"
params: []
- id: decode_mode_mch_query
label: Decode Mode Multi-channel (Query)
kind: query
command: "0x21 0x01 0x11 0x01 0xF0 0x0D"
params: []
- id: rds_info_query
label: RDS Information (Query)
kind: query
command: "0x21 {zone} 0x12 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: video_output_resolution_query
label: Video Output Resolution (Query)
kind: query
command: "0x21 0x01 0x13 0x01 0xF0 0x0D"
params: []
# === Menu / Tuner (Cc 0x14 - 0x1C) ===
- id: menu_status_query
label: Menu Status (Query)
kind: query
command: "0x21 0x01 0x14 0x01 0xF0 0x0D"
params: []
- id: tuner_preset_set
label: Tuner Preset Set / Query
kind: action
command: "0x21 {zone} 0x15 0x01 {preset} 0x0D"
params:
- name: zone
type: byte
- name: preset
type: byte
description: 0x01-0x32 (1-50) preset number, 0xF0 Query
- id: tune
label: Tune (Step Up / Down / Query)
kind: action
command: "0x21 {zone} 0x16 0x01 {dir} 0x0D"
params:
- name: zone
type: byte
- name: dir
type: byte
description: 0x00 Down 1 step, 0x01 Up 1 step, 0xF0 Query
- id: dab_station_query
label: DAB Station (Query)
kind: query
command: "0x21 {zone} 0x18 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: dab_prog_type_query
label: DAB Programme Type (Query)
kind: query
command: "0x21 {zone} 0x19 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: dls_pdt_info_query
label: DLS/PDT Info (Query)
kind: query
command: "0x21 {zone} 0x1A 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: preset_details_query
label: Preset Details (Query)
kind: query
command: "0x21 {zone} 0x1B 0x01 {preset} 0x0D"
params:
- name: zone
type: byte
- name: preset
type: byte
description: 0x01-0x32 (1-50)
- id: network_playback_status_query
label: Network Playback Status (Query)
kind: query
command: "0x21 {zone} 0x1C 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: current_source_query
label: Current Source (Query)
kind: query
command: "0x21 {zone} 0x1D 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: headphone_override
label: Headphone Override (Set)
kind: action
command: "0x21 {zone} 0x1F 0x01 {state} 0x0D"
params:
- name: zone
type: byte
- name: state
type: byte
description: 0x00 Clear (speakers muted if HP), 0x01 Set (speakers unmuted if HP)
- id: input_name_set_query
label: Input Name Set / Query
kind: action
command: "0x21 0x01 0x20 {dl} {data} 0x0D"
params:
- name: dl
type: byte
description: 0x01 for query, length 1-10 for set
- name: data
type: bytes
description: 0xF0 query, or 1-10 ASCII chars
- id: fm_scan
label: FM Scan Up / Down
kind: action
command: "0x21 0x01 0x23 0x01 {dir} 0x0D"
params:
- name: dir
type: byte
description: 0x01 Scan up, 0x02 Scan down
- id: dab_scan
label: DAB Scan
kind: action
command: "0x21 0x01 0x24 0x01 0xF0 0x0D"
params: []
- id: heartbeat
label: Heartbeat
kind: query
command: "0x21 0x01 0x25 0x01 0xF0 0x0D"
params: []
notes: Resets EuP standby timer
- id: reboot
label: Reboot
kind: action
command: "0x21 0x01 0x26 0x06 0x52 0x45 0x42 0x4F 0x4F 0x54 0x0D"
params: []
notes: ASCII "REBOOT" payload required
# === Setup Adjustment (Cc 0x35 - 0x4F) ===
- id: treble_eq_set
label: Treble Equalisation (Set / Inc / Dec / Query)
kind: action
command: "0x21 {zone} 0x35 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00-0x0C (0 to +12dB), 0x81-0x8C (-1 to -12dB), 0xF0 Q, 0xF1 +1, 0xF2 -1
- id: bass_eq_set
label: Bass Equalisation (Set / Inc / Dec / Query)
kind: action
command: "0x21 {zone} 0x36 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00-0x0C (0 to +12dB), 0x81-0x8C (-1 to -12dB), 0xF0 Q, 0xF1 +1, 0xF2 -1
- id: room_eq_set
label: Room Equalisation (On / Off / Query)
kind: action
command: "0x21 {zone} 0x37 0x01 {state} 0x0D"
params:
- name: zone
type: byte
- name: state
type: byte
description: 0xF0 Query, 0xF1 On, 0xF2 Off
- id: dolby_volume_set
label: Dolby Volume (Set / Query)
kind: action
command: "0x21 {zone} 0x38 0x01 {state} 0x0D"
params:
- name: zone
type: byte
- name: state
type: byte
description: 0x00 Off, 0x01 On, 0xF0 Query
- id: dolby_leveller_set
label: Dolby Leveller (Set / Inc / Dec / Off / Query)
kind: action
command: "0x21 {zone} 0x39 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00-0x0A (0-10), 0xF0 Q, 0xF1 +1, 0xF2 -1, 0xFF Off
- id: dolby_vol_calib_offset
label: Dolby Volume Calibration Offset (Set / Inc / Dec / Query)
kind: action
command: "0x21 {zone} 0x3A 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00-0x0F (0-15dB), 0x80-0x8F (-1 to -15dB), 0xF0 Q, 0xF1 +1, 0xF2 -1
- id: balance_set
label: Balance (Set / Inc / Dec / Query)
kind: action
command: "0x21 {zone} 0x3B 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00-0x06 (0 to +6), 0x81-0x86 (-1 to -6), 0xF0 Q, 0xF1 +1, 0xF2 -1
- id: subwoofer_trim_set
label: Subwoofer Trim (Set / Inc / Dec / Query)
kind: action
command: "0x21 {zone} 0x3F 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00-0x14 (0 to +10dB in 0.5dB), 0x81-0x94 (neg), 0xF0 Q, 0xF1 +0.5, 0xF2 -0.5
- id: lipsync_delay_set
label: Lipsync Delay (Set / Inc / Dec / Query)
kind: action
command: "0x21 {zone} 0x40 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00-0x32 (0-250ms in 5ms steps), 0xF0 Q, 0xF1 +5ms, 0xF2 -5ms
- id: compression_set
label: Dynamic Range Compression (Set / Query)
kind: action
command: "0x21 {zone} 0x41 0x01 {val} 0x0D"
params:
- name: zone
type: byte
- name: val
type: byte
description: 0x00 Off, 0x01 Medium, 0x02 High, 0xF0 Query
- id: incoming_video_params_query
label: Incoming Video Parameters (Query)
kind: query
command: "0x21 {zone} 0x42 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: incoming_audio_format_query
label: Incoming Audio Format (Query)
kind: query
command: "0x21 {zone} 0x43 0x01 0xF0 0x0D"
params:
- name: zone
type: byte
- id: incoming_audio_sample_rate_query
label: Incoming Audio Sample Rate (Query)
kind: query
command: "0x21 0x01 0x44 0x01 0xF0 0x0D"
params: []
- id: sub_stereo_trim_set
label: Sub Stereo Trim (Set / Inc / Dec / Query)
kind: action
command: "0x21 0x01 0x45 0x01 {val} 0x0D"
params:
- name: val
type: byte
description: 0x00 (0dB), 0x81-0x94 (-0.5 to -10dB in 0.5dB steps), 0xF0 Q, 0xF1 +0.5, 0xF2 -0.5
- id: zone1_osd_set
label: Zone 1 OSD On / Off / Query
kind: action
command: "0x21 0x01 0x4E 0x01 {state} 0x0D"
params:
- name: state
type: byte
description: 0xF0 Query, 0xF1 On, 0xF2 Off
- id: video_output_switching_set
label: HDMI Video Output Switching (Set / Query)
kind: action
command: "0x21 0x01 0x4F 0x01 {out} 0x0D"
params:
- name: out
type: byte
description: 0x02 HDMI1, 0x03 HDMI2, 0x04 HDMI1&2, 0xF0 Query
# === RC5 IR codes (Basic Functions table) - each row is a distinct command per source ===
# All transmitted via Cc 0x08; payload = 0x21 {zone} 0x08 0x02 0x10 <code> 0x0D for system 16,
# or 0x21 {zone} 0x08 0x02 0x17 <code> 0x0D for system 23 (Zone 2 controls).
- id: rc5_standby
label: RC5 Standby
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x0C 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_0
label: RC5 Digit 0
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x00 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_1
label: RC5 Digit 1
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x01 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_2
label: RC5 Digit 2
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x02 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_3
label: RC5 Digit 3
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x03 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_4
label: RC5 Digit 4
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x04 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_5
label: RC5 Digit 5
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x05 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_6
label: RC5 Digit 6
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x06 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_7
label: RC5 Digit 7
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x07 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_8
label: RC5 Digit 8
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x08 0x0D"
params:
- name: zone
type: byte
- id: rc5_digit_9
label: RC5 Digit 9
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x09 0x0D"
params:
- name: zone
type: byte
- id: rc5_access_lipsync_delay
label: RC5 Access Lipsync Delay Control
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x32 0x0D"
params:
- name: zone
type: byte
- id: rc5_cycle_vfd_panels
label: RC5 Cycle VFD Information Panels
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x37 0x0D"
params:
- name: zone
type: byte
- id: rc5_rewind
label: RC5 Rewind
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x79 0x0D"
params:
- name: zone
type: byte
- id: rc5_fast_forward
label: RC5 Fast Forward
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x34 0x0D"
params:
- name: zone
type: byte
- id: rc5_skip_back
label: RC5 Skip Back
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x21 0x0D"
params:
- name: zone
type: byte
- id: rc5_skip_forward
label: RC5 Skip Forward
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x0B 0x0D"
params:
- name: zone
type: byte
- id: rc5_stop
label: RC5 Stop
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x36 0x0D"
params:
- name: zone
type: byte
- id: rc5_play
label: RC5 Play
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x35 0x0D"
params:
- name: zone
type: byte
- id: rc5_pause
label: RC5 Pause
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x30 0x0D"
params:
- name: zone
type: byte
- id: rc5_disc_record_enter_trim
label: RC5 Disc (Record) / Enter Trim Menu
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x5A 0x0D"
params:
- name: zone
type: byte
- id: rc5_menu
label: RC5 MENU (Enter System Menu)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x52 0x0D"
params:
- name: zone
type: byte
- id: rc5_nav_up
label: RC5 Navigate Up
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x56 0x0D"
params:
- name: zone
type: byte
- id: rc5_pop_up_dolby_vol
label: RC5 Pop Up (Dolby Volume on/off)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x46 0x0D"
params:
- name: zone
type: byte
- id: rc5_nav_left
label: RC5 Navigate Left
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x51 0x0D"
params:
- name: zone
type: byte
- id: rc5_ok
label: RC5 OK
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x57 0x0D"
params:
- name: zone
type: byte
- id: rc5_nav_right
label: RC5 Navigate Right
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x50 0x0D"
params:
- name: zone
type: byte
- id: rc5_audio_room_eq
label: RC5 Audio (Room EQ on/off)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x1E 0x0D"
params:
- name: zone
type: byte
- id: rc5_nav_down
label: RC5 Navigate Down
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x55 0x0D"
params:
- name: zone
type: byte
- id: rc5_rtn_sub_trim
label: RC5 RTN (Access Subwoofer Trim)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x33 0x0D"
params:
- name: zone
type: byte
- id: rc5_home
label: RC5 HOME
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x2B 0x0D"
params:
- name: zone
type: byte
- id: rc5_mute
label: RC5 Mute (Toggle)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x0D 0x0D"
params:
- name: zone
type: byte
- id: rc5_volume_up
label: RC5 Increase Volume (+)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x10 0x0D"
params:
- name: zone
type: byte
- id: rc5_mode_cycle_decode
label: RC5 MODE (Cycle Decoding Modes)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x20 0x0D"
params:
- name: zone
type: byte
- id: rc5_disp_brightness
label: RC5 DISP (Change VFD Brightness)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x3B 0x0D"
params:
- name: zone
type: byte
- id: rc5_activate_direct
label: RC5 Activate DIRECT Mode
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x0A 0x0D"
params:
- name: zone
type: byte
- id: rc5_volume_down
label: RC5 Decrease Volume (-)
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x11 0x0D"
params:
- name: zone
type: byte
- id: rc5_red
label: RC5 Red
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x29 0x0D"
params:
- name: zone
type: byte
- id: rc5_green
label: RC5 Green
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x2A 0x0D"
params:
- name: zone
type: byte
- id: rc5_yellow
label: RC5 Yellow
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x2B 0x0D"
params:
- name: zone
type: byte
- id: rc5_blue
label: RC5 Blue
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x37 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_radio
label: RC5 Source Radio
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x5B 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_aux
label: RC5 Source Aux
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x63 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_net
label: RC5 Source Net
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x5C 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_usb
label: RC5 Source USB
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x5D 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_av
label: RC5 Source AV
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x5E 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_sat
label: RC5 Source Sat
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x1B 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_pvr
label: RC5 Source PVR
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x60 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_game
label: RC5 Source Game
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x61 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_bd
label: RC5 Source BD
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x62 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_cd
label: RC5 Source CD
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x76 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_stb
label: RC5 Source STB
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x64 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_vcr
label: RC5 Source VCR
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x77 0x0D"
params:
- name: zone
type: byte
- id: rc5_select_display
label: RC5 Source Display
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x3A 0x0D"
params:
- name: zone
type: byte
- id: rc5_power_on
label: RC5 Power On
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x7B 0x0D"
params:
- name: zone
type: byte
- id: rc5_power_off
label: RC5 Power Off
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x7C 0x0D"
params:
- name: zone
type: byte
- id: rc5_next_zone
label: RC5 Change Control To Next Zone
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x5F 0x0D"
params:
- name: zone
type: byte
- id: rc5_cycle_output_resolutions
label: RC5 Cycle Output Resolutions
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x2F 0x0D"
params:
- name: zone
type: byte
- id: rc5_access_bass
label: RC5 Access Bass Control
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x27 0x0D"
params:
- name: zone
type: byte
- id: rc5_access_speaker_trim
label: RC5 Access Speaker Trim Controls
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x25 0x0D"
params:
- name: zone
type: byte
- id: rc5_access_treble
label: RC5 Access Treble Control
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x0E 0x0D"
params:
- name: zone
type: byte
- id: rc5_random
label: RC5 Random
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x4C 0x0D"
params:
- name: zone
type: byte
- id: rc5_repeat
label: RC5 Repeat
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x31 0x0D"
params:
- name: zone
type: byte
- id: rc5_direct_on
label: RC5 Direct Mode On
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x4E 0x0D"
params:
- name: zone
type: byte
- id: rc5_direct_off
label: RC5 Direct Mode Off
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x4F 0x0D"
params:
- name: zone
type: byte
- id: rc5_multi_channel
label: RC5 Multi Channel
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x6A 0x0D"
params:
- name: zone
type: byte
- id: rc5_stereo
label: RC5 Stereo
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x6B 0x0D"
params:
- name: zone
type: byte
- id: rc5_dolby_surround
label: RC5 Dolby Surround
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x6E 0x0D"
params:
- name: zone
type: byte
- id: rc5_neo6_cinema
label: RC5 DTS Neo:6 Cinema
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x6F 0x0D"
params:
- name: zone
type: byte
- id: rc5_neo6_music
label: RC5 DTS Neo:6 Music
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x70 0x0D"
params:
- name: zone
type: byte
- id: rc5_neural_x
label: RC5 DTS Neural:X
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x71 0x0D"
params:
- name: zone
type: byte
- id: rc5_virtual_x
label: RC5 DTS Virtual:X
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x73 0x0D"
params:
- name: zone
type: byte
- id: rc5_57_ch_stereo
label: RC5 5/7 Ch Stereo
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x45 0x0D"
params:
- name: zone
type: byte
- id: rc5_dolby_d_ex
label: RC5 Dolby D EX
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x17 0x0D"
params:
- name: zone
type: byte
- id: rc5_mute_on
label: RC5 Mute On
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x1A 0x0D"
params:
- name: zone
type: byte
- id: rc5_mute_off
label: RC5 Mute Off
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x78 0x0D"
params:
- name: zone
type: byte
- id: rc5_tuner_fm
label: RC5 Tuner FM
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x1C 0x0D"
params:
- name: zone
type: byte
- id: rc5_tuner_dab
label: RC5 Tuner DAB
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x48 0x0D"
params:
- name: zone
type: byte
- id: rc5_lipsync_plus_5ms
label: RC5 Lipsync +5ms
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x0F 0x0D"
params:
- name: zone
type: byte
- id: rc5_lipsync_minus_5ms
label: RC5 Lipsync -5ms
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x65 0x0D"
params:
- name: zone
type: byte
- id: rc5_subtrim_plus
label: RC5 Sub Trim +0.5dB
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x69 0x0D"
params:
- name: zone
type: byte
- id: rc5_subtrim_minus
label: RC5 Sub Trim -0.5dB
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x6C 0x0D"
params:
- name: zone
type: byte
- id: rc5_display_off
label: RC5 Display Off
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x1F 0x0D"
params:
- name: zone
type: byte
- id: rc5_display_l1
label: RC5 Display L1
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x22 0x0D"
params:
- name: zone
type: byte
- id: rc5_display_l2
label: RC5 Display L2
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x23 0x0D"
params:
- name: zone
type: byte
- id: rc5_balance_left
label: RC5 Balance Left
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x26 0x0D"
params:
- name: zone
type: byte
- id: rc5_balance_right
label: RC5 Balance Right
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x28 0x0D"
params:
- name: zone
type: byte
- id: rc5_bass_plus_1
label: RC5 Bass +1
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x2C 0x0D"
params:
- name: zone
type: byte
- id: rc5_bass_minus_1
label: RC5 Bass -1
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x2D 0x0D"
params:
- name: zone
type: byte
- id: rc5_treble_plus_1
label: RC5 Treble +1
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x2E 0x0D"
params:
- name: zone
type: byte
- id: rc5_treble_minus_1
label: RC5 Treble -1
kind: action
command: "0x21 {zone} 0x08 0x02 0x10 0x66 0x0D"
params:
- name: zone
type: byte
- id: rc5_zone2_follow_zone1
label: RC5 Set Zone 2 To Follow Zone 1
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x14 0x0D"
params: []
# === Zone 2 RC5 (system 23 / 0x17) ===
- id: rc5_zone2_power_on
label: RC5 Zone 2 Power On
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x7B 0x0D"
params: []
- id: rc5_zone2_power_off
label: RC5 Zone 2 Power Off
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x7C 0x0D"
params: []
- id: rc5_zone2_vol_up
label: RC5 Zone 2 Volume +
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x01 0x0D"
params: []
- id: rc5_zone2_vol_down
label: RC5 Zone 2 Volume -
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x02 0x0D"
params: []
- id: rc5_zone2_mute_toggle
label: RC5 Zone 2 Mute (Toggle)
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x03 0x0D"
params: []
- id: rc5_zone2_mute_on
label: RC5 Zone 2 Mute On
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x04 0x0D"
params: []
- id: rc5_zone2_mute_off
label: RC5 Zone 2 Mute Off
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x05 0x0D"
params: []
- id: rc5_zone2_cd
label: RC5 Zone 2 Source CD
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x06 0x0D"
params: []
- id: rc5_zone2_bd
label: RC5 Zone 2 Source BD
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x07 0x0D"
params: []
- id: rc5_zone2_stb
label: RC5 Zone 2 Source STB
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x08 0x0D"
params: []
- id: rc5_zone2_av
label: RC5 Zone 2 Source AV
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x09 0x0D"
params: []
- id: rc5_zone2_game
label: RC5 Zone 2 Source Game
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0B 0x0D"
params: []
- id: rc5_zone2_aux
label: RC5 Zone 2 Source Aux
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0D 0x0D"
params: []
- id: rc5_zone2_pvr
label: RC5 Zone 2 Source PVR
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0F 0x0D"
params: []
- id: rc5_zone2_fm
label: RC5 Zone 2 Source FM
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x0E 0x0D"
params: []
- id: rc5_zone2_dab
label: RC5 Zone 2 Source DAB
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x10 0x0D"
params: []
- id: rc5_zone2_usb
label: RC5 Zone 2 Source USB
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x12 0x0D"
params: []
- id: rc5_zone2_net
label: RC5 Zone 2 Source NET
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x13 0x0D"
params: []
- id: rc5_zone2_sat
label: RC5 Zone 2 Source SAT
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x14 0x0D"
params: []
- id: rc5_zone2_vcr
label: RC5 Zone 2 Source VCR
kind: action
command: "0x21 0x02 0x08 0x02 0x17 0x15 0x0D"
params: []
- id: rc5_select_hdmi_out_1
label: RC5 Select HDMI Out 1
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x49 0x0D"
params: []
- id: rc5_select_hdmi_out_2
label: RC5 Select HDMI Out 2
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x4A 0x0D"
params: []
- id: rc5_select_hdmi_out_1_and_2
label: RC5 Select HDMI Out 1 & 2
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x4B 0x0D"
params: []
Feedbacks
- id: power_state
type: enum
values: [stand_by, on]
source: response_to_cc_0x00 # 0x00 stand-by, 0x01 powered on
- id: display_brightness
type: enum
values: [off, l1, l2]
source: response_to_cc_0x01
- id: headphone_connected
type: enum
values: [not_connected, connected]
source: response_to_cc_0x02
- id: fm_programme_type
type: string
source: response_to_cc_0x03
- id: software_version
type: struct
fields: [component_echo, major, minor]
source: response_to_cc_0x04
- id: rc5_echo
type: struct
fields: [system_code, command_code]
source: response_to_cc_0x08
- id: display_info_type
type: byte
source: response_to_cc_0x09
- id: video_source
type: enum
values: [bd, sat, av, pvr, vcr, game, stb]
source: response_to_cc_0x0A
- id: audio_input_type
type: enum
values: [analogue, digital, hdmi]
source: response_to_cc_0x0B
- id: imax_enhanced_state
type: enum
values: [off, on, auto]
source: response_to_cc_0x0C
- id: zone_volume
type: integer
range: [0, 99]
source: response_to_cc_0x0D
- id: mute_state
type: enum
values: [muted, unmuted]
source: response_to_cc_0x0E
- id: direct_mode
type: enum
values: [off, on]
source: response_to_cc_0x0F
- id: decode_mode_2ch
type: enum
values: [stereo, dolby_surround, neo6_cinema, neo6_music, multi_ch_stereo, dts_neural_x, dts_virtual_x]
source: response_to_cc_0x10
- id: decode_mode_mch
type: enum
values: [stereo_downmix, multi_channel, dts_es_neural_x, dolby_surround, dts_virtual_x]
source: response_to_cc_0x11
- id: rds_information
type: string
source: response_to_cc_0x12
- id: video_output_resolution
type: enum
values: [sd_progressive, "720p", "1080i", "1080p", preferred, bypass, "4k"]
source: response_to_cc_0x13
- id: menu_open
type: enum
values: [none, setup, trim, bass, treble, sync, sub, tuner, network, usb]
source: response_to_cc_0x14
- id: current_tuner_preset
type: integer
range: [1, 50]
source: response_to_cc_0x15
- id: tuner_frequency
type: struct
fields: [mhz, kHz_10s]
source: response_to_cc_0x16
- id: dab_station_name
type: string
length: 16
source: response_to_cc_0x18
- id: dab_programme_type
type: string
length: 16
source: response_to_cc_0x19
- id: dls_pdt_text
type: string
length: 128
source: response_to_cc_0x1A
- id: preset_details
type: struct
fields: [number, kind, mhz, kHz_10s, name_ascii]
source: response_to_cc_0x1B
- id: network_playback_state
type: enum
values: [navigating, playing, paused, busy]
source: response_to_cc_0x1C
- id: current_source
type: enum
values: [follow_zone1, cd, bd, av, sat, pvr, vcr, aux, display, tuner_fm, tuner_dab, net, usb, stb, game]
source: response_to_cc_0x1D
- id: headphone_override_state
type: byte
source: response_to_cc_0x1F
- id: input_name
type: string
source: response_to_cc_0x20
- id: scan_state
type: byte
source: response_to_cc_0x23_or_0x24 # 0xFF = scanning
- id: heartbeat_ack
type: byte
source: response_to_cc_0x25
- id: treble_value
type: byte_signed
range: [-12, 12]
source: response_to_cc_0x35
- id: bass_value
type: byte_signed
range: [-12, 12]
source: response_to_cc_0x36
- id: room_eq_state
type: enum
values: [off, on, not_calculated_off]
source: response_to_cc_0x37
- id: dolby_volume_state
type: enum
values: [off, on]
source: response_to_cc_0x38
- id: dolby_leveller_value
type: byte
range: [0, 10]
source: response_to_cc_0x39
- id: dolby_volume_calib_offset
type: byte_signed
range: [-15, 15]
source: response_to_cc_0x3A
- id: balance_value
type: byte_signed
range: [-6, 6]
source: response_to_cc_0x3B
- id: subwoofer_trim_value
type: byte_signed_half_db
range_steps_db: 0.5
source: response_to_cc_0x3F
- id: lipsync_delay_value
type: integer
unit: ms
step: 5
range: [0, 250]
source: response_to_cc_0x40
- id: compression_state
type: enum
values: [off, medium, high]
source: response_to_cc_0x41
- id: incoming_video_params
type: struct
fields: [h_res, v_res, refresh_hz, interlaced, aspect_ratio]
source: response_to_cc_0x42
- id: incoming_audio_format
type: struct
fields: [stream_format, channel_config]
source: response_to_cc_0x43
- id: incoming_audio_sample_rate
type: enum
values: ["32k", "44.1k", "48k", "88.2k", "96k", "176.4k", "192k", unknown, undetected]
source: response_to_cc_0x44
- id: sub_stereo_trim_value
type: byte_signed_half_db
source: response_to_cc_0x45
- id: zone1_osd_state
type: enum
values: [on, off]
source: response_to_cc_0x4E
- id: video_output_switch
type: enum
values: [hdmi1, hdmi2, hdmi1_and_2]
source: response_to_cc_0x4F
- id: answer_code
type: enum
values:
- status_update # 0x00
- zone_invalid # 0x82
- command_not_recognised # 0x83
- parameter_not_recognised # 0x84
- command_invalid_at_this_time # 0x85
- invalid_data_length # 0x86
source: response_byte_Ac
Variables
- name: volume
type: integer
range: [0, 99]
unit: dB
cc: 0x0D
- name: treble
type: integer
range: [-12, 12]
unit: dB
cc: 0x35
- name: bass
type: integer
range: [-12, 12]
unit: dB
cc: 0x36
- name: dolby_leveller
type: integer
range: [0, 10]
cc: 0x39
- name: dolby_volume_calib_offset
type: integer
range: [-15, 15]
unit: dB
cc: 0x3A
- name: balance
type: integer
range: [-6, 6]
cc: 0x3B
- name: subwoofer_trim
type: float
range: [-10.0, 10.0]
step: 0.5
unit: dB
cc: 0x3F
- name: lipsync_delay
type: integer
range: [0, 250]
step: 5
unit: ms
cc: 0x40
- name: sub_stereo_trim
type: float
range: [-10.0, 0.0]
step: 0.5
unit: dB
cc: 0x45
- name: input_name
type: string
max_length: 10
cc: 0x20
- name: tuner_preset
type: integer
range: [1, 50]
cc: 0x15
Events
# The source states: state changes from front panel buttons or IR remote produce
# the same response message type as an explicit command, sent unsolicited.
- id: state_change_broadcast
type: any_command_response
trigger: front_panel_or_ir_input
notes: Same frame layout as a normal response; Cc identifies which state changed
Macros
# UNRESOLVED: source documents no named macro sequences
Safety
confirmation_required_for:
- restore_factory_defaults # source: 0xAA 0xAA confirmation pattern (Cc 0x05)
- save_restore_secure_backup # source: 0x55 0x55 + 4-digit PIN (Cc 0x06)
- reboot # source: ASCII "REBOOT" required (Cc 0x26)
interlocks:
- tuner_commands_require_tuner_source # source: 0x85 returned if FM/DAB not selected (Cc 0x03, 0x12, 0x15, 0x16, 0x18, 0x19, 0x1A)
- network_commands_require_network_source # source: 0x85 returned if NET not selected (Cc 0x1C)
- setup_menu_blocks_some_commands # source: 0x85 returned during setup menu (Cc 0x0A, 0x0B)
# UNRESOLVED: no voltage/current/thermal safety procedures documented in source.
Notes
- Reserved command codes 0xF0–0xFF are for test functions and must not be used.
- Commands 0xF0 in the Data field generally mean "Query" rather than a payload value.
- Answer code 0x85 ("Command invalid at this time") is overloaded: setup-menu blocking, wrong source selected for tuner/network commands, and contention with command 0x1E during save/restore (Cc 0x06).
- Two zones supported: 0x01 (master / zone-less default) and 0x02 (secondary). Zone-2 RC5 codes use system byte 0x17 instead of 0x10.
- Device responds within 3 seconds; RC may pipeline commands.
- AMX Duet DDDP probe
AMX\rreturnsAMXB<Device-SDKClass=Receiver><Device-Make=ARCAM><Device-Model=...><Device-Revision=x.y.z>\r— useful for discovery and version sniffing. - RS232 must be enabled before use: front panel DIRECT held 4s until "RS232 CONTROL ON" displays, or OSD General Setup → Control → On.
- IP control reaches the same protocol via TCP port 50000.
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-04-29T08:49:56.528Z
last_checked_at: 2026-06-02T21:39:51.761Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:39:51.761Z
matched_actions: 166
action_count: 166
confidence: medium
summary: "All 166 spec actions matched verbatim against source binary Cc commands and RC5 IR code table; transport parameters baud 38400 and port 50000 confirmed in source. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source document explicitly enumerates AVR390/AVR550/AVR850/AV860/SR250. SA20 Series compatibility was asserted by the operator and is not verified against a real device."
- "source documents no named macro sequences"
- "no voltage/current/thermal safety procedures documented in source."
- "source document explicitly enumerates AVR390/AVR550/AVR850/AV860/SR250. SA20 (HDA stereo integrated amp) is NOT listed in the source; operator asserted SA20 Series uses this protocol family. Verify against a real SA20 before promoting status from draft."
- "firmware version range not stated in source."
- "serial cable polarity uses null-modem wiring per source table; this is a cable-side detail not a transport-side parameter — no spec field."
- "RC5 code 16-114 (\"Reserved\" in source) is intentionally omitted from Actions to avoid creating an action without a documented function."
- "advanced RC5 codes section heading present in source but no command table was provided in the refined excerpt; only Basic Functions enumerated."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0