Summary

HEX-based RS-232 control protocol for the Rotel RX-1050 stereo receiver. Covers power, volume, source selection, tone, tuner, numeric keypad, front panel labeling, and feedback (front-panel mirror) over a 2400 baud serial link.

Transport

protocols:
  - serial
serial:
  baud_rate: 2400
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable    # inferred: power on/off/toggle commands present
- routable     # inferred: source select, speaker A/B, zone 2, record function commands present
- levelable    # inferred: volume, mute, treble, bass commands present

Actions

# Standard command frame: FE 03 60 10 {Key} {Checksum}
# No CR/LF. Byte values FD/FE in payload must be meta-encoded as FD 00 / FD 01.

# --- Power & Volume ---
- id: power_toggle
  label: Power Toggle
  kind: action
  command: "FE 03 60 10 0A 7D"
  params: []
- id: power_off
  label: Power Off
  kind: action
  command: "FE 03 60 10 4A BD"
  params: []
- id: power_on
  label: Power On
  kind: action
  command: "FE 03 60 10 4B BE"
  params: []
- id: volume_up
  label: Volume Up
  kind: action
  command: "FE 03 60 10 0B 7E"
  params: []
- id: volume_down
  label: Volume Down
  kind: action
  command: "FE 03 60 10 0C 7F"
  params: []
- id: mute_toggle
  label: Mute Toggle
  kind: action
  command: "FE 03 60 10 1E 91"
  params: []

# --- Source Selection ---
- id: source_phono
  label: Source Phono
  kind: action
  command: "FE 03 60 10 35 A8"
  params: []
- id: source_cd
  label: Source CD
  kind: action
  command: "FE 03 60 10 02 75"
  params: []
- id: source_tuner
  label: Source Tuner
  kind: action
  command: "FE 03 60 10 03 76"
  params: []
- id: source_tape
  label: Source Tape
  kind: action
  command: "FE 03 60 10 04 77"
  params: []
- id: source_video1
  label: Source Video 1
  kind: action
  command: "FE 03 60 10 05 78"
  params: []
- id: source_video2
  label: Source Video 2
  kind: action
  command: "FE 03 60 10 06 79"
  params: []
- id: source_video3
  label: Source Video 3
  kind: action
  command: "FE 03 60 10 07 7A"
  params: []
- id: source_video4
  label: Source Video 4
  kind: action
  command: "FE 03 60 10 08 7B"
  params: []

# --- Tone Control ---
- id: treble_up
  label: Treble Up
  kind: action
  command: "FE 03 60 10 0D 80"
  params: []
- id: treble_down
  label: Treble Down
  kind: action
  command: "FE 03 60 10 0E 81"
  params: []
- id: bass_up
  label: Bass Up
  kind: action
  command: "FE 03 60 10 0F 82"
  params: []
- id: bass_down
  label: Bass Down
  kind: action
  command: "FE 03 60 10 10 83"
  params: []

# --- Front Panel Source Label ---
- id: label_character_enter
  label: Label Character Enter
  kind: action
  command: "FE 03 60 10 19 8C"
  params: []
- id: label_next_character
  label: Label Next Character
  kind: action
  command: "FE 03 60 10 1A 8D"
  params: []
- id: label_previous_character
  label: Label Previous Character
  kind: action
  command: "FE 03 60 10 1B 8E"
  params: []
- id: source_label_change
  label: Source Label Change
  kind: action
  command: "FE 03 60 10 18 8B"
  params: []

# --- Tuner ---
- id: tune_up
  label: Tune Up
  kind: action
  command: "FE 03 60 10 28 9B"
  params: []
- id: tune_down
  label: Tune Down
  kind: action
  command: "FE 03 60 10 29 9C"
  params: []
- id: tuner_memory
  label: Tuner Memory
  kind: action
  command: "FE 03 60 10 27 9A"
  params: []
- id: band_toggle
  label: Band Toggle
  kind: action
  command: "FE 03 60 10 24 97"
  params: []
- id: tune_preset_toggle
  label: Tune / Preset Toggle
  kind: action
  command: "FE 03 60 10 20 93"
  params: []
- id: frequency_direct
  label: Frequency Direct
  kind: action
  command: "FE 03 60 10 25 98"
  params: []
- id: preset_scan
  label: Preset Scan
  kind: action
  command: "FE 03 60 10 21 94"
  params: []
- id: tuner_display
  label: Tuner Display
  kind: action
  command: "FE 03 60 10 44 B3"
  params: []
- id: fm_mono
  label: FM Mono
  kind: action
  command: "FE 03 60 10 26 99"
  params: []

# --- Numeric Keys ---
- id: number_1
  label: Number 1
  kind: action
  command: "FE 03 60 10 2A 9D"
  params: []
- id: number_2
  label: Number 2
  kind: action
  command: "FE 03 60 10 2B 9E"
  params: []
- id: number_3
  label: Number 3
  kind: action
  command: "FE 03 60 10 2C 9F"
  params: []
- id: number_4
  label: Number 4
  kind: action
  command: "FE 03 60 10 2D A0"
  params: []
- id: number_5
  label: Number 5
  kind: action
  command: "FE 03 60 10 2E A1"
  params: []
- id: number_6
  label: Number 6
  kind: action
  command: "FE 03 60 10 2F A2"
  params: []
- id: number_7
  label: Number 7
  kind: action
  command: "FE 03 60 10 30 A3"
  params: []
- id: number_8
  label: Number 8
  kind: action
  command: "FE 03 60 10 31 A4"
  params: []
- id: number_9
  label: Number 9
  kind: action
  command: "FE 03 60 10 32 A5"
  params: []
- id: number_0
  label: Number 0
  kind: action
  command: "FE 03 60 10 33 A6"
  params: []

# --- Other ---
- id: record_function_select
  label: Record Function Select
  kind: action
  command: "FE 03 60 10 17 8A"
  params: []
- id: zone2_main_toggle
  label: Zone 2 / Main Toggle
  kind: action
  command: "FE 03 60 10 23 96"
  params: []
- id: speaker_a_toggle
  label: Speaker A Toggle
  kind: action
  command: "FE 03 60 10 50 C3"
  params: []
- id: speaker_b_toggle
  label: Speaker B Toggle
  kind: action
  command: "FE 03 60 10 51 C4"
  params: []
- id: front_display_on_off
  label: Front Display On / Off
  kind: action
  command: "FE 03 60 10 1F 92"
  params: []
- id: display_refresh
  label: Display Refresh
  kind: query
  command: "FE 03 60 10 FF 72"
  params: []

Feedbacks

# Response frame: FE 0F 60 20 Flag1 Flag2 Char1..Char11 Checksum
# Mirrors front-panel display on any state change.
- id: display_state
  label: Front Panel Display State
  type: object
  fields:
    flag1_speaker_b: bool
    flag1_speaker_a: bool
    flag1_display_mode: integer  # bits 2-3; 0b00 = display on, 0b01 = display off (per source table)
    flag1_standby_led: bool
    flag2_am: bool
    flag2_preset: bool
    flag2_memory: bool
    flag2_auto: bool
    flag2_tuned: bool
    flag2_stereo: bool
    flag2_fm: bool
    display_text: string  # 11 ASCII chars (Char1..Char11) - source input, volume, tuner freq, etc.

Variables

# UNRESOLVED: settable scalar parameters (volume absolute value, tone absolute value,
# direct frequency) not enumerated as discrete commands in this source - source only
# provides relative Up/Down and a FrequencyDirect entry without parameter schema.

Events

# Source states: any change to the front display prompts a feedback string mirroring that change.
- id: display_change
  label: Front Panel Display Change
  description: Unsolicited FE 0F 60 20 ... response emitted whenever the unit's front display state changes.

Macros

# UNRESOLVED: source does not document multi-step sequences.

Safety

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

Notes

  • Frame format: FE 03 60 10 {Key} {Checksum}. Count byte (0x03) covers ID + Type + Key only — not Start or Checksum.
  • No CR/LF after commands.
  • Meta encoding: any payload byte FD or FE (other than the start byte) must be replaced with FD 00 (was FD) or FD 01 (was FE). Source flags meta-encoded commands in red; not relevant to any of the commands above (none collide with FD/FE in Key/Checksum positions, but implementers should still apply the rule defensively).
  • Checksum algorithm: source does not specify the formula (xor / sum / crc). UNRESOLVED — verifier should test against the unit. All checksums above are copied verbatim from the source table.
  • Display Refresh (FF 72) is documented under "Other Commands" — treated as a query that triggers a full display feedback re-emit.
  • Source titles this as RX-1050 only; broader "RX-105 Series" applicability is not confirmed by this document.

Spec done. 46 actions (44 action + 1 query + DisplayRefresh as query), 1 feedback, 1 event. Checksum algo unresolved — source never states it. Meta-encoding rule noted.

## Provenance

```yaml
source_domains:
  - rotel.com
source_urls:
  - "https://www.rotel.com/sites/default/files/product/rs232/RX1050%20Protocol.pdf"
retrieved_at: 2026-04-30T04:32:04.962Z
last_checked_at: 2026-06-02T05:46:10.863Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T05:46:10.863Z
matched_actions: 47
action_count: 47
confidence: medium
summary: "All 47 spec actions matched verbatim against source Section 1; all transport parameters (baud 2400, 8 bits, no parity, 1 stop bit) confirmed in source connection table. (4 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "source covers RX-1050 only; RX-1052 / RX-105 Series compatibility not confirmed in this document."
- "settable scalar parameters (volume absolute value, tone absolute value,"
- "source does not document multi-step sequences."
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."

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