Summary
The Bose ControlSpace EX-440C is a fixed-architecture digital signal processor with 8 analog mic/line inputs, 8 analog outputs, 8 channels of AmpLink output, 16x16 Dante I/O, and 8 channels of Acoustic Echo Cancellation. This spec covers the EX-440C's serial control protocol (v5.13) over RS-232 and TCP/IP for third-party control systems. The source document covers the broader ControlSpace family (ESP, EX, PowerMatch, PowerShare, MSA12X, Endpoints); only EX-440C-relevant commands are enumerated below. All commands and responses are ASCII terminated with <CR> (0x0D).
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
connector: miniature Phoenix (DTE)
addressing:
port: 10055
auth:
type: none # inferred: no auth procedure in source
Traits
# - powerable # inferred: standby/power commands documented
# - routable # inferred: routing commands present (Matrix, Router, Source Selector, CRR)
# - queryable # inferred: query commands returning state present
# - levelable # inferred: volume, gain, level control commands present
- powerable
- routable
- queryable
- levelable
Actions
# ============================================================
# 4. System Commands
# ============================================================
- id: set_parameter_set
label: Recall Parameter Set
kind: action
command: "SS{n}<CR>"
params:
- name: n
type: string
description: Parameter Set number, 1-FFh (1-255 decimal), hex
- id: get_parameter_set
label: Query Last Invoked Parameter Set
kind: query
command: "GS<CR>"
params: []
response: "S n<CR>" # n = 0-FF hex; 0 = no Parameter Set recalled
- id: set_group_master_level
label: Set Group Master Level
kind: action
command: "SG{n},{l}<CR>"
params:
- name: n
type: string
description: Group number, 1-40h (1-64 decimal)
- name: l
type: string
description: Level, 0h (-60dB) to 90h (+12dB) in 0.5dB steps (0-144 dec), or FFh (-inf)
- id: set_group_source_selector
label: Set Group Source Selector Channel
kind: action
command: "SG{n},{l}<CR>"
params:
- name: n
type: string
description: Group number, 1-40h (1-64 decimal)
- name: l
type: string
description: Channel to select, 1-20h (1-32 decimal)
- id: get_group
label: Query Group Master Level or Source Selector
kind: query
command: "GG{n}<CR>"
params:
- name: n
type: string
description: Group number, 1-40h
response: "GG n,l<CR>"
- id: set_group_level_increment_decrement
label: Set Group Level Increment/Decrement
kind: action
command: "SH{n},{d},{x}<CR>"
params:
- name: n
type: string
description: Group number, 1-40h
- name: d
type: integer
description: Direction, 1=up, 0=down
- name: x
type: string
description: Number of 0.5dB steps in hex (e.g. 5dB = A)
- id: set_group_master_mute
label: Set Group Master Mute
kind: action
command: "SN{n},{m}<CR>"
params:
- name: n
type: string
description: Group number, 1-40h
- name: m
type: string
description: "M=Mute, U=Un-mute, T=Toggle"
- id: get_group_master_mute
label: Query Group Master Mute
kind: query
command: "GN{n}<CR>"
params:
- name: n
type: string
description: Group number, 1-40h
response: "GN n,m<CR>"
- id: set_room_combine_by_number
label: Join/Split Rooms (by number) [EX Only]
kind: action
command: "SRC{n},{a},{b},{s}<CR>"
params:
- name: n
type: integer
description: Room Combine Group number, 1-6
- name: a
type: integer
description: Room number A, 1-6
- name: b
type: integer
description: Room number B, 1-6
- name: s
type: string
description: "J=Join, S=Split"
- id: set_room_combine_by_name
label: Join/Split Rooms (by name) [EX Only]
kind: action
command: 'SRC"{N}","{A}","{B}",{s}<CR>'
params:
- name: N
type: string
description: Room Combine Group name
- name: A
type: string
description: Room name A
- name: B
type: string
description: Room name B
- name: s
type: string
description: "J=Join, S=Split"
- id: get_room_combine_by_number
label: Query Room Combine (by number) [EX Only]
kind: query
command: "GRC{n},{a},{b}<CR>"
params:
- name: n
type: integer
description: Room Combine Group number, 1-6
- name: a
type: integer
description: Room number A, 1-6
- name: b
type: integer
description: Room number B, 1-6
response: "GRC n,a,b,s<CR>"
- id: get_room_combine_by_name
label: Query Room Combine (by name) [EX Only]
kind: query
command: 'GRC{n},"{A}","{B}"<CR>'
params:
- name: n
type: string
description: Room Combine Group number or name
- name: A
type: string
description: Room name A
- name: B
type: string
description: Room name B
response: "GRC n,a,b,s<CR>"
- id: get_joined_rooms
label: Query Which Rooms Are Currently Joined [EX Only]
kind: query
command: "GRC{n}<CR>"
params:
- name: n
type: string
description: Room Combine Group number or name
response: "GRC n,[a,b][c,d,f]<CR>" # brackets indicate which rooms are joined
- id: get_parameter_set_list
label: Query Current Parameter Set List Selection
kind: query
command: 'GA"{A}">{i}<CR>'
params:
- name: A
type: string
description: Parameter Set List name
- name: i
type: integer
description: Index after '>', 1 or 2
response: 'GA "A">2=n<CR>' # or NAK 01/02
- id: set_parameter_set_list
label: Set Current Parameter Set List Selection
kind: action
command: 'SA"{A}">{i}={n}<CR>'
params:
- name: A
type: string
description: Parameter Set List name
- name: i
type: integer
description: Index, 1 or 2
- name: n
type: integer
description: Index of Parameter Set in list to select
response: "<ACK>" # or NAK 01/02/03
# ============================================================
# 5. Device Commands
# ============================================================
- id: set_volume
label: Set Input/Output Volume
kind: action
command: "SV{s},{c},{l}<CR>"
params:
- name: s
type: string
description: "Slot number (hex). EX-440C: 1=Out1-4, 2=In5-8, 3=In1-4, 4=Out5-8, 5=AmpLink Out, 7=Dante, 8=AEC"
- name: c
type: integer
description: Channel number, 1-8 (EX)
- name: l
type: string
description: Level, 0h (-60dB) to 90h (+12dB) in 0.5dB steps (0-144 dec)
- id: get_volume
label: Query Input/Output Volume
kind: query
command: "GV{s},{c}<CR>"
params:
- name: s
type: string
description: Slot number (hex)
- name: c
type: integer
description: Channel number, 1-8 (EX)
response: "GV s,c,l<CR>"
- id: set_volume_increment_decrement
label: Set Volume Increment/Decrement
kind: action
command: "SI{s},{c},{d},{x}<CR>"
params:
- name: s
type: string
description: Slot number (hex)
- name: c
type: integer
description: Channel number, 1-8 (EX)
- name: d
type: integer
description: Direction, 1=up, 0=down
- name: x
type: string
description: Number of 0.5dB steps in hex
- id: set_mute
label: Set Input/Output Mute
kind: action
command: "SM{s},{c},{m}<CR>"
params:
- name: s
type: string
description: Slot number (hex)
- name: c
type: integer
description: Channel number, 1-8 (EX)
- name: m
type: string
description: "M=Mute, U=Un-mute, T=Toggle"
- id: get_mute
label: Query Input/Output Mute
kind: query
command: "GM{s},{c}<CR>"
params:
- name: s
type: string
description: Slot number (hex)
- name: c
type: integer
description: Channel number, 1-8 (EX)
response: "GM s,c,m<CR>"
- id: get_signal_level
label: Get Signal Levels for Slot
kind: query
command: "GL{s}<CR>"
params:
- name: s
type: string
description: "Slot index (hex). EX-440C: 1=Out1-4, 2=In5-8, 3=In1-4, 4=Out5-8, 5=AmpLink, 7=Dante, 8=AEC"
response: "GL s [1,...,N]<CR>"
- id: get_signal_level_param
label: Get Signal Levels for Parameter in Slot
kind: query
command: "GL{s},{p}<CR>"
params:
- name: s
type: string
description: Slot index (hex)
- name: p
type: integer
description: "Parameter index (e.g. 8,1=AEC Input, 8,2=AEC ERL, 8,3=AEC ERLE)"
response: "GL s,p [1,...,N]<CR>"
- id: get_ip_address
label: Query Device IP Address
kind: query
command: "IP<CR>"
params: []
response: "IP xxx.xxx.xxx.xxx<CR>"
- id: set_ip_address
label: Set Device IP Address
kind: action
command: "IP{address}<CR>"
params:
- name: address
type: string
description: "New IP address (changes take effect after reboot)"
- id: get_network_parameter
label: Query Network Parameter
kind: query
command: "NP{p}<CR>"
params:
- name: p
type: string
description: "T=Type (DHCP/Static), M=Subnet Mask, G=Default Gateway"
response: "NP p,v<CR>"
- id: set_network_parameter
label: Set Network Parameter
kind: action
command: "NP{p},{v}<CR>"
params:
- name: p
type: string
description: "T=Type, M=Subnet Mask, G=Default Gateway"
- name: v
type: string
description: "D=DHCP, S=Static, or xxx.xxx.xxx.xxx"
notes: Changes take effect after reboot.
- id: reset_network_defaults
label: Reset All Network Parameters to Defaults
kind: action
command: "NP F<CR>"
params: []
notes: Changes take effect after reboot. For EX processors this affects the control connection only; VoIP settings remain.
- id: reset_reboot_device
label: Reset/Reboot Device
kind: action
command: "RESET<CR>"
params: []
notes: Equivalent to power-cycle. Current settings lost, device reverts to power-on (flashed) settings.
# ============================================================
# 6. Module Commands (SA/GA/MA framework)
# Module labels are user-defined in ControlSpace Designer and
# must be unique within a device. Indices vary by module type.
# ============================================================
- id: module_input_set
label: Set Input Module Parameter
kind: action
command: 'SA"Input {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Channel label (e.g. "Input 1" through "Input 8" for EX-440C)
- name: i1
type: integer
description: "1=Type (M/L), 2=Gain (0/14/24/32/44/54/64), 3=Level (-60.5 to +12.0dB, 0.5 step), 4=Mute (O/F/T), 5=Phantom (O/F/T)"
- name: v
type: string
description: Value per Index 1
response: "<ACK>" # or <NAK> nn where nn is 01/02/03/99
- id: module_input_get
label: Get Input Module Parameter
kind: query
command: 'GA"Input {n}">{i1}<CR>'
params:
- name: n
type: integer
description: Channel label
- name: i1
type: integer
description: Index 1
response: 'GA "Input n">i1=v<CR>'
- id: module_output_set
label: Set Output Module Parameter
kind: action
command: 'SA"Output {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Channel label (e.g. "Output 1" through "Output 8" for EX-440C)
- name: i1
type: integer
description: "1=Level (-60.5 to +12.0dB, 0.5 step), 2=Mute (O/F/T)"
- name: v
type: string
description: Value per Index 1
- id: module_output_get
label: Get Output Module Parameter
kind: query
command: 'GA"Output {n}">{i1}<CR>'
params:
- name: n
type: integer
description: Channel label
- name: i1
type: integer
description: Index 1
response: 'GA "Output n">i1=v<CR>'
- id: module_amplink_set
label: Set AmpLink Output Parameter
kind: action
command: 'SA"AmpLink-Ch {c}">{i1}={v}<CR>'
params:
- name: c
type: integer
description: Channel number, 1-8
- name: i1
type: integer
description: "1=Level, 2=Mute (O/F/T), 3=Polarity (O/F/T)"
- name: v
type: string
description: Value per Index 1
- id: module_amplink_get
label: Get AmpLink Output Parameter
kind: query
command: 'GA"AmpLink-Ch {c}">{i1}<CR>'
params:
- name: c
type: integer
description: Channel number, 1-8
- name: i1
type: integer
description: Index 1
response: 'GA "AmpLink-Ch c">i1=v<CR>'
- id: module_dante_set
label: Set Dante I/O Module Parameter
kind: action
command: 'SA"Dante 1-{name}">{i1}={v}<CR>'
params:
- name: name
type: string
description: "Channel name (e.g. \"Input 1\" or \"Output 1\")"
- name: i1
type: integer
description: "1=Level, 2=Mute; polarity (Index 1=3) only on Dante Outputs"
- name: v
type: string
description: Value per Index 1
- id: module_dante_get
label: Get Dante I/O Module Parameter
kind: query
command: 'GA"Dante 1-{name}">{i1}<CR>'
params:
- name: name
type: string
description: Channel name
- name: i1
type: integer
description: Index 1
response: 'GA "Dante 1-name">i1=v<CR>'
- id: module_aec_set
label: Set AEC Module Parameter [EX Only]
kind: action
command: 'SA"AEC">{i1}>{i2}={v}<CR>'
params:
- name: i1
type: integer
description: Input number, 1-12
- name: i2
type: integer
description: "5=Internal Mute (O/F/T), 6=AEC Enable (O/F/T), 7=NLP Control (1=Light/2=Medium/3=Strong), 8=CN Enable (O/F/T), 9=NR Level (0-32dB), 10=Reference (read-only 1-4)"
- name: v
type: string
description: Value per Index 2
- id: module_aec_get
label: Get AEC Module Parameter [EX Only]
kind: query
command: 'GA"AEC">{i1}>{i2}<CR>'
params:
- name: i1
type: integer
description: Input number, 1-12
- name: i2
type: integer
description: Index 2
response: 'GA "AEC">i1>i2=v<CR>'
- id: module_agc_enhanced_set
label: Set Enhanced AGC Module Parameter [EX Only]
kind: action
command: 'SA"AGC {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "0=Output/Module, 1-32=Input"
- name: i2
type: integer
description: "Output: 1=Max Total Gain (0-60dB). Input: 1=Activity Threshold (-70 to 0dB), 2=Target Min (-40 to 24dB), 3=Target Max (-40 to 24dB), 4=Cut Rate, 5=Cut Range, 6=Cut Hold, 7=Boost Rate, 8=Boost Range, 9=Boost Hold, 10=Bypass (O/F/T)"
- name: v
type: string
description: Value per Index 2
- id: module_amm_gain_sharing_set
label: Set AMM Gain Sharing Module Parameter [EX/1U ESP Only]
kind: action
command: 'SA"AMM {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "0=Output/Module, 1-32=Input"
- name: i2
type: integer
description: "Output: 1=Gain, 3=Slope, 4=Attack, 5=Hold, 6=Decay, 7=Input RMS Avg, 8=Output RMS Avg, 9=Bypass All. Input: 1=Gain, 3=Priority (1-5), 4=Bypass, 5=Mute Group"
- name: v
type: string
description: Value per Index 2
- id: module_amm_gated_enhanced_set
label: Set Enhanced Gated AMM Module Parameter [EX Only]
kind: action
command: 'SA"AMM {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "0=Output/ATS, 1-32=Input"
- name: i2
type: integer
description: "Output/ATS: 1=Gain, 2=Mute, 3=NOM Enable, 4=NOM Limit, 5=Designated Mic On, 8=ATS Attack, 9=ATS Release, 10=ATS Margin, 11=ATS Source (I/A), 12=ATS Sensitivity, 13=ATS LPF, 14=ATS HPF, 15=ATS Slope, 16=ATS Filter Enable, 17=Direct Outputs. Input: 1=Priority, 2=Gain, 3=Mute, 4=Mute Group, 5=Manual Threshold, 6=Auto-Threshold, 7=Bypass, 8=Direct Output, 9=Low Pass, 10=High Pass, 11=RMS Averaging, 12=Ducker Depth, 13=Gate Depth, 14=Gate Attack, 15=Gate Hold, 16=Gate Decay, 17=NOM Gain"
- name: v
type: string
description: Value per Index 2
- id: module_compressor_limiter_set
label: Set Compressor/Limiter Module Parameter
kind: action
command: 'SA"CompLim {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=Detect Input (L/R/M/S), 2=Threshold (0 to -40 dBFS, 0.5 step), 3=Ratio (1-20, 0.1 step), 4=Attack (0.5-100ms, 0.5 step), 5=Release (1-1000ms, 1 step), 6=Bypass (O/F/T)"
- name: v
type: string
description: Value per Index 1
- id: module_conference_room_router_set
label: Set Conference Room Router Module Parameter [EX Only]
kind: action
command: 'SA"CRR {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "0=Configuration (read-only), 1=Room/Output, 2=Program/Far End, 3/4=Normal Matrix (On/Off, Level), 5/6=Advanced Matrix (On/Off, Level)"
- name: i2
type: integer
description: "Index 2 within group per source table; for matrices use (input,output) format"
- name: v
type: string
description: Value per Index 2
- id: module_crossover_set
label: Set Crossover Module Parameter
kind: action
command: 'SA"X-Over">{i1}>{i2}={v}<CR>'
params:
- name: i1
type: integer
description: "Section: 1=LOW, 2=HIGH (2-way); 1=LOW, 2=MID, 3=HIGH (3-way); 1=LOW, 2=LO MID, 3=HIMID, 4=HIGH (4-way)"
- name: i2
type: integer
description: "Per-section: 1=Type, 2=Frequency, 4=Polarity (O/F/T), 5=Mute (O/F/T)"
- name: v
type: string
description: Value per Index 2
- id: module_delay_set
label: Set Delay Module Parameter
kind: action
command: 'SA"Delay {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Tap number, 1-8
- name: i2
type: integer
description: "1=Delay time (EX: 0-48000 samples = 0-1s), 2=Bypass (O/F/T)"
- name: v
type: string
description: Value per Index 2
- id: module_ducker_set
label: Set Ducker Module Parameter
kind: action
command: 'SA"Ducker {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "2=Threshold (0 to -40 dBFS, 0.5 step), 3=Range (0 to -60 dBFS, 0.5 step), 4=Attack (0.5-100ms), 5=Hold (0-1000ms), 6=Decay (5-50000ms), 7=Bypass (O/F/T), 8=Engage Ducker Logic (O/F/T)"
- name: v
type: string
description: Value per Index 1
- id: module_gain_set
label: Set Gain Module Parameter
kind: action
command: 'SA"Gain {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=Level (-60.5 to +12.0dB, 0.5 step), 2=Mute (O/F/T)"
- name: v
type: string
description: Value per Index 1
- id: module_gate_set
label: Set Gate Module Parameter
kind: action
command: 'SA"Gate {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=Detector (L/R/M/S), 2=Threshold, 3=Range, 4=Attack, 5=Hold, 6=Decay, 7=Bypass (O/F/T)"
- name: v
type: string
description: Value per Index 1
- id: module_gpo_set
label: Set GPO Module Parameter
kind: action
command: 'SA"GP Out">{i1}={v}<CR>'
params:
- name: i1
type: integer
description: Output pin, 1-8
- name: v
type: string
description: "O=On, F=Off, T=Toggle"
- id: module_gpo_get
label: Get GPO Module State
kind: query
command: 'GA"GP Out">{i1}<CR>'
params:
- name: i1
type: integer
description: Output pin, 1-8
response: 'GA "GP Out">i1=v<CR>'
- id: module_geq_set
label: Set 1/3 Octave Graphic EQ Module Parameter
kind: action
command: 'SA"GEQ {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "Band 1-31 (20Hz-20kHz) or 32=Bypass All"
- name: v
type: string
description: "For bands 1-31: gain (-15.0 to +15.0dB, 0.1dB step); for 32: O/F/T"
- id: module_logic_input_set
label: Set Logic Input Module State [EX Only]
kind: action
command: 'SA"Logic Input {n}">{i1}>1={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Input pin, 1-16
- name: v
type: string
description: "O=On, F=Off, T=Toggle, P=Pulse (momentary)"
- id: module_logic_input_get
label: Get Logic Input Module State [EX Only]
kind: query
command: 'GA"System Mode">{i1}>1<CR>'
params:
- name: i1
type: integer
description: Input pin, 1-16
response: 'GA "System Mode">i1>1=v<CR>'
- id: module_logic_output_set
label: Set Logic Output Module State [EX Only]
kind: action
command: 'SA"Logic Output {n}">{i1}>1={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Output pin, 1-16
- name: v
type: string
description: "O=On, F=Off, T=Toggle, P=Pulse (momentary)"
- id: module_logic_output_get
label: Get Logic Output Module State [EX Only]
kind: query
command: 'GA"Status">{i1}>1<CR>'
params:
- name: i1
type: integer
description: Output pin, 1-16
response: 'GA "Status">i1>1=v<CR>'
- id: module_logic_processing_toggle_set
label: Set Logic Processing Toggle/FF Gate
kind: action
command: 'SA"Logic Block {n}">{i1}>{i2}>{i3}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=Inputs, 2=Outputs, 3+=Controllable Gates (enumerated in design order)"
- name: i2
type: integer
description: "0=Master, 1-16=Channel"
- name: i3
type: integer
description: "1=Toggle State (O/F/T), 2=Reset All Outputs OFF (Master only)"
- name: v
type: string
description: Value per Index 3
- id: module_logic_processing_pulse_set
label: Set Logic Processing Pulse Gate
kind: action
command: 'SA"Logic Block {n}">{i1}>{i2}>{i3}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Controllable Gate ID (3+)
- name: i2
type: integer
description: Channel, 1-16
- name: i3
type: integer
description: "1=On Time (100-6000ms, step 100), 2=Off Time (100-6000ms, step 100), 3=Single Pulse (O/F/T), 4=Force ON (O/F/T)"
- name: v
type: string
description: Value per Index 3
- id: module_logic_processing_debounce_set
label: Set Logic Processing Debounce Gate
kind: action
command: 'SA"Logic Block {n}">{i1}>{i2}>{i3}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Controllable Gate ID (3+)
- name: i2
type: integer
description: Channel, 1-16
- name: i3
type: integer
description: "1=On Delay (100-6000ms, step 100), 2=Off Delay (100-6000ms, step 100)"
- name: v
type: string
description: Value per Index 3
- id: module_matrix_mixer_set
label: Set Matrix Mixer Cross-point or Channel Mute
kind: action
command: 'SA"Matrix {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=On/Off (cross-point), 2=Level (cross-point), 3=Input channel mute, 4=Output channel mute"
- name: i2
type: integer
description: "For 1,2: Index2 = (Input#-1) x Size of Matrix + Output#; for 3,4: 1-32 (channel number)"
- name: v
type: string
description: "For 1: O/F/T; for 2: -60.5 to 0.0dB (0.5 step); for 3,4: O/F/T"
- id: module_parametric_eq_set
label: Set Parametric EQ Module Parameter
kind: action
command: 'SA"PEQ {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Band number, 1-16
- name: i2
type: integer
description: "1=Frequency (20-20000Hz), 2=Q (0.10-10.0), 3=Gain (-20 to +20dB), 4=Slope (0/-6/-12dB/oct), 5=Type (B/HS/LS/HC/LC/N), 6=Bypass"
- name: v
type: string
description: Value per Index 2
- id: module_peak_rms_limiter_set
label: Set Peak/RMS Limiter Module Parameter
kind: action
command: 'SA"PkRMSLim {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=Detect Input (L/R/M/S), 2=PK Threshold, 7=RMS Threshold, 8=RMS Attack (500-10000ms, 100 step), 9=RMS Release (500-10000ms, 100 step)"
- name: v
type: string
description: Value per Index 1
- id: module_router_set
label: Set Router Module Output
kind: action
command: 'SA"Router {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Output number, 1-32
- name: v
type: integer
description: Input number to route to output (0=Off, 1-32)
- id: module_router_get
label: Get Router Module Output
kind: query
command: 'GA"Router {n}">{i1}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: Output number, 1-32
response: 'GA "Router n">i1=v<CR>'
- id: module_signal_generator_sine_set
label: Set Sine Wave Signal Generator
kind: action
command: 'SA"Sine {n}">1>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i2
type: integer
description: "1=Frequency (20-20000Hz), 2=Gain (-60.5 to +12.0dB, 0.5 step), 3=Mute (O/F/T)"
- name: v
type: string
description: Value per Index 2
- id: module_signal_generator_noise_set
label: Set White/Pink Noise Signal Generator
kind: action
command: 'SA"Noise {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "2=White Noise, 3=Pink Noise"
- name: i2
type: integer
description: "1=Gain (-60.5 to +12.0dB, 0.5 step), 2=Mute (O/F/T)"
- name: v
type: string
description: Value per Index 2
- id: module_signal_generator_sweep_set
label: Set Sweep Signal Generator
kind: action
command: 'SA"Sweep {n}">4>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i2
type: integer
description: "1=Gain, 2=Slow/Fast (S/F), 3=Repeat (O/F), 4=Start/Stop (O/F)"
- name: v
type: string
description: Value per Index 2
- id: module_source_selector_set
label: Set Source Selector Module Input
kind: action
command: 'SA"Selector {n}">1={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: v
type: integer
description: Input number to select, 1-16
- id: module_source_selector_get
label: Get Source Selector Module Input
kind: query
command: 'GA"Selector {n}">1<CR>'
params:
- name: n
type: integer
description: Module instance number
response: 'GA "Selector n">1=v<CR>'
- id: module_speaker_peq_set
label: Set Speaker Parametric EQ Module Parameter
kind: action
command: 'SA"SPEQ {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "0=Band Pass/Delay/EQ Gain, 1-9=PEQ Band"
- name: i2
type: integer
description: "Index1=0: 3=EQ Gain, 4=Align Delay (0-480 samples), 5=Type (HP), 8=Frequency (HP), 9=LP Bypass, 10=HP Bypass, 11=Polarity. Index1=1-9: 1=Frequency, 2=Q, 3=Gain, 5=Type (B/HS/LS/N), 6=Bypass"
- name: v
type: string
description: Value per Index 2
- id: module_standard_mixer_set
label: Set Standard Mixer Module Parameter
kind: action
command: 'SA"StdMixer {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=Input, 2=Output, 3=Cross-point A (multi-output routing), 4=Cross-point B (direct)"
- name: i2
type: integer
description: "Per Index 1: input/output channel number (Index2=odd=Level, even=Mute) or (input,output) for cross-point B; for routing A use 1..M for input number (8-hex nibble bitmap for value)"
- name: v
type: string
description: Value per Index 2
- id: module_standard_room_combiner_set
label: Set Standard Room Combiner Module Parameter
kind: action
command: 'SA"StRC {n}">1>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i2
type: integer
description: "1=BGM Source (0=None, N=BGM N), 2=BGM Gain (-60.5 to +12.0dB), 3=BGM Mute (O/F/T), 4=Main Input Gain, 5=Main Input Mute, 6=Main Output Gain, 7=Main Output Mute"
- name: v
type: string
description: Value per Index 2
- id: module_tone_eq_set
label: Set Tone Control EQ Module Parameter
kind: action
command: 'SA"ToneEQ {n}">{i1}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "1=Low Gain (-15 to +15dB, 0.1 step), 2=Low Bypass, 3=Mid Gain, 4=Mid Bypass, 5=High Gain, 6=High Bypass"
- name: v
type: string
description: Value per Index 1
- id: module_smartbass_set
label: Set SmartBass Module Bypass [EX/1U ESP Only]
kind: action
command: 'SA"SmartBass {n}">1={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: v
type: string
description: "O=On, F=Off, T=Toggle"
- id: module_smartbass_get
label: Get SmartBass Module Bypass [EX/1U ESP Only]
kind: query
command: 'GA"SmartBass {n}">1<CR>'
params:
- name: n
type: integer
description: Module instance number
response: 'GA "SmartBass n">1=v<CR>'
- id: module_dynamic_eq_set
label: Set Dynamic EQ Module Bypass [EX/1U ESP Only]
kind: action
command: 'SA"Dynamic EQ {n}">1={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: v
type: string
description: "O=On, F=Off, T=Toggle"
- id: module_dynamic_eq_get
label: Get Dynamic EQ Module Bypass [EX/1U ESP Only]
kind: query
command: 'GA"Dynamic EQ {n}">1<CR>'
params:
- name: n
type: integer
description: Module instance number
response: 'GA "Dynamic EQ n">1=v<CR>'
- id: module_predictive_feedback_suppression_set
label: Set Predictive Feedback Suppression Module Parameter [EX/1U ESP Only]
kind: action
command: 'SA"PFS {n}">{i1}>{i2}={v}<CR>'
params:
- name: n
type: integer
description: Module instance number
- name: i1
type: integer
description: "0=Bypass, 1=Update, 2-17=Filter, 18=Static Filter, 19=System Gain, 20=GUI"
- name: i2
type: integer
description: "Per Index 1 group; see source table for parameter selection"
- name: v
type: string
description: Value per Index 2
- id: module_set_cross_device
label: Set Module Parameter on Different Device
kind: action
command: 'SA@"Device Name" "Module Name">{i1}>{i2}={v}<CR>'
params:
- name: device_name
type: string
description: Device label from ControlSpace Designer
- name: module_name
type: string
description: Module label
- name: i1
type: integer
description: Index 1
- name: i2
type: integer
description: Index 2
- name: v
type: string
description: Value
response: "<ACK>" # or NAK
- id: module_get_cross_device
label: Get Module Parameter on Different Device
kind: query
command: 'GA@"Device Name" "Module Name">{i1}>{i2}<CR>'
params:
- name: device_name
type: string
description: Device label
- name: module_name
type: string
description: Module label
- name: i1
type: integer
description: Index 1
- name: i2
type: integer
description: Index 2
response: 'GA "Module Name">i1>i2=v<CR>'
# ============================================================
# 9. Subscription Commands
# ============================================================
- id: query_subscription_support
label: Query Device Subscription Support
kind: query
command: "SUB<CR>"
params: []
response: "SUB yes<CR>"
- id: subscribe_data_change
label: Subscribe to Data Change
kind: action
command: 'SUB"{get_command}"<CR>'
params:
- name: get_command
type: string
description: "Text of a GET command from System, Device, or Module Commands (e.g. \"GG 1\", \"GV 1,1\", \"GA \\\"Gain 1\\\">2\")"
response: 'SUB "get_command",yes<CR>'
- id: unsubscribe_data_change
label: Unsubscribe from Data Change
kind: action
command: 'UNS"{get_command}"<CR>'
params:
- name: get_command
type: string
description: Text of a previously subscribed GET command
response: 'UNS "get_command",yes<CR>'
Feedbacks
- id: last_parameter_set
type: string
description: Last invoked Parameter Set number (hex, 0-FF; 0 = none)
source: response to GS (format: S n)
- id: group_master_level
type: number
description: Group master level in dB
source: response to GG (format: GG n,l)
- id: group_source_selector
type: integer
description: Source selector channel for group
source: response to GG
- id: group_master_mute
type: enum
values: [M, U]
description: Group master mute state
source: response to GN (format: GN n,m)
- id: room_combine_pair_state
type: enum
values: [J, S]
description: Joined/split state for room pair
source: response to GRC (format: GRC n,a,b,s)
- id: joined_rooms_list
type: string
description: Bracket notation of joined rooms in RC group
source: response to GRC n (format: GRC n,[a,b][c,d,f])
- id: parameter_set_list_selection
type: integer
description: Current Parameter Set List selection index
source: response to GA (format: GA "A">2=n)
- id: volume_level
type: number
description: Volume in dB (hex, 0h=-60dB to 90h=+12dB)
source: response to GV (format: GV s,c,l)
- id: mute_state
type: enum
values: [M, U, T]
description: Mute state
source: response to GM (format: GM s,c,m)
- id: signal_level_array
type: string
description: Hex array of channel signal levels
source: response to GL (format: GL s [1,...,N])
- id: ip_address
type: string
description: Device IP address
source: response to IP
- id: network_parameter
type: string
description: Network parameter value (DHCP/Static/subnet/gateway)
source: response to NP
- id: ack
type: string
description: "<ACK> (ASCII 0x06) for successful SA commands"
- id: nak
type: string
description: "<NAK> nn (ASCII 0x15) where nn is 01/02/03/99 error code"
- id: subscription_yes
type: string
description: Confirmation of subscription/unsubscription
source: response to SUB/UNS (format: ... ,yes)
Variables
- id: signal_generator_type
type: enum
values: [Pink Noise, White Noise, Tone, Sweep]
description: Signal generator type selection
- id: input_module_type
type: enum
values: [M, L]
description: Input module type (M=Mic, L=Line)
- id: peq_filter_type
type: enum
values: [B, HS, LS, HC, LC, N]
description: PEQ/SPEQ filter type (B=Band, HS=High Shelf, LS=Low Shelf, HC=High Cut, LC=Low Cut, N=Notch)
- id: room_combine_state
type: enum
values: [J, S]
description: Room combine state (J=Join, S=Split)
Events
# Unsolicited notifications occur when a module is prefixed with "#" in ControlSpace Designer
# (e.g. #Hall), or via subscription (SUB command).
# Notification format mirrors the GA response: GA "Module Name">i1>i2=Value<CR>
# Triggered by parameter changes from other devices (CC-16, CC-64, other networked devices).
# Note: a notification is NOT sent if the change is made via serial command.
# UNRESOLVED: complete enumeration of which modules and parameters trigger subscription notifications not provided in source
Macros
# The protocol itself has no built-in macro language.
# Parameter Sets (PS) and Groups configured in ControlSpace Designer software can be invoked
# via SS/SG/GG commands to act as multi-step sequences. The sequence content is configured externally.
# UNRESOLVED: no on-protocol macros documented in source
Safety
confirmation_required_for:
- set_ip_address # Note: changes do not take effect until after reboot
- set_network_parameter # Note: changes do not take effect until after reboot
- reset_network_defaults # Resets all network parameters to defaults
- reset_reboot_device # Resets device to power-on (flashed) settings; current settings lost
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings or interlock procedures for the EX-440C
Notes
- Source: Bose ControlSpace Serial Control Protocol v5.13. Covers entire ControlSpace family; this spec covers EX-440C-relevant commands only.
- Slot addressing for EX-440C (Table 1): 1=Out 1-4, 2=In 5-8, 3=In 1-4, 4=Out 5-8, 5=AmpLink Out 1-8, 7=Dante In/Out 1-16, 8=AEC In/Out 1-8. No Slot 6 (PSTN), 9 (VoIP), A (USB), or B (PSTN) on EX-440C.
- GL Indices for EX-440C: Out 1-4=1, In 5-8=2, In 1-4=3, Out 5-8=4, AmpLink=5, Dante=7, AEC Input=8,1, AEC ERL=8,2, AEC ERLE=8,3.
- EX-440C default network: DHCP (default gateway N/A).
- The third-party TCP control connection (port 10055) is closed when going on-line with ControlSpace Designer. Re-establish after design load.
- The EX-440C acts only as Server for serial-over-Ethernet; client must initiate connection.
- No authentication procedure is documented in the source.
- Serial settings (115200/8/N/1) can be changed via ControlSpace Designer software if needed.
- All commands and responses are ASCII terminated with
<CR>(0x0D). - No acknowledgement for System/Device 'Set' commands — follow with a 'Get' to confirm success.
- Module 'Set' commands return
<ACK>(0x06) on success or<NAK> nn(0x15) on failure. - Module labels must be unique within a device. Duplicates break SA/GA/MA addressing.
- To receive auto-notification on parameter change, prefix module name with "#" in Designer (e.g. #Hall).
- Maximum 32 simultaneous serial-over-Ethernet connections on EX-440C (shared with ControlSpace Remote).
- The following are out of scope for EX-440C and intentionally excluded: PowerMatch/PowerShare-only commands (SY/GY/SF/GF/CF/SR/GR/GH/CH/GC), MSA12X commands (ID/FU/ARRAY/IG/INPUT/STANDBY/LOAD/AUDIOLEVEL/STATUS/VERSION), Endpoint commands (ID/FU/IG/IS/PP/OG/RSL/RLO/WLO/RLI/EVNT/SASIP/QUERY/DEFAULTS/VERSION), PSTN module (EX-12AEC only), USB module (EX-1280C/EX-12AEC), VoIP module (EX-1280/EX-1280C/EX-12AEC), ESPLink module (ESP only), CobraNet/Surround modules (ESP-00 only).
Provenance
source_domains:
- assets.boseprofessional.com
source_urls:
- https://assets.boseprofessional.com/m/4998082f60dfee56/original/ControlSpace-Serial-Protocol-v5-13.pdf
- https://assets.boseprofessional.com/m/48b4f11e8a4922b9/original/ug_csp_control_serial.pdf
- https://assets.boseprofessional.com/m/5967be9a1795e9b9/original/tds_fse4_en.pdf
retrieved_at: 2026-05-14T21:11:44.404Z
last_checked_at: 2026-06-02T21:41:04.773Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T21:41:04.773Z
matched_actions: 82
action_count: 82
confidence: medium
summary: "All 82 spec actions matched verbatim in the source with correct shapes; transport values (115200 baud, port 10055, miniature Phoenix) confirmed; EX-440C-scoped coverage is complete. (5 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware version compatibility not stated in source; PowerMatch/PowerShare-only, MSA12X, Endpoint, PSTN, and ESP-00-specific commands are out of scope for EX-440C"
- "complete enumeration of which modules and parameters trigger subscription notifications not provided in source"
- "no on-protocol macros documented in source"
- "source contains no explicit safety warnings or interlock procedures for the EX-440C"
- "firmware version compatibility, default authentication procedure, complete per-model channel counts not stated in source"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0