Summary
Stereo preamplifier supporting ASCII RS-232 and TCP/IP control. Commands and responses are ASCII strings terminated with ! (commands) and $ (responses). Effective for firmware P5 V1.09 / P5 S2 V2.00 or later.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
addressing:
port: 9596
auth:
type: none # inferred: no auth procedure in source
Traits
- powerable # inferred from power_on / power_off / power_toggle commands
- levelable # inferred from vol_up / vol_dwn / vol_nn / bass / treble commands
- routable # inferred from source selection commands
- queryable # inferred from ?-suffixed feedback request commands
Actions
# POWER & VOLUME
- 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: vol_up
label: Volume Up
kind: action
command: "vol_up!"
params: []
- id: vol_dwn
label: Volume Down
kind: action
command: "vol_dwn!"
params: []
- id: vol_nn
label: Set Volume
kind: action
command: "vol_nn!"
params:
- name: level
type: integer
description: Volume level 01-96
- id: mute
label: Mute Toggle
kind: action
command: "mute!"
params: []
- id: mute_on
label: Mute On
kind: action
command: "mute_on!"
params: []
- id: mute_off
label: Mute Off
kind: action
command: "mute_off!"
params: []
# SOURCE SELECTION
- id: src_cd
label: Source CD
kind: action
command: "cd!"
params: []
- id: src_coax1
label: Source Coax 1
kind: action
command: "coax1!"
params: []
- id: src_coax2
label: Source Coax 2
kind: action
command: "coax2!"
params: []
- id: src_coax3
label: Source Coax 3
kind: action
command: "coax3!"
params: []
- id: src_opt1
label: Source Optical 1
kind: action
command: "opt1!"
params: []
- id: src_opt2
label: Source Optical 2
kind: action
command: "opt2!"
params: []
- id: src_opt3
label: Source Optical 3
kind: action
command: "opt3!"
params: []
- id: src_aux1
label: Source Aux 1
kind: action
command: "aux1!"
params: []
- id: src_aux2
label: Source Aux 2
kind: action
command: "aux2!"
params: []
- id: src_tuner
label: Source Tuner
kind: action
command: "tuner!"
params: []
- id: src_phono
label: Source Phono
kind: action
command: "phono!"
params: []
- id: src_bluetooth
label: Source Bluetooth
kind: action
command: "bluetooth!"
params: []
- id: src_bal_xlr1
label: Source XLR 1
kind: action
command: "bal_xlr1!"
params: []
- id: src_bal_xlr2
label: Source XLR 2
kind: action
command: "bal_xlr2!"
params: []
- id: src_pcusb
label: Source PC-USB
kind: action
command: "pcusb!"
params: []
# SOURCE TRANSPORT
- id: play
label: Play
kind: action
command: "play!"
params: []
- id: stop
label: Stop
kind: action
command: "stop!"
params: []
- id: pause
label: Pause
kind: action
command: "pause!"
params: []
- id: trkf
label: Track Forward / Tune Up
kind: action
command: "trkf!"
params: []
- id: trkb
label: Track Backward / Tune Down
kind: action
command: "trkb!"
params: []
# TONE
- id: bypass_on
label: Tone Bypass On
kind: action
command: "bypass_on!"
params: []
- id: bypass_off
label: Tone Bypass Off
kind: action
command: "bypass_off!"
params: []
- id: bass_up
label: Bass Up
kind: action
command: "bass_up!"
params: []
- id: bass_down
label: Bass Down
kind: action
command: "bass_down!"
params: []
- id: bass_minus10
label: Set Bass -10
kind: action
command: "bass_-10!"
params: []
- id: bass_000
label: Set Bass 0
kind: action
command: "bass_000!"
params: []
- id: bass_plus10
label: Set Bass +10
kind: action
command: "bass_+10!"
params: []
- id: treble_up
label: Treble Up
kind: action
command: "treble_up!"
params: []
- id: treble_down
label: Treble Down
kind: action
command: "treble_down!"
params: []
- id: treble_minus10
label: Set Treble -10
kind: action
command: "treble_-10!"
params: []
- id: treble_000
label: Set Treble 0
kind: action
command: "treble_000!"
params: []
- id: treble_plus10
label: Set Treble +10
kind: action
command: "treble_+10!"
params: []
# BALANCE
- id: balance_r
label: Balance Right
kind: action
command: "balance_r!"
params: []
- id: balance_l
label: Balance Left
kind: action
command: "balance_l!"
params: []
- id: balance_lnn
label: Set Balance Left
kind: action
command: "balance_lnn!"
params:
- name: steps
type: integer
description: Left offset 01-10
- id: balance_000
label: Set Balance Center
kind: action
command: "balance_000!"
params: []
- id: balance_rnn
label: Set Balance Right
kind: action
command: "balance_rnn!"
params:
- name: steps
type: integer
description: Right offset 01-10
# DIMMER
- id: dimmer
label: Dimmer Toggle
kind: action
command: "dimmer!"
params: []
- id: dimmer_0
label: Dimmer Brightest
kind: action
command: "dimmer_0!"
params: []
- id: dimmer_1
label: Dimmer Level 1
kind: action
command: "dimmer_1!"
params: []
- id: dimmer_2
label: Dimmer Level 2
kind: action
command: "dimmer_2!"
params: []
- id: dimmer_3
label: Dimmer Level 3
kind: action
command: "dimmer_3!"
params: []
- id: dimmer_4
label: Dimmer Dimmest
kind: action
command: "dimmer_4!"
params: []
# RS232 FEEDBACK
- id: rs232_update_on
label: RS232 Update On (Auto)
kind: action
command: "rs232_update_on!"
params: []
- id: rs232_update_off
label: RS232 Update Off (Manual)
kind: action
command: "rs232_update_off!"
params: []
# QUERIES
- id: power_status_query
label: Query Power
kind: query
command: "power?"
params: []
- id: source_query
label: Query Source
kind: query
command: "source?"
params: []
- id: volume_query
label: Query Volume
kind: query
command: "volume?"
params: []
- id: mute_query
label: Query Mute
kind: query
command: "mute?"
params: []
- id: bypass_query
label: Query Tone Bypass
kind: query
command: "bypass?"
params: []
- id: bass_query
label: Query Bass
kind: query
command: "bass?"
params: []
- id: treble_query
label: Query Treble
kind: query
command: "treble?"
params: []
- id: balance_query
label: Query Balance
kind: query
command: "balance?"
params: []
- id: freq_query
label: Query Digital Input Frequency
kind: query
command: "freq?"
params: []
- id: dimmer_query
label: Query Dimmer
kind: query
command: "dimmer?"
params: []
- id: version_query
label: Query Firmware Version
kind: query
command: "version?"
params: []
- id: ip_query
label: Query IP Address
kind: query
command: "ip?"
params: []
- id: mac_query
label: Query MAC Address
kind: query
command: "mac?"
params: []
- id: model_query
label: Query Model
kind: query
command: "model?"
params: []
- id: discover_query
label: Discover Device
kind: query
command: "discover?"
params: []
Feedbacks
- id: power_state
type: enum
values: [on, standby]
- id: source_state
type: enum
values: [cd, coax1, coax2, coax3, opt1, opt2, opt3, tuner, phono, aux1, aux2, pcusb, bluetooth, bal_xlr1, bal_xlr2]
- id: volume_level
type: integer
description: 2-digit current volume level (01-96)
- id: mute_state
type: enum
values: [on, off]
- id: bypass_state
type: enum
values: [on, off]
- id: bass_level
type: string
description: Signed 2-digit level (-10 to +10) or 000
- id: treble_level
type: string
description: Signed 2-digit level (-10 to +10) or 000
- id: balance_level
type: string
description: L/R offset (l01-l10, r01-r10) or 000
- id: freq_value
type: enum
values: [None, "32", "44.1", "48", "88.2", "96", "176.4", "192", "384"]
- id: dimmer_level
type: enum
values: ["0", "1", "2", "3", "4"]
- id: firmware_version
type: string
description: Rotel main CPU software version (e.g. 1.02)
- id: ip_address
type: string
description: Current IPv4 address
- id: mac_address
type: string
description: Uppercase MAC address (12 hex chars)
- id: model_number
type: string
description: Rotel model identifier (e.g. p5)
- id: discover_packet
type: string
description: ip=###.###.###.### port=#### mac=############
Variables
<!-- Section omitted: source defines all settable parameters as discrete command actions. -->
Events
<!-- Section omitted: events arrive as the same response strings listed in Feedbacks, sent automatically when rs232_update_on is set. -->
Macros
<!-- UNRESOLVED: source describes no multi-step sequences. -->
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no safety warnings, interlock procedures, or power-on sequencing requirements.
Notes
Commands must not include spaces; append ! only (no CR/LF). Responses terminated with $. RS-232 hardware lacks flow control — pacing important to avoid packet loss. When rs232_update_on is set, the device pushes status changes as response strings; with rs232_update_off it is silent unless polled. IP control requires a valid IP address on a local network; TCP port 9596. Both P5 and P5 S2 share identical ASCII protocol but diverge on firmware (P5 V1.09+ vs P5 S2 V2.00+).
Provenance
source_domains:
- rotel.com
source_urls:
- "https://www.rotel.com/sites/default/files/product/rs232/P5-P5S2%20Protocol.pdf"
- https://www.rotel.com/manual-resources/rs232-protocols
retrieved_at: 2026-06-30T16:11:46.486Z
last_checked_at: 2026-07-07T12:29:51.585Z
Verification Summary
verdict: verified
checked_at: 2026-07-07T12:29:51.585Z
matched_actions: 69
action_count: 69
confidence: medium
summary: "All 69 spec actions matched literally against source command table and feedback request section; transport parameters verified; one-to-one coverage. (4 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "no explicit authentication/login procedure described; treating as open protocol per source."
- "source describes no multi-step sequences."
- "source contains no safety warnings, interlock procedures, or power-on sequencing requirements."
- "source document metadata (full vendor URL, exact author of revision history) not captured."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0