Summary
RS-232/USB serial remote control for the Sonifex RM-2S10 Reference Monitor (10 AES input stereo unit). Uses ASCII command protocol at 19200,8,E,1 with XON/XOFF flow control; USB interface presents as virtual serial port with identical protocol. Optional RM-HD1 SDI expansion card adds EXT A/B banks for SDI de-embedded audio.
Transport
protocols:
- serial
serial:
baud_rate: 19200
data_bits: 8
parity: even
stop_bits: 1
flow_control: xon_xoff
auth:
type: none # inferred: no auth procedure in source
Traits
- queryable # inferred: SRQ, LCK, UID, VER, SER queries present
- routable # inferred: BSL bank selection, SS1/SS2 source selection commands
Actions
# CRITICAL - payload rule: every command copied verbatim from source.
# No power on/off commands documented for RM-2S10 in this protocol.
- id: select_bank
label: Select Input Bank
kind: action
command: "BSL:nn" # nn = 01 selects first bank, 02 selects second bank, etc
params:
- name: nn
type: hex_string
description: Bank number (01..n)
- id: download_firmware
label: Download Firmware Update
kind: action
command: "DWN:*"
params: []
notes: Then send .DWN file as supplied. Valid in bootloader mode.
- id: set_eq_coefficients
label: Set User-Variable EQ Coefficients
kind: action
command: "Faa:xxxxxxxxxxxxyyyyyyyyyyyyzzzzzzzzzzzz" # aa=01-05, x/y/z = 5-byte hex coefficient strings MSB-first
params:
- name: aa
type: hex_string
description: EQ band number (01-05)
- name: coefficient1
type: hex_string
description: 5-byte coefficient 1 (MSB first, upper nibble of MSB = 0)
- name: coefficient2
type: hex_string
description: 5-byte coefficient 2 (MSB first)
- name: coefficient3
type: hex_string
description: 5-byte coefficient 3 (MSB first)
- id: front_panel_lock
label: Front Panel Lock
kind: action
command: "FPL:x" # x=0 unlock; x=1 (or 1-F hex) lock. Not retained across power loss.
params:
- name: x
type: hex_string
description: 0 = unlock, 1..F = lock
- id: get_eq_coefficients
label: Get User-Variable EQ Coefficients
kind: query
command: "Gaa:" # aa = EQ band number (01-05)
params:
- name: aa
type: hex_string
description: EQ band number (01-05)
- id: aes_pll_lock_status
label: AES/EBU PLL Lock Status Request
kind: query
command: "LCK:" # RM-2S10 response: LCK:x+yyyyyyyyyy - x=lock of selected stereo source, y=lock of all 10 AES inputs
params: []
- id: set_modifier_dim
label: Audio Modifier - DIM
kind: action
command: "MOD:0,y" # y=0 off, y=1 (or 1-F hex) on
params:
- name: y
type: hex_string
description: 0 = off, 1..F = on
- id: set_modifier_cut_l
label: Audio Modifier - CUT L
kind: action
command: "MOD:1,y" # y=0 off, y=1 (or 1-F hex) on
params:
- name: y
type: hex_string
description: 0 = off, 1..F = on
- id: set_modifier_cut_r
label: Audio Modifier - CUT R
kind: action
command: "MOD:2,y" # y=0 off, y=1 (or 1-F hex) on
params:
- name: y
type: hex_string
description: 0 = off, 1..F = on
- id: set_modifier_mono
label: Audio Modifier - MONO
kind: action
command: "MOD:5,y" # y=0 off, y=1 (or 1-F hex) on
params:
- name: y
type: hex_string
description: 0 = off, 1..F = on
- id: set_modifier_phase_invert
label: Audio Modifier - PHASE INVERT
kind: action
command: "MOD:6,y" # y=0 off, y=1 (or 1-F hex) on
params:
- name: y
type: hex_string
description: 0 = off, 1..F = on
- id: set_modifier_m_plus_s
label: Audio Modifier - M+S
kind: action
command: "MOD:7,y" # y=0 off, y=1 (or 1-F hex) on
params:
- name: y
type: hex_string
description: 0 = off, 1..F = on
- id: set_technical_option
label: Set Technical Options
kind: action
command: "OPT:x,yy" # x = 1..F option number, yy = new value 00..FF. Stored in non-volatile memory.
params:
- name: x
type: hex_string
description: Option number (1..F)
- name: yy
type: hex_string
description: New option value (00..FF)
- id: opt_1_presence_detection
label: OPT:1 - Presence Detection (RM-2S10)
kind: action
command: "OPT:1,xx" # x=00 enable presence detectors (default); x=01..FF disable
params:
- name: xx
type: hex_string
description: 00 = presence detectors enabled (default); 01..FF = disabled
- id: opt_2_source_autodetect
label: OPT:2 - Source Autodetection (RM-2S10)
kind: action
command: "OPT:2,xx" # x=00 normal operation (default); x=01..FF enable source autoselection. UID reports single bank of 10 sources when autoselect on.
params:
- name: xx
type: hex_string
description: 00 = normal (default); 01..FF = source autoselection
- id: opt_3_gpio_lock_polarity
label: OPT:3 - GPIO Lock Output Logic
kind: action
command: "OPT:3,ab" # a=0 normal polarity (lock=low/conducting), a=1 inverted (lock=high/non-conducting); b=0 OR of LH/RH lock, b=1 AND of LH/RH lock
params:
- name: a
type: hex_string
description: 0 = normal polarity, 1 = inverted polarity
- name: b
type: hex_string
description: 0 = LH/RH OR, 1 = LH/RH AND
- id: serial_number_request
label: Serial Number Request
kind: query
command: "SER:"
params: []
- id: status_request
label: Status Request
kind: query
command: "SRQ:" # Returns SRQ:BxLyRz - x=bank, y=LH source, z=RH source
params: []
- id: set_left_source
label: Set Left-Hand Source
kind: action
command: "SS1:nn" # nn = source number starting with 01
params:
- name: nn
type: hex_string
description: Source number (starts at 01)
- id: set_right_source
label: Set Right-Hand Source
kind: action
command: "SS2:nn" # nn = source number starting with 01
params:
- name: nn
type: hex_string
description: Source number (starts at 01)
- id: unit_id_request
label: Unit ID Request
kind: query
command: "UID:*" # Returns UID:RM-2S10-xxxxxx; valid in bootloader mode
params: []
- id: firmware_version_request
label: Firmware Version Request
kind: query
command: "VER:*" # Returns VER:n.nn or BOOT:n.nn (bootloader). Valid in bootloader mode.
params: []
- id: select_sdi_bank_ext_a
label: Select SDI Bank EXT A (RM-HD1)
kind: action
command: "BSL:" # Selects bank mapping to EXT A (SDI groups 1 & 2 on RM-2S10 with RM-HD1)
params: []
notes: Bank label "EXT A" is provided to the unit via SCi/config; serial protocol uses numeric bank index via BSL:nn.
- id: select_sdi_bank_ext_b
label: Select SDI Bank EXT B (RM-HD1)
kind: action
command: "BSL:" # Selects bank mapping to EXT B (SDI groups 3 & 4 on RM-2S10 with RM-HD1)
params: []
notes: Bank label "EXT B" is provided to the unit via SCi/config; serial protocol uses numeric bank index via BSL:nn.
Feedbacks
- id: ack
type: string
description: Generic acknowledgement returned for all set commands - literal "ACK:"
- id: err_command_not_found
type: string
description: "ERR:01 - Command Not Found"
- id: err_missing_parameter
type: string
description: "ERR:02 - Missing Parameter"
- id: err_parameter_out_of_range
type: string
description: "ERR:04 - Parameter out of range"
- id: err_checksum
type: string
description: "ERR:08 - Checksum Error during reprogramming"
- id: lck_response_rm_2s10
type: string
description: "LCK:x+yyyyyyyyyy - x = lock status of selected stereo source, yyyyyyyyyy = lock status of all ten AES inputs"
- id: welcome_string
type: string
description: 'Power-up banner: "Initialising Sonifex Reference Monitor…done"'
Variables
# User-variable EQ coefficients - set via Faa: / retrieved via Gaa:
# 5 bands (01-05), each band = 3 coefficients of 5 hex bytes MSB-first (S3.24 format)
# Settable per band as a triple of parametric EQ coefficients (F centre Hz, BW octaves, G linear gain/peak).
# No discrete variable entry - coefficients passed as raw hex strings per Actions.
# UNRESOLVED: no higher-level typed "set EQ frequency / gain / BW" variable exposed; values
# must be pre-computed per the boost/cut formulas in the source (R, K, A, M1, M2, M3).
Events
# UNRESOLVED: source describes no unsolicited events beyond the power-up welcome string and
# per-request ACK/ERR responses. No notification push model documented.
Macros
# UNRESOLVED: no multi-step macro sequences explicitly documented in source.
# BSL: / SS1: / SS2: sequences for SDI audio selection are user-assembled.
Safety
confirmation_required_for:
- download_firmware # UNRESOLVED: source recommends SCi; for direct DWN:* user must ensure uninterrupted connection or unit enters protected Bootloader mode
interlocks: []
# UNRESOLVED: GPIO alarms exist (audio underlevel, audio overlevel, sustained phase error) but
# alarm behaviour over the serial protocol is not separately commanded here - physical inputs
# only (Alarm Reset, MUTE, DIM, Speaker Mute on 15-way D-type).
# GPIO outputs rated 50mA / 30V per source; DO NOT exceed.
# Do not interrupt serial connection or mains power during firmware update.
# DIP SW12 Block 1 = ON forces Bootloader; restore to OFF after recovery update.
Notes
- Protocol is shared across RM-2S4, RM-2S10, RM-4C8 hosts; some responses (LCK format, UID string) vary by model. Documented above is RM-2S10 behaviour.
- All commands are case-insensitive; all parameters in hex.
- Commands terminated with CR (LF ignored if sent). Responses CR+LF terminated.
- After power up, welcome string "Initialising Sonifex Reference Monitor…done" is sent.
- Further commands sent before the first command is ACKed are ignored.
- USB port presents as a virtual serial port with identical data format (19200,8,E,1) and command protocol.
- OPT settings are non-volatile; FPL (front panel lock) is NOT retained across power loss.
- For firmware update via terminal program, set Line Delay to ~20ms.
- RM-HD1 expansion: EXT A = SDI groups 1 & 2, EXT B = SDI groups 3 & 4; channel pair mapping per source table.
- RM-HD1 audio delay: ~297.9 ms max; controlled via SCi or by holding DIM button ~2 s; must be enabled in SCi system screen first.
Provenance
source_domains:
- sonifex.co.uk
source_urls:
- https://sonifex.co.uk/wp-content/uploads/products/RM-2S10/reference_monitor_hb.pdf
- https://sonifex.co.uk/product/rm-2s10/
retrieved_at: 2026-07-01T14:29:36.229Z
last_checked_at: 2026-08-05T08:44:15.066Z
Verification Summary
verdict: verified
checked_at: 2026-08-05T08:44:15.066Z
matched_actions: 24
action_count: 24
confidence: medium
summary: "All 24 spec actions map to wire-literal tokens in the source command table; transport params verbatim; SDI EXT A/B banks represented via BSL:nn with RM-HD1 table. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "device-level power/voltage/current ratings; GPIO output rating (50mA/30V) noted in source but not standardised for spec"
- "no higher-level typed \"set EQ frequency / gain / BW\" variable exposed; values"
- "source describes no unsolicited events beyond the power-up welcome string and"
- "no multi-step macro sequences explicitly documented in source."
- "source recommends SCi; for direct DWN:* user must ensure uninterrupted connection or unit enters protected Bootloader mode"
- "GPIO alarms exist (audio underlevel, audio overlevel, sustained phase error) but"
- "GPIO electrical limit exact value is 50mA / 30V open-collector; treat as warning only, do not re-expose as control value."
- "no power-on/power-off commands documented in this serial protocol; rely on front panel or mains."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0