Summary

RS-232 HEX control protocol for the Rotel RSX-1057 surround-sound receiver. The device is addressed on a serial bus at fixed Device ID 0xC7; all commands share a 6-byte frame FE 03 C7 <Type> <Key> <Checksum> and the source documents six command tables covering primary, main-zone, record-source, zone-2, volume-direct (main), and volume-direct (zone 2) operations.

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

Traits

- powerable  # inferred from power on/off/toggle command examples
- routable  # inferred from input source selection command examples
- levelable  # inferred from volume up/down and volume direct commands

Actions

# Connection: 19200 baud, 8N1, no handshaking.
# Frame: [0xFE] [0x03] [0xC7] [Type] [Key] [Checksum]
#   - Start byte: 0xFE
#   - Count byte (0x03): includes ID, Type, and Key bytes only; NOT Start or Checksum
#   - Device ID: 0xC7
#   - Type: identifies the command group (see tables below)
#   - Key: command opcode within the group
#   - Checksum: see "Notes" for algorithm
# Meta encoding: any 0xFD or 0xFE byte in the Key or Checksum field must be escaped
#   (0xFD -> 0xFD 0x00, 0xFE -> 0xFD 0x01) so the start byte 0xFE never appears mid-frame.
# No CR/LF after command bytes.

# ---------- Table 1 - Type 0x10 - Primary Commands ----------
- 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: []

- 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: []

- id: surround_stereo
  label: Surround Mode - Stereo
  kind: action
  command: "FE 03 C7 10 11 EB"
  params: []

- id: surround_dolby3_stereo
  label: Surround Mode - Dolby 3 Stereo
  kind: action
  command: "FE 03 C7 10 12 EC"
  params: []

- id: surround_dolby_pro_logic
  label: Surround Mode - Dolby Pro Logic
  kind: action
  command: "FE 03 C7 10 13 ED"
  params: []

- id: surround_dsp_music_toggle
  label: Surround Mode - DSP Music Mode Toggle
  kind: action
  command: "FE 03 C7 10 14 EE"
  params: []

- id: surround_dolby3_pl_toggle
  label: Surround Mode - Dolby 3 Stereo / Pro Logic Toggle
  kind: action
  command: "FE 03 C7 10 53 2D"
  params: []

- id: surround_dts_neo6_music_cinema_toggle
  label: Surround Mode - dts Neo:6 Music/Cinema Toggle
  kind: action
  command: "FE 03 C7 10 54 2E"
  params: []

- id: surround_music_1
  label: Surround Mode - Music 1
  kind: action
  command: "FE 03 C7 10 57 31"
  params: []

- id: surround_music_2
  label: Surround Mode - Music 2
  kind: action
  command: "FE 03 C7 10 58 32"
  params: []

- id: surround_music_3
  label: Surround Mode - Music 3
  kind: action
  command: "FE 03 C7 10 59 33"
  params: []

- id: surround_music_4
  label: Surround Mode - Music 4
  kind: action
  command: "FE 03 C7 10 5A 34"
  params: []

- id: surround_5ch_stereo
  label: Surround Mode - 5 Channel Stereo
  kind: action
  command: "FE 03 C7 10 5B 35"
  params: []

- id: surround_7ch_stereo
  label: Surround Mode - 7 Channel Stereo
  kind: action
  command: "FE 03 C7 10 5C 36"
  params: []

- id: surround_dolby_plii_cinema
  label: Surround Mode - Dolby PLII Cinema
  kind: action
  command: "FE 03 C7 10 5D 37"
  params: []

- id: surround_dolby_plii_music
  label: Surround Mode - Dolby PLII Music
  kind: action
  command: "FE 03 C7 10 5E 38"
  params: []

- id: surround_dolby_plii_game
  label: Surround Mode - Dolby PLII Game
  kind: action
  command: "FE 03 C7 10 74 4E"
  params: []

- id: surround_dolby_pro_logic_5f
  label: Surround Mode - Dolby Pro Logic
  kind: action
  command: "FE 03 C7 10 5F 39"
  params: []

- id: surround_dts_neo6_music
  label: Surround Mode - dts Neo:6 Music
  kind: action
  command: "FE 03 C7 10 60 3A"
  params: []

- id: surround_dts_neo6_cinema
  label: Surround Mode - dts Neo:6 Cinema
  kind: action
  command: "FE 03 C7 10 61 3B"
  params: []

- id: surround_plii_panorama_toggle
  label: Surround Mode - PLII Panorama Toggle
  kind: action
  command: "FE 03 C7 10 62 3C"
  params: []

- id: surround_plii_dimension_up
  label: Surround Mode - PLII Dimension Up
  kind: action
  command: "FE 03 C7 10 63 3D"
  params: []

- id: surround_plii_dimension_down
  label: Surround Mode - PLII Dimension Down
  kind: action
  command: "FE 03 C7 10 64 3E"
  params: []

- id: surround_plii_center_width_up
  label: Surround Mode - PLII Center Width Up
  kind: action
  command: "FE 03 C7 10 65 3F"
  params: []

- id: surround_plii_center_width_down
  label: Surround Mode - PLII Center Width Down
  kind: action
  command: "FE 03 C7 10 66 40"
  params: []

- id: surround_dolby_digital_ex_toggle
  label: Surround Mode - Dolby Digital EX Toggle
  kind: action
  command: "FE 03 C7 10 68 42"
  params: []

- id: surround_next_mode
  label: Surround Mode - Next Mode
  kind: action
  command: "FE 03 C7 10 22 FC"
  params: []

- 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: []

- id: osd_menu
  label: OSD Menu
  kind: action
  command: "FE 03 C7 10 18 F2"
  params: []

- id: osd_enter
  label: OSD Enter
  kind: action
  command: "FE 03 C7 10 19 F3"
  params: []

- id: osd_cursor_right
  label: OSD Cursor Right
  kind: action
  command: "FE 03 C7 10 1A F4"
  params: []

- id: osd_cursor_left
  label: OSD Cursor Left
  kind: action
  command: "FE 03 C7 10 1B F5"
  params: []

- id: osd_cursor_up
  label: OSD Cursor Up
  kind: action
  command: "FE 03 C7 10 1C F6"
  params: []

- id: osd_cursor_down
  label: OSD Cursor Down
  kind: action
  command: "FE 03 C7 10 1D F7"
  params: []

- id: tune_up
  label: Tuner Tune Up
  kind: action
  command: "FE 03 C7 10 28 02"
  params: []

- id: tune_down
  label: Tuner Tune Down
  kind: action
  command: "FE 03 C7 10 29 03"
  params: []

- id: preset_up
  label: Tuner Preset Up
  kind: action
  command: "FE 03 C7 10 6F 49"
  params: []

- id: preset_down
  label: Tuner Preset Down
  kind: action
  command: "FE 03 C7 10 70 4A"
  params: []

- id: frequency_up
  label: Tuner Frequency Up
  kind: action
  command: "FE 03 C7 10 72 4C"
  params: []

- id: frequency_down
  label: Tuner Frequency Down
  kind: action
  command: "FE 03 C7 10 73 4D"
  params: []

- id: tuner_memory
  label: Tuner Memory
  kind: action
  command: "FE 03 C7 10 27 01"
  params: []

- id: band_toggle
  label: Tuner Band Toggle
  kind: action
  command: "FE 03 C7 10 24 FD 01"
  params: []

- id: am
  label: Tuner AM
  kind: action
  command: "FE 03 C7 10 56 30"
  params: []

- id: fm
  label: Tuner FM
  kind: action
  command: "FE 03 C7 10 55 2F"
  params: []

- id: tune_preset
  label: Tuner Tune/Preset
  kind: action
  command: "FE 03 C7 10 20 FA"
  params: []

- id: tuning_mode_select
  label: Tuner Tuning Mode Select
  kind: action
  command: "FE 03 C7 10 69 43"
  params: []

- id: preset_mode_select
  label: Tuner Preset Mode Select
  kind: action
  command: "FE 03 C7 10 6A 44"
  params: []

- id: frequency_direct
  label: Tuner Frequency Direct
  kind: action
  command: "FE 03 C7 10 25 FF"
  params: []

- id: preset_scan
  label: Tuner 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: Tuner FM Mono
  kind: action
  command: "FE 03 C7 10 26 00"
  params: []

- 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: []

- 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
  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 0x14 - 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 0x15 - 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 0x16 - Zone 2 Commands ----------
- 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: []

- 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: []

- 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
  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: []

- 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 0x30 - Volume Direct Commands (Main Zone) ----------
# Source documents Key range 0x00 - 0x60 (Volume Min ... Volume Max).
# Listed sample values: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,32,48,64,80,95,96(=0x60).
# Parameterized: substitute Key byte with desired level; recompute checksum per meta-encoding rules.
- id: main_zone_volume_set
  label: Main Zone Volume Set
  kind: action
  command: "FE 03 C7 30 {level} {checksum}"
  params:
    - name: level
      type: integer
      description: Volume level 0-96 (0x00-0x60). 0 = min, 0x60 = max.
    - name: checksum
      type: hex_byte
      description: Checksum byte computed over ID+Type+Key. Algorithm: see Notes. Meta-encode if value is 0xFD or 0xFE.

# ---------- Table 6 - Type 0x32 - Zone 2 Volume Direct Commands ----------
# Source documents Key range 0x00 - 0x60. Listed sample: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,32,48,64,80,89,96.
# Parameterized: substitute Key byte with desired level; recompute checksum per meta-encoding rules.
- id: zone2_volume_set
  label: Zone 2 Volume Set
  kind: action
  command: "FE 03 C7 32 {level} {checksum}"
  params:
    - name: level
      type: integer
      description: Volume level 0-96 (0x00-0x60). 0 = min, 0x60 = max.
    - name: checksum
      type: hex_byte
      description: Checksum byte computed over ID+Type+Key. Algorithm: see Notes. Meta-encode if value is 0xFD or 0xFE.

Feedbacks

# Standard Response String Format (Type 0x20):
#   [0xFE] [0x17] [0xC7] [0x20] [Char1..Char13] [Flag1..Flag8] [Checksum]
#   - Start: 0xFE
#   - Count: 0x17 (23 decimal)
#   - ID: 0xC7
#   - Type: 0x20
#   - Char1-Char13: ASCII bytes representing the front-panel display text
#   - Flag1-Flag8: bit fields indicating which display icons are illuminated
#   - Checksum: trailing checksum byte
#
# Char1-Char13 carry source input, volume, and surround mode text and should be parsed.
# Flag1-Flag4 bit meanings:
#   Flag1: char1_dot, char2_dot, char3_dot, char4_dot, char5_dot, char6_dot, char7_dot
#   Flag2: char8_dot, char9_dot, char10_dot, char11_dot, char12_dot, char13_dot, char8_colon
#   Flag3: TAPEM, MULTI, 4, 3, 2, 1, Coaxial, Optical
#   Flag4: Tuned, St(Tuner), PTY, TA, TP, RT, RDS, RBDS
# Flag5-Flag8 bit meanings:
#   Flag5: Zone, Dynamic Range, DSP, HDCD, Dolby3 Stereo, DolbyPLII, DolbyPro Logic, Dolby Digital
#   Flag6: DisplayMode 1, DisplayMode 0, (reserved), StandbyLED, OSD, Auto, Memory, Preset
#   Flag7: SBR, SBL, EX, Sur, THX, dts ES, dts, MPEG
#   Flag8: CB, S, LFE, SR, SL, FR, C, FL
# Display status uses 2 bits in Flag6 to confirm display On/Off:
#   DisplayMode[1:0] = 0b01 -> Display On; 0b10 -> Display Off
- id: front_panel_display_state
  type: object
  description: |
    Full snapshot of the front-panel display sent by the unit whenever its
    status changes. Char1-Char13 mirror the 13 display characters (parse for
    source, volume, surround mode). Flag1-Flag8 carry icon states per the
    bitmaps above.
  fields:
    - name: chars
      type: string
      description: 13 ASCII bytes from the front display (source/volume/surround text).
    - name: flag1
      type: byte
      description: char dot bits 1-7 (LSB-first).
    - name: flag2
      type: byte
      description: char dot bits 8-13 and char8 colon.
    - name: flag3
      type: byte
      description: TAPEM, MULTI, source 1-4, Coaxial, Optical icon bits.
    - name: flag4
      type: byte
      description: Tuned, St, PTY, TA, TP, RT, RDS, RBDS icon bits.
    - name: flag5
      type: byte
      description: Zone, Dynamic Range, DSP, HDCD, Dolby3 Stereo, DolbyPLII, DolbyPro Logic, Dolby Digital.
    - name: flag6
      type: byte
      description: DisplayMode[1:0] (bits 0-1), StandbyLED, OSD, Auto, Memory, Preset.
    - name: flag7
      type: byte
      description: SBR, SBL, EX, Sur, THX, dts ES, dts, MPEG.
    - name: flag8
      type: byte
      description: CB, S, LFE, SR, SL, FR, C, FL.

Events

# Any change to the status of the front display prompts a feedback string
# mirroring that change. Treat all feedback string transmissions as unsolicited
# state-change events.
- id: display_state_changed
  description: |
    Device transmitted a feedback string (Type 0x20) because a display-affecting
    state changed. Parse the response into the `front_panel_display_state` feedback
    and act on the changed field(s).
  feedback_id: front_panel_display_state

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings, interlock procedures, or power-on sequencing
# requirements present in the source. Do not infer.

Notes

Checksum algorithm. Source defines the frame as FE 03 C7 <Type> <Key> <Checksum> and the count byte (0x03) explicitly covers "ID, Type, and Key bytes" — i.e. 0xC7 + Type + Key — but does not state the algorithm. Common industry practice for such a frame is the two's-complement (or one's-complement) of the lower 8 bits of the sum of the bytes the count covers, or XOR. The actual algorithm is <!-- UNRESOLVED: checksum algorithm not stated in source --> and a controller must either (a) capture and replay a real device's response to a known command to learn the algorithm, or (b) try both sum and XOR candidates. Do not publish controllers that hard-code a guessed algorithm.

Meta encoding. Any 0xFD or 0xFE byte in the Key or Checksum field of a command must be escaped: 0xFD → FD 00, 0xFE → FD 01. This adds one byte to the frame. The Count field always covers the three ID/Type/Key bytes (not Start, not Checksum, not the meta-escape bytes). Commands marked red in the source use this encoding — examples in this spec (e.g. band_toggle, zone2_main, zone2_mute_toggle, zone2_mute_toggle, main_zone_volume_set/zone2_volume_set parameterised over the full range) all need their Key and Checksum bytes meta-encoded after the algorithm is known.

Feedback string meta encoding. Same rule applies to the feedback string. The count of 0x17 (23) reflects the 23 bytes following the start byte: 1 ID + 1 Type + 13 Chars + 8 Flags = 23. Note that 0x17 itself contains the byte 0x17 which is neither 0xFD nor 0xFE so no escape is needed for it.

Volume direct range. Source says volume direct commands range 0x00 - 0x60 (0-96 decimal) and provides a sample. The min and max commands have Key bytes 0x00 and 0x60 respectively; intermediate values are linear. Spec lists two parameterized actions (main_zone_volume_set, zone2_volume_set) covering the full range rather than ~46 discrete actions.

Two zones. Type 0x14 commands duplicate the corresponding Type 0x10 functions but target the main zone only — recommended for multi-zone installations to avoid zone conflicts. Type 0x16 commands target Zone 2 only.

Record source. Type 0x15 selects the record-out source independently of the listening source; command record_follow_main_zone (Key 0x6B) ties record-out to the current main-zone source.

Display refresh. display_refresh (Type 0x10, Key 0xFF) prompts the unit to retransmit its current state as a feedback string. Use after a controller cold-starts to populate local state without waiting for the next user action.

Family scope. The source is the RSX-1057 protocol document (member of Rotel's "RSX-1 Series" family). Treat the 0xC7 Device ID and the opcodes listed here as RSX-1057-specific until a sibling model (e.g. RSX-1056, RSX-1058) is verified against its own document.

Provenance

source_domains:
  - rotel.com
source_urls:
  - "https://www.rotel.com/sites/default/files/product/rs232/RSX1057%20Protocol.pdf"
retrieved_at: 2026-04-30T04:32:00.561Z
last_checked_at: 2026-06-02T22:13:37.925Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:13:37.925Z
matched_actions: 159
action_count: 159
confidence: medium
summary: "All 159 spec actions traced to source (dip-safe re-verify). (3 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source is specifically the RSX-1057 (member of Rotel's \"RSX-1 Series\" family). Apply to other RSX-1 family members only after verifying the same device ID `0xC7` and same Type/Key opcodes against each variant's own protocol document."
- "no safety warnings, interlock procedures, or power-on sequencing"
- "checksum algorithm not stated in source -->` and a controller must either (a) capture and replay a real device's response to a known command to learn the algorithm, or (b) try both sum and XOR candidates. **Do not** publish controllers that hard-code a guessed algorithm."

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