Summary
RS-232/NET remote control protocol for the Arcam AVR390, AVR550, AVR850, AV860 and SR250 AV receivers and processor. Commands cover system state, input/output routing, volume, tuner (FM/DAB), audio/video decode modes, IMAX Enhanced, EQ and lipsync adjustments. Communication uses 38400 baud 8N1 with a fixed-byte framing envelope (0x21 ... 0x0D) over RS-232 (null-modem) or TCP/IP on port 50000. AMX Duet dynamic discovery is supported via the ASCII AMX\r query.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 38400
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
cable: null_modem # Connector 2/3/5 cross-over (Rx/Tx/Ground)
addressing:
port: 50000
auth:
type: none # inferred: no login/password/auth procedure described in source
Traits
powerable: true # inferred from Power (0x00) request + RC5 Power On/Off codes
routable: true # inferred from Video selection (0x0A), HDMI output switching (0x4F)
queryable: true # inferred from pervasive 0xF0 request forms
levelable: true # inferred from Volume (0x0D), Treble/Bass (0x35/0x36), Balance (0x3B), Sub Trim (0x3F/0x45)
Actions
- id: restore_factory_default_settings_0x05
label: "Restore factory default settings (0x05)"
kind: action
command: "0x21 0x01 0x05 0x02 0xAA 0xAA 0x0D"
params: []
- id: save_restore_secure_copy_of_settings_0x06
label: "Save/Restore secure copy of settings (0x06)"
kind: action
command: "0x21 0x01 0x06 0x07 0x01 0x55 0x55 0x01 0x02 0x03 0x04 0x0D"
params: []
- id: simulate_rc5_ir_command_0x08
label: "Simulate RC5 IR Command (0x08)"
kind: action
command: "0x21 0x01 0x08 0x02 0x10 0x11 0x0D"
params: []
- id: display_information_type_0x09
label: "Display Information Type (0x09)"
kind: action
command: "0x21 0x02 0x09 0x01 0x01 0x0D"
params: []
- id: headphone_over_ride_0x1_f
label: "Headphone Over-ride (0x1F)"
kind: action
command: "0x21 0x01 0x1F 0x01 0x01 0x0D"
params: []
- id: video_selection_0x0_a
label: "Video selection (0x0A)"
kind: action
command: "0x21 0x01 0x0A 0x01 0x03 0x0D"
params: []
- id: select_analogue_digital_0x0_b
label: "Select analogue/digital (0x0B)"
kind: action
command: "0x21 0x01 0x0B 0x01 0x01 0x0D"
params: []
- id: set_request_volume_0x0_d
label: "Set/Request Volume (0x0D)"
kind: action
command: "0x21 0x01 0x0D 0x01 0x2D 0x0D"
params: []
- id: tune_0x16
label: "Tune (0x16)"
kind: action
command: "0x21 0x01 0x16 0x01 0x01 0x0D"
params: []
- id: request_preset_details_0x1_b
label: "Request preset details (0x1B)"
kind: action
command: "0x21 0x01 0x1B 0x01 0x01 0x0D"
params: []
- id: imax_enhanced_0x0_c
label: "IMAX Enhanced (0x0C)"
kind: action
command: "0x21 0x01 0x0C 0x01 0xF1 0x0D"
params: []
- id: treble_equalisation_0x35
label: "Treble Equalisation (0x35)"
kind: action
command: "0x21 0x01 0x35 0x01 0x82 0x0D"
params: []
- id: bass_equalisation_0x36
label: "Bass Equalisation (0x36)"
kind: action
command: "0x21 0x01 0x36 0x01 0xF1 0x0D"
params: []
- id: room_equalisation_0x37
label: "Room Equalisation (0x37)"
kind: action
command: "0x21 0x01 0x37 0x01 0xF1 0x0D"
params: []
- id: dolby_volume_0x38
label: "Dolby Volume (0x38)"
kind: action
command: "0x21 0x01 0x38 0x01 0x01 0x0D"
params: []
- id: dolby_leveller_0x39
label: "Dolby Leveller (0x39)"
kind: action
command: "0x21 0x01 0x39 0x01 0x05 0x0D"
params: []
- id: dolby_volume_calibration_offset_0x3_a
label: "Dolby Volume Calibration Offset (0x3A)"
kind: action
command: "0x21 0x01 0x3A 0x01 0x85 0x0D"
params: []
- id: balance_0x3_b
label: "Balance (0x3B)"
kind: action
command: "0x21 0x01 0x3B 0x01 0x83 0x0D"
params: []
- id: subwoofer_trim_0x3_f
label: "Subwoofer Trim (0x3F)"
kind: action
command: "0x21 0x01 0x3F 0x01 0x85 0x0D"
params: []
- id: lipsync_delay_0x40
label: "Lipsync Delay (0x40)"
kind: action
command: "0x21 0x01 0x40 0x01 0x0A 0x0D"
params: []
- id: compression_0x41
label: "Compression (0x41)"
kind: action
command: "0x21 0x01 0x41 0x01 0x01 0x0D"
params: []
- id: set_request_sub_stereo_trim_0x45
label: "Set/Request Sub Stereo Trim (0x45)"
kind: action
command: "0x21 0x01 0x45 0x01 0x83 0x0D"
params: []
- id: set_request_zone_1_osd_on_off_0x4_e
label: "Set/Request Zone 1 OSD on/off (0x4E)"
kind: action
command: "0x21 0x01 0x4A 0x01 0xF2 0x0D"
params: []
- id: set_request_video_output_switching_0x4_f
label: "Set/Request Video Output Switching (0x4F)"
kind: action
command: "0x21 0x01 0x4F 0x01 0x02 0x0D"
params: []
- id: set_request_input_name_0x20
label: "Set/request input name (0x20)"
kind: action
command: "0x21 0x01 0x20 0x06 0x42 0x44 0x50 0x33 0x30 0x30 0x0D"
params: []
- id: fm_scan_up_down_0x23
label: "FM Scan up/down (0x23)"
kind: action
command: "0x21 0x01 0x23 0x01 0x01 0x0D"
params: []
- id: dab_scan_0x24
label: "DAB Scan (0x24)"
kind: action
command: "0x21 0x01 0x24 0x01 0xF0 0x0D"
params: []
- id: heartbeat_0x25
label: "Heartbeat (0x25)"
kind: action
command: "0x21 0x01 0x25 0x01 0xF0 0x0D"
params: []
- id: reboot_0x26
label: "Reboot (0x26)"
kind: action
command: "0x21 0x01 0x26 0x06 0x52 0x45 0x42 0x4F 0x4F 0x54 0x0D"
params: []
Feedbacks
- id: power_0x00
label: "Power (0x00)"
kind: query
query_command: "0x21 0x01 0x00 0x01 0xF0 0x0D"
- id: display_brightness_0x01
label: "Display Brightness (0x01)"
kind: query
query_command: "0x21 0x01 0x01 0x01 0xF0 0x0D"
- id: headphones_0x02
label: "Headphones (0x02)"
kind: query
query_command: "0x21 0x01 0x02 0x01 0xF0 0x0D"
- id: fm_genre_0x03
label: "FM genre (0x03)"
kind: query
query_command: "0x21 0x01 0x03 0x01 0xF0 0x0D"
- id: software_version_0x04
label: "Software version (0x04)"
kind: query
query_command: "0x21 0x01 0x04 0x01 0xF0 0x0D"
- id: request_current_source_0x1_d
label: "Request current source (0x1D)"
kind: query
query_command: "0x21 0x01 0x1D 0x01 0xF0 0x0D"
- id: request_mute_status_0x0_e
label: "Request Mute status (0x0E)"
kind: query
query_command: "0x21 0x01 0x0E 0x01 0xF0 0x0D"
- id: request_direct_mode_status_0x0_f
label: "Request direct mode status (0x0F)"
kind: query
query_command: "0x21 0x01 0x0F 0x01 0xF0 0x0D"
- id: request_decode_mode_status_-_2ch_0x10
label: "Request decode mode status - 2ch (0x10)"
kind: query
query_command: "0x21 0x01 0x10 0x01 0xF0 0x0D"
- id: request_decode_mode_status_-_mch_0x11
label: "Request Decode mode status - MCH (0x11)"
kind: query
query_command: "0x21 0x01 0x11 0x01 0xF0 0x0D"
- id: request_rds_information_0x12
label: "Request RDS information (0x12)"
kind: query
query_command: "0x21 0x01 0x12 0x01 0xF0 0x0D"
- id: request_video_output_resolution_0x13
label: "Request Video Output Resolution (0x13)"
kind: query
query_command: "0x21 0x01 0x13 0x01 0xF0 0x0D"
- id: request_menu_status_0x14
label: "Request menu status (0x14)"
kind: query
query_command: "0x21 0x01 0x14 0x01 0xF0 0x0D"
- id: request_tuner_preset_0x15
label: "Request tuner preset (0x15)"
kind: query
query_command: "0x21 0x01 0x15 0x01 0xF0 0x0D"
- id: request_dab_station_0x18
label: "Request DAB station (0x18)"
kind: query
query_command: "0x21 0x01 0x18 0x01 0xF0 0x0D"
- id: prog_type_category_0x19
label: "Prog. Type/Category (0x19)"
kind: query
query_command: "0x21 0x01 0x19 0x01 0xF0 0x0D"
- id: dls_pdt_info_0x1_a
label: "DLS/PDT info. (0x1A)"
kind: query
query_command: "0x21 0x01 0x1A 0xF0 0x0D"
- id: network_playback_status_0x1_c
label: "Network playback status (0x1C)"
kind: query
query_command: "0x21 0x01 0x1C 0x01 0xF0 0x0D"
- id: request_incoming_video_parameters_0x42
label: "Request incoming video parameters (0x42)"
kind: query
query_command: "0x21 0x01 0x42 0x01 0xF0 0x0D"
- id: request_incoming_audio_format_0x43
label: "Request incoming audio format (0x43)"
kind: query
query_command: "0x21 0x01 0x43 0x01 0xF0 0x0D"
- id: request_incoming_audio_sample_rate_0x44
label: "Request incoming audio sample rate (0x44)"
kind: query
query_command: "0x21 0x01 0x44 0x01 0xF0 0x0D"
Variables
# UNRESOLVED: source describes fixed-byte encoded parameters per command rather
# than reusable named variables; specific dB / preset / frequency values are
# represented inside their owning action's parameter set. No standalone
# Variables entries are warranted by the source.
Events
# UNRESOLVED: source notes that "the AV may also send messages at other times"
# (unsolicited state updates mirroring front-panel/IR activity), but does not
# enumerate a distinct event catalogue separate from the request/response
# commands. Section left empty rather than fabricated.
Macros
# UNRESOLVED: source describes no multi-step macro sequences.
Safety
confirmation_required_for:
- restore_factory_default_settings_0x05 # 0xAA 0xAA confirmation pattern required
- save_restore_secure_copy_of_settings_0x06 # 0x55 0x55 confirmation pattern + 4-digit PIN required
- reboot_0x26 # literal "REBOOT" ASCII payload required
interlocks:
- commands_for_tuner_control_return_error_0x85_when_tuner_input_not_selected
- setup_menu_open_commands_return_error_0x85_when_osd_showing_setup_screen
- second_secure_save_while_one_in_progress_fails_silently
- save_restore_returns_error_0x85_if_command_0x1_e_in_progress
Notes
Frame envelope: <St=0x21> <Zn> <Cc> <Dl> <Data...> <Et=0x0D>. Responses mirror the envelope with an inserted <Ac> answer-code byte. The AV responds within 3 s; the controller may pipeline commands before receiving a reply. Zones are 0x01 (master) and 0x02. Answer codes: 0x00 status update, 0x82 zone invalid, 0x83 command not recognised, 0x84 parameter not recognised, 0x85 command invalid at this time, 0x86 invalid data length. Commands 0xF0-0xFF are reserved for test and must not be used. Many RC5 IR codes (system 0x10 for Zone 1, 0x17 for Zone 2) are listed in the source and can be replayed over the control link via the 0x08 Simulate RC5 command. AMX Duet discovery reply is the ASCII string AMXB<Device-SDKClass=Receiver><Device-Make=ARCAM><Device-Model=<model>><Device-Revision=x.y.z>\r where x.y.z is the RS-232 protocol version. TCP control uses port 50000; RS-232 must be explicitly enabled (front-panel DIRECT for 4 s, or Control=On in OSD General Setup). Null-modem cable: pin 2 ↔ 3 crossed, pin 5 straight. Heartbeat (0x25) also resets the EuP standby timer.
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-25T09:54:09.721Z
last_checked_at: 2026-06-25T11:27:53.091Z
Verification Summary
verdict: verified
checked_at: 2026-06-25T11:27:53.091Z
matched_actions: 50
action_count: 50
confidence: medium
summary: "deterministic presence proof: 50/50 payloads verbatim in source; stratified Sonnet sample corroborated (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "per-model firmware compatibility ranges not stated; RC5 system codes for some non-listed models not in source."
- "source describes fixed-byte encoded parameters per command rather"
- "source notes that \"the AV may also send messages at other times\""
- "source describes no multi-step macro sequences."
- "exact TCP listen behaviour (accept queue size, keep-alive) not stated. Firmware version compatibility across the five listed models not enumerated."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0