Summary
Serial control protocol for the Cloud CV & CVA range of multi-channel digital amplifiers (this spec targets the CV & CVA2500, a 2-amplifier-channel / 2-auxiliary-channel model). Control is via an RS-232C serial interface (9600 8N1 default) and an Ethernet interface (default port 4999). The protocol addresses blocks (mono/stereo/crossover channel groupings), individual channels, line/auxiliary inputs, and the system, and covers level, mute, source, EQ (room/speaker/aux/crossover), limiting, delay, GPIO, power, and configuration.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: null # UNRESOLVED: flow control not stated in source
addressing:
port: 4999
auth:
type: none # inferred: no auth/login procedure in source
Traits
traits:
- powerable # inferred: power up/down/wake commands present
- levelable # inferred: per-block level + multi-band EQ control present
- queryable # inferred: extensive query commands returning state present
Actions
# Message frame: <DESTINATION,COMMAND/>. Control messages are UPPER CASE; responses
# are lower case echoes. Destinations: SY=System, BL/Bn=Block/Block indexed,
# Cn=Channel indexed, Ln=Line input, An=Auxiliary input. Destination channels
# :HF/:LF and sub-destinations (.XH/.XL/.RE/.SE/.LI/.PF/.DY/.DB/.RS/.RC/.TX/.Gn/.HV/.SV/
# .HI/.LO/.MI/.MO/.AE/.AL/.AM/.AS/.CF/.RL/.RH/.RB/.RT/.Rn/.Sn/.SD/.EQ) per source.
# ---------- System: Power / Reset / Ping / Wake ----------
- id: power_up
label: Power Up
kind: action
command: "<SY,PU/>"
params: []
- id: power_down
label: Power Down
kind: action
command: "<SY,PD/>"
params: []
- id: power_query
label: Power State Query
kind: query
command: "<SY,PQ/>"
params: []
- id: wake_up
label: Wake Up From Automatic Power Down
kind: action
command: "<SY,WU/>"
params: []
- id: system_reset
label: Reset To Factory Settings
kind: action
command: "<SY,R/>"
params: []
- id: ping
label: Ping
kind: action
command: "<SY,?/>"
params: []
# ---------- System: Initialisation mode ----------
- id: init_factory
label: Initialisation Mode Factory
kind: action
command: "<SY,IF/>"
params: []
- id: init_previous
label: Initialisation Mode Previous
kind: action
command: "<SY,IP/>"
params: []
- id: init_query
label: Initialisation Mode Query
kind: query
command: "<SY,IQ/>"
params: []
# ---------- System: Boot Load Mode ----------
- id: bootloader_unlock
label: Boot Load Mode Unlock
kind: action
command: "<SY,BU{key}/>"
params:
- name: key
type: string
description: 4 digit password key
- id: bootloader_enable
label: Boot Load Mode Enable
kind: action
command: "<SY,BE/>"
params: []
- id: bootloader_disable
label: Boot Load Mode Disable
kind: action
command: "<SY,BD/>"
params: []
- id: bootloader_lock
label: Boot Load Mode Lock
kind: action
command: "<SY,BL/>"
params: []
- id: bootloader_reset
label: Boot Load Mode Reset
kind: action
command: "<SY,BR/>"
params: []
- id: bootloader_query
label: Boot Load Mode Query
kind: query
command: "<SY,BQ/>"
params: []
# ---------- System: Password key ----------
- id: set_password
label: Change Password
kind: action
command: "<SY,K{old}{new}/>"
params:
- name: old
type: string
description: 4 digit current password
- name: new
type: string
description: 4 digit new password
# ---------- System: RS232 Baud ----------
- id: baud_set
label: Set RS232 Baud Rate
kind: action
command: "<SY.RS,B{rate}/>"
params:
- name: rate
type: integer
description: "Baud rate (4800, 9600, 19200, 38400, 57600, 115200)"
- id: baud_query
label: RS232 Baud Rate Query
kind: query
command: "<SY.RS,BQ/>"
params: []
# ---------- System: RTC Calibration ----------
- id: rtc_enable
label: RTC Calibration Enable
kind: action
command: "<SY.RC,CE/>"
params: []
- id: rtc_disable
label: RTC Calibration Disable
kind: action
command: "<SY.RC,CD/>"
params: []
- id: rtc_increment
label: RTC Calibration Increment
kind: action
command: "<SY.RC,CU{n}/>"
params:
- name: n
type: integer
description: Increment value (max 255)
- id: rtc_decrement
label: RTC Calibration Decrement
kind: action
command: "<SY.RC,CD{n}/>"
params:
- name: n
type: integer
description: Decrement value (max 255)
notes: "Source uses CD both for disable (no value) and decrement (with value)."
- id: rtc_store
label: RTC Calibration Store To NVM
kind: action
command: "<SY.RC,CS/>"
params: []
- id: rtc_query
label: RTC Calibration Query
kind: query
command: "<SY.RC,Q/>"
params: []
# ---------- System: Text Field ----------
- id: set_text
label: Set Text Field
kind: action
command: "<SY.TX,S={text}/>"
params:
- name: text
type: string
description: Up to 32 ASCII characters
- id: text_query
label: Text Field Query
kind: query
command: "<SY.TX,Q/>"
params: []
# ---------- System: Versions ----------
- id: hardware_version_query
label: Hardware Version Query
kind: query
command: "<SY.HV,Q/>"
params: []
- id: software_version_query
label: Software Version Query
kind: query
command: "<SY.SV,Q/>"
params: []
# ---------- System: GPIO (G1-G3) ----------
- id: gpio_mode_mute_in
label: GPIO Mode Mute In
kind: action
command: "<SY.G{gpio},MI/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
- id: gpio_mode_fault_out
label: GPIO Mode Fault Out
kind: action
command: "<SY.G{gpio},FO/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
- id: gpio_mode_user_in
label: GPIO Mode User In
kind: action
command: "<SY.G{gpio},UI/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
- id: gpio_mode_user_out
label: GPIO Mode User Out
kind: action
command: "<SY.G{gpio},UO/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
- id: gpio_mode_query
label: GPIO Mode Query
kind: query
command: "<SY.G{gpio},MQ/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
- id: gpio_state_set
label: GPIO State Set
kind: action
command: "<SY.G{gpio},S/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
- id: gpio_state_clear
label: GPIO State Clear
kind: action
command: "<SY.G{gpio},C/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
- id: gpio_state_query
label: GPIO State Query
kind: query
command: "<SY.G{gpio},SQ/>"
params:
- name: gpio
type: integer
description: GPIO terminal index (1-3)
# ---------- Block configuration (BL.CF) ----------
- id: block_config_enable
label: Block Configuration Enable
kind: action
command: "<BL.CF,E/>"
params: []
- id: block_config_disable
label: Block Configuration Disable
kind: action
command: "<BL.CF,D/>"
params: []
- id: block_config_set
label: Block Configuration Set
kind: action
command: "<BL.CF,C={tokens}/>"
params:
- name: tokens
type: string
description: "Comma separated config tokens (DM, ST, 2WM, 2WSM, 2WSS)"
- id: block_config_query_all
label: Block Configuration Query (All)
kind: query
command: "<BL.CF,Q/>"
params: []
- id: block_config_query_single
label: Block Configuration Query (Single Block)
kind: query
command: "<B{block}.CF,Q/>"
params:
- name: block
type: integer
description: Block index (1-based)
# ---------- Block indexed: Level ----------
- id: level_absolute
label: Set Block Level (Absolute)
kind: action
command: "<B{block},L{level}/>"
params:
- name: block
type: integer
description: Block index (1-based)
- name: level
type: integer
description: Attenuation in dB (0 to 90)
- id: level_up
label: Block Level Up
kind: action
command: "<B{block},LU{n}/>"
params:
- name: block
type: integer
- name: n
type: integer
description: dB increase
- id: level_down
label: Block Level Down
kind: action
command: "<B{block},LD{n}/>"
params:
- name: block
type: integer
- name: n
type: integer
description: dB decrease
- id: level_query
label: Block Level Query
kind: query
command: "<B{block},LQ/>"
params:
- name: block
type: integer
- id: level_parser_enable
label: Block Level Parser Control Enable
kind: action
command: "<B{block},LE/>"
params:
- name: block
type: integer
- id: level_parser_disable
label: Block Level Parser Control Disable
kind: action
command: "<B{block},LX/>"
params:
- name: block
type: integer
# ---------- Block indexed: Mute / Open ----------
- id: mute
label: Mute Block
kind: action
command: "<B{block},M/>"
params:
- name: block
type: integer
- id: unmute
label: Unmute Block (Open)
kind: action
command: "<B{block},O/>"
params:
- name: block
type: integer
- id: mute_query
label: Block Mute State Query
kind: query
command: "<B{block},Q/>"
params:
- name: block
type: integer
# ---------- Block indexed: Source ----------
- id: source_set
label: Set Block Source
kind: action
command: "<B{block},S{src}/>"
params:
- name: block
type: integer
- name: src
type: integer
description: "Line input 1-8, or 0 for none"
- id: source_stereo_sum
label: Source Stereo Sum
kind: action
command: "<B{block},SS/>"
params:
- name: block
type: integer
- id: source_mono
label: Source Mono (Stereo Sum Off)
kind: action
command: "<B{block},SM/>"
params:
- name: block
type: integer
- id: source_auxiliary
label: Source From Auxiliary Inputs
kind: action
command: "<B{block},SA/>"
params:
- name: block
type: integer
- id: source_line
label: Source From Line Inputs
kind: action
command: "<B{block},SL/>"
params:
- name: block
type: integer
- id: source_query
label: Block Source Query
kind: query
command: "<B{block},SQ/>"
params:
- name: block
type: integer
- id: source_parser_enable
label: Source Parser Control Enable
kind: action
command: "<B{block},SE/>"
params:
- name: block
type: integer
- id: source_parser_disable
label: Source Parser Control Disable
kind: action
command: "<B{block},SX/>"
params:
- name: block
type: integer
# ---------- Block indexed: Invert (phase) ----------
- id: invert_enable
label: Output Invert Enable
kind: action
command: "<B{block},IE/>"
params:
- name: block
type: integer
- id: invert_disable
label: Output Invert Disable
kind: action
command: "<B{block},ID/>"
params:
- name: block
type: integer
- id: invert_query
label: Output Invert Query
kind: query
command: "<B{block},IQ/>"
params:
- name: block
type: integer
# ---------- Block indexed: Line Voltage (CV Amplifier only) ----------
- id: line_voltage_70
label: Line Voltage 70V
kind: action
command: "<B{block},V70/>"
params:
- name: block
type: integer
- id: line_voltage_100
label: Line Voltage 100V
kind: action
command: "<B{block},V100/>"
params:
- name: block
type: integer
- id: line_voltage_query
label: Line Voltage Query
kind: query
command: "<B{block},VQ/>"
params:
- name: block
type: integer
- id: line_voltage_parser_enable
label: Line Voltage Parser Control Enable
kind: action
command: "<B{block},VE/>"
params:
- name: block
type: integer
- id: line_voltage_parser_disable
label: Line Voltage Parser Control Disable
kind: action
command: "<B{block},VD/>"
params:
- name: block
type: integer
# ---------- Name labels (Block / Line / Aux) ----------
- id: name_set_block
label: Set Block Name Label
kind: action
command: "<B{block},N={name}/>"
params:
- name: block
type: integer
- name: name
type: string
description: Up to 16 chars (cannot contain "/>")
- id: name_query_block
label: Query Block Name Label
kind: query
command: "<B{block},NQ/>"
params:
- name: block
type: integer
- id: name_set_line
label: Set Line Input Name Label
kind: action
command: "<L{input},N={name}/>"
params:
- name: input
type: integer
description: Line input index (1-8)
- name: name
type: string
- id: name_query_line
label: Query Line Input Name Label
kind: query
command: "<L{input},NQ/>"
params:
- name: input
type: integer
- id: name_set_aux
label: Set Auxiliary Input Name Label
kind: action
command: "<A{input},N={name}/>"
params:
- name: input
type: integer
description: Auxiliary input index (1-8)
- name: name
type: string
- id: name_query_aux
label: Query Auxiliary Input Name Label
kind: query
command: "<A{input},NQ/>"
params:
- name: input
type: integer
# ---------- Room EQ (enable + shelves + bass/treble + indexed bands) ----------
- id: room_eq_enable
label: Room EQ Enable
kind: action
command: "<B{block}.RE,E/>"
params:
- name: block
type: integer
- id: room_eq_disable
label: Room EQ Disable
kind: action
command: "<B{block}.RE,D/>"
params:
- name: block
type: integer
- id: room_eq_query
label: Room EQ Enable State Query
kind: query
command: "<B{block}.RE,Q/>"
params:
- name: block
type: integer
- id: room_eq_low_shelf_frequency
label: Room EQ Low Shelf Frequency
kind: action
command: "<B{block}.RL,F{freq}/>"
params:
- name: block
type: integer
- name: freq
type: integer
description: Frequency in Hz (10-20000)
- id: room_eq_low_shelf_boost
label: Room EQ Low Shelf Boost
kind: action
command: "<B{block}.RL,B{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
description: Boost in dB (0-12)
- id: room_eq_low_shelf_cut
label: Room EQ Low Shelf Cut
kind: action
command: "<B{block}.RL,C{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
description: Cut in dB (0-12)
- id: room_eq_low_shelf_query
label: Room EQ Low Shelf Query
kind: query
command: "<B{block}.RL,Q/>"
params:
- name: block
type: integer
- id: room_eq_high_shelf_frequency
label: Room EQ High Shelf Frequency
kind: action
command: "<B{block}.RH,F{freq}/>"
params:
- name: block
type: integer
- name: freq
type: integer
- id: room_eq_high_shelf_boost
label: Room EQ High Shelf Boost
kind: action
command: "<B{block}.RH,B{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
- id: room_eq_high_shelf_cut
label: Room EQ High Shelf Cut
kind: action
command: "<B{block}.RH,C{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
- id: room_eq_high_shelf_query
label: Room EQ High Shelf Query
kind: query
command: "<B{block}.RH,Q/>"
params:
- name: block
type: integer
- id: room_eq_bass_boost
label: Room EQ Bass Boost
kind: action
command: "<B{block}.RB,B{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
- id: room_eq_bass_cut
label: Room EQ Bass Cut
kind: action
command: "<B{block}.RB,C{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
- id: room_eq_bass_query
label: Room EQ Bass Query
kind: query
command: "<B{block}.RB,Q/>"
params:
- name: block
type: integer
- id: room_eq_treble_boost
label: Room EQ Treble Boost
kind: action
command: "<B{block}.RT,B{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
- id: room_eq_treble_cut
label: Room EQ Treble Cut
kind: action
command: "<B{block}.RT,C{db}/>"
params:
- name: block
type: integer
- name: db
type: integer
- id: room_eq_treble_query
label: Room EQ Treble Query
kind: query
command: "<B{block}.RT,Q/>"
params:
- name: block
type: integer
- id: room_eq_band_frequency
label: Room EQ Band Frequency
kind: action
command: "<B{block}.R{band},F{freq}/>"
params:
- name: block
type: integer
- name: band
type: integer
description: EQ band (1-7)
- name: freq
type: integer
- id: room_eq_band_q
label: Room EQ Band Q
kind: action
command: "<B{block}.R{band},Q{q}/>"
params:
- name: block
type: integer
- name: band
type: integer
- name: q
type: number
description: Q value (e.g. 0.8)
- id: room_eq_band_boost
label: Room EQ Band Boost
kind: action
command: "<B{block}.R{band},B{db}/>"
params:
- name: block
type: integer
- name: band
type: integer
- name: db
type: integer
- id: room_eq_band_cut
label: Room EQ Band Cut
kind: action
command: "<B{block}.R{band},C{db}/>"
params:
- name: block
type: integer
- name: band
type: integer
- name: db
type: integer
- id: room_eq_band_query
label: Room EQ Band Query
kind: query
command: "<B{block}.R{band},Q/>"
params:
- name: block
type: integer
- name: band
type: integer
# ---------- Speaker EQ ----------
- id: speaker_eq_enable
label: Speaker EQ Enable
kind: action
command: "<B{block}.SE,E/>"
params:
- name: block
type: integer
- id: speaker_eq_disable
label: Speaker EQ Disable
kind: action
command: "<B{block}.SE,D/>"
params:
- name: block
type: integer
- id: speaker_eq_query
label: Speaker EQ Enable State Query
kind: query
command: "<B{block}.SE,Q/>"
params:
- name: block
type: integer
- id: speaker_eq_band_frequency
label: Speaker EQ Band Frequency
kind: action
command: "<B{block}.S{band},F{freq}/>"
params:
- name: block
type: integer
- name: band
type: integer
description: Speaker EQ band (1-5)
- name: freq
type: integer
notes: "Destination channel (:HF/:LF) required when block is a crossover."
- id: speaker_eq_band_q
label: Speaker EQ Band Q
kind: action
command: "<B{block}.S{band},Q{q}/>"
params:
- name: block
type: integer
- name: band
type: integer
- name: q
type: number
- id: speaker_eq_band_boost
label: Speaker EQ Band Boost
kind: action
command: "<B{block}.S{band},B{db}/>"
params:
- name: block
type: integer
- name: band
type: integer
- name: db
type: integer
- id: speaker_eq_band_cut
label: Speaker EQ Band Cut
kind: action
command: "<B{block}.S{band},C{db}/>"
params:
- name: block
type: integer
- name: band
type: integer
- name: db
type: integer
- id: speaker_eq_band_query
label: Speaker EQ Band Query
kind: query
command: "<B{block}.S{band},Q/>"
params:
- name: block
type: integer
- name: band
type: integer
# ---------- Speaker Protect High Pass Filter ----------
- id: protect_filter_parser_enable
label: Protect Filter Parser Control Enable
kind: action
command: "<B{block}.PF,PE/>"
params:
- name: block
type: integer
- id: protect_filter_parser_disable
label: Protect Filter Parser Control Disable
kind: action
command: "<B{block}.PF,PX/>"
params:
- name: block
type: integer
- id: protect_filter_enable
label: Protect Filter Enable
kind: action
command: "<B{block}.PF,E/>"
params:
- name: block
type: integer
- id: protect_filter_disable
label: Protect Filter Disable
kind: action
command: "<B{block}.PF,D/>"
params:
- name: block
type: integer
- id: protect_filter_frequency
label: Protect Filter Frequency
kind: action
command: "<B{block}.PF,F{freq}/>"
params:
- name: block
type: integer
- name: freq
type: integer
- id: protect_filter_query
label: Protect Filter Query
kind: query
command: "<B{block}.PF,Q/>"
params:
- name: block
type: integer
# ---------- Limiter ----------
- id: limiter_enable
label: Limiter Enable
kind: action
command: "<B{block}.LI,E/>"
params:
- name: block
type: integer
- id: limiter_disable
label: Limiter Disable
kind: action
command: "<B{block}.LI,D/>"
params:
- name: block
type: integer
- id: limiter_threshold
label: Limiter Threshold
kind: action
command: "<B{block}.LI,T{threshold}/>"
params:
- name: block
type: integer
- name: threshold
type: integer
description: dB below 0dB
- id: limiter_gain_reduction_query
label: Limiter Gain Reduction Query
kind: query
command: "<B{block}.LI,GQ/>"
params:
- name: block
type: integer
- id: limiter_query
label: Limiter Query
kind: query
command: "<B{block}.LI,Q/>"
params:
- name: block
type: integer
# ---------- Crossover High / Low (XH / XL) ----------
- id: crossover_bessel
label: Crossover Slope Bessel
kind: action
command: "<B{block}.{xover},BE{n}/>"
params:
- name: block
type: integer
- name: xover
type: string
description: "XH or XL"
- name: n
type: integer
description: "dB/oct (12, 18, 24)"
- id: crossover_butterworth
label: Crossover Slope Butterworth
kind: action
command: "<B{block}.{xover},BU{n}/>"
params:
- name: block
type: integer
- name: xover
type: string
- name: n
type: integer
description: "dB/oct (12, 18, 24)"
- id: crossover_linkwitz_riley
label: Crossover Slope Linkwitz Riley
kind: action
command: "<B{block}.{xover},LR{n}/>"
params:
- name: block
type: integer
- name: xover
type: string
- name: n
type: integer
description: "dB/oct (12, 24, 36, 48)"
- id: crossover_frequency
label: Crossover Frequency
kind: action
command: "<B{block}.{xover},F{freq}/>"
params:
- name: block
type: integer
- name: xover
type: string
- name: freq
type: integer
- id: crossover_overlap_enable
label: Crossover Overlap Enable
kind: action
command: "<B{block}.{xover},OE/>"
params:
- name: block
type: integer
- name: xover
type: string
- id: crossover_overlap_disable
label: Crossover Overlap Disable
kind: action
command: "<B{block}.{xover},OD/>"
params:
- name: block
type: integer
- name: xover
type: string
- id: crossover_query
label: Crossover Query
kind: query
command: "<B{block}.{xover},Q/>"
params:
- name: block
type: integer
- name: xover
type: string
# ---------- Crossover EQ Balance (HF/LF) ----------
- id: crossover_eq_balance_level
label: Crossover EQ Balance Level
kind: action
command: "<B{block}:{chan}.EQ,L{n}/>"
params:
- name: block
type: integer
- name: chan
type: string
description: "HF or LF"
- name: n
type: integer
description: Balance level
- id: crossover_eq_balance_query
label: Crossover EQ Balance Query
kind: query
command: "<B{block}:{chan}.EQ,LQ/>"
params:
- name: block
type: integer
- name: chan
type: string
# ---------- Speaker Delay (HF/LF) ----------
- id: speaker_delay_set
label: Speaker Alignment Delay Set
kind: action
command: "<B{block}:{chan}.SD,U{us}/>"
params:
- name: block
type: integer
- name: chan
type: string
description: "HF or LF"
- name: us
type: integer
description: Microseconds (1-30000)
- id: speaker_delay_query
label: Speaker Alignment Delay Query
kind: query
command: "<B{block}:{chan}.SD,UQ/>"
params:
- name: block
type: integer
- name: chan
type: string
# ---------- Delay (assigned) ----------
- id: block_delay_query
label: Block Assigned Delay Query
kind: query
command: "<B{block}.DY,MQ/>"
params:
- name: block
type: integer
- id: block_delay_down
label: Block Assigned Delay Down
kind: action
command: "<B{block}.DY,MD{n}/>"
params:
- name: block
type: integer
- name: n
type: integer
description: ms decrement
- id: block_delay_up
label: Block Assigned Delay Up
kind: action
command: "<B{block}.DY,MU{n}/>"
params:
- name: block
type: integer
- name: n
type: integer
description: ms increment
- id: system_total_delay_query
label: System Total Assigned Delay Query
kind: query
command: "<SY.DY,MQ/>"
params: []
- id: system_delay_reset
label: System Delay Reset
kind: action
command: "<SY.DY,R/>"
params: []
# ---------- Delay Build ----------
- id: delay_build_new
label: Delay Build New
kind: action
command: "<SY.DB,N/>"
params: []
- id: delay_build_reset
label: Delay Build Reset / Cancel
kind: action
command: "<SY.DB,R/>"
params: []
- id: delay_build_reserve
label: Delay Build Reserve For Block
kind: action
command: "<B{block}.DB,M{ms}/>"
params:
- name: block
type: integer
- name: ms
type: integer
description: Milliseconds to reserve
- id: delay_build_reserve_query
label: Delay Build Reserved Query For Block
kind: query
command: "<B{block}.DB,MQ/>"
params:
- name: block
type: integer
- id: delay_build_available_query
label: Delay Build Available Query
kind: query
command: "<SY.DB,AQ/>"
params: []
- id: delay_build_set
label: Delay Build Set (Activate)
kind: action
command: "<SY.DB,S/>"
params: []
# ---------- Auxiliary EQ (aux-only blocks) ----------
- id: aux_eq_disable
label: Auxiliary EQ Disable
kind: action
command: "<B{block}.AE,D/>"
params:
- name: block
type: integer
- id: aux_eq_high_pass
label: Auxiliary EQ High Pass
kind: action
command: "<B{block}.AE,HP/>"
params:
- name: block
type: integer
- id: aux_eq_low_pass
label: Auxiliary EQ Low Pass
kind: action
command: "<B{block}.AE,LP/>"
params:
- name: block
type: integer
- id: aux_eq_frequency
label: Auxiliary EQ Frequency
kind: action
command: "<B{block}.AE,F{freq}/>"
params:
- name: block
type: integer
- name: freq
type: integer
- id: aux_eq_bessel
label: Auxiliary EQ Bessel
kind: action
command: "<B{block}.AE,BE{n}/>"
params:
- name: block
type: integer
- name: n
type: integer
- id: aux_eq_butterworth
label: Auxiliary EQ Butterworth
kind: action
command: "<B{block}.AE,BU{n}/>"
params:
- name: block
type: integer
- name: n
type: integer
- id: aux_eq_linkwitz_riley
label: Auxiliary EQ Linkwitz Riley
kind: action
command: "<B{block}.AE,LR{n}/>"
params:
- name: block
type: integer
- name: n
type: integer
- id: aux_eq_query
label: Auxiliary EQ Query
kind: query
command: "<B{block}.AE,Q/>"
params:
- name: block
type: integer
# ---------- Auxiliary Slaving (aux-only blocks) ----------
- id: aux_level_slave_enable
label: Auxiliary Level Slave Enable
kind: action
command: "<B{block}.AL,SE/>"
params:
- name: block
type: integer
- id: aux_level_slave_disable
label: Auxiliary Level Slave Disable
kind: action
command: "<B{block}.AL,SD/>"
params:
- name: block
type: integer
- id: aux_level_slave_query
label: Auxiliary Level Slave Query
kind: query
command: "<B{block}.AL,SQ/>"
params:
- name: block
type: integer
- id: aux_mute_slave_enable
label: Auxiliary Mute Slave Enable
kind: action
command: "<B{block}.AM,SE/>"
params:
- name: block
type: integer
- id: aux_mute_slave_disable
label: Auxiliary Mute Slave Disable
kind: action
command: "<B{block}.AM,SD/>"
params:
- name: block
type: integer
- id: aux_mute_slave_query
label: Auxiliary Mute Slave Query
kind: query
command: "<B{block}.AM,SQ/>"
params:
- name: block
type: integer
- id: aux_source_slave_set_master
label: Auxiliary Source Slave Set Master
kind: action
command: "<B{block}.AS,S{master}/>"
params:
- name: block
type: integer
- name: master
type: integer
description: Master block index
- id: aux_source_slave_enable
label: Auxiliary Source Slave Enable
kind: action
command: "<B{block}.AS,SE/>"
params:
- name: block
type: integer
- id: aux_source_slave_disable
label: Auxiliary Source Slave Disable
kind: action
command: "<B{block}.AS,SD/>"
params:
- name: block
type: integer
- id: aux_source_slave_query
label: Auxiliary Source Slave Query
kind: query
command: "<B{block}.AS,SQ/>"
params:
- name: block
type: integer
# ---------- Channel indexed: Meters ----------
- id: input_meter_query
label: Input Meter Query
kind: query
command: "<C{channel}.MI,Q/>"
params:
- name: channel
type: integer
description: Channel index (1-based)
- id: output_meter_query
label: Output Meter Query
kind: query
command: "<C{channel}.MO,Q/>"
params:
- name: channel
type: integer
# ---------- Channel indexed: Hi Impedance (CVA only) ----------
- id: hi_impedance_70
label: High-Impedance 70V
kind: action
command: "<C{channel}.HI,V70/>"
params:
- name: channel
type: integer
- id: hi_impedance_100
label: High-Impedance 100V
kind: action
command: "<C{channel}.HI,V100/>"
params:
- name: channel
type: integer
- id: hi_impedance_query
label: High-Impedance Mode Query
kind: query
command: "<C{channel}.HI,Q/>"
params:
- name: channel
type: integer
# ---------- Channel indexed: Low Impedance (CVA only) ----------
- id: low_impedance_4
label: Low-Impedance 4 Ohm
kind: action
command: "<C{channel}.LO,I4/>"
params:
- name: channel
type: integer
- id: low_impedance_8
label: Low-Impedance 8 Ohm
kind: action
command: "<C{channel}.LO,I8/>"
params:
- name: channel
type: integer
- id: low_impedance_16
label: Low-Impedance 16 Ohm
kind: action
command: "<C{channel}.LO,I16/>"
params:
- name: channel
type: integer
- id: low_impedance_query
label: Low-Impedance Mode Query
kind: query
command: "<C{channel}.LO,Q/>"
params:
- name: channel
type: integer
Feedbacks
# Response messages are lower-case echoes of the sent control message followed by
# the resulting value(s). Error messages use "!X" identifiers (see Notes).
- id: level_response
type: numeric
description: "Lower-case echo, e.g. <b1,l9/> returns absolute level"
- id: power_state_response
type: enum
values: [pe, pd]
description: "Power query returns pe (enabled) or pd (disabled), plus socket state e/d"
- id: error_response
type: enum
values: ["!B", "!E", "!I", "!N", "!A", "!P", "!T", "!U"]
description: "Error identifier sequences (buffer/execution/interrupted/nvm/overrun/parse/token/unavailable)"
Variables
# Settable continuous parameters are represented as parameterized Actions above
# (level, EQ frequency/Q/boost/cut, limiter threshold, delay times, etc.).
# UNRESOLVED: no additional standalone variables documented beyond actions.
Events
# No unsolicited notifications documented; the CV & CVA amplifier replies only to
# control messages. Fault condition is signalled via GPIO Fault Out mode only.
# UNRESOLVED: no async event stream stated in source.
Macros
# The Delay Build procedure (new -> reserve per block -> set) is a multi-step
# sequence documented in source, but expressed here as its constituent actions.
# UNRESOLVED: no single-transaction macros stated in source.
Safety
confirmation_required_for: []
interlocks: []
# Notes from source (not asserted as enforced interlocks):
# - Block configuration must be enabled (BL.CF,E) before changes; enable state
# times out after 60 seconds.
# - Changing block configuration deletes all assigned delays and speaker delays.
# - Boot Load enable/disable requires unlock with the 4-digit password key.
# - Boot Load Reset restarts the amplifier in bootloader mode.
# UNRESOLVED: no explicit safety interlock procedures or power-on sequencing
# requirements beyond the above operational notes are stated in source.
Notes
- Control messages are UPPER CASE; all response messages are lower case (except label query responses which return the label string verbatim).
- Message frame is
<DESTINATION,COMMAND/>. The header<resets the decoder (discards partial messages);/>terminates and triggers decode/execute. - Destination field = optional main dest + optional
:dest_channel(HF/LF) + optional.sub_destination. - Block = a set of channels controlled together (mono/stereo/crossover). Factory default: every channel is a mono block.
- Max blocks/channels scale by model: 8125 = 10 blocks/10 channels, 4250 = 6/6, 2500 = 4/4 (amp channels + 2 aux).
SY.RS,Bnchanges baud rate AFTER the response is transmitted — use with caution over RS-232.- Source uses
CDfor both RTC Calibration Disable (no value) and RTC Calibration Decrement (with value); disambiguate by presence of a numeric value. - CVA-only commands (Hi/Lo Impedance) do not apply to CV models; CV-only commands (Line Voltage) do not apply to CVA models.
- Eight error types: Buffer Full
!B, Execution!E, Interrupted!I, NVM not ready!N, Overrun!A, Parse!P, Token!T, Unavailable!U.
## Provenance
```yaml
source_domains:
- cloud.co.uk
source_urls:
- https://www.cloud.co.uk/uploads/2025/03/cv_cva_amplifier-serial-control-protocol-v1.1.pdf
- https://www.cloud.co.uk/uploads/2024/11/cloud_cv_manual_v1.4-2.pdf
- https://www.cloud.co.uk/uploads/2022/01/08bd061aceb8986b571682b252427845.pdf
- https://www.cloud.co.uk
retrieved_at: 2026-07-31T10:37:11.886Z
last_checked_at: 2026-08-05T08:16:16.705Z
Verification Summary
verdict: verified
checked_at: 2026-08-05T08:16:16.705Z
matched_actions: 162
action_count: 162
confidence: medium
summary: "All 162 spec actions map to documented source commands; transport values verified; source command catalogue essentially fully represented. (11 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source documents the protocol for the whole CV & CVA range (8125/4250/2500); channel-count-dependent maxima scale by model."
- "serial flow_control not stated in source."
- "firmware/hardware version compatibility ranges not stated in source."
- "flow control not stated in source"
- "no additional standalone variables documented beyond actions."
- "no async event stream stated in source."
- "no single-transaction macros stated in source."
- "no explicit safety interlock procedures or power-on sequencing"
- "firmware/hardware version compatibility not stated in source (queried at runtime via SY.SV/SY.HV)."
- "command timing / inter-message delays not stated in source."
- "Ethernet protocol framing (raw TCP vs telnet) over port 4999 not explicitly specified beyond \"Ethernet Interface provides serial control\"."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0