Summary
The Sonifex S1 is a broadcast mixing desk controllable over an RS-232 serial link, either via the Sonifex SCi configuration software or a text-based terminal. This spec covers the S1's ASCII serial command protocol (configure commands, read/status queries, and firmware upload commands) as documented in Handbook Rev 1.05 (July 2020), section 8.
Transport
protocols:
- serial
serial:
baud_rate: 19200 # default; source: "will automatically revert to 19200 when the desk is reset or turned on"
data_bits: 8 # source: "19200,e,8,1"
parity: even # source: "19200,e,8,1" (e = even)
stop_bits: 1 # source: "19200,e,8,1"
flow_control: xon_xoff # source: "with XON/XOFF flow control"
auth:
type: none # inferred: no auth/login procedure in source
# Note: configurable baud rates per source: 9600, 19200, 38400, 57600, 115200
# Command framing: commands terminated by CR (LF ignored); responses CR+LF terminated
Traits
- queryable # inferred: many read/status queries (CMD:a? form) documented
- levelable # inferred: intensity/frequency set controls (MTR, COL, OPS)
- routable # inferred: channel select, monitor select, remote routing commands (CHS, MON, RMA/RMB, CON)
Actions
- id: configure_auto_cue_pfl_buttons
label: Configure Auto CUE/PFL Buttons
kind: action
command: "ACP:a,b,c"
params:
- name: a
type: string
description: "Channel/scope: 1=Guest CUE/PFL, 2=Monitor CUE/PFL, 3=Presenter CUE/PFL, 4=Reserved, 5=Split CUE/PFL, B=Button Control"
- name: b
type: integer
description: "1=on, 0=off (2=ignore/no change)"
- name: c
type: integer
description: "Lock Out Button: 1=Lock out, 0=Normal Operation"
- id: read_auto_cue_pfl_button_status
label: Read Auto CUE/PFL Button Status
kind: query
command: "ACP:a?"
params:
- name: a
type: string
description: "Channel number (see ACP scope)"
- id: configure_auxiliary_buttons
label: Configure Auxiliary Buttons
kind: action
command: "AUX:a,b,c,d"
params:
- name: a
type: integer
description: "Aux channel: 1=Ch1, 2=Ch2"
- name: b
type: integer
description: "Button Control: 1=on, 0=off"
- name: c
type: integer
description: "Lock Out Button: 1=Lock out, 0=Normal Operation"
- name: d
type: integer
description: "Lock Btn if set to Post when Fader is Up: 1=Lock, 0=Normal Operation"
- id: read_auxiliary_button_status
label: Read Auxiliary Button Status
kind: query
command: "AUX:a?"
params:
- name: a
type: integer
description: "Aux channel number"
- id: set_baud_rate
label: Set Baud Rate
kind: action
command: "Bnn:"
params:
- name: nn
type: integer
description: "Baud rate code: 11=115200, 57=57600, 38=38400, 19=19200, 96=9600"
- id: read_base_firmware_version
label: Base Firmware Version
kind: query
command: "BSV:"
params: []
- id: configure_channel_select_buttons
label: Configure Channel Select Buttons
kind: action
command: "CHS:a,b,c"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Button Control (Ch 1,2,5-10: 2=No Change,1=Input2,0=Input1; Ch 3,4: 2=Input3,1=Input2,0=Input1)"
- name: c
type: integer
description: "Lock Out Button (Ch 1,2,5-10: 1=Lock out,0=Normal; Ch 3,4: 3=Disable Stereo Line,2=Disable Mono Line,1=Lock out,0=Normal)"
- id: read_channel_select_button_status
label: Read Channel Select Button Status
kind: query
command: "CHS:a?"
params:
- name: a
type: string
description: "Channel number"
- id: update_intensity
label: Update LED Colour Intensity
kind: action
command: "COL:a,b,c,d,e"
params:
- name: a
type: string
description: "A=Red"
- name: b
type: string
description: "B=Green"
- name: c
type: string
description: "C=Green/Orange"
- name: d
type: string
description: "D=Red/Orange"
- name: e
type: string
description: "E=3MM RED LEDs (hex values 0-f per colour)"
- id: read_colour_values
label: Read Colour Values
kind: query
command: "COL:?"
params: []
- id: configure_on_buttons
label: Configure ON Buttons
kind: action
command: "CON:a,b,c,d,e,f,g"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Input 1 ON Control: 1=on, 0=off"
- name: c
type: integer
description: "Input 2 ON Control: 1=on, 0=off"
- name: d
type: integer
description: "Mode for Input 1: 0=ON/OFF, 1=ON/REPEAT/OFF"
- name: e
type: integer
description: "Mode for Input 2: 0=ON/OFF, 1=ON/REPEAT/OFF"
- name: f
type: integer
description: "Lock Button: 0=Normal Operation, 1=Button Locked"
- name: g
type: integer
description: "Force Fader Up: 1=Fader Forced Up, 0=Normal Operation"
- id: read_on_button_status
label: Read ON Button Status
kind: query
command: "CON:a?"
params:
- name: a
type: string
description: "Channel number"
- id: configure_dim_mute_on_pfl
label: Configure DIM/MUTE on PFL
kind: action
command: "DIM:a"
params:
- name: a
type: integer
description: "1=Dim Monitors on PFL, 0=Mute Monitors on PFL"
- id: read_dim_mute_on_pfl_status
label: Read DIM/MUTE on PFL Status
kind: query
command: "DIM:?"
params: []
- id: read_digital_input_status
label: Read Digital Input Status
kind: query
command: "DIS:?"
params: []
- id: upload_sub_processor_firmware
label: Upload Sub Processor Firmware
kind: action
command: "DST:"
params: []
# UNRESOLVED: response not documented in source
- id: upload_processor_firmware
label: Upload Processor Firmware
kind: action
command: "DWN:"
params: []
# UNRESOLVED: response not documented in source
- id: save_configuration
label: Save Configuration (EEPROM write enable + autosave)
kind: action
command: "EEP:a,b"
params:
- name: a
type: integer
description: "Enable write: 1=write config to eeprom, 0=no write"
- name: b
type: integer
description: "Enable Auto Save Settings: 1=autosave enabled, 0=disabled"
- id: read_eeprom_status
label: Read EEPROM Status
kind: query
command: "EEP:?"
params: []
- id: configure_gpio
label: Configure GPIO
kind: action
command: "GPI:a,b"
params:
- name: a
type: integer
description: "GPIO Pin Number (1-5)"
- name: b
type: string
description: "Data"
- id: read_gpio_data
label: Read GPIO Data
kind: query
command: "GPI:?"
params: []
- id: configure_global_talkback_mode
label: Configure Global Talkback Mode
kind: action
command: "GTB:a,b,c"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Input 1 Global Talkback Enable: 1=on, 0=off"
- name: c
type: integer
description: "Input 2 Global Talkback Enable: 1=on, 0=off"
- id: read_global_talkback_mode_status
label: Read Global Talkback Mode Status
kind: query
command: "GTB:a?"
params:
- name: a
type: string
description: "Channel number"
- id: configure_control_room_mute
label: Configure Control Room Mute
kind: action
command: "MCH:a,b,c"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Input 1 Mute: 1=Enabled, 0=Disabled"
- name: c
type: integer
description: "Input 2 Mute: 1=Enabled, 0=Disabled"
- id: read_control_room_mute_status
label: Read Control Room Mute Status
kind: query
command: "MCH:a?"
params:
- name: a
type: string
description: "Channel number"
- id: configure_meter_follows_monitors
label: Configure Meter Follows Monitors
kind: action
command: "MFM:a,b"
params:
- name: a
type: integer
description: "Button Control: 1=on, 0=off"
- name: b
type: integer
description: "Lock Out Button: 1=Lock out, 0=Normal Operation"
- id: read_mfm_button_status
label: Read MFM Button Status
kind: query
command: "MFM:?"
params: []
- id: configure_monitor_selection_buttons
label: Configure Monitor Selection Buttons
kind: action
command: "MON:a,b,c,d"
params:
- name: a
type: integer
description: "Monitor selection: 1=PGM, 2=Aux1, 3=Aux2, 4=Ext1, 5=Ext2"
- name: b
type: integer
description: "Button Control: 1=on, 0=off"
- name: c
type: integer
description: "Lock Out Button: 1=Lock out, 0=Normal Operation"
- name: d
type: integer
description: "Interlock or Mix: 0=Mix, 1=Interlocking"
- id: read_monitor_selection_button_status
label: Read Monitor Selection Button Status
kind: query
command: "MON:a?"
params:
- name: a
type: integer
description: "Monitor selection number"
- id: configure_meter_mode
label: Configure Meter Mode
kind: action
command: "MTR:a,b"
params:
- name: a
type: integer
description: "Meter Mode: 2=No Change, 1=PPM, 0=VU"
- name: b
type: integer
description: "Intensity: 0=Disabled, 1-7=Levels, 8=No Change"
- id: read_meter_status
label: Read Meter Status
kind: query
command: "MTR:?"
params: []
- id: configure_digital_synchronisation
label: Configure Digital Synchronisation
kind: action
command: "OPM:a"
params:
- name: a
type: integer
description: "Mode: 0=Internal, 1=External, 2=External with fallback to internal"
- id: read_digital_sync_mode_status
label: Read Digital Sync Mode Status
kind: query
command: "OPM:?"
params: []
- id: configure_internal_sync_frequency
label: Configure Internal Operating Frequency
kind: action
command: "OPS:x"
params:
- name: x
type: integer
description: "Frequency: 0=32kHz, 1=44.1kHz, 2=48kHz, 3=Reserved, 4=64kHz, 5=88.2kHz, 6=96kHz (valid only when Digital sync=Internal; else Err:07)"
- id: read_internal_sync_frequency
label: Read Internal SYNC Frequency
kind: query
command: "OPS:?"
params: []
- id: configure_cue_pfl_buttons
label: Configure CUE/PFL Buttons
kind: action
command: "PFL:a,b,c,d,e"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Button Control: 1=on, 0=off"
- name: c
type: integer
description: "Auto Cancel PFL on Fader Up: 1=Auto Cancel, 0=Normal Operation"
- name: d
type: integer
description: "Talkback Disabled: 0=Disabled, 1=Normal Operation (inputs 5 & 6 only)"
- name: e
type: integer
description: "Lock Out Button: 1=Lock out, 0=Normal Operation"
- id: read_pfl_button_status
label: Read PFL Button Status
kind: query
command: "PFL:a?"
params:
- name: a
type: string
description: "Channel number"
- id: configure_input_1_remotes
label: Configure Input 1 Remotes
kind: action
command: "RMA:a,b,c,d,e,f"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Start Function: 1=Momentary, 0=Continuous"
- name: c
type: integer
description: "Stop Function: 1=Momentary, 0=Continuous"
- name: d
type: integer
description: "Mode: 0=Disabled, 1=Start ON&FaderUp, 2=Telco, 3=Start ON&FaderUp or CUE/PFL, 4=Telco w/ CUE/PFL, 5=No change"
- name: e
type: integer
description: "Tally Back: 0=Disabled, 1=Enabled"
- name: f
type: integer
description: "Automation Tally (End-of-Track ON Button Flash): 0=Disabled, 1=Enabled"
- id: read_input_a_remote_configuration
label: Read Input A Remote Configuration
kind: query
command: "RMA:a?"
params:
- name: a
type: string
description: "Channel number"
- id: configure_input_2_remotes
label: Configure Input 2 Remotes
kind: action
command: "RMB:a,b,c,d,e,f"
params:
- name: a
type: string
description: "Channel number"
- name: b
type: integer
description: "Start Function (see RMA)"
- name: c
type: integer
description: "Stop Function (see RMA)"
- name: d
type: integer
description: "Mode (see RMA)"
- name: e
type: integer
description: "Tally Back (see RMA)"
- name: f
type: integer
description: "Automation Tally (see RMA)"
- id: read_input_b_remote_configuration
label: Read Input B Remote Configuration
kind: query
command: "RMB:a?"
params:
- name: a
type: string
description: "Channel number"
- id: reset_mixer
label: Reset Mixer
kind: action
command: "RST:"
params: []
# UNRESOLVED: response not documented in source
- id: read_unit_serial_number
label: Unit Serial Number
kind: query
command: "SER:"
params: []
- id: factory_defaults_reboot
label: Set Factory Defaults and Reboot
kind: action
command: "SFD:"
params: []
# UNRESOLVED: response not documented in source
- id: status_request
label: Status Request
kind: query
command: "SRQ:?"
params: []
- id: tally_control
label: Tally Control
kind: action
command: "TAL:a,b,c,d,e"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Input 1 Tally Back: 1=Active, 0=Inactive"
- name: c
type: integer
description: "Input 2 Tally Back: 1=Active, 0=Inactive"
- name: d
type: integer
description: "Input 1 Auto Tally: 1=Active, 0=Inactive"
- name: e
type: integer
description: "Input 2 Auto Tally: 1=Active, 0=Inactive"
- id: read_tally_input_status
label: Read Tally Input Status
kind: query
command: "TAL:a?"
params:
- name: a
type: string
description: "Channel number"
- id: configure_talkback
label: Configure Talkback
kind: action
command: "TBK:a,b,c,d"
params:
- name: a
type: integer
description: "Button Control: 1=on, 0=off"
- name: b
type: integer
description: "Mix/Cut into Guest Headphones: 1=Cut, 0=Mix"
- name: c
type: integer
description: "Talkback Source: 1=Channel 1 Line, 0=Channel 1 Mic"
- name: d
type: integer
description: "Talkback Permanently Routed to TB connector: 1=Always Routed, 0=Only when T/B button pressed"
- id: read_talkback_status
label: Read Talkback Status
kind: query
command: "TBK:?"
params: []
- id: configure_timers
label: Configure Timers
kind: action
command: "TMR:a,b,c,d,e"
params:
- name: a
type: string
description: "Channel number: 1=Ch1 ... a=Ch10"
- name: b
type: integer
description: "Timer 1 on Input 1: 1=Enabled, 0=Disabled"
- name: c
type: integer
description: "Timer 2 on Input 1: 1=Enabled, 0=Disabled"
- name: d
type: integer
description: "Timer 1 on Input 2: 1=Enabled, 0=Disabled"
- name: e
type: integer
description: "Timer 2 on Input 2: 1=Enabled, 0=Disabled"
- id: read_channel_timer_settings
label: Read Channel Timer Settings
kind: query
command: "TMR:a?"
params:
- name: a
type: string
description: "Channel number"
- id: unit_identification
label: Unit Identification
kind: query
command: "UID:"
params: []
- id: update_eeprom_config
label: Update EEPROM with Current Configuration
kind: action
command: "UPD:"
params: []
# Response: "Please Wait…" then ACK:; Err:08 if write disabled (enable via EEP:1,2)
- id: firmware_version
label: Firmware Version
kind: query
command: "VER:"
params: []
# Response VER:x.xx-Sy.y (x.xx=output board fw, Sy.y=stereo board fw)
Feedbacks
- id: ack
type: literal
values: ["ACK:"] # generic success acknowledgement for configure commands
- id: auto_cue_pfl_status
type: structured
format: "ACP:a,b,c"
- id: auxiliary_button_status
type: structured
format: "AUX:a,b,c,d"
- id: base_firmware_version
type: string
format: "BSV:x"
- id: channel_select_status
type: structured
format: "CHS:a,b,c"
- id: colour_values
type: structured
format: "COL:a,b,c,d,e"
- id: on_button_status
type: structured
format: "CON:a,b,c,d,e,f,g,h,i" # incl. H=Fader Position, I=Channel Routed
- id: dim_mute_status
type: structured
format: "DIM:a,b"
- id: digital_input_status
type: structured
format: "DIS:a,b,c,d"
- id: eeprom_status
type: structured
format: "EEP:a,b,c"
- id: gpio_data
type: structured
format: "GPI:X,Y"
- id: global_talkback_status
type: structured
format: "GTB:a,b,c"
- id: control_room_mute_status
type: structured
format: "MCH:a,b,c"
- id: mfm_status
type: structured
format: "MFM:a,b"
- id: monitor_selection_status
type: structured
format: "MON:a,b,c,d"
- id: meter_status
type: structured
format: "MTR:a,b"
- id: digital_sync_mode_status
type: structured
format: "OPM:a,b"
- id: internal_sync_frequency
type: string
format: "OPS:x"
- id: pfl_button_status
type: structured
format: "PFL:a,b,c,d,e"
- id: input_a_remote_config
type: structured
format: "RMA:a,b,c,d,e,f,g,h"
- id: input_b_remote_config
type: structured
format: "RMB:a,b,c,d,e,f,g,h"
- id: unit_serial_number
type: string
format: "SER:x"
- id: status_request_data
type: raw
format: "SRQ:data"
# UNRESOLVED: SRQ detailed format ("not included" per source note for GPI/SRQ)
- id: tally_input_status
type: structured
format: "TAL:a,b,c,d,e;"
- id: talkback_status
type: structured
format: "TBK:a,b,c,d"
- id: channel_timer_settings
type: structured
format: "TMR:a,b,c,d,e"
- id: unit_identification
type: literal
values: ["UID:S1-MIXER"]
- id: firmware_version_string
type: string
format: "VER:x.xx-Sy.y"
- id: error
type: enum
description: "Error responses"
values:
- "Err:01" # Command Not Found
- "Err:02" # Missing Parameter
- "Err:04" # Parameter out of Range
- "Err:06" # Serial Number Write Error
- "Err:07" # Command Not Valid in current mode
- "Err:08" # EEPROM write is disabled
- "Err:09" # TWI / Checksum Error
Variables
# UNRESOLVED: no continuously variable set-points documented as standalone variables;
# all settable parameters are carried as discrete action params above.
Events
- id: welcome_string
description: "Sent after power up"
payload: "Initialising S1 Mixing Desk… done"
unsolicited: true
- id: please_wait
description: "Sent during EEPROM update (UPD:)"
payload: "Please Wait…"
unsolicited: true
Macros
# UNRESOLVED: no multi-step sequences documented in source
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings or interlock procedures for
# serial control. Factory reset (SFD: / physical 3-button hold) and reset (RST:) cause
# reboots but no warning text is present in this excerpt.
Notes
- Command framing: commands terminated by CR; optional LF ignored. Responses CR+LF terminated. All parameters are hex; commands are case-insensitive.
- On/off style options (1/0) also accept value
2meaning "ignore operation / no change". ||in source tables marks a valid short-form command termination point.- Configurable baud rates: 9600, 19200, 38400, 57600, 115200 — desk auto-reverts to 19200 on reset/power-on. Changing the baud rate via
Bnn:is acknowledged at the OLD rate (ACK: (at old rate)). - Physical connectors: 9-pin D socket carries RS-232 (also external inputs, aux outs, talkback); 25-pin plug for remotes; 15-pin socket for meter bridge.
SCisoftware support for S1 starts at version 1.110.- Channels: 1-10. Channels 1-5 on Input 1 have no stop remotes (C param still required, ignored).
- Channel 9 & 10 have SPDIF/Optical digital input selection reported in
DIS:?.
## Provenance
```yaml
source_domains:
- ad56550c.delivery.rocketcdn.me
source_urls:
- https://ad56550c.delivery.rocketcdn.me/wp-content/uploads/products/S1/s1_hb.pdf
retrieved_at: 2026-06-30T23:36:47.348Z
last_checked_at: 2026-07-07T12:41:19.940Z
```
## Verification Summary
```yaml
verdict: verified
checked_at: 2026-07-07T12:41:19.940Z
matched_actions: 54
action_count: 54
confidence: medium
summary: "All 54 spec actions matched verbatim; transport parameters verified; complete bidirectional coverage. (9 unresolved item(s) noted in Known Gaps.)"
```
## Known Gaps
```yaml
- "GPI/SRQ command details (\"not included\" per source). Voltage/power specs not in excerpt."
- "response not documented in source"
- "SRQ detailed format (\"not included\" per source note for GPI/SRQ)"
- "no continuously variable set-points documented as standalone variables;"
- "no multi-step sequences documented in source"
- "source contains no explicit safety warnings or interlock procedures for"
- "detailed GPI/SRQ protocol \"not included\" in this excerpt."
- "voltage/current/power specs not present in this excerpt."
- "response payloads for DST:, DWN:, RST:, SFD: not documented."
```
---
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0