Summary
Rotel C8 and C8+ are multi-zone power amplifiers (4 zones) controllable via ASCII RS-232 protocol. Same command set accepted over TCP/IP port 9596. Spec covers power, volume, mute, source selection, tone, balance, dimmer, and feedback queries.
Transport
protocols:
- serial
- tcp
addressing:
port: 9596
serial:
baud_rate: 115200
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/power_off/power_toggle commands
- levelable # inferred from volume commands
- queryable # inferred from feedback query commands
- routable # inferred from input_a/b/c/d source selection commands
Actions
- 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: []
- id: power_query
label: Power Status Query
kind: query
command: "power?"
params: []
- id: vol_up
label: Volume Up
kind: action
command: "z{zone}:vol_up!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: vol_down
label: Volume Down
kind: action
command: "z{zone}:vol_dwn!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: vol_set
label: Set Volume
kind: action
command: "z{zone}:vol_{level}!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- name: level
type: integer
description: Volume level (00-96)
- id: volume_query
label: Volume Query
kind: query
command: "volume?"
params: []
- id: mute_toggle
label: Mute Toggle
kind: action
command: "z{zone}:mute!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: mute_on
label: Mute On
kind: action
command: "z{zone}:mute_on!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: mute_off
label: Mute Off
kind: action
command: "z{zone}:mute_off!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: mute_query
label: Mute Query
kind: query
command: "mute?"
params: []
- id: input_a
label: Source Input A
kind: action
command: "z{zone}:input_a!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: input_b
label: Source Input B
kind: action
command: "z{zone}:input_b!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: input_c
label: Source Input C
kind: action
command: "z{zone}:input_c!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: input_d
label: Source Input D
kind: action
command: "z{zone}:input_d!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: input_query
label: Source Input Query
kind: query
command: "input?"
params: []
- id: bass_up
label: Bass Up
kind: action
command: "z{zone}:bass_up!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: bass_down
label: Bass Down
kind: action
command: "z{zone}:bass_down!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: bass_set_negative
label: Set Bass Negative
kind: action
command: "z{zone}:bass_-{n}!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- name: n
type: integer
description: Negative offset (01-10)
- id: bass_set_flat
label: Set Bass Flat
kind: action
command: "z{zone}:bass_000!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: bass_set_positive
label: Set Bass Positive
kind: action
command: "z{zone}:bass_+{n}!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- name: n
type: integer
description: Positive offset (01-10)
- id: bass_query
label: Bass Query
kind: query
command: "bass?"
params: []
- id: treble_up
label: Treble Up
kind: action
command: "z{zone}:treble_up!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: treble_down
label: Treble Down
kind: action
command: "z{zone}:treble_down!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: treble_set_negative
label: Set Treble Negative
kind: action
command: "z{zone}:treble_-{n}!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- name: n
type: integer
description: Negative offset (01-10)
- id: treble_set_flat
label: Set Treble Flat
kind: action
command: "z{zone}:treble_000!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: treble_set_positive
label: Set Treble Positive
kind: action
command: "z{zone}:treble_+{n}!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- name: n
type: integer
description: Positive offset (01-10)
- id: treble_query
label: Treble Query
kind: query
command: "treble?"
params: []
- id: balance_right
label: Balance Right
kind: action
command: "z{zone}:balance_r!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: balance_left
label: Balance Left
kind: action
command: "z{zone}:balance_l!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: balance_set_left
label: Set Balance Left
kind: action
command: "z{zone}:balance_l{n}!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- name: n
type: integer
description: Left offset (01-10)
- id: balance_set_center
label: Set Balance Center
kind: action
command: "z{zone}:balance_000!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- id: balance_set_right
label: Set Balance Right
kind: action
command: "z{zone}:balance_r{n}!"
params:
- name: zone
type: integer
description: Zone number (1-4)
- name: n
type: integer
description: Right offset (01-10)
- id: balance_query
label: Balance Query
kind: query
command: "balance?"
params: []
- id: dimmer_toggle
label: Display Dimmer Toggle
kind: action
command: "dimmer!"
params: []
- id: dimmer_0
label: Display Brightest
kind: action
command: "dimmer_0!"
params: []
- id: dimmer_1
label: Display Dimmer Level 1
kind: action
command: "dimmer_1!"
params: []
- id: dimmer_2
label: Display Dimmer Level 2
kind: action
command: "dimmer_2!"
params: []
- id: dimmer_3
label: Display Dimmer Level 3
kind: action
command: "dimmer_3!"
params: []
- id: dimmer_4
label: Display Dimmest
kind: action
command: "dimmer_4!"
params: []
- id: dimmer_query
label: Dimmer Query
kind: query
command: "dimmer?"
params: []
- id: rs232_update_on
label: RS232 Auto Update On
kind: action
command: "rs232_update_on!"
params: []
- id: rs232_update_off
label: RS232 Auto Update Off
kind: action
command: "rs232_update_off!"
params: []
- id: freq_query
label: Frequency Query
kind: query
command: "freq?"
params: []
- id: version_query
label: Firmware Version Query
kind: query
command: "version?"
params: []
- id: ip_query
label: IP Address Query
kind: query
command: "ip?"
params: []
- id: mac_query
label: MAC Address Query
kind: query
command: "mac?"
params: []
- id: model_query
label: Model Query
kind: query
command: "model?"
params: []
- id: discover
label: Network Discover
kind: query
command: "discover?"
params: []
Feedbacks
- id: power_state
type: enum
values: [on, standby]
- id: volume_per_zone
type: integer
description: Per-zone volume 00-96, 4 comma-separated values (z1,z2,z3,z4)
- id: mute_per_zone
type: enum
values: [on, off]
- id: input_per_zone
type: enum
values: [a, b, c, d]
- id: bass_per_zone
type: string
description: Per-zone bass level +01-10 / -01-10 / 000
- id: treble_per_zone
type: string
description: Per-zone treble level +01-10 / -01-10 / 000
- id: balance_per_zone
type: string
description: Per-zone balance l01-10 / r01-10 / 000
- id: dimmer_level
type: enum
values: ["0", "1", "2", "3", "4"]
- id: freq_per_zone
type: string
description: Per-zone digital source frequency (none, 44.1, 48, 88.2, 96, 176.4, 192)
- id: firmware_version
type: string
description: Main CPU software version (#.##)
- id: ip_address
type: string
- id: mac_address
type: string
description: Uppercase hex (12 chars)
- id: model_number
type: string
Variables
# UNRESOLVED: no persistent settable parameters beyond per-action commands documented above
Events
- id: rs232_status_update
description: Unsolicited status changes broadcast when rs232_update_on is active. Same key=value, comma-separated zone format as query responses. Enable via rs232_update_on! and disable via rs232_update_off!.
Macros
# UNRESOLVED: no multi-step sequences documented in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings or interlock procedures
Notes
Protocol ASCII, terminated with "!" for commands, "$" for responses. No spaces, no CR/LF. RS232 hardware lacks flow control — packet loss risk noted. Zone prefix z#: (1-4) optional; omission applies to all zones. Source select only effective when zone configured as "Matrix" via front panel. discover? example port=9590 conflicts with documented TCP control port 9596 — flag.
Provenance
source_domains:
- rotel.com
source_urls:
- "https://www.rotel.com/sites/default/files/product/rs232/C8%26C8%2B%20Protocol.pdf"
- https://www.rotel.com/manuals-resources/rs232-protocols
- "https://www.rotel.com/sites/default/files/drivers/amplifier_Rotel_C8%5EC8%2B%2B[DriverWorks]_1.c4i"
retrieved_at: 2026-06-30T16:15:22.038Z
last_checked_at: 2026-07-07T12:29:48.161Z
Verification Summary
verdict: verified
checked_at: 2026-07-07T12:29:48.161Z
matched_actions: 50
action_count: 50
confidence: medium
summary: "All 50 spec actions matched exactly in source document; transport parameters verified; bidirectional coverage complete. (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "discover? example shows port=9590 while TCP control port documented as 9596 — discrepancy not reconciled in source"
- "no persistent settable parameters beyond per-action commands documented above"
- "no multi-step sequences documented in source"
- "source contains no safety warnings or interlock procedures"
- "discover? port 9590 vs TCP port 9596 conflict not reconciled in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0