Summary

Rotel RSX-1057 A/V surround receiver controlled via a binary HEX-over-RS-232 protocol. Spec covers power, volume, source selection, surround modes, tone, tuner, OSD, per-zone (Main / Zone 2) and record-source commands, plus a fixed-format display feedback string.

Transport

protocols:
  - serial
serial:
  baud_rate: 19200
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source
# Transport notes (verbatim facts from source):
# - HEX based communication protocol; Data Type: String.
# - Standard command frame: Start(0xFE) Count(0x03) DeviceID(0xC7) Type(0xXX) Key(0xXX) Checksum(0xXX).
#   Count byte covers only ID, Type, Key (not Start or Checksum).
# - Send raw bytes only - no spaces, delimiters, carriage returns, or line feeds.
# - Spaces shown between hex bytes in the source are for clarity only.
# - Meta encoding (byte stuffing): any occurrence of 0xFD or 0xFE inside a command string must be
#   replaced with "FD 00" (for 0xFD) or "FD 01" (for 0xFE) so 0xFE appears only as the start byte.
# - Feedback/response frame: Start(0xFE) Count(0x17) ID(0xC7) Type(0x20) Char1..Char13 Flag1..Flag8 Checksum(0xXX).
# UNRESOLVED: checksum computation algorithm not stated in source (only literal checksum bytes are given per command).
# UNRESOLVED: command pacing / inter-byte timing not stated in source.

Traits

traits:
  - powerable    # inferred: power on/off/toggle commands present
  - levelable    # inferred: volume direct + bass/treble trim commands present
  - routable     # inferred: source-selection and record-source routing commands present

Actions

# Standard frame for all Type 10/14/15/16 commands: FE 03 C7 {type} {key} {checksum}
# Volume Direct (Type 30) and Zone 2 Volume Direct (Type 32) are parameterized ranges (00-60).
# All payloads verbatim from source. Spaces are display-only; send raw bytes.

# ===== Table 1 - Type 10 Primary Commands: POWER & VOLUME =====
- id: power_toggle
  label: Power Toggle
  kind: action
  command: "FE 03 C7 10 0A E4"
  params: []
- id: power_off
  label: Power Off
  kind: action
  command: "FE 03 C7 10 4A 24"
  params: []
- id: power_on
  label: Power On
  kind: action
  command: "FE 03 C7 10 4B 25"
  params: []
- id: volume_up
  label: Volume Up
  kind: action
  command: "FE 03 C7 10 0B E5"
  params: []
- id: volume_down
  label: Volume Down
  kind: action
  command: "FE 03 C7 10 0C E6"
  params: []
- id: mute_toggle
  label: Mute Toggle
  kind: action
  command: "FE 03 C7 10 1E F8"
  params: []

# ===== Table 1 - Type 10 Primary Commands: SOURCE SELECTION =====
- id: source_cd
  label: Source CD
  kind: action
  command: "FE 03 C7 10 02 DC"
  params: []
- id: source_tuner
  label: Source Tuner
  kind: action
  command: "FE 03 C7 10 03 DD"
  params: []
- id: source_tape
  label: Source Tape
  kind: action
  command: "FE 03 C7 10 04 DE"
  params: []
- id: source_video_1
  label: Source Video 1
  kind: action
  command: "FE 03 C7 10 05 DF"
  params: []
- id: source_video_2
  label: Source Video 2
  kind: action
  command: "FE 03 C7 10 06 E0"
  params: []
- id: source_video_3
  label: Source Video 3
  kind: action
  command: "FE 03 C7 10 07 E1"
  params: []
- id: source_video_4
  label: Source Video 4
  kind: action
  command: "FE 03 C7 10 08 E2"
  params: []
- id: source_video_5
  label: Source Video 5
  kind: action
  command: "FE 03 C7 10 09 E3"
  params: []
- id: source_multi_input
  label: Source Multi Input
  kind: action
  command: "FE 03 C7 10 15 EF"
  params: []

# ===== Table 1 - Type 10 Primary Commands: SURROUND MODE =====
- id: surround_stereo
  label: Stereo
  kind: action
  command: "FE 03 C7 10 11 EB"
  params: []
- id: surround_dolby3_stereo
  label: Dolby3 Stereo
  kind: action
  command: "FE 03 C7 10 12 EC"
  params: []
- id: surround_dolby_pro_logic
  label: DolbyPro Logic
  kind: action
  command: "FE 03 C7 10 13 ED"
  params: []
- id: surround_dsp_music_mode_toggle
  label: DSP Music Mode Toggle
  kind: action
  command: "FE 03 C7 10 14 EE"
  params: []
- id: surround_dolby3_prologic_toggle
  label: Dolby3 Stereo/Pro Logic Toggle
  kind: action
  command: "FE 03 C7 10 53 2D"
  params: []
- id: surround_dts_neo6_music_cinema_toggle
  label: dts Neo:6 Music/Cinema Toggle
  kind: action
  command: "FE 03 C7 10 54 2E"
  params: []
- id: surround_music_1
  label: Music 1
  kind: action
  command: "FE 03 C7 10 57 31"
  params: []
- id: surround_music_2
  label: Music 2
  kind: action
  command: "FE 03 C7 10 58 32"
  params: []
- id: surround_music_3
  label: Music 3
  kind: action
  command: "FE 03 C7 10 59 33"
  params: []
- id: surround_music_4
  label: Music 4
  kind: action
  command: "FE 03 C7 10 5A 34"
  params: []
- id: surround_5ch_stereo
  label: 5 Channel Stereo
  kind: action
  command: "FE 03 C7 10 5B 35"
  params: []
- id: surround_7ch_stereo
  label: 7 Channel Stereo
  kind: action
  command: "FE 03 C7 10 5C 36"
  params: []
- id: surround_dolbyplii_cinema
  label: DolbyPLII Cinema
  kind: action
  command: "FE 03 C7 10 5D 37"
  params: []
- id: surround_dolbyplii_music
  label: DolbyPLII Music
  kind: action
  command: "FE 03 C7 10 5E 38"
  params: []
- id: surround_dolbyplii_game
  label: DolbyPLII Game
  kind: action
  command: "FE 03 C7 10 74 4E"
  params: []
- id: surround_dolby_pro_logic_alt
  label: DolbyPro Logic (alt)
  kind: action
  command: "FE 03 C7 10 5F 39"
  params: []
- id: surround_dts_neo6_music
  label: dts Neo:6 Music
  kind: action
  command: "FE 03 C7 10 60 3A"
  params: []
- id: surround_dts_neo6_cinema
  label: dts Neo:6 Cinema
  kind: action
  command: "FE 03 C7 10 61 3B"
  params: []
- id: plii_panorama_toggle
  label: PLII Panorama Toggle
  kind: action
  command: "FE 03 C7 10 62 3C"
  params: []
- id: plii_dimension_up
  label: PLII Dimension Up
  kind: action
  command: "FE 03 C7 10 63 3D"
  params: []
- id: plii_dimension_down
  label: PLII Dimension Down
  kind: action
  command: "FE 03 C7 10 64 3E"
  params: []
- id: plii_center_width_up
  label: PLII Center Width Up
  kind: action
  command: "FE 03 C7 10 65 3F"
  params: []
- id: plii_center_width_down
  label: PLII Center Width Down
  kind: action
  command: "FE 03 C7 10 66 40"
  params: []
- id: dolby_digital_ex_toggle
  label: DolbyDigital EX Toggle
  kind: action
  command: "FE 03 C7 10 68 42"
  params: []
- id: next_surround_mode
  label: Next Surround Mode
  kind: action
  command: "FE 03 C7 10 22 FC"
  params: []

# ===== Table 1 - Type 10 Primary Commands: TONE CONTROL =====
- id: treble_up
  label: Treble Up
  kind: action
  command: "FE 03 C7 10 0D E7"
  params: []
- id: treble_down
  label: Treble Down
  kind: action
  command: "FE 03 C7 10 0E E8"
  params: []
- id: bass_up
  label: Bass Up
  kind: action
  command: "FE 03 C7 10 0F E9"
  params: []
- id: bass_down
  label: Bass Down
  kind: action
  command: "FE 03 C7 10 10 EA"
  params: []
- id: tone_control_select
  label: Tone Control Select
  kind: action
  command: "FE 03 C7 10 67 41"
  params: []

# ===== Table 1 - Type 10 Primary Commands: OSD MENU =====
- id: osd_menu
  label: OSD Menu
  kind: action
  command: "FE 03 C7 10 18 F2"
  params: []
- id: osd_enter
  label: Enter
  kind: action
  command: "FE 03 C7 10 19 F3"
  params: []
- id: cursor_right
  label: Cursor Right
  kind: action
  command: "FE 03 C7 10 1A F4"
  params: []
- id: cursor_left
  label: Cursor Left
  kind: action
  command: "FE 03 C7 10 1B F5"
  params: []
- id: cursor_up
  label: Cursor Up
  kind: action
  command: "FE 03 C7 10 1C F6"
  params: []
- id: cursor_down
  label: Cursor Down
  kind: action
  command: "FE 03 C7 10 1D F7"
  params: []

# ===== Table 1 - Type 10 Primary Commands: TUNER =====
- id: tune_up
  label: Tune Up
  kind: action
  command: "FE 03 C7 10 28 02"
  params: []
- id: tune_down
  label: Tune Down
  kind: action
  command: "FE 03 C7 10 29 03"
  params: []
- id: preset_up
  label: Preset Up
  kind: action
  command: "FE 03 C7 10 6F 49"
  params: []
- id: preset_down
  label: Preset Down
  kind: action
  command: "FE 03 C7 10 70 4A"
  params: []
- id: frequency_up
  label: Frequency Up
  kind: action
  command: "FE 03 C7 10 72 4C"
  params: []
- id: frequency_down
  label: Frequency Down
  kind: action
  command: "FE 03 C7 10 73 4D"
  params: []
- id: tuner_memory
  label: Memory
  kind: action
  command: "FE 03 C7 10 27 01"
  params: []
- id: band_toggle
  label: Band Toggle
  kind: action
  command: "FE 03 C7 10 24 FD 01"
  params: []
- id: tuner_am
  label: AM
  kind: action
  command: "FE 03 C7 10 56 30"
  params: []
- id: tuner_fm
  label: FM
  kind: action
  command: "FE 03 C7 10 55 2F"
  params: []
- id: tune_preset_toggle
  label: Tune/Preset
  kind: action
  command: "FE 03 C7 10 20 FA"
  params: []
- id: tuning_mode_select
  label: Tuning Mode Select
  kind: action
  command: "FE 03 C7 10 69 43"
  params: []
- id: preset_mode_select
  label: Preset Mode Select
  kind: action
  command: "FE 03 C7 10 6A 44"
  params: []
- id: frequency_direct
  label: Frequency Direct
  kind: action
  command: "FE 03 C7 10 25 FF"
  params: []
- id: preset_scan
  label: Preset Scan
  kind: action
  command: "FE 03 C7 10 21 FB"
  params: []
- id: tuner_display
  label: Tuner Display
  kind: action
  command: "FE 03 C7 10 44 1E"
  params: []
- id: rds_pty
  label: RDS PTY
  kind: action
  command: "FE 03 C7 10 45 1F"
  params: []
- id: rds_tp
  label: RDS TP
  kind: action
  command: "FE 03 C7 10 46 20"
  params: []
- id: rds_ta
  label: RDS TA
  kind: action
  command: "FE 03 C7 10 47 21"
  params: []
- id: fm_mono
  label: FM Mono
  kind: action
  command: "FE 03 C7 10 26 00"
  params: []

# ===== Table 1 - Type 10 Primary Commands: NUMERIC KEY =====
- id: number_1
  label: Number 1
  kind: action
  command: "FE 03 C7 10 2A 04"
  params: []
- id: number_2
  label: Number 2
  kind: action
  command: "FE 03 C7 10 2B 05"
  params: []
- id: number_3
  label: Number 3
  kind: action
  command: "FE 03 C7 10 2C 06"
  params: []
- id: number_4
  label: Number 4
  kind: action
  command: "FE 03 C7 10 2D 07"
  params: []
- id: number_5
  label: Number 5
  kind: action
  command: "FE 03 C7 10 2E 08"
  params: []
- id: number_6
  label: Number 6
  kind: action
  command: "FE 03 C7 10 2F 09"
  params: []
- id: number_7
  label: Number 7
  kind: action
  command: "FE 03 C7 10 30 0A"
  params: []
- id: number_8
  label: Number 8
  kind: action
  command: "FE 03 C7 10 31 0B"
  params: []
- id: number_9
  label: Number 9
  kind: action
  command: "FE 03 C7 10 32 0C"
  params: []
- id: number_0
  label: Number 0
  kind: action
  command: "FE 03 C7 10 33 0D"
  params: []

# ===== Table 1 - Type 10 Primary Commands: OTHER =====
- id: record_function_select
  label: Record Function Select
  kind: action
  command: "FE 03 C7 10 17 F1"
  params: []
- id: dynamic_range
  label: Dynamic Range
  kind: action
  command: "FE 03 C7 10 16 F0"
  params: []
- id: digital_input_select
  label: Digital Input Select
  kind: action
  command: "FE 03 C7 10 1F F9"
  params: []
- id: zone2_main_toggle
  label: Zone 2/Main
  kind: action
  command: "FE 03 C7 10 23 FD 00"
  params: []
- id: temporary_center_trim
  label: Temporary Center Trim
  kind: action
  command: "FE 03 C7 10 4C 26"
  params: []
- id: temporary_subwoofer_trim
  label: Temporary Subwoofer Trim
  kind: action
  command: "FE 03 C7 10 4D 27"
  params: []
- id: temporary_surround_trim
  label: Temporary Surround Trim
  kind: action
  command: "FE 03 C7 10 4E 28"
  params: []
- id: cinema_eq_toggle
  label: Cinema EQ Toggle
  kind: action
  command: "FE 03 C7 10 4F 29"
  params: []
- id: front_display_on_off
  label: Front Display On/Off
  kind: action
  command: "FE 03 C7 10 52 2C"
  params: []
- id: display_refresh
  label: Display Refresh
  kind: action
  command: "FE 03 C7 10 FF D9"
  params: []

# ===== Table 2 - Type 14 Main Zone Commands =====
- id: main_zone_power_toggle
  label: Main Zone Power Toggle
  kind: action
  command: "FE 03 C7 14 0A E8"
  params: []
- id: main_zone_power_off
  label: Main Zone Power Off
  kind: action
  command: "FE 03 C7 14 4A 28"
  params: []
- id: main_zone_power_on
  label: Main Zone Power On
  kind: action
  command: "FE 03 C7 14 4B 29"
  params: []
- id: main_zone_volume_up
  label: Main Zone Volume Up
  kind: action
  command: "FE 03 C7 14 00 DE"
  params: []
- id: main_zone_volume_down
  label: Main Zone Volume Down
  kind: action
  command: "FE 03 C7 14 01 DF"
  params: []
- id: main_zone_mute_toggle
  label: Main Zone Mute Toggle
  kind: action
  command: "FE 03 C7 14 1E FC"
  params: []
- id: main_zone_mute_on
  label: Main Zone Mute On
  kind: action
  command: "FE 03 C7 14 6C 4A"
  params: []
- id: main_zone_mute_off
  label: Main Zone Mute Off
  kind: action
  command: "FE 03 C7 14 6D 4B"
  params: []
- id: main_zone_source_cd
  label: Main Zone Source CD
  kind: action
  command: "FE 03 C7 14 02 E0"
  params: []
- id: main_zone_source_tuner
  label: Main Zone Source Tuner
  kind: action
  command: "FE 03 C7 14 03 E1"
  params: []
- id: main_zone_source_tape
  label: Main Zone Source Tape
  kind: action
  command: "FE 03 C7 14 04 E2"
  params: []
- id: main_zone_source_video_1
  label: Main Zone Source Video 1
  kind: action
  command: "FE 03 C7 14 05 E3"
  params: []
- id: main_zone_source_video_2
  label: Main Zone Source Video 2
  kind: action
  command: "FE 03 C7 14 06 E4"
  params: []
- id: main_zone_source_video_3
  label: Main Zone Source Video 3
  kind: action
  command: "FE 03 C7 14 07 E5"
  params: []
- id: main_zone_source_video_4
  label: Main Zone Source Video 4
  kind: action
  command: "FE 03 C7 14 08 E6"
  params: []
- id: main_zone_source_video_5
  label: Main Zone Source Video 5
  kind: action
  command: "FE 03 C7 14 09 E7"
  params: []

# ===== Table 3 - Type 15 Record Source Commands =====
- id: record_source_cd
  label: Record Source CD
  kind: action
  command: "FE 03 C7 15 02 E1"
  params: []
- id: record_source_tuner
  label: Record Source Tuner
  kind: action
  command: "FE 03 C7 15 03 E2"
  params: []
- id: record_source_tape
  label: Record Source Tape
  kind: action
  command: "FE 03 C7 15 04 E3"
  params: []
- id: record_source_video_1
  label: Record Source Video 1
  kind: action
  command: "FE 03 C7 15 05 E4"
  params: []
- id: record_source_video_2
  label: Record Source Video 2
  kind: action
  command: "FE 03 C7 15 06 E5"
  params: []
- id: record_source_video_3
  label: Record Source Video 3
  kind: action
  command: "FE 03 C7 15 07 E6"
  params: []
- id: record_source_video_4
  label: Record Source Video 4
  kind: action
  command: "FE 03 C7 15 08 E7"
  params: []
- id: record_source_video_5
  label: Record Source Video 5
  kind: action
  command: "FE 03 C7 15 09 E8"
  params: []
- id: record_follow_main_zone
  label: Record Follow Main Zone Source
  kind: action
  command: "FE 03 C7 15 6B 4A"
  params: []

# ===== Table 4 - Type 16 Zone 2 Commands: POWER & VOLUME =====
- id: zone2_power_toggle
  label: Zone 2 Power Toggle
  kind: action
  command: "FE 03 C7 16 0A EA"
  params: []
- id: zone2_power_off
  label: Zone 2 Power Off
  kind: action
  command: "FE 03 C7 16 4A 2A"
  params: []
- id: zone2_power_on
  label: Zone 2 Power On
  kind: action
  command: "FE 03 C7 16 4B 2B"
  params: []
- id: zone2_volume_up
  label: Zone 2 Volume Up
  kind: action
  command: "FE 03 C7 16 00 E0"
  params: []
- id: zone2_volume_down
  label: Zone 2 Volume Down
  kind: action
  command: "FE 03 C7 16 01 E1"
  params: []
- id: zone2_mute_toggle
  label: Zone 2 Mute Toggle
  kind: action
  command: "FE 03 C7 16 1E FD 01"
  params: []
- id: zone2_mute_on
  label: Zone 2 Mute On
  kind: action
  command: "FE 03 C7 16 6C 4C"
  params: []
- id: zone2_mute_off
  label: Zone 2 Mute Off
  kind: action
  command: "FE 03 C7 16 6D 4D"
  params: []

# ===== Table 4 - Type 16 Zone 2 Commands: SOURCE SELECTION =====
- id: zone2_source_cd
  label: Zone 2 Source CD
  kind: action
  command: "FE 03 C7 16 02 E2"
  params: []
- id: zone2_source_tuner
  label: Zone 2 Source Tuner
  kind: action
  command: "FE 03 C7 16 03 E3"
  params: []
- id: zone2_source_tape
  label: Zone 2 Source Tape
  kind: action
  command: "FE 03 C7 16 04 E4"
  params: []
- id: zone2_source_video_1
  label: Zone 2 Source Video 1
  kind: action
  command: "FE 03 C7 16 05 E5"
  params: []
- id: zone2_source_video_2
  label: Zone 2 Source Video 2
  kind: action
  command: "FE 03 C7 16 06 E6"
  params: []
- id: zone2_source_video_3
  label: Zone 2 Source Video 3
  kind: action
  command: "FE 03 C7 16 07 E7"
  params: []
- id: zone2_source_video_4
  label: Zone 2 Source Video 4
  kind: action
  command: "FE 03 C7 16 08 E8"
  params: []
- id: zone2_source_video_5
  label: Zone 2 Source Video 5
  kind: action
  command: "FE 03 C7 16 09 E9"
  params: []
- id: zone2_follow_main_zone
  label: Zone 2 Follow Main Zone Source
  kind: action
  command: "FE 03 C7 16 6B 4B"
  params: []

# ===== Table 4 - Type 16 Zone 2 Commands: TUNER =====
- id: zone2_tune_up
  label: Zone 2 Tune Up
  kind: action
  command: "FE 03 C7 16 28 08"
  params: []
- id: zone2_tune_down
  label: Zone 2 Tune Down
  kind: action
  command: "FE 03 C7 16 29 09"
  params: []
- id: zone2_preset_up
  label: Zone 2 Preset Up
  kind: action
  command: "FE 03 C7 16 6F 4F"
  params: []
- id: zone2_preset_down
  label: Zone 2 Preset Down
  kind: action
  command: "FE 03 C7 16 70 50"
  params: []
- id: zone2_frequency_up
  label: Zone 2 Frequency Up
  kind: action
  command: "FE 03 C7 16 72 52"
  params: []
- id: zone2_frequency_down
  label: Zone 2 Frequency Down
  kind: action
  command: "FE 03 C7 16 73 53"
  params: []
- id: zone2_band_toggle
  label: Zone 2 Band Toggle
  kind: action
  command: "FE 03 C7 16 24 04"
  params: []
- id: zone2_am
  label: Zone 2 AM
  kind: action
  command: "FE 03 C7 16 56 36"
  params: []
- id: zone2_fm
  label: Zone 2 FM
  kind: action
  command: "FE 03 C7 16 55 35"
  params: []
- id: zone2_tune_preset_toggle
  label: Zone 2 Tune/Preset
  kind: action
  command: "FE 03 C7 16 20 00"
  params: []
- id: zone2_tuning_mode_select
  label: Zone 2 Tuning Mode Select
  kind: action
  command: "FE 03 C7 16 69 49"
  params: []
- id: zone2_preset_mode_select
  label: Zone 2 Preset Mode Select
  kind: action
  command: "FE 03 C7 16 6A 4A"
  params: []
- id: zone2_preset_scan
  label: Zone 2 Preset Scan
  kind: action
  command: "FE 03 C7 16 21 01"
  params: []
- id: zone2_fm_mono
  label: Zone 2 FM Mono
  kind: action
  command: "FE 03 C7 16 26 06"
  params: []

# ===== Table 4 - Type 16 Zone 2 Commands: NUMERIC KEY =====
- id: zone2_number_1
  label: Zone 2 Number 1
  kind: action
  command: "FE 03 C7 16 2A 0A"
  params: []
- id: zone2_number_2
  label: Zone 2 Number 2
  kind: action
  command: "FE 03 C7 16 2B 0B"
  params: []
- id: zone2_number_3
  label: Zone 2 Number 3
  kind: action
  command: "FE 03 C7 16 2C 0C"
  params: []
- id: zone2_number_4
  label: Zone 2 Number 4
  kind: action
  command: "FE 03 C7 16 2D 0D"
  params: []
- id: zone2_number_5
  label: Zone 2 Number 5
  kind: action
  command: "FE 03 C7 16 2E 0E"
  params: []
- id: zone2_number_6
  label: Zone 2 Number 6
  kind: action
  command: "FE 03 C7 16 2F 0F"
  params: []
- id: zone2_number_7
  label: Zone 2 Number 7
  kind: action
  command: "FE 03 C7 16 30 10"
  params: []
- id: zone2_number_8
  label: Zone 2 Number 8
  kind: action
  command: "FE 03 C7 16 31 11"
  params: []
- id: zone2_number_9
  label: Zone 2 Number 9
  kind: action
  command: "FE 03 C7 16 32 12"
  params: []
- id: zone2_number_0
  label: Zone 2 Number 0
  kind: action
  command: "FE 03 C7 16 33 13"
  params: []

# ===== Table 5 - Type 30 Volume Direct (Main Zone) =====
# Source: "Volume direct commands range from hex 00 - 60"; table is a SAMPLE.
# Parameterized per policy: one action covering the 0x00-0x60 level range.
- id: volume_direct_set
  label: Volume Direct Set
  kind: action
  command: "FE 03 C7 30 {level} {checksum}"
  params:
    - name: level
      type: integer
      description: "Volume level, hex 0x00 (Min) through 0x60 (Max). Source sample: 0x00=Min, 0x10=16, 0x20=32, 0x30=48, 0x40=64, 0x50=80, 0x5F=95, 0x60=Max."
    - name: checksum
      type: string
      description: "Frame checksum byte. UNRESOLVED: computation algorithm not stated in source; use the literal checksum byte documented for the chosen level where available, otherwise compute per device (unverified)."

# ===== Table 6 - Type 32 Zone 2 Volume Direct =====
# Source: Zone 2 volume direct, hex 0x00-0x60; sample shown (Zone 2 Max at 0x60, note "Zone 2 Volume 89" at 0x5F).
- id: zone2_volume_direct_set
  label: Zone 2 Volume Direct Set
  kind: action
  command: "FE 03 C7 32 {level} {checksum}"
  params:
    - name: level
      type: integer
      description: "Zone 2 volume level, hex 0x00 (Min) through 0x60 (Max). Source sample: 0x00=Min, 0x10=16, 0x20=32, 0x30=48, 0x40=64, 0x50=80, 0x5F=89, 0x60=Max."
    - name: checksum
      type: string
      description: "Frame checksum byte. UNRESOLVED: computation algorithm not stated in source."

Feedbacks

# Source documents a single fixed-format "feedback string" that mirrors the unit's front-panel
# display and is emitted unsolicited whenever the front-panel status changes. There are no
# explicit query/response commands in the source; the device pushes this frame on change.
- id: display_feedback_string
  type: binary
  description: >-
    Fixed-format display mirror frame: Start(0xFE) Count(0x17) ID(0xC7) Type(0x20)
    Char1..Char13 Flag1..Flag8 Checksum(0xXX). 23 data/flag bytes + checksum.
  fields:
    start: "0xFE"
    count: "0x17"
    device_id: "0xC7"
    type: "0x20"
    char_1_to_13: "ASCII text shown on front display (source input / volume / surround mode); parse to extract state"
    flag_1: "bits: char1_dot, char2_dot, char3_dot, char4_dot, char5_dot, char6_dot, char7_dot"
    flag_2: "bits: char8_dot, char9_dot, char10_dot, char11_dot, char12_dot, char13_dot, char8_colon"
    flag_3: "bits: TAPEM, MULTI, 4, 3, 2, 1, Coaxial, Optical"
    flag_4: "bits: Tuned, St(Tuner), PTY, TA, TP, RT, RDS, RBDS"
    flag_5: "bits: Zone, Dynamic Range, DSP, HDCD, Dolby3 Stereo, DolbyPLII, DolbyPro Logic, Dolby"
    flag_6: "bits: DisplayMode1, DisplayMode0, (reserved), StandbyLED, OSD, Auto, Memory, Preset; plus DisplayStatus (DisplayOn/DisplayOff)"
    flag_7: "bits: SBR, SBL, EX, Sur(dts?), THX, dts ES, dts, MPEG"
    flag_8: "bits: CB, S, LFE, SR, SL, FR, C, FL"
    checksum: "0xXX"
# UNRESOLVED: exact bit ordering / MSB-LSB convention per flag byte not explicitly stated.
# UNRESOLVED: whether DisplayStatus occupies Flag6 bits 2-3 ("2 bits in Flag6") - source says yes but table layout ambiguous.

Variables

# Discrete state reflected by the feedback string (no explicit set/query variable commands
# beyond the volume-direct actions and toggles above).
- id: main_zone_volume
  type: integer
  min: 0   # hex 0x00
  max: 96  # hex 0x60
  unit: level
  access: set  # via volume_direct_set
- id: zone2_volume
  type: integer
  min: 0
  max: 96
  unit: level
  access: set  # via zone2_volume_direct_set
# UNRESOLVED: get/variable semantics for source, surround mode, mute not separable from display string parsing.

Events

# Unsolicited push: display_feedback_string (see Feedbacks). Emitted on any front-panel
# status change. No other unsolicited event types documented.

Macros

# UNRESOLVED: no multi-step sequences described explicitly in source.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements.

Notes

  • Hex protocol over RS-232. Send raw bytes only — no spaces, delimiters, CR, or LF. Spaces in the source tables are for readability.
  • Byte stuffing ("Meta Encoding"): inside a command string, replace any 0xFD with FD 00 and any 0xFE with FD 01 so 0xFE only ever appears as the start byte. Examples in source that already apply this: Band Toggle (FE 03 C7 10 24 FD 01), Zone 2/Main (FE 03 C7 10 23 FD 00), Zone 2 Mute Toggle (FE 03 C7 16 1E FD 01), and Volume-Direct levels 0x03/0x04 (e.g. FE 03 C7 30 03 FD 00).
  • Type 14 (Main Zone) and Type 16 (Zone 2) commands are zone-discrete equivalents of the Type 10 primary commands. Source recommends using the zone-specific commands in multi-zone installations to avoid zone conflicts.
  • Volume Direct (Type 30) and Zone 2 Volume Direct (Type 32) tables in the source are explicitly samples of a 0x00–0x60 range; represented here as parameterized actions, not enumerated levels.
  • Device ID 0xC7 is fixed in every documented command; no multi-drop addressing procedure is described.

Provenance

source_domains:
  - rotel.com
source_urls:
  - "https://rotel.com/sites/default/files/product/rs232/RSX1057%20Protocol.pdf"
retrieved_at: 2026-07-04T01:13:20.248Z
last_checked_at: 2026-07-07T12:36:15.976Z

Verification Summary

verdict: verified
checked_at: 2026-07-07T12:36:15.976Z
matched_actions: 159
action_count: 159
confidence: medium
summary: "All 159 spec actions matched verbatim against source hex command tokens; transport parameters (19200 baud, 8 bits, no parity) confirmed; bidirectional coverage. (16 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "ENTITY/DOMAIN MISMATCH — entity_id is `rotel_rsx_972` and the requested device is \"Rotel RSX 972\", but the supplied source document is the **RSX-1057** RS232 HEX protocol. The two are different models. This spec faithfully reflects the RSX-1057 source; its applicability to the RSX-972 is UNVERIFIED and must be confirmed against RSX-972-specific documentation before use."
- "command-to-checksum algorithm not stated in source (checksum bytes shown but formula not documented)."
- "device ID 0xC7 is fixed per source; multi-device addressing / ID assignment not explained."
- "checksum computation algorithm not stated in source (only literal checksum bytes are given per command)."
- "command pacing / inter-byte timing not stated in source."
- "computation algorithm not stated in source; use the literal checksum byte documented for the chosen level where available, otherwise compute per device (unverified).\""
- "computation algorithm not stated in source.\""
- "exact bit ordering / MSB-LSB convention per flag byte not explicitly stated."
- "whether DisplayStatus occupies Flag6 bits 2-3 (\"2 bits in Flag6\") - source says yes but table layout ambiguous."
- "get/variable semantics for source, surround mode, mute not separable from display string parsing."
- "no multi-step sequences described explicitly in source."
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."
- "ENTITY/DOMAIN MISMATCH — entity_id `rotel_rsx_972` / requested device \"Rotel RSX 972\", but the supplied source is the **RSX-1057** RS232 HEX protocol. RSX-972 compatibility UNVERIFIED; this spec reflects the RSX-1057 source verbatim."
- "checksum computation algorithm not stated in source (only literal checksum bytes documented per command)."
- "command/byte timing, response latency, and feedback-string pacing not stated in source."
- "firmware version compatibility not stated in source."

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0