Summary

Sennheiser SpeechLine Digital Wireless (SLDW) is a wireless microphone system comprising rack receivers, multi-channel receivers, and charging stations. Control uses the Sennheiser Sound Control Protocol (SSC), a JSON-over-UDP protocol with OSC-inspired addressing. UDP port 45 is the default; clients should discover the server port using DNS-SD. This spec covers the SL Rack Receiver DW, SL MCR 2/4 DW multi-channel receivers, and CHG 2N/4N chargers.

Transport

protocols:
  - udp
addressing:
  port: 45
  discovery:
    method: dns_sd
    service_type: _ssc._udp
auth:
  type: UNRESOLVED  # source does not establish whether authentication is required

Traits

traits:
  - powerable      # device/standby, device/reset, device/restart, mates/tx1/power_down
  - queryable      # null-argument getter pattern for all properties
  - levelable      # audio gain_db, brightness, LED brightness
  - subscribable   # osc/state/subscribe with configurable lifetime

Actions

# ── OSC Meta ──

- id: osc_version_query
  label: Query SSC Version
  kind: action
  address: /osc/version
  params: []
  description: Reports SSC protocol version implemented by the server.
  example_tx: '{"osc":{"version":null}}'
  example_rx: '{"osc":{"version":"1.0"}}'

- id: interface_version_query
  label: Query Interface Version
  kind: action
  address: /interface/version
  params: []
  description: Reports SSC interface version.
  example_tx: '{"interface":{"version":null}}'
  example_rx: '{"interface":{"version":"1.2"}}'

- id: osc_schema_query
  label: Query Address Schema
  kind: action
  address: /osc/schema
  params:
    - name: path
      type: string
      description: Address path to query schema for (null for root).
  description: Query available address tree on the server.
  example_tx: '{"osc":{"schema":null}}'

- id: osc_limits_query
  label: Query Parameter Limits
  kind: action
  address: /osc/limits
  params:
    - name: address_tree
      type: array
      description: Array of address trees with null values at leaf positions to query.
  description: Query accepted value ranges for method parameters.
  example_tx: '{"osc":{"limits":[{"brightness":null}]}}'

- id: osc_xid
  label: Echo Transaction ID
  kind: action
  address: /osc/xid
  params:
    - name: xid
      type: number
      description: Arbitrary transaction ID echoed back by server.
  description: Reflected back in reply; may be bundled with other method calls.
  example_tx: '{"osc":{"xid":1234567890},"brightness":null}'

- id: osc_feature_subscription_query
  label: Query Subscription Support
  kind: action
  address: /osc/feature/subscription
  params: []
  description: Returns whether the server supports SSC subscriptions.

- id: osc_feature_pattern_query
  label: Query Pattern Matching Support
  kind: action
  address: /osc/feature/pattern
  params: []
  description: Returns pattern matching characters supported (e.g. "*?") or false.

- id: osc_feature_baseaddr_query
  label: Query Base Address Support
  kind: action
  address: /osc/feature/baseaddr
  params: []
  description: Returns whether the server supports base address shortening.

- id: osc_feature_timetag_query
  label: Query Timetag Support
  kind: action
  address: /osc/feature/timetag
  params: []
  description: Returns whether the server supports timed method execution.

- id: osc_state_close
  label: Close Connection
  kind: action
  address: /osc/state/close
  params:
    - name: close
      type: boolean
      description: Must be true.
  description: Server closes connection immediately after reply.
  example_tx: '{"osc":{"state":{"close":true}}}'

- id: osc_state_prettyprint_set
  label: Set Pretty Print
  kind: action
  address: /osc/state/prettyprint
  params:
    - name: enabled
      type: boolean
      description: true for formatted output, false for compact.
  description: Select formatting style for all SSC reply messages.

- id: osc_ping
  label: Ping Server
  kind: action
  address: /osc/ping
  params: []
  description: Keep-alive ping (MCR DW only).
  example_tx: '{"osc":{"ping":null}}'

# ── Subscriptions ──

- id: osc_state_subscribe
  label: Subscribe to State Changes
  kind: action
  address: /osc/state/subscribe
  params:
    - name: address_tree
      type: array
      description: Array of address trees with null values at subscribe targets.
    - name: lifetime
      type: number
      description: Subscription lifetime in seconds. Default 10.
    - name: count
      type: number
      description: Max notifications before auto-terminate. Default 1000.
  description: Subscribe to value changes. Server sends initial value then notifies on changes. Terminates with error 310.
  example_tx: '{"osc":{"state":{"subscribe":[{"#":{"lifetime":2000},"brightness":null}]}}}'

# ── Device Management (common) ──

- id: device_name_get_set
  label: Get/Set Device Name
  kind: action
  address: /device/name
  params:
    - name: name
      type: string
      description: "Device name (max 29 chars MCR, otherwise per-device). Pass null to query."
  description: User-settable persistent device name.
  example_tx: '{"device":{"name":null}}'

- id: device_group_get_set
  label: Get/Set Device Group
  kind: action
  address: /device/group
  params:
    - name: group
      type: string
      description: "Group name up to 8 chars; supported charset and naming rules apply. Pass null to query."
  description: Group name for device organization (Rack DW, CHG only).

- id: device_language_get_set
  label: Get/Set Language
  kind: action
  address: /device/language
  params:
    - name: language
      type: string
      description: "Locale code (e.g. en_GB). Pass null to query."
  description: Language for server-returned values. Default en_GB.

- id: device_location_get_set
  label: Get/Set Location
  kind: action
  address: /device/location
  params:
    - name: location
      type: string
      description: Location description string. Pass null to query.
  description: Device location name.

- id: device_identity_product_query
  label: Query Product ID
  kind: action
  address: /device/identity/product
  params: []
  description: Product identification string (e.g. SLDW, SLDW4CH, CHG2N).

- id: device_identity_version_query
  label: Query Firmware Version
  kind: action
  address: /device/identity/version
  params: []
  description: Device firmware version string.

- id: device_identity_serial_query
  label: Query Serial Number
  kind: action
  address: /device/identity/serial
  params: []
  description: Unique product serial number.

- id: device_identity_vendor_query
  label: Query Vendor Name
  kind: action
  address: /device/identity/vendor
  params: []
  description: Returns "Sennheiser electronic GmbH & Co. KG".

- id: device_state_query
  label: Query Device State
  kind: action
  address: /device/state
  params: []
  description: "Rack DW: 0=Normal, 1=Pairing, 2=Rcvr Update, 3=TX Update, 4=TX Update Confirm, 5=TX Update Failed. MCR DW: NORMAL, UPDATE, UPDATE_FAILED, ERROR. CHG: 0=Normal, 1=FWU."

- id: device_reset
  label: Soft Reset Device
  kind: action
  address: /device/reset
  params:
    - name: reset
      type: boolean
      description: Must be true.
  description: Soft reset for configuration changes to take effect.

- id: device_factory_reset
  label: Factory Reset
  kind: action
  address: /device/factory_reset
  params:
    - name: factory_reset
      type: boolean
      description: Must be true.
  description: Reconfigure device with factory defaults and restart.

# ── Device Management (MCR DW only) ──

- id: device_restart
  label: Restart Device
  kind: action
  address: /device/restart
  params:
    - name: restart
      type: boolean
      description: Must be true.
  description: Restart the SL MCR DW.

- id: device_standby
  label: Standby Device
  kind: action
  address: /device/standby
  params:
    - name: standby
      type: boolean
      description: Must be true.
  description: Put device in standby. Wake via WakeOnLAN.

- id: device_restore
  label: Restore Defaults
  kind: action
  address: /device/restore
  params:
    - name: option
      type: string
      description: "FACTORY_DEFAULTS or AUDIO_DEFAULTS."
  description: Restore factory or audio defaults.
  example_tx: '{"device":{"restore":"AUDIO_DEFAULTS"}}'

- id: device_update_enable
  label: Trigger Firmware Update
  kind: action
  address: /device/update/enable
  params:
    - name: enable
      type: boolean
      description: Must be true.
  description: Trigger device firmware update (MCR DW). The device must not already be updating, and an update package must already be uploaded.

- id: device_update_progress_query
  label: Query Update Progress
  kind: action
  address: /device/update/progress
  params: []
  description: Firmware update progress in percent (MCR DW, state=UPDATE).

- id: device_identification_visual
  label: Visual Identify Device
  kind: action
  address: /device/identification/visual
  params:
    - name: visual
      type: boolean
      description: true to trigger visual identification.
  description: Trigger visual identification on the MCR DW device; device should not be in UPDATE state.

- id: device_led_brightness_get_set
  label: Get/Set LED Brightness
  kind: action
  address: /device/led/brightness
  params:
    - name: brightness
      type: integer
      description: "Range 0..5. Pass null to query."
  description: LED brightness level (MCR DW only).

- id: device_dante_name_get_set
  label: Get/Set Dante Name
  kind: action
  address: /device/dante/name
  params:
    - name: name
      type: string
      description: "Dante network name, max 16 chars. Pass null to query."
  description: Dante network identification name (MCR DW only).

- id: device_position_get_set
  label: Get/Set Position
  kind: action
  address: /device/position
  params:
    - name: position
      type: string
      description: Position description. Pass null to query.
  description: Device position (MCR DW only).

- id: device_system_get_set
  label: Get/Set System Name
  kind: action
  address: /device/system
  params:
    - name: system
      type: string
      description: System name. Pass null to query.
  description: System name (MCR DW only).

- id: device_date_query
  label: Query Device Date
  kind: action
  address: /device/date
  params: []
  description: Current device time as formatted string (MCR DW only).

- id: device_time_get_set
  label: Get/Set Device Time
  kind: action
  address: /device/time
  params:
    - name: time
      type: number
      description: Seconds since 2000-01-01. Pass null to query.
  description: Device time (MCR DW only).

- id: device_timeprecision_query
  label: Query Time Precision
  kind: action
  address: /device/timeprecision
  params: []
  description: Always returns 1 (MCR DW only).

- id: device_warnings_query
  label: Query Device Warnings
  kind: action
  address: /device/warnings
  params: []
  description: "MCR: NONE, HW_FAILURE, MIXERDSP_FAILURE, SETTINGS_SAVE_FAILED, UPDATE_FAILED, SETTINGS_DEFAULTED. CHG: array of warning strings."

# ── Receiver Channel (Rack DW: /rx1, MCR DW: /rx1../rx4) ──

- id: rx_identify
  label: Identify Receiver Channel
  kind: action
  address: /rx1/identify
  params:
    - name: identify
      type: boolean
      description: true to start, false to stop.
  description: Start/stop identify mode on receiver channel (Rack DW); channel should not be in pairing or walk-test mode.

- id: rx_pair
  label: Pair Transmitter
  kind: action
  address: /rx1/pair
  params:
    - name: pair
      type: boolean
      description: true to start pairing, false to stop.
  description: Start/stop pairing mode (Rack DW). Channel should not be in walk-test mode.

- id: rx_pair_enable
  label: Enable Pairing
  kind: action
  address: /rx1/pair/enable
  params:
    - name: enable
      type: boolean
      description: true to start, false to stop.
  description: Start/stop pairing mode on channel (MCR DW); channel should not be in WALKTEST state or identify mode.

- id: rx_pair_progress_query
  label: Query Pairing Progress
  kind: action
  address: /rx1/pair/progress
  params: []
  description: Pairing countdown in seconds (120..0). MCR DW only, state=PAIRING.

- id: rx_rf_quality_query
  label: Query RF Quality
  kind: action
  address: /rx1/rf_quality
  params: []
  description: RF quality in percentage (0..100). Subscribe-able.

- id: rx_walktest
  label: Walk Test Mode
  kind: action
  address: /rx1/walktest
  params:
    - name: walktest
      type: boolean
      description: true to start, false to stop.
  description: Start/stop walk-test mode; MCR channel must be connected and not in pairing or identify mode.

- id: rx_mute_switch_active
  label: Enable/Disable Mute Switch
  kind: action
  address: /rx1/mute_switch_active
  params:
    - name: active
      type: boolean
      description: Enable or disable mute switch on transmitter.
  description: Control mute switch functionality (Rack DW).

- id: rx_mute_mode_get_set
  label: Get/Set Mute Mode
  kind: action
  address: /rx1/mute_mode
  params:
    - name: mode
      type: [integer, string]
      description: "Rack DW integer: 0=Deactivated, 1=Active, 2=PushToTalk, 3=PushToMute, 4=LocationBasedMute. MCR DW strings: OFF, ON, PUSH_TO_TALK, PUSH_TO_MUTE, ROOM_MUTE."
  description: Configure mute mode on connected transmitter.

- id: rx_mute_state_get_set
  label: Get/Set Mute State
  kind: action
  address: /rx1/mute_state
  params:
    - name: muted
      type: boolean
      description: true=muted, false=unmuted. Pass null to query.
  description: Mute state of connected transmitter.

- id: rx_sync_info_query
  label: Query Sync Info
  kind: action
  address: /rx1/sync_info
  params: []
  description: "Rack DW: 0=Unknown, 1=Master, 2=Follower, 3=Unsync'd Follower."

- id: rx_master_follower_sync_info_query
  label: Query Master/Follower Sync
  kind: action
  address: /rx1/master_follower/sync_info
  params: []
  description: "MCR DW: NOT_SYNCED, MASTER, FOLLOWER, UNSYNCED_FOLLOWER."

- id: rx_rfpi_query
  label: Query RFPI
  kind: action
  address: /rx1/rfpi
  params: []
  description: RFPI identifier string of the receiver channel. Subscribe-able.

- id: rx_last_paired_ipei_query
  label: Query Last Paired IPEI
  kind: action
  address: /rx1/last_paired_ipei
  params: []
  description: IPEI of last connected portable device.

- id: rx_autolock_get_set
  label: Get/Set Autolock
  kind: action
  address: /rx1/autolock
  params:
    - name: autolock
      type: boolean
      description: Pass null to query.
  description: Auto-lock state of the receiver channel (Rack DW).

- id: rx_warnings_query
  label: Query Receiver Warnings
  kind: action
  address: /rx1/warnings
  params: []
  description: "Warnings: empty string (none), HW Failure, Bad Link, No Link, No FW Image, TX OTA FWU failed."

- id: rx_update_confirmation
  label: Confirm/Reject TX Update
  kind: action
  address: /rx1/update/confirmation
  params:
    - name: confirm
      type: boolean
      description: true=approve, false=reject.
  description: Approve or reject transmitter firmware update. Channel must be in FWU_OTA_CONFIRMATION state. Rejecting removes TX from pairing list.

- id: rx_update_progress_query
  label: Query TX Update Progress
  kind: action
  address: /rx1/update/progress
  params: []
  description: Transmitter firmware update progress in percent (MCR DW, state=FWU_OTA).

- id: rx_state_query
  label: Query Channel State
  kind: action
  address: /rx1/state
  params: []
  description: "MCR DW: NOT_CONNECTED, CONNECTED, PAIRING, FWU_OTA, FWU_OTA_CONFIRMATION, TRANSMITTER_UPDATE_FAILED, WALKTEST."

- id: rx_identification_visual
  label: Visual Identify Channel
  kind: action
  address: /rx1/identification/visual
  params:
    - name: visual
      type: boolean
      description: true to trigger identification.
  description: Trigger visual identification on MCR DW channel; channel should not be in pairing or walk-test mode.

- id: rx_name_get_set
  label: Get/Set Channel Name
  kind: action
  address: /rx1/name
  params:
    - name: name
      type: string
      description: "Channel name up to 8 chars. Pass null to query."
  description: User-settable persistent channel name (MCR DW).

- id: rx_mates_query
  label: Query Active Transmitters
  kind: action
  address: /rx1/mates
  params: []
  description: Returns array of active transmitter paths (MCR DW). Subscribe-able.

- id: rx_progress_query
  label: Query Progress Bar
  kind: action
  address: /device/progress
  params: []
  description: Progress bar value 0..100 for pairing/update states (Rack DW, CHG).

# ── Transmitter / Mates (common across receivers) ──

- id: mates_active_query
  label: Query Active Mates
  kind: action
  address: /mates/active
  params: []
  description: "Rack DW: returns ['tx1'] or []. MCR DW: use /rx1/mates."

- id: mates_tx1_device_type_query
  label: Query Transmitter Type
  kind: action
  address: /mates/tx1/device_type
  params: []
  description: "Rack DW: 0=Handheld, 1=Bodypack, 2=Tablestand, 3=Boundary. MCR DW: HANDHELD, BODYPACK, TABLE-STAND, BOUNDARY."

- id: mates_tx1_acoustic_query
  label: Query Acoustic Input Type
  kind: action
  address: /mates/tx1/acoustic
  params: []
  description: "Returns capsule/input type: Mic, Line, MME865, MD42, MMD945, etc. INCOMPATIBLE or empty string."

- id: mates_tx1_agc_get_set
  label: Get/Set TX Audio Sensitivity
  kind: action
  address: /mates/tx1/agc
  params:
    - name: agc
      type: [integer, string]
      description: "Rack DW integer: 0=Auto, 1=0dB, 2=-6dB, 3=-12dB, 4=-18dB, 5=-24dB, 6=-30dB. MCR DW strings: AUTOMATIC, LEVEL1_0DB, LEVEL2_6DB, LEVEL3_12DB, LEVEL4_18DB, LEVEL5_24DB, LEVEL6_30DB."
  description: Transmitter audio sensitivity / gain control.

- id: mates_tx1_power_lock_get_set
  label: Get/Set Power Lock
  kind: action
  address: /mates/tx1/power_lock
  params:
    - name: locked
      type: boolean
      description: true to disable power button. Pass null to query.
  description: Enable/disable the power button on transmitter.

- id: mates_tx1_power_down
  label: Power Down Transmitter
  kind: action
  address: /mates/tx1/power_down
  params:
    - name: power_down
      type: boolean
      description: Must be true for Rack DW; MCR DW source documents null as a query argument.
  description: Remotely power down the transmitter. Link must be established.

- id: mates_tx1_pairing_lock_get_set
  label: Get/Set Pairing Lock
  kind: action
  address: /mates/tx1/pairing_lock
  params:
    - name: locked
      type: boolean
      description: true to disable pairing button. Pass null to query.
  description: Enable/disable the pairing button on transmitter (Rack DW).

- id: mates_tx1_pairing_button_lock_get_set
  label: Get/Set Pairing Button Lock
  kind: action
  address: /mates/tx1/pairing_button_lock
  params:
    - name: locked
      type: boolean
      description: true to disable. Pass null to query.
  description: Enable/disable pairing button (MCR DW).

- id: mates_tx1_auto_power_off_get_set
  label: Get/Set Auto Power Off
  kind: action
  address: /mates/tx1/auto_power_off
  params:
    - name: mode
      type: [integer, string]
      description: "Rack DW integer: 0=Off, 1=10min, 2=20min, 3=30min. MCR DW strings: OFF, 10MIN, 20MIN, 30MIN."
  description: Configure automatic power down timer on transmitter.

- id: mates_tx1_led_active_get_set
  label: Get/Set LED Active
  kind: action
  address: /mates/tx1/led_active
  params:
    - name: active
      type: boolean
      description: true=LED on, false=LED off. Pass null to query.
  description: Enable/disable LED on handheld or bodypack transmitter.

- id: mates_tx1_switch1_state_query
  label: Query Switch State
  kind: action
  address: /mates/tx1/switch1/state
  params: []
  description: Get the mute switch state on the transmitter.

- id: mates_tx1_switch1_label_query
  label: Query Switch Label
  kind: action
  address: /mates/tx1/switch1/label
  params: []
  description: Get the switch1 label (typically "Mute").

- id: mates_tx1_gooseneck_state_query
  label: Query Gooseneck State
  kind: action
  address: /mates/tx1/gooseneck_state
  params: []
  description: Returns true if gooseneck attached to tablestand. Pre-condition: device_type must be TABLE-STAND.

- id: mates_tx1_warnings_query
  label: Query Transmitter Warnings
  kind: action
  address: /mates/tx1/warnings
  params: []
  description: "Returns array: empty string (none) or Low Bat."

- id: mates_tx1_active_query
  label: Query Mate Active State
  kind: action
  address: /mates/tx1/active
  params: []
  description: Returns true if link established (MCR DW). Subscribe-able.

# ── Battery (mates/tx1) ──

- id: mates_tx1_bat_type_query
  label: Query Battery Type
  kind: action
  address: /mates/tx1/bat_type
  params: []
  description: "Rack DW: 0=Battery, 1=Rechargeable. MCR DW: BATTERY, RECHARGEABLE."

- id: mates_tx1_bat_state_query
  label: Query Battery State
  kind: action
  address: /mates/tx1/bat_state
  params: []
  description: Returns bat_gauge or bat_lifetime depending on battery type and lifetime availability.

- id: mates_tx1_bat_gauge_query
  label: Query Battery Gauge
  kind: action
  address: /mates/tx1/bat_gauge
  params: []
  description: Battery capacity percentage (0..100).

- id: mates_tx1_bat_lifetime_query
  label: Query Battery Lifetime
  kind: action
  address: /mates/tx1/bat_lifetime
  params: []
  description: Remaining battery lifetime in seconds (rechargeable only).

- id: mates_tx1_bat_bars_query
  label: Query Battery Bars
  kind: action
  address: /mates/tx1/bat_bars
  params: []
  description: Battery bars displayed on receiver homescreen.

- id: mates_tx1_bat_health_query
  label: Query Battery Health
  kind: action
  address: /mates/tx1/bat_health
  params: []
  description: Battery health percentage (rechargeable only).

- id: mates_tx1_bat_cycles_query
  label: Query Battery Cycles
  kind: action
  address: /mates/tx1/bat_cycles
  params: []
  description: Battery charging cycle count (rechargeable only).

- id: mates_tx1_bat_charging_query
  label: Query Charging Status
  kind: action
  address: /mates/tx1/bat_charging
  params: []
  description: Whether the battery is currently charging (tablestand/boundary with rechargeable).

# ── Audio (Rack DW) ──

- id: audio_out1_gain_db_get_set
  label: Get/Set Output Gain
  kind: action
  address: /audio/out1/gain_db
  params:
    - name: gain_index
      type: integer
      description: "Index 0..6 maps to -24, -18, -12, -6, 0, 6, 12 dB. Pass null to query."
  description: Analog output gain level (Rack DW).

- id: audio_out1_level_db_query
  label: Query Output Level
  kind: action
  address: /audio/out1/level_db
  params: []
  description: Actual output level in dB (-60..0). Subscribe-able.

- id: audio_out1_label_query
  label: Query Output Label
  kind: action
  address: /audio/out1/label
  params: []
  description: Output label string(s).

- id: audio_equalizer_preset_get_set
  label: Get/Set EQ Preset
  kind: action
  address: /audio/equalizer/preset
  params:
    - name: preset
      type: integer
      description: "Rack DW: 0=Off, 1=Female Speech, 2=Male Speech, 3=Media, 4=Custom. MCR DW uses string options."
  description: Equalizer preset selection (Rack DW).

- id: audio_low_cut_get_set
  label: Get/Set Low Cut
  kind: action
  address: /audio/low_cut
  params:
    - name: enabled
      type: boolean
      description: Pass null to query.
  description: Enable/disable low cut filter (Rack DW).

- id: audio_effects_reset
  label: Reset Audio Effects
  kind: action
  address: /audio/effects_reset
  params:
    - name: reset
      type: boolean
      description: Must be true.
  description: Restore audio effects to default settings (Rack DW).

# ── Audio (MCR DW) ──

- id: audio_rx_gain_get_set
  label: Get/Set Channel Gain
  kind: action
  address: /audio/rx1/gain
  params:
    - name: gain
      type: integer
      description: "Range -24..12, increment 6 dB. Pass null to query. MCR DW rejects invalid values with error 406."
  description: Channel gain in dB (MCR DW). Subscribe-able.

- id: audio_rx_equalizer_preset_get_set
  label: Get/Set Channel EQ Preset
  kind: action
  address: /audio/rx1/equalizer/preset
  params:
    - name: preset
      type: string
      description: "OFF, FEMALE_SPEECH, MALE_SPEECH, MEDIA, CUSTOM. Pass null to query."
  description: Equalizer preset for the channel (MCR DW). Subscribe-able.

- id: audio_rx_low_cut_get_set
  label: Get/Set Channel Low Cut
  kind: action
  address: /audio/rx1/low_cut
  params:
    - name: enabled
      type: boolean
      description: Pass null to query.
  description: Low cut filter for the channel (MCR DW).

- id: audio_rx_restore
  label: Restore Channel Audio Defaults
  kind: action
  address: /audio/rx1/restore
  params:
    - name: restore
      type: boolean
      description: Must be true.
  description: Restore default audio settings for the channel (MCR DW).

- id: audio_out1_mixer_gain_query
  label: Query Output Mixer Gain
  kind: action
  address: /audio/out1/mixer/gain
  params: []
  description: "Analog output mixer gain in dB, range -24..12, increment 6 (MCR DW). Read only, subscribe-able."

- id: audio_dante_mixer_gain_query
  label: Query Dante Mixer Gain
  kind: action
  address: /audio/dante/mixer/gain
  params: []
  description: "Dante output mixer gain in dB, range -24..12, increment 6 (MCR DW)."

- id: audio_out1_desc_query
  label: Query Output Description
  kind: action
  address: /audio/out1/desc
  params: []
  description: Description of audio output (MCR DW).

# ── Monitoring (MCR DW) ──

- id: m_mixer_level_query
  label: Query Mixer Level
  kind: action
  address: /m/mixer/level
  params: []
  description: Incoming audio level on mixed channels (-60..0).

- id: m_rx_level_query
  label: Query Channel Input Level
  kind: action
  address: /m/rx1/level
  params: []
  description: Incoming audio level / transmitter gain per channel (-60..0).

- id: m_rx_channel_level_query
  label: Query Channel Post-Gain Level
  kind: action
  address: /m/rx1/channel_level
  params: []
  description: Audio level after first gain stage (-60..0).

# ── Display ──

- id: brightness_get_set
  label: Get/Set Display Brightness
  kind: action
  address: /brightness
  params:
    - name: brightness
      type: integer
      description: "Range 0..100 percent. Pass null to query."
  description: OLED display brightness (Rack DW only).

# ── Charger (CHG 2N / CHG 4N) ──

- id: bays_active_query
  label: Query Active Bays
  kind: action
  address: /bays/active
  params: []
  description: Array of booleans indicating inserted devices per bay. Subscribe-able.

- id: bays_device_type_query
  label: Query Bay Device Types
  kind: action
  address: /bays/device_type
  params: []
  description: "Array: 0=empty, 1=pTXh (handheld), 2=pTXb (bodypack)."

- id: bays_serial_query
  label: Query Bay Serial Numbers
  kind: action
  address: /bays/serial
  params: []
  description: Array of serial number strings per bay. Subscribe-able.

- id: bays_version_query
  label: Query Bay Firmware Versions
  kind: action
  address: /bays/version
  params: []
  description: Array of firmware version strings per bay. Subscribe-able.

- id: bays_linkdate_query
  label: Query Bay Link Dates
  kind: action
  address: /bays/linkdate
  params: []
  description: Array of firmware link dates per bay. Subscribe-able.

- id: bays_charging_query
  label: Query Charging Status
  kind: action
  address: /bays/charging
  params: []
  description: Array of booleans: true=charging, false=empty or fully charged. Subscribe-able.

- id: bays_bat_gauge_query
  label: Query Bay Battery Gauge
  kind: action
  address: /bays/bat_gauge
  params: []
  description: Array of remaining capacity percentages per bay. Subscribe-able.

- id: bays_bat_timetofull_query
  label: Query Time to Full Charge
  kind: action
  address: /bays/bat_timetofull
  params: []
  description: Array of remaining minutes until fully charged per bay. Subscribe-able.

- id: bays_bat_bars_query
  label: Query Bay Battery Bars
  kind: action
  address: /bays/bat_bars
  params: []
  description: Array of battery bar counts per bay (0..6). Subscribe-able.

- id: bays_bat_health_query
  label: Query Bay Battery Health
  kind: action
  address: /bays/bat_health
  params: []
  description: Array of battery health percentages per bay. Subscribe-able.

- id: bays_bat_cycles_query
  label: Query Bay Battery Cycles
  kind: action
  address: /bays/bat_cycles
  params: []
  description: Array of charging cycle counts per bay. Subscribe-able.

- id: bays_identify
  label: Identify Bay Slots
  kind: action
  address: /bays/identify
  params:
    - name: slots
      type: array
      description: "Array of booleans (CHG 2N: 2, CHG 4N: 4). true=flash LEDs, false=off, null=no change. Held for 10s."
  description: Flash LEDs on selected charger bay slots.
  example_tx: '{"bays":{"identify":[true,false,false,false]}}'

- id: bays_state_query
  label: Query Bay States
  kind: action
  address: /bays/state
  params: []
  description: "Two arrays: state array (0=Normal, 1=Update, 2=Error) and error bitmap array (bit0=comm error, bit1=update error, bit2=overcurrent, bit3=5V missing)."

- id: device_ptxversion_sl_query
  label: Query Stored SL PTX Version
  kind: action
  address: /device/ptxversion_sl
  params: []
  description: Version of stored SpeechLine portable transmitter firmware image.

- id: device_ptxversion_d1_query
  label: Query Stored D1 PTX Version
  kind: action
  address: /device/ptxversion_d1
  params: []
  description: Version of stored ewd1 portable transmitter firmware image.

# ── Network Configuration (common) ──

- id: device_network_ether_interfaces_query
  label: Query Ethernet Interfaces
  kind: action
  address: /device/network/ether/interfaces
  params: []
  description: Array of Ethernet interface names.

- id: device_network_ether_macs_query
  label: Query MAC Addresses
  kind: action
  address: /device/network/ether/macs
  params: []
  description: Array of MAC address strings.

- id: device_network_ipv4_ipaddr_query
  label: Query IPv4 Addresses
  kind: action
  address: /device/network/ipv4/ipaddr
  params: []
  description: Array of current IPv4 addresses.

- id: device_network_ipv4_netmask_query
  label: Query IPv4 Netmasks
  kind: action
  address: /device/network/ipv4/netmask
  params: []
  description: Array of current IPv4 netmasks.

- id: device_network_ipv4_gateway_query
  label: Query IPv4 Gateways
  kind: action
  address: /device/network/ipv4/gateway
  params: []
  description: Array of IPv4 gateways.

- id: device_network_ipv4_auto_get_set
  label: Get/Set DHCP/ZeroConf
  kind: action
  address: /device/network/ipv4/auto
  params:
    - name: auto
      type: array
      description: Array of booleans per interface. Rack DW and CHG changes take effect after reset; MCR DW DHCP reactivation takes effect immediately when set to true, and manual settings are used immediately when set to false.
  description: Enable/disable automatic IPv4 configuration via DHCP and ZeroConf (Auto-IP).

- id: device_network_mdns_get_set
  label: Get/Set mDNS
  kind: action
  address: /device/network/mdns_responder
  params:
    - name: enabled
      type: boolean
      description: Pass null to query.
  description: Enable/disable mDNS responder (Rack DW and CHG). Change takes effect after restart.

- id: device_network_mdns_mcr_get_set
  label: Get/Set MCR mDNS
  kind: action
  address: /device/network/mdns
  params:
    - name: enabled
      type: boolean
      description: Pass null to query.
  description: Enable/disable mDNS responder (MCR DW). Change takes effect immediately.

- id: device_network_ipv4_interfaces_query
  label: Query IPv4 Interfaces
  kind: action
  address: /device/network/ipv4/interfaces
  params: []
  description: Read-only array relating to /device/network/ether/interfaces.

- id: device_network_ipv4_fixed_ipaddr_get_set
  label: Get/Set Stored IPv4 Addresses
  kind: action
  address: /device/network/ipv4/fixed_ipaddr
  params:
    - name: addresses
      type: array
      description: Array of stored IPv4 addresses in EEPROM, one per user-relevant Ethernet interface.
  description: Configure stored IPv4 addresses used when automatic IPv4 configuration is disabled (Rack DW and CHG).

- id: device_network_ipv4_fixed_netmask_get_set
  label: Get/Set Stored IPv4 Netmasks
  kind: action
  address: /device/network/ipv4/fixed_netmask
  params:
    - name: netmasks
      type: array
      description: Array of stored IPv4 netmasks in EEPROM, one per user-relevant Ethernet interface.
  description: Configure stored IPv4 netmasks (Rack DW and CHG).

- id: device_network_ipv4_fixed_gateway_get_set
  label: Get/Set Stored IPv4 Gateways
  kind: action
  address: /device/network/ipv4/fixed_gateway
  params:
    - name: gateways
      type: array
      description: Array of stored IPv4 gateways in EEPROM, one per user-relevant Ethernet interface.
  description: Configure stored IPv4 gateways (Rack DW and CHG).

- id: device_network_ipv4_manual_ipaddr_get_set
  label: Get/Set Manual IPv4 Addresses
  kind: action
  address: /device/network/ipv4/manual_ipaddr
  params:
    - name: addresses
      type: array
      description: Array of stored IPv4 addresses in EEPROM, one per user-relevant Ethernet interface.
  description: Configure manual IPv4 addresses (MCR DW).

- id: device_network_ipv4_manual_netmask_get_set
  label: Get/Set Manual IPv4 Netmasks
  kind: action
  address: /device/network/ipv4/manual_netmask
  params:
    - name: netmasks
      type: array
      description: Array of stored IPv4 netmasks in EEPROM, one per user-relevant Ethernet interface.
  description: Configure manual IPv4 netmasks (MCR DW).

- id: device_network_ipv4_manual_gateway_get_set
  label: Get/Set Manual IPv4 Gateways
  kind: action
  address: /device/network/ipv4/manual_gateway
  params:
    - name: gateways
      type: array
      description: Array of stored IPv4 gateways in EEPROM, one per user-relevant Ethernet interface.
  description: Configure manual IPv4 gateways (MCR DW).

- id: device_network_ipv6_interfaces_query
  label: Query IPv6 Interfaces
  kind: action
  address: /device/network/ipv6/interfaces
  params: []
  description: Read-only array relating to /device/network/ether/interfaces.

- id: device_network_ipv6_ipaddr_query
  label: Query IPv6 Addresses
  kind: action
  address: /device/network/ipv6/ipaddr
  params: []
  description: Read-only array of IPv6 addresses of user-relevant Ethernet interfaces.

- id: device_network_interface_mapping_get_set
  label: Get/Set Network Config
  kind: action
  address: /device/network/interface_mapping
  params:
    - name: config
      type: string
      description: "CONFIG1=Single cable, CONFIG2=Audio redundancy, CONFIG3=Split mode. Pass null to query."
  description: Network interface configuration (MCR DW). Triggers automatic reboot on change.

# ── Dante Network (MCR DW) ──

- id: audio_out2_identity_version_query
  label: Query Dante Interface Version
  kind: action
  address: /audio/out2/identity/version
  params: []
  description: Dante interface software version (MCR DW).

- id: audio_out2_network_ether_interfaces_query
  label: Query Dante Ethernet Interfaces
  kind: action
  address: /audio/out2/network/ether/interfaces
  params: []
  description: Read-only array of Dante interfaces.

- id: audio_out2_network_ipv4_interfaces_query
  label: Query Dante IPv4 Interfaces
  kind: action
  address: /audio/out2/network/ipv4/interfaces
  params: []
  description: Read-only array relating to /audio/out2/network/ether/interfaces.

- id: audio_out2_network_ether_macs_query
  label: Query Dante MAC Addresses
  kind: action
  address: /audio/out2/network/ether/macs
  params: []
  description: Read-only array of MAC addresses for Dante Ethernet interfaces.

- id: audio_out2_network_ipv4_auto_get_set
  label: Get/Set Dante DHCP/ZeroConf
  kind: action
  address: /audio/out2/network/ipv4/auto
  params:
    - name: auto
      type: array
      description: Array of booleans per Dante Ethernet interface. A write automatically restarts the device.
  description: Enable/disable automatic IPv4 configuration for Dante interfaces.

- id: audio_out2_network_ipv4_ipaddr_query
  label: Query Dante IPv4 Addresses
  kind: action
  address: /audio/out2/network/ipv4/ipaddr
  params: []
  description: Current IPv4 addresses of Dante interfaces (MCR DW).

- id: audio_out2_network_ipv4_netmask_query
  label: Query Dante IPv4 Netmasks
  kind: action
  address: /audio/out2/network/ipv4/netmask
  params: []
  description: Current IPv4 netmasks of Dante interfaces (MCR DW).

- id: audio_out2_network_ipv4_gateway_query
  label: Query Dante IPv4 Gateways
  kind: action
  address: /audio/out2/network/ipv4/gateway
  params: []
  description: Current IPv4 gateways of Dante interfaces (MCR DW).

- id: audio_out2_network_ipv4_manual_ipaddr_get_set
  label: Get/Set Dante Manual IPv4 Addresses
  kind: action
  address: /audio/out2/network/ipv4/manual_ipaddr
  params:
    - name: addresses
      type: array
      description: Array of stored IPv4 addresses for Dante interfaces; null array entries retain the existing value.
  description: Configure manual IPv4 addresses for Dante interfaces.

- id: audio_out2_network_ipv4_manual_netmask_get_set
  label: Get/Set Dante Manual IPv4 Netmasks
  kind: action
  address: /audio/out2/network/ipv4/manual_netmask
  params:
    - name: netmasks
      type: array
      description: Array of stored IPv4 netmasks for Dante interfaces; null array entries retain the existing value.
  description: Configure manual IPv4 netmasks for Dante interfaces.

- id: audio_out2_network_ipv4_manual_gateway_get_set
  label: Get/Set Dante Manual IPv4 Gateways
  kind: action
  address: /audio/out2/network/ipv4/manual_gateway
  params:
    - name: gateways
      type: array
      description: Array of stored IPv4 gateways for Dante interfaces; null array entries retain the existing value.
  description: Configure manual IPv4 gateways for Dante interfaces.

Feedbacks

# ── Device-level feedbacks ──

- id: device_state
  type: enum
  values:
    - name: Rack DW
      options: [Normal, Pairing, Receiver Update, Transmitter Update, TX Update Confirmation, TX Update Failed]
    - name: MCR DW
      options: [NORMAL, UPDATE, UPDATE_FAILED, ERROR]
    - name: CHG
      options: [Normal, FWU]
  description: Current operating state of the device.

- id: device_warnings
  type: enum
  description: Active device warnings. Content varies by device type.

- id: device_update_progress
  type: number
  min: 0
  max: 100
  description: Firmware update progress percentage.

# ── Receiver channel feedbacks ──

- id: rx_rf_quality
  type: number
  min: 0
  max: 100
  description: RF signal quality percentage.
  subscribeable: true

- id: rx_state
  type: enum
  values: [NOT_CONNECTED, CONNECTED, PAIRING, FWU_OTA, FWU_OTA_CONFIRMATION, TRANSMITTER_UPDATE_FAILED, WALKTEST]
  description: Receiver channel state (MCR DW).

- id: rx_warnings
  type: array
  description: Active receiver warnings (e.g. Bad Link, No Link, No FW Image).

- id: rx_pair_progress
  type: number
  min: 0
  max: 120
  description: Pairing countdown in seconds (MCR DW).

# ── Transmitter feedbacks ──

- id: tx_bat_gauge
  type: number
  min: 0
  max: 100
  description: Battery remaining capacity percentage.
  subscribeable: true

- id: tx_bat_lifetime
  type: number
  description: Remaining battery lifetime in seconds (rechargeable only).
  subscribeable: true

- id: tx_bat_health
  type: number
  min: 0
  max: 100
  description: Battery health percentage.

- id: tx_warnings
  type: array
  description: Transmitter warnings (e.g. Low Bat).

- id: tx_mute_state
  type: boolean
  description: Current mute state of the transmitter.

# ── Audio feedbacks ──

- id: audio_out1_level
  type: number
  min: -60
  max: 0
  description: Actual output level in dB (Rack DW).

- id: audio_rx1_gain
  type: number
  min: -24
  max: 12
  description: Channel gain in dB (MCR DW).

- id: m_mixer_level
  type: number
  min: -60
  max: 0
  description: Mixed audio input level (MCR DW).

- id: m_rx_level
  type: number
  min: -60
  max: 0
  description: Per-channel transmitter gain level (MCR DW).

# ── Charger feedbacks ──

- id: bays_active
  type: array
  description: Boolean array of which bays have devices inserted.
  subscribeable: true

- id: bays_charging
  type: array
  description: Boolean array of which bays are actively charging.
  subscribeable: true

- id: bays_bat_gauge
  type: array
  description: Battery capacity percentage per bay.
  subscribeable: true

- id: bays_state
  type: array
  description: "Two arrays: state (0=Normal, 1=Update, 2=Error) and error bitmap per bay."

- id: osc_error
  type: object
  description: Error response from server. Contains error codes (400, 404, 406, 454, etc.) mapped to failing addresses.

Variables

- id: brightness
  type: integer
  min: 0
  max: 100
  description: OLED display brightness percentage (Rack DW only).

- id: led_brightness
  type: integer
  min: 0
  max: 5
  description: LED brightness level (MCR DW only).

- id: audio_out1_gain_db
  type: integer
  options: [-24, -18, -12, -6, 0, 6, 12]
  description: Analog output gain in dB (Rack DW).

- id: audio_rx_gain
  type: integer
  min: -24
  max: 12
  step: 6
  description: Per-channel gain in dB (MCR DW).

- id: audio_out1_mixer_gain
  type: integer
  min: -24
  max: 12
  step: 6
  description: Analog output mixer gain in dB (MCR DW).

- id: audio_dante_mixer_gain
  type: integer
  min: -24
  max: 12
  step: 6
  description: Dante output mixer gain in dB (MCR DW).

- id: eq_preset
  type: enum
  options: [Off, Female Speech, Male Speech, Media, Custom]
  description: Equalizer preset selection.

- id: tx_agc
  type: enum
  options: [Automatic, 0 dB, -6 dB, -12 dB, -18 dB, -24 dB, -30 dB]
  description: Transmitter audio sensitivity.

- id: mute_mode
  type: enum
  options: [Deactivated, Active, Push To Talk, Push To Mute, Location Based Mute]
  description: Mute mode configuration.

- id: tx_auto_power_off
  type: enum
  options: [Off, 10min, 20min, 30min]
  description: Transmitter automatic power-off timer.

- id: subscription_lifetime
  type: number
  min: 1
  description: SSC subscription lifetime in seconds. Default 10, configurable per subscription.

Events

- id: subscription_notification
  description: Server pushes value changes for subscribed addresses during subscription lifetime.

- id: subscription_terminated
  description: Server sends error 310 when subscription lifetime or notification count expires.

- id: osc_error_event
  description: Server sends error response for faulty method calls (400, 404, 406, etc.).

Macros

# UNRESOLVED: no multi-step sequences explicitly described in source

Safety

confirmation_required_for: []
interlocks:
  - action: rx_pair
    precondition: Receiver must not be in walk-test mode.
  - action: rx_walktest
    precondition: Channel must be connected and not in pairing or identify mode.
  - action: rx_update_confirmation
    precondition: Channel must be in FWU_OTA_CONFIRMATION state. Rejecting removes TX from pairing list.
  - action: mates_tx1_gooseneck_state
    precondition: Transmitter type must be TABLE-STAND.
  - action: mates_tx1_bat_lifetime
    precondition: Link must be established with rechargeable battery transmitter.
# UNRESOLVED: no additional explicit safety interlocks or power sequencing warnings found in source

Notes

  • SSC protocol model: JSON messages over UDP. Each message is a single JSON object. Getter methods use null as the argument value. Servers may adapt out-of-range values; MCR DW documents error 406 for an invalid channel gain value.
  • Multi-channel addressing: For MCR DW devices, replace rx1/tx1 with the desired channel (rx1..rx4, tx1..tx4). The Rack DW uses only rx1/tx1.
  • Subscription lifecycle: Default lifetime is 10 seconds. Client must renew or set a longer lifetime. Up to 8 concurrent subscription clients supported. Subscriptions terminate on connection close or lifetime/count expiry (error 310).
  • DNS-SD discovery: Devices publish _ssc._udp service type. Service instance name matches /device/name. Clients should not rely on default port 45.
  • Error codes: Follow HTTP-style three-digit codes. Common errors: 400 (bad JSON), 404 (address not found), 406 (wrong type/read-only or invalid value), 454 (hidden address), 310 (subscription terminated). The source defines 401 for missing or invalid authentication tokens but does not establish authentication requirements for these devices.
  • Network config changes: IPv4 auto changes require reset on Rack DW and CHG; MCR DW uses manual settings immediately when automatic configuration is false and reactivates DHCP immediately when true. mDNS changes require restart on Rack DW and CHG, and take effect immediately on MCR DW. MCR interface mapping changes trigger an automatic reboot.
  • MCR DW channel conventions: rx1..rx2 for SL MCR 2 DW, rx1..rx4 for SL MCR 4 DW. Corresponding tx1..tx4 for paired transmitters.

Provenance

source_domains:
  - assets.sennheiser.com
source_urls:
  - "https://assets.sennheiser.com/download/assets/TI_1094_v4.3_Sennheiser_Sound_Control_Protocol_SL_DW_EN.pdf/b2a3c92ce7bb11f088db768ee8e97aea?attachment=true"
retrieved_at: 2026-05-07T06:17:53.500Z
last_checked_at: 2026-10-07T12:47:57.266Z

Verification Summary

verdict: verified
checked_at: 2026-10-07T12:47:57.266Z
matched_actions: 144
action_count: 144
confidence: medium
summary: "All 144 address-based actions have matching SSC methods in the source, and transport (UDP port 45, DNS-SD _ssc._udp) is supported. Only the Rack DW /device/update/confirmation is unmapped. (6 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- /device/update/confirmation
- "no multi-step sequences explicitly described in source"
- "no additional explicit safety interlocks or power sequencing warnings found in source"
- "SSC TCP support is not applicable to these SLDW devices; source documents UDP-only implementations"
- "Firmware version compatibility ranges not stated"
- "Max concurrent client connections for non-subscription operations not stated"
- "UDP message size limits not explicitly stated (error 450 exists for response too long)"

From the AI4AV catalog (https://ai4av.net) · ODbL-1.0