Summary

Generic SW-P-08 is a broadcast router/gpio control protocol supporting both TCP (port 2008) and RS-232 serial (9600 8N1). Controls crosspoint routing, protect, tallies, source/destination names, and salvos. Supports standard (16-level, 1024-source) and extended (256-level, 65535-source/destination) operation.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 2008  # default; configurable
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- routable       # crosspoint connect/disconnect commands present
- queryable      # interrogate commands returning tally/state present

Actions

- id: crosspoint_interrogate
  label: Crosspoint Interrogate
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15 standard, 0-255 extended)
    - name: level
      type: integer
      description: Level number (0-15 standard, 0-255 extended)
    - name: destination
      type: integer
      description: Destination number

- id: crosspoint_connect
  label: Crosspoint Connect
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15 standard, 0-255 extended)
    - name: level
      type: integer
      description: Level number (0-15 standard, 0-255 extended)
    - name: destination
      type: integer
      description: Destination number (≥128 uses multiplier byte in standard protocol)
    - name: source
      type: integer
      description: Source number

- id: protect_interrogate
  label: Protect Interrogate
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15)
    - name: level
      type: integer
      description: Level number (0-15)
    - name: destination
      type: integer
      description: Destination number

- id: protect_connect
  label: Protect Connect
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15)
    - name: level
      type: integer
      description: Level number (0-15)
    - name: destination
      type: integer
      description: Destination number

- id: protect_disconnect
  label: Protect Disconnect
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15)
    - name: level
      type: integer
      description: Level number (0-15)
    - name: destination
      type: integer
      description: Destination number

- id: source_names_request
  label: Source Names Request
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15)
    - name: level
      type: integer
      description: Level number (0-15)
    - name: char_length
      type: integer
      description: Name length index (0=4, 1=8, 2=12, 3=16, 4=32 chars)

- id: destination_names_request
  label: Destination Names Request
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15)
    - name: char_length
      type: integer
      description: Name length index (0=4, 1=8, 2=12, 3=16, 4=32 chars)

- id: umd_label_request
  label: UMD Label Request
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15)
    - name: level
      type: integer
      description: Level number (0-15)
    - name: destination
      type: integer
      description: Destination number

- id: tally_state_request
  label: Tally State Request
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15 standard, 0-255 extended)
    - name: level
      type: integer
      description: Level number (0-15 standard, 0-255 extended)

- id: crosspoint_tally_dump
  label: Crosspoint Tally Dump
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15 standard, 0-255 extended)
    - name: level
      type: integer
      description: Level number (0-15 standard, 0-255 extended)

- id: protect_tally_dump
  label: Protect Tally Dump
  kind: action
  params:
    - name: matrix
      type: integer
      description: Matrix number (0-15)
    - name: level
      type: integer
      description: Level number (0-15)

- id: salvo
  label: Crosspoint Go Group Salvo
  kind: action
  params:
    - name: salvo_id
      type: integer
      description: Salvo group identifier  # UNRESOLVED: salvo encoding details not in source

Feedbacks

- id: crosspoint_tally
  label: Crosspoint Tally
  type: object
  fields:
    matrix: integer
    level: integer
    destination: integer
    source: integer

- id: crosspoint_tally_dump
  label: Crosspoint Tally Dump
  type: object
  fields:
    matrix: integer
    level: integer
    tally_count: integer
    start_destination: integer
    sources: integer[]

- id: connected
  label: Connected
  type: event
  description: Async notification when route is established

- id: protect_connected
  label: Protect Connected
  type: event
  description: Async notification when protect is set

- id: protect_disconnected
  label: Protect Disconnected
  type: event
  description: Async notification when protect is removed

- id: source_names_response
  label: Source Names Response
  type: object
  fields:
    matrix: integer
    level: integer
    char_length: integer
    start_index: integer
    name_count: integer
    names: string[]

- id: destination_names_response
  label: Destination Names Response
  type: object
  fields:
    matrix: integer
    char_length: integer
    start_index: integer
    name_count: integer
    names: string[]

- id: umd_label_response
  label: UMD Label Response
  type: object
  fields:
    destination: integer
    label: string

- id: ack
  label: ACK
  type: event
  description: Message acknowledged (DLE ACK = 0x10 0x06)

- id: nak
  label: NAK
  type: event
  description: Message not acknowledged (DLE NAK = 0x10 0x15)

Variables

# UNRESOLVED: no settable parameters described as Variables in source

Events

# Async notifications (CONNECTED, PROTECT_CONNECTED, PROTECT_DISCONNECTED) listed in Feedbacks.
# UNRESOLVED: full event taxonomy for unsolicited device-originated messages not fully enumerated in source

Macros

# Salvo support confirmed (CROSSPOINT GO GROUP SALVO command exists).
# UNRESOLVED: salvo definition format, salvo number encoding, and salvo execution byte structure not in source

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: no safety warnings or interlock procedures in source

Notes

Protocol uses DLE byte-stuffing (0x10 escape) for all data bytes equal to 0x10. Checksum is 2's complement of preceding byte sum. Standard commands limited to 16 levels / 1024 sources / 1024 destinations; extended commands (+128) support 256 levels / 65535 sources / 65535 destinations. Destination numbers ≥128 in standard protocol require a multiplier byte encoding. TCP port 2008 default; serial 9600 8N1. Name length 16 and 32 require RouteMaster 2.3.1+ or Helm 4.8.2+.

Provenance

source_domains:
  - docs.dataminer.services
  - calrec.com
  - github.com
  - support.rascular.com
source_urls:
  - https://docs.dataminer.services/connector/doc/Pro-Bel_SW-P-08.html
  - https://calrec.com/wp-content/uploads/2014/05/SW-P-08.pdf
  - https://github.com/bitfocus/companion-module-generic-swp08/blob/main/companion/HELP.md
  - https://support.rascular.com/pro-bel-sw-p-08-implementation-notes/
retrieved_at: 2026-04-29T23:48:35.677Z
last_checked_at: 2026-06-02T22:07:19.223Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T22:07:19.223Z
matched_actions: 12
action_count: 12
confidence: medium
summary: "All 12 spec actions traced to source (dip-safe re-verify). (8 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "original ProBel SW-P-08 Issue 4 specification document not available; spec derived from Rascular implementation notes, Bitfocus Companion module, and open-source JS implementation"
- "salvo encoding details not in source"
- "no settable parameters described as Variables in source"
- "full event taxonomy for unsolicited device-originated messages not fully enumerated in source"
- "salvo definition format, salvo number encoding, and salvo execution byte structure not in source"
- "no safety warnings or interlock procedures in source"
- "original ProBel SW-P-08 Issue 4 PDF not retrieved; byte-level encoding derived from open-source JS implementations and Rascular notes"
- "salvo group byte encoding, salvo execution command number not stated in source"

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