Summary
SW-P-02 is a router/switcher control protocol originally from Pro-Bel, later supported by Snell/Grass Valley. Supports both RS-485 (default 38400, 8N1, even parity) and TCP control. Covers crosspoint routing, tally queries, salvo switching, status monitoring, and protect functions for video routers of various sizes.
Transport
protocols:
- serial
- tcp
serial:
baud_rate: 38400
data_bits: 8
parity: even
stop_bits: 1
flow_control: null # UNRESOLVED: flow control not stated in source
addressing:
port: null # UNRESOLVED: TCP port not stated in source
auth:
type: null # UNRESOLVED: auth mechanism not described in source
Traits
- routable # CONNECT, EXTENDED_CONNECT, CONNECT_ON_GO commands present
- queryable # INTERROGATE, EXTENDED_INTERROGATE, STATUS_REQUEST present
Actions
- id: connect
label: Connect (Route)
kind: action
params:
- name: destination
type: integer
description: Destination output number (0-based or 1-based per implementation)
- name: source
type: integer
description: Source input number
- id: connect_on_go
label: Connect On Go (Salvo Prepare)
kind: action
params:
- name: destination
type: integer
description: Destination output number
- name: source
type: integer
description: Source input number
- id: go
label: Execute Prepared Routes
kind: action
params:
- name: mode
type: integer
description: 0x00=SET, 0x01=CLEAR
- name: destination
type: integer
description: Destination output number (0 = all)
- id: connect_on_go_group_salvo
label: Connect On Go Group Salvo
kind: action
params:
- name: salvo_id
type: integer
description: Salvo number (0-127)
- name: destination
type: integer
description: Destination output number
- name: source
type: integer
description: Source input number
- id: go_group_salvo
label: Execute Group Salvo
kind: action
params:
- name: mode
type: integer
description: 0x00=SET, 0x01=CLEAR
- name: salvo_id
type: integer
description: Salvo number (0-127)
- id: extended_connect
label: Extended Connect (Large Router)
kind: action
params:
- name: destination
type: integer
description: Destination output number (supports up to 16384 destinations)
- name: source
type: integer
description: Source input number (supports up to 16384 sources)
- id: extended_connect_on_go
label: Extended Connect On Go
kind: action
params:
- name: destination
type: integer
description: Destination output number (supports up to 4096 destinations)
- name: source
type: integer
description: Source input number
- id: protect_connect
label: Protect Destination
kind: action
params:
- name: destination
type: integer
description: Destination output number to protect
- id: protect_disconnect
label: Unprotect Destination
kind: action
params:
- name: destination
type: integer
description: Destination output number to unprotect
- id: mixer_connect
label: Mixer Connect (TDM 4-Wire)
kind: action
params:
- name: output
type: integer
description: Output number
- name: source
type: integer
description: Source input number
- name: gain
type: integer
description: Gain coefficient
- id: set_output_gain
label: Set Output Gain (TDM 4-Wire)
kind: action
params:
- name: output
type: integer
description: Output number
- name: gain
type: integer
description: Gain coefficient
- id: database_checksum_request
label: Database Checksum Request
kind: query
params:
- name: target
type: integer
description: 0x00=REQUEST_CHECKSUM
- id: interrogate
label: Interrogate (Request Tally)
kind: query
params:
- name: destination
type: integer
description: Destination output number to query routing state for
- id: extended_interrogate
label: Extended Interrogate (Large Router)
kind: query
params:
- name: destination
type: integer
description: Destination output number; supports up to 16384 destinations
- id: status_request
label: Status Request
kind: query
params:
- name: target
type: enum
values: [0x00, 0x01]
description: 0x00=LEFT_HAND_CONTROLLER, 0x01=RIGHT_HAND_CONTROLLER
- id: status_request2
label: Status Request 2 (Fault Status)
kind: query
params: []
- id: enable_crosspoint_update
label: Enable Crosspoint Update
kind: action
params: []
- id: source_lock_status_request
label: Source Lock Status Request
kind: query
params:
- name: target
type: enum
values: [0x00, 0x01]
description: 0x00=LEFT_HAND_CONTROLLER, 0x01=RIGHT_HAND_CONTROLLER
- id: mixer_interrogate
label: Mixer Interrogate
kind: query
params:
- name: output
type: integer
description: Output number to query all contributing sources for (TDM 4-Wire Router)
- id: assign_slot
label: Assign Slot
kind: action
params:
- name: input
type: integer
description: Physical input number
- name: slot
type: integer
description: Time slot number to assign; for routers > 384x384
- id: read_slot_assignment
label: Read Slot Assignment
kind: query
params:
- name: input
type: integer
description: Physical input number to query slot allocation for
- id: read_output_gain
label: Read Output Gain
kind: query
params:
- name: output
type: integer
description: Output number to read gain coefficient for (TDM 4-Wire Router)
- id: read_twinkler
label: Read Twinkler (Signal Levels)
kind: query
params: []
- id: installed_modules_status_request
label: Installed Modules Status Request
kind: query
params:
- name: target
type: enum
values: [0x00, 0x01]
description: 0x00=LEFT_HAND_CONTROLLER, 0x01=RIGHT_HAND_CONTROLLER
- id: extended_connect_on_go_group_salvo
label: Extended Connect On Go Group Salvo
kind: action
params:
- name: salvo_id
type: integer
description: Salvo number (0-127)
- name: destination
type: integer
description: Destination output number; supports up to 4096 destinations
- name: source
type: integer
description: Source input number
- id: router_input_output_parameters_interrogate
label: Router Input/Output Parameters Interrogate
kind: query
params:
- name: start_source
type: integer
description: First source number to request; max 64 sources per request
- id: status_data_request
label: Status Data Request
kind: query
params:
- name: target
type: integer
description: Target system identifier
- id: router_configuration_request
label: Router Configuration Request
kind: query
params: []
- id: dual_controller_status_request
label: Dual Controller Status Request
kind: query
params: []
- id: extended_protect_interrogate
label: Extended Protect Interrogate
kind: query
params:
- name: destination
type: integer
description: Destination output number to get protect status for
- id: extended_protect_connect
label: Extended Protect Connect (Protect Destination)
kind: action
params:
- name: destination
type: integer
description: Destination output number to protect
- id: extended_protect_disconnect
label: Extended Protect Disconnect (Unprotect Destination)
kind: action
params:
- name: destination
type: integer
description: Destination output number to remove protection from
- id: protect_device_name_request
label: Protect Device Name Request
kind: query
params:
- name: destination
type: integer
description: Destination output number to request protecting device name for
- id: extended_protect_tally_dump_request
label: Extended Protect Tally Dump Request
kind: query
params: []
- id: preprocessing_config_request
label: Preprocessing Config Request
kind: query
params: []
- id: preprocessing_interrogate
label: Preprocessing Interrogate
kind: query
params:
- name: destination
type: integer
description: Destination output number to query pre-processing tally for
- id: x_tally_interrogate
label: X Tally Interrogate
kind: query
params:
- name: output
type: integer
description: Output number to request bitmap of video and key sources for (Charisma Ten X)
- id: x_tally_status_ack
label: X Tally Status Acknowledge
kind: action
params: []
Feedbacks
- id: tally
type: object
description: Current routing state returned in response to INTERROGATE or EXTENDED_INTERROGATE
- id: connected
type: object
description: Confirms crosspoint set. Issued on ALL ports after route made.
- id: status_response
type: object
description: Device status returned in response to STATUS_REQUEST. Multiple variants (STATUS_RESPONSE1-6) for different card types.
- id: router_configuration
type: object
description: Bitmap showing which levels configured, number of sources/destinations per level. Response to ROUTER_CONFIGURATION_REQUEST.
- id: protect_tally
type: object
description: Current protect status of a destination. Response to EXTENDED_PROTECT_INTERROGATE.
- id: go_done_ack
type: object
description: Indicates GO command executed. Mode field: 0x00=SET, 0x01=CLEAR, 0x02=NONE.
- id: cannot_execute
type: object
description: Response when command cannot be executed. Opcode 0x78.
Variables
- id: destination_routing
type: integer
description: Current source routed to a given destination output
- id: source_lock_status
type: enum
values: [locked, unlocked]
description: Source lock status on input modules (HD digital video routers only)
- id: dual_controller_status
type: object
description: Master/slave active status and idle controller fault status
- id: output_gain
type: integer
description: Gain coefficient applied on given output (TDM 4-Wire Router)
- id: twinkler_status
type: object
description: Input signal levels on all 96 ports (TDM 4-Wire Router)
- id: protect_status
type: enum
values: [protected, unprotected]
description: Protection state of a destination
Events
# UNRESOLVED: no unsolicited event definitions found in source.
# The CONNECTED and TALLY messages are issued in response to commands, not unprompted.
# Fault status broadcast (STATUS_RESPONSE6) is sent when fault status changes - field not populated.
Macros
# Salvo switching: prepare multiple routes with CONNECT_ON_GO, then execute all with GO command.
# Group Salvo: prepare up to 128 routes with CONNECT_ON_GO_GROUP_SALVO, then execute with GO_GROUP_SALVO.
Safety
confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures stated in source.
Notes
SW-P-02 has no concept of levels. Helm and RouteMaster implementations automatically map high-numbered destinations to higher levels based on router size (e.g., router with 32 outputs and 2 levels: outputs 32-63 represent second level). Only destination numbers use this mapping; source numbers are unchanged.
The protocol uses destination offset for multi-level router control. Add offset equal to router output count to reach higher-level destinations.
Message format: SOM | COMMAND | MESSAGE | CHECKSUM where SOM=0xFF, CHECKSUM is 7-bit 2's complement sum of COMMAND and MESSAGE fields.
Extended command set (0x7B sub-opcode): monitor row operations for Charisma Ten X series.
Provenance
source_domains:
- support.rascular.com
- docs.dataminer.services
- yumpu.com
- github.com
source_urls:
- https://support.rascular.com/pro-bel-sw-p-02-implementation-notes-2/
- https://docs.dataminer.services/connector/doc/Pro-Bel_SW-P-02.html
- https://www.yumpu.com/en/document/view/45593368/pro-bel-sw-p-02-interface-specifications-dhd-audiode
- https://github.com/bitfocus/companion-module-generic-swp02
retrieved_at: 2026-04-29T23:57:03.635Z
last_checked_at: 2026-06-02T22:07:17.707Z
Verification Summary
verdict: verified
checked_at: 2026-06-02T22:07:17.707Z
matched_actions: 38
action_count: 38
confidence: medium
summary: "All 38 spec actions traced to source (dip-safe re-verify). (10 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "manufacturer entity bootstrap not confirmed; protocol also implemented by Rascular, Snell, Grass Valley"
- "flow control not stated in source"
- "TCP port not stated in source"
- "auth mechanism not described in source"
- "no unsolicited event definitions found in source."
- "no safety warnings or interlock procedures stated in source."
- "TCP port number not stated in source"
- "flow control configuration not stated in source"
- "auth type not stated in source"
- "unsolicited event conditions not fully enumerated"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0