Summary

The Extron PVS 204SA is a PoleVault switcher providing RGB/composite video input switching, audio switching, and a built-in stereo power amplifier. This spec covers control via RS-232 using Extron's Simple Instruction Set (SIS) over the rear panel RS-232/MLC/IR captive-screw port and the front-panel 2.5 mm Config port (both share the same protocol).

Transport

protocols:
  - serial
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no login/auth procedure in source

Traits

- powerable       # inferred from power-amp sections; no explicit AC power on/off command documented
- routable        # inferred from input selection commands (X!, X!*, X!$, X!&)
- queryable       # inferred from query commands (Z, G, V, X, Q, 3S, 40S, 41S, 20S, 1I, I, 0I, N, 3#, 18#, 29#, 1#, 72#, 56#, 59#)
- levelable       # inferred from volume/gain/treble/bass commands

Actions

# Input selection (single switcher mode)
- id: select_input_single
  label: Select input (video and audio, single switcher mode)
  kind: action
  command: "{X!}!"
  params:
    - name: input
      type: integer
      description: Input number (X!). Valid values: 0 (all output mute, both audio and video), 1 or 2 (RGB inputs), 3 or 4 (composite video inputs in single switcher mode), 7 (Aux/Mix input).
  notes: "X! syntax. Example: 2! selects input 2. Response: ChnX!]"

- id: select_input_separate_video
  label: Select composite video input (separate switcher mode)
  kind: action
  command: "{X!}*{X1%}!"
  params:
    - name: composite_input
      type: integer
      description: Composite video input number (X!) in separate switcher mode (1 or 2)
    - name: group
      type: integer
      description: Group selector (X1%) - 1 selects from video group, 2 selects from RGB group
  notes: "Example: 1*2! selects input 1 of the composite video group. Response: ChnX1%*X!!]"

- id: select_audio_input
  label: Select audio input only
  kind: action
  command: "{X!}$"
  params:
    - name: input
      type: integer
      description: Input number (X!) - 0 (mute), 1-2 (RGB), 3-4 (composite), 7 (Aux/Mix)
  notes: "Response: AudX! ]"

- id: select_video_input_single
  label: Select video input (single switcher mode)
  kind: action
  command: "{X!}&"
  params:
    - name: input
      type: integer
      description: Input number (X!)
  notes: "Response: VidX! ]"

- id: select_video_input_separate
  label: Select video input (separate switcher mode)
  kind: action
  command: "{X1%}*{X!}&"
  params:
    - name: group
      type: integer
      description: Group selector (X1%) - 1 video group, 2 RGB group
    - name: input
      type: integer
      description: Input number (X!) within the group
  notes: "Response: VidX1%*X! ]"

# Audio gain/attenuation per input (note: G uppercase = set/increment gain, g lowercase = set attenuation)
- id: set_input_gain
  label: Set a specific input's gain
  kind: action
  command: "{X!}*{X&}G"
  params:
    - name: input
      type: integer
      description: Input number (X!) - note Aux/Mix is input 7
    - name: gain_value
      type: integer
      description: Gain in dB on X& scale 0-24 (default 0, see table: 0=-10.5dB ... 14=+10.5dB relative)
  notes: "Set gain command is case-sensitive (G uppercase). Response: InX! Aud=X( ]. Example: 2*9G sets input 2's gain to +9 dB (using absolute dB scale X(): -18 to +24 dB)."

- id: set_input_attenuation
  label: Set a specific input's attenuation
  kind: action
  command: "{X!}*{X*}g"
  params:
    - name: input
      type: integer
      description: Input number (X!)
    - name: attenuation_value
      type: integer
      description: Attenuation value (X*) - range 1-42, in dB
  notes: "Attenuation command is case-sensitive (g lowercase). Response: InX!Aud=X( ]. Example: 1*12g sets input 1's attenuation to -12 dB."

- id: increment_specific_input_gain
  label: Increment a specific input's gain by 1 dB
  kind: action
  command: "{X!}*+G"
  params:
    - name: input
      type: integer
      description: Input number (X!)
  notes: "Response: InX!Aud=X( ]"

- id: decrement_specific_input_gain
  label: Decrement a specific input's gain by 1 dB
  kind: action
  command: "{X!}*-G"
  params:
    - name: input
      type: integer
      description: Input number (X!)
  notes: "Response: InX!Aud=X( ]"

- id: view_specific_input_gain
  label: View a specific input's gain
  kind: query
  command: "{X!}*G"
  params:
    - name: input
      type: integer
      description: Input number (X!)
  notes: "Response: InX!Aud=X( ]"

- id: set_current_input_gain
  label: Set the current input's gain
  kind: action
  command: "{X&}G"
  params:
    - name: gain_value
      type: integer
      description: Gain value on X& scale 0-24
  notes: "Response: InX!Aud=X( ]"

- id: set_current_input_attenuation
  label: Set the current input's attenuation
  kind: action
  command: "{X*}g"
  params:
    - name: attenuation_value
      type: integer
      description: Attenuation value on X* scale 1-42
  notes: "Response: InX!Aud=X( ]"

- id: increment_current_input_gain
  label: Increment the current input's gain by 1 dB
  kind: action
  command: "+G"
  params: []
  notes: "Response: InX!Aud=X( ]"

- id: decrement_current_input_gain
  label: Decrement the current input's gain by 1 dB
  kind: action
  command: "-G"
  params: []
  notes: "Response: InX!Aud=X( ]"

- id: view_current_input_audio_gain
  label: View the current input's audio gain
  kind: query
  command: "G"
  params: []
  notes: "Response: InX!Aud=X( ]"

# Audio treble adjustment (applies to inputs 1-4, twisted-pair audio only)
- id: set_treble_level
  label: Set the global treble level
  kind: action
  command: "{X$}>"
  params:
    - name: treble_value
      type: integer
      description: Treble value (X$) range 0-14, default 7 (0 dB). Steps: 0=-10.5dB, 1=-9dB, ..., 7=0dB, ..., 14=+10.5dB in 1.5 dB increments
  notes: "Response: Trb=X% ]. Example: 2> sets treble to -7.5 dB."

- id: increment_treble
  label: Increment the treble level by 1.5 dB
  kind: action
  command: "+>"
  params: []
  notes: "Response: Trb=X% ]"

- id: decrement_treble
  label: Decrement the treble level by 1.5 dB
  kind: action
  command: "->"
  params: []
  notes: "Response: Trb=X% ]"

- id: view_treble_level
  label: View the treble level
  kind: query
  command: ">"
  params: []
  notes: "Response: Trb=X% ]"

# Audio bass adjustment (applies to inputs 1-4, twisted-pair audio only)
- id: set_bass_level
  label: Set the global bass level
  kind: action
  command: "{X$}<"
  params:
    - name: bass_value
      type: integer
      description: Bass value (X$) range 0-14, default 7 (0 dB). Steps: 0=-10.5dB, ..., 7=0dB, ..., 14=+10.5dB in 1.5 dB increments
  notes: "Response: Bas=X% ]. Example: 10< sets bass to +4.5 dB."

- id: increment_bass
  label: Increment the bass level by 1.5 dB
  kind: action
  command: "+<"
  params: []
  notes: "Response: Bas=X% ]"

- id: decrement_bass
  label: Decrement the bass level by 1.5 dB
  kind: action
  command: "-<"
  params: []
  notes: "Response: Bas=X% ]"

- id: view_bass_level
  label: View the bass level
  kind: query
  command: "<"
  params: []
  notes: "Response: Bas=X% ]"

# Audio mute
- id: audio_mute_on
  label: Mute audio output
  kind: action
  command: "1Z"
  params: []
  notes: "Response: AmtX# ]"

- id: audio_mute_off
  label: Unmute audio output
  kind: action
  command: "0Z"
  params: []
  notes: "Response: AmtX# ]"

- id: view_audio_mute_status
  label: View the audio mute status
  kind: query
  command: "Z"
  params: []
  notes: "Response: AmtX# ] where 0=off, 1=on"

# Volume adjustment
- id: set_volume
  label: Set the overall output volume
  kind: action
  command: "{X^}V"
  params:
    - name: volume
      type: integer
      description: Volume (X^) range 0-100, default 50
  notes: "Response: VolX^ ]. Example: 27V sets volume to 27."

- id: increment_volume
  label: Increment the volume
  kind: action
  command: "+V"
  params: []
  notes: "Response: VolX^ ]"

- id: decrement_volume
  label: Decrement the volume
  kind: action
  command: "-V"
  params: []
  notes: "Response: VolX^ ]"

- id: view_volume
  label: View the volume level
  kind: query
  command: "V"
  params: []
  notes: "Response: VolX^ ]"

# Status commands
- id: view_clip_status
  label: View the clip (max) status
  kind: query
  command: "3S"
  params: []
  notes: "Response: Sts3*X# ]"

- id: view_vcm_present_status
  label: View the VCM present status
  kind: query
  command: "40S"
  params: []
  notes: "Response: Sts40*X1# ]"

- id: view_high_pass_filter_status
  label: View the high pass filter status
  kind: query
  command: "41S"
  params: []
  notes: "Response: Sts41*X# ]"

- id: view_internal_temperature
  label: View the internal temperature (°C)
  kind: query
  command: "20S"
  params: []
  notes: "Response: Sts20*X1$ ]"

# Front panel security lockout (executive modes)
- id: disable_executive_mode
  label: Disable executive mode (unlock)
  kind: action
  command: "0X"
  params: []
  notes: "Response: ExeX# ]. Adjustments and selections can be made from the front panel."

- id: enable_executive_mode_1
  label: Enable executive mode 1 (lock)
  kind: action
  command: "1X"
  params: []
  notes: "Response: ExeX# ]. Locks front panel input selection buttons; inputs selectable via RS-232 or IR only. Volume still adjustable from front panel. Equivalent to pressing and holding front panel buttons 1 and 4."

- id: view_executive_mode_status
  label: View the executive mode status
  kind: query
  command: "X"
  params: []
  notes: "Response: ExeX# ]. Example: X returns Exe0] when executive mode is off."

# Firmware version / part number / info requests
- id: query_firmware_version
  label: Query firmware version number
  kind: query
  command: "Q"
  params: []
  notes: "Response: X2! ] (X.XX format)"

- id: request_part_number
  label: Request the part number
  kind: query
  command: "N"
  params: []
  notes: "Response: N60-800-01]"

- id: request_model_name
  label: Request model name
  kind: query
  command: "1I"
  params: []
  notes: "Response: PVS 204SA]"

- id: request_general_info
  label: Request general info
  kind: query
  command: "I"
  params: []
  notes: "Single switcher mode returns: Video input # X1 is selected/active, Audio input # X1 is selected/active, Audio volume X6, Switcher mode X4"

- id: request_general_info_alt
  label: Request general info (alternate form)
  kind: query
  command: "0I"
  params: []
  notes: "Separate switcher mode returns: RGB input # X1 is selected/active, Video input # X1 is selected/active, Audio input # X1 is selected/active, Audio volume X6, Switcher mode X4"

# Firmware upload
- id: upload_firmware
  label: Upload firmware
  kind: action
  command: "EUpload]"
  params: []
  notes: "Response: Go] then Upl] on success. The switcher starts uploading firmware code into its memory. Firmware file must have .s19 extension. Each firmware replacement resets the switcher to factory defaults. Performed only via front panel Config port."

# Special functions (syntax: __ * X? # for set, __ # for view)
- id: zap_all_settings
  label: Zap (reset to default settings)
  kind: action
  command: "EzXXX]"
  params: []
  notes: "Response: ZapXXX]. Resets everything (all settings and adjustments) to factory defaults."

- id: set_rgb_delay
  label: Set the RGB delay
  kind: action
  command: "3*{X2@}#"
  params:
    - name: delay
      type: integer
      description: RGB delay (X2@) 0-10, in 0.5 second steps. 0=0.0s (default), 1=0.5s, ..., 10=5.0s
  notes: "Response: RGBDly*X2@ ]. Example: 3*7# sets a 3.5 second RGB delay."

- id: view_rgb_delay
  label: View the RGB delay
  kind: query
  command: "3#"
  params: []
  notes: "Response: RGBDly*X2@ ]"

- id: view_audio_output_mode
  label: View the audio output mode status
  kind: query
  command: "18#"
  params: []
  notes: "Response: PreAmpMod*X@ ]. X@ = 1 (dual mono) or 2 (stereo). Reflects the Audio Output Mode DIP switch on rear panel."

- id: set_loudness_off
  label: Set the loudness to off
  kind: action
  command: "29*0#"
  params: []
  notes: "Response: Loudness*0]"

- id: set_loudness_on
  label: Set the loudness to on
  kind: action
  command: "29*1#"
  params: []
  notes: "Response: Loudness*1]"

- id: view_loudness_control
  label: View the loudness control
  kind: query
  command: "29#"
  params: []
  notes: "Response: Loudness*X# ]. 0=Off, 1=On"

- id: set_single_switcher_mode
  label: Set to single switcher mode
  kind: action
  command: "1*1#"
  params: []
  notes: "Response: SwMode*1]"

- id: set_separate_switcher_mode
  label: Set to separate switcher mode
  kind: action
  command: "1*2#"
  params: []
  notes: "Response: SwMode*2]. In Separate Switcher mode, audio follows the last video/RGB selection."

- id: view_switcher_mode
  label: View the switcher mode
  kind: query
  command: "1#"
  params: []
  notes: "Response: SwMode*X1! ]. 1=single, 2=separate"

- id: set_auto_switching_on
  label: Set auto switching to on
  kind: action
  command: "72*1#"
  params: []
  notes: "Response: Asw*1]"

- id: set_auto_switching_off
  label: Set auto switching to off
  kind: action
  command: "72*0#"
  params: []
  notes: "Response: Asw*0]"

- id: view_auto_switching
  label: View the auto switching setting
  kind: query
  command: "72#"
  params: []
  notes: "Response: Asw*X# ]. 0=off, 1=on"

- id: set_power_amp_attenuation
  label: Set the power amp attenuation
  kind: action
  command: "56*{X1@}#"
  params:
    - name: range
      type: integer
      description: Power amp attenuation (X1@) 0-20, where 0=-10dB, 20=+10dB, 1 dB increments
  notes: "Response: AmpLimit*X1) ]"

- id: view_power_amp_gain
  label: View the power amp gain
  kind: query
  command: "56#"
  params: []
  notes: "Response: AmpLimit*X1) ]. X1) = -10 to +10 dB"

- id: set_clip_limiter_off
  label: Set the Clip Limiter switch to off
  kind: action
  command: "59*0#"
  params: []
  notes: "Response: ClipLimit*0]"

- id: set_clip_limiter_on
  label: Set the Clip Limiter switch to on
  kind: action
  command: "59*1#"
  params: []
  notes: "Response: ClipLimit*1]"

- id: view_clip_limiter
  label: View the Clip Limiter control
  kind: query
  command: "59#"
  params: []
  notes: "Response: ClipLimit*X# ]. 0=off, 1=on"

Feedbacks

- id: power_state  # UNRESOLVED: no explicit AC power on/off state in source; only power-amp control
  type: enum
  values: [on, off]

- id: audio_mute_state
  type: enum
  values: [off, on]
  description: 0=off, 1=on (from Z query response)

- id: active_input_single
  type: integer
  description: Currently selected input in single switcher mode (0=all mute, 1-4, 7=Aux/Mix)

- id: active_input_separate_rgb
  type: integer
  description: Currently selected RGB input in separate switcher mode

- id: active_input_separate_video
  type: integer
  description: Currently selected composite video input in separate switcher mode

- id: active_audio_input
  type: integer
  description: Currently selected audio input

- id: active_volume
  type: integer
  description: Current volume 0-100 (from V query)

- id: treble_level_db
  type: number
  description: Current treble level in dB, range -10.5 to +10.5

- id: bass_level_db
  type: number
  description: Current bass level in dB, range -10.5 to +10.5

- id: switcher_mode
  type: enum
  values: [single, separate]
  description: 1=single, 2=separate

- id: audio_output_mode
  type: enum
  values: [dual_mono, stereo]
  description: 1=dual mono, 2=stereo

- id: loudness_state
  type: enum
  values: [off, on]

- id: auto_switching_state
  type: enum
  values: [off, on]

- id: clip_limiter_state
  type: enum
  values: [off, on]

- id: clip_status
  type: enum
  values: [off, on]
  description: From 3S query

- id: vcm_present
  type: enum
  values: [off, on]
  description: From 40S query

- id: high_pass_filter
  type: enum
  values: [off, on]
  description: From 41S query

- id: internal_temperature_c
  type: integer
  description: From 20S query

- id: executive_mode
  type: enum
  values: [unlocked, locked]
  description: 0=unlocked, 1=locked (from X query)

- id: rgb_delay
  type: number
  description: RGB delay in 0.5s steps, 0-10 (0.0 to 5.0 seconds)

- id: power_amp_gain_db
  type: integer
  description: -10 to +10 dB

- id: firmware_version
  type: string
  description: X.XX format

- id: part_number
  type: string
  description: 60-800-01

- id: model_name
  type: string
  description: PVS 204SA

- id: unsolicited_input_change
  type: string
  description: "ChnX! ] sent unsolicited whenever an input changes (front panel, RS-232, or auto switching)"

Variables

# UNRESOLVED: settable parameters are covered as discrete actions above; no continuous settable variables beyond the dB scales already enumerated.

Events

- id: power_on_copyright
  description: "© Copyright 2006, Extron Electronics, PVS 204SA, V1.xx Chn x ] sent when the PVS first powers on (V1.xx is firmware version, Chn x indicates initial channel)."

- id: input_change_notification
  description: "ChnX! ] (where X! is the input number) sent whenever an input is switched, including via front panel, RS-232, or auto switching. No host response required."

- id: error_E01
  description: "Invalid input channel number (too large)"

- id: error_E06
  description: "Invalid channel change"

- id: error_E10
  description: "Invalid command"

- id: error_E13
  description: "Invalid value (too large)"

- id: error_E14
  description: "Invalid command for this configuration"

Macros

# UNRESOLVED: no multi-step sequences described in source

Safety

confirmation_required_for: []
interlocks: []
# Source notes: do not control PVS volume via RS-232 if DC Volume control port is connected to a VCM 100, VC 50, or MLC 52 VC. If a VCM is controlling the volume, an MLC should not be connected to the MLC/IR/RS-232 port. Firmware update must use .s19 extension or unit may stop functioning. Each firmware replacement resets the switcher to factory defaults.

Notes

  • Captive-screw connector pinout (rear panel RS-232/MLC/IR): A=TX, B=RX, C=IR receive, D=GND, E=+12 VDC.
  • 2.5 mm mini stereo jack pinout (front panel Config and rear MLC ports): tip=TX, ring=RX, sleeve=GND.
  • Configuration cable Extron part # 70-335-01 (2.5 mm to DB9, 6 ft): DB9 pin 2 = TRS tip, DB9 pin 3 = TRS ring, DB9 pin 5 = TRS sleeve.
  • Maximum RS-232 cable lengths: 50 ft to MLC 104, 50 ft to host/control system, 150 ft to IR Link.
  • DC Volume port (analog, NOT RS-232): 0-10 V where 0 V = mute, 10 V = max. Pins: 1=10 VDC, 2=variable voltage/mute, 3=GND. When a VCM/VC 50/MLC 52 VC is connected, that device is the sole volume controller and RS-232 volume commands must not be used.
  • Tone (bass/treble) commands are global and apply only to twisted-pair audio signals on inputs 1-4, not the Aux/Mix input.
  • Auto Switching sends unsolicited ChnX! ] messages on every input change.
  • Gain (G) and attenuation (g) commands are case-sensitive.
  • Front panel Config port and rear RS-232/MLC/IR port share identical protocol; firmware updates are supported only via the front panel Config port.
  • All responses end with CR/LF (0D 0A, shown as ] in the source).

Provenance

source_domains:
  - extron.com
  - manualmachine.com
source_urls:
  - https://www.extron.com/download/files/userman/PVS204SARevD092608.pdf
  - https://www.extron.com/download/files/userman/68-1512-01PVS204SAPlusAddendumrevBweb040909.pdf
  - https://www.extron.com/download/files/label/PVS204SAlabel33-1379-01B02.pdf
  - https://www.extron.com/download/
  - https://manualmachine.com/extronelectronics/pvs204sa/1450431-user-manual/
retrieved_at: 2026-06-11T21:56:00.395Z
last_checked_at: 2026-06-12T19:17:36.549Z

Verification Summary

verdict: verified
checked_at: 2026-06-12T19:17:36.549Z
matched_actions: 61
action_count: 61
confidence: medium
summary: "All 61 spec actions matched literally with corresponding source commands; transport parameters (9600 baud, 8 bits, no parity, 1 stop bit, no flow control) verified; source fully represented. (5 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "firmware version compatibility, GC2 software command set, IR remote command set, exact IR Link wiring/handshake, MLC interaction commands"
- "no explicit AC power on/off state in source; only power-amp control"
- "settable parameters are covered as discrete actions above; no continuous settable variables beyond the dB scales already enumerated."
- "no multi-step sequences described in source"
- "firmware version compatibility, GC2 software command set, IR remote command set, exact IR Link wiring/handshake, MLC interaction commands, factory defaults not enumerated in refined excerpt may exist for additional parameters."

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