Summary

ASCII-based RS-232 control spec for Rotel CD11, CD11MKII, CD14, and CD14MKII CD players. Covers power, CD transport (play/stop/pause/track/fast-forward/backward/random/repeat), numeric keypad entry, eject, time display toggle, display dimmer levels, and RS-232 feedback/auto-update controls, plus a set of status-query commands.

Transport

protocols:
  - serial
serial:
  baud_rate: 57600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth/login procedure in source
# Framing notes (verbatim from source):
#   - All commands MUST be terminated with a "!" character.
#   - No spaces, no CR/LF after the command - only the terminating "!".
#   - Status responses terminate with "$" (fixed-length) or "$$" (variable-length, e.g. CD text).

Traits

# - powerable   # inferred from power_on/power_off/power_toggle commands
# - queryable   # inferred from power?/status?/track?/etc. query commands
# - levelable   # inferred from dimmer_0..dimmer_6 brightness levels
traits:
  - powerable
  - queryable
  - levelable

Actions

# All commands carry a verbatim payload from the source, including the "!" terminator.
# "n/a" response = no unit response documented for that command.

# --- POWER COMMANDS ---
- id: power_on
  label: Power On
  kind: action
  command: "power_on!"
  params: []
- id: power_off
  label: Power Off
  kind: action
  command: "power_off!"
  params: []
- id: power_toggle
  label: Power Toggle
  kind: action
  command: "power_toggle!"
  params: []

# --- CD TRANSPORT COMMANDS ---
- id: play
  label: Play
  kind: action
  command: "play!"
  params: []
- id: stop
  label: Stop
  kind: action
  command: "stop!"
  params: []
- id: pause
  label: Pause Toggle
  kind: action
  command: "pause!"
  params: []
- id: track_forward
  label: Track Forward
  kind: action
  command: "trkf!"
  params: []
- id: track_backward
  label: Track Backward
  kind: action
  command: "trkb!"
  params: []
- id: fast_forward
  label: Fast Forward
  kind: action
  command: "ff!"
  params: []
- id: fast_backward
  label: Fast Backward
  kind: action
  command: "fb!"
  params: []
- id: random_toggle
  label: Random PlayMode Toggle
  kind: action
  command: "rnd!"
  params: []
- id: repeat_toggle
  label: Repeat PlayMode Toggle
  kind: action
  command: "rpt!"
  params: []

# --- NUMERIC KEY COMMANDS (each listed as a separate row in source) ---
- id: numeric_key_1
  label: Number Key 1
  kind: action
  command: "1!"
  params: []
- id: numeric_key_2
  label: Number Key 2
  kind: action
  command: "2!"
  params: []
- id: numeric_key_3
  label: Number Key 3
  kind: action
  command: "3!"
  params: []
- id: numeric_key_4
  label: Number Key 4
  kind: action
  command: "4!"
  params: []
- id: numeric_key_5
  label: Number Key 5
  kind: action
  command: "5!"
  params: []
- id: numeric_key_6
  label: Number Key 6
  kind: action
  command: "6!"
  params: []
- id: numeric_key_7
  label: Number Key 7
  kind: action
  command: "7!"
  params: []
- id: numeric_key_8
  label: Number Key 8
  kind: action
  command: "8!"
  params: []
- id: numeric_key_9
  label: Number Key 9
  kind: action
  command: "9!"
  params: []
- id: numeric_key_0
  label: Number Key 0
  kind: action
  command: "0!"
  params: []

# --- OTHER COMMANDS ---
- id: eject
  label: Eject CD
  kind: action
  command: "eject!"
  params: []
- id: time_toggle
  label: Toggle CD Time Display
  kind: action
  command: "time!"
  params: []
- id: dimmer_toggle
  label: Toggle Display Dimmer
  kind: action
  command: "dimmer!"
  params: []
- id: dimmer_set_0
  label: Set Display to 0 (Brightest)
  kind: action
  command: "dimmer_0!"
  params: []
- id: dimmer_set_1
  label: Set Display to 1
  kind: action
  command: "dimmer_1!"
  params: []
- id: dimmer_set_2
  label: Set Display to 2
  kind: action
  command: "dimmer_2!"
  params: []
- id: dimmer_set_3
  label: Set Display to 3
  kind: action
  command: "dimmer_3!"
  params: []
- id: dimmer_set_4
  label: Set Display to 4
  kind: action
  command: "dimmer_4!"
  params: []
- id: dimmer_set_5
  label: Set Display to 5
  kind: action
  command: "dimmer_5!"
  params: []
- id: dimmer_set_6
  label: Set Display to 6 (Dimmest)
  kind: action
  command: "dimmer_6!"
  params: []

# --- RS232 FEEDBACK (AUTO-UPDATE MODE) COMMANDS ---
- id: rs232_update_on
  label: Set RS232 Update to Auto (On)
  kind: action
  command: "rs232_update_on!"
  params: []
- id: rs232_update_off
  label: Set RS232 Update to Manual (Off)
  kind: action
  command: "rs232_update_off!"
  params: []

# --- FEEDBACK REQUEST (QUERY) COMMANDS ---
- id: power_query
  label: Request Current Power Status
  kind: query
  command: "power?"
  params: []
- id: status_query
  label: Request CD Play Status
  kind: query
  command: "status?"
  params: []
- id: track_query
  label: Request Current CD Track Number
  kind: query
  command: "track?"
  params: []
- id: track_name_query
  label: Request Current CD Track Name
  kind: query
  command: "track_name?"
  params: []
- id: tray_status_query
  label: Request Current CD Mechanism Status
  kind: query
  command: "tray_status?"
  params: []
- id: rnd_query
  label: Request Current Random Play Mode
  kind: query
  command: "rnd?"
  params: []
- id: rpt_query
  label: Request Current Repeat Play Mode
  kind: query
  command: "rpt?"
  params: []
- id: time_query
  label: Request Current CD Track Time
  kind: query
  command: "time?"
  params: []
- id: disc_name_query
  label: Request Current CD Name
  kind: query
  command: "disc_name?"
  params: []
- id: disc_type_query
  label: Request Type of Loaded CD
  kind: query
  command: "disc_type?"
  params: []
- id: dimmer_query
  label: Request Current Front Display Dimmer Level
  kind: query
  command: "dimmer?"
  params: []
- id: version_query
  label: Request Main CPU Software Version
  kind: query
  command: "version?"
  params: []
- id: model_query
  label: Request Model Number
  kind: query
  command: "model?"
  params: []

Feedbacks

# Observable states returned by query commands and auto-update notifications.
- id: power_state
  type: enum
  values: [on, standby]
- id: play_status
  type: enum
  values: [play, stop, pause]
- id: track_number
  type: string  # format "###" e.g. track=002$
- id: track_name
  type: string  # variable-length, UTF-8, terminated with $$
- id: tray_status
  type: enum
  values: [open, close, load]
- id: random_mode
  type: enum
  values: [on, off]
- id: repeat_mode
  type: enum
  values: [track, disc, off]
- id: time_display
  type: string  # format "#:##:##", variable-length terminated with $$, depends on time display mode
- id: disc_name
  type: string  # variable-length, UTF-8, terminated with $$
- id: disc_type
  type: enum
  values: [None, CD-DA, HDCD, MP3, WMA]
- id: dimmer_level
  type: enum
  values: [0, 1, 2, 3, 4, 5, 6]
- id: software_version
  type: string  # format "#.##"
- id: model_number
  type: string  # e.g. model=cd14$
- id: update_mode
  type: enum
  values: [auto, manual]
# UNRESOLVED: exact parser semantics for "###" track-number padding not fully specified beyond 3-digit example

Variables

# No continuously settable scalar parameters beyond the enumerated dimmer levels
# (modeled as discrete actions above). Volume/gain/etc. are not applicable to these
# CD players.
# UNRESOLVED: none applicable

Events

# With rs232_update_on! enabled, the unit transmits unsolicited status updates on any
# status change (terminated with "$" or "$$"). Same payload formats as the Feedbacks
# section above. No explicit discrete event catalog beyond those state strings.
# UNRESOLVED: precise event-to-trigger mapping not enumerated in source

Macros

# No multi-step command sequences documented in source.
# UNRESOLVED: none applicable

Safety

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

Notes

  • All commands must be terminated with a literal ! character. No spaces, no CR/LF — only the !. (Source example text shows "power on!" with a space, but the command table and the explicit "do not include any spaces" note indicate the canonical form is the underscore form power_on!.)
  • Status responses terminate with $ for fixed-length strings and $$ for variable-length strings (CD track/disc name, CD-DA text).
  • RS-232 hardware does NOT support flow control; the source warns care is needed when sending/receiving to avoid packet loss.
  • Auto status updates can be enabled (rs232_update_on!, update_mode=auto$) or disabled (rs232_update_off!, update_mode=manual$). When OFF, the unit only responds to explicit polls.
  • CD text (track_name, disc_name, time) uses UTF-8 encoding.

## Provenance

```yaml
source_domains:
  - rotel.com
source_urls:
  - "https://rotel.com/sites/default/files/product/rs232/CD14-CD14MKII-CD11-CD11MKII%20Protocol.pdf"
retrieved_at: 2026-07-03T15:44:26.165Z
last_checked_at: 2026-07-07T12:36:16.924Z
```

## Verification Summary

```yaml
verdict: verified
checked_at: 2026-07-07T12:36:16.924Z
matched_actions: 47
action_count: 47
confidence: medium
summary: "All 47 spec actions matched verbatim in source command tables; transport parameters verified from Connection Settings table. (11 unresolved item(s) noted in Known Gaps.)"
```

## Known Gaps

```yaml
- "DEVICE-NAME MISMATCH. The requested device \"Rotel RX 102 MkII\" (a"
- "no voltage/current/power specs in source"
- "no port number / network addressing (serial-only device)"
- "RS-232 does not support flow control per source; care needed to avoid packet loss"
- "exact parser semantics for \"###\" track-number padding not fully specified beyond 3-digit example"
- "none applicable"
- "precise event-to-trigger mapping not enumerated in source"
- "source contains no explicit safety warnings, interlock procedures, or"
- "DEVICE-NAME MISMATCH — see Summary. Requested device \"RX 102 MkII\" not"
- "exact meaning of \"#:##:##\" time-format display modes (track elapsed/remaining, disc elapsed/remaining) — selection mechanism not documented beyond the time! toggle"
- "HDCD decoding / WMA/MP3 support confirmation is runtime via disc_type? only"
```

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