Summary

Extron MPS 602 is a six-input media presentation switcher (2 RGB, 4 HDMI/DTP) with integrated audio mixing, microphone input with talk-over, EDID Minder, and HDCP management. Control via Extron SIS (Simple Instruction Set) over RS-232. Front panel USB also accepts SIS commands.

Transport

protocols:
  - serial
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

traits:
  - routable    # inferred: input/output selection commands present
  - queryable   # inferred: query/view commands returning state present
  - levelable   # inferred: volume, mic gain, attenuation controls present

Actions

actions:
  - id: select_input
    label: Select Video and Audio Input
    kind: action
    command: "{input}!"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
        description: Input number (1-6)
    response: "In {input} All"

  - id: view_input
    label: View Current Input
    kind: query
    command: "!"
    response: "{input}"

  - id: select_video_input
    label: Select Video Input Only
    kind: action
    command: "{input}%"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
        description: "Input number (1-6). Video breakaway to HDMI/DTP inputs (3-6) only available when input configured for analog audio."
    response: "In {input} Vid"

  - id: view_video_selection
    label: View Video Selection
    kind: query
    command: "%"
    response: "{input}"

  - id: select_rgb_input
    label: Select RGB Input to Local RGB Output
    kind: action
    command: "{input}&"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
        description: "RGB input 1 or 2 only"
    response: "In {input} RGB"

  - id: view_rgb_input
    label: View RGB Input
    kind: query
    command: "&"
    response: "{input}"

  - id: view_video_signal_presence
    label: View Video Signal Presence
    kind: query
    command: "E 0LS}"
    response: "Sig {s1} {s2} {s3} {s4} {s5} {s6} {rgb_out} {hdmi_out}"

  - id: set_video_mute
    label: Set Video Mute
    kind: action
    command: "{state}B"
    params:
      - name: state
        type: integer
        enum: [0, 1]
        description: "0=off/unmute, 1=on/mute"
    response: "Vmt {state}"

  - id: view_video_mute
    label: View Video Mute
    kind: query
    command: "B"
    response: "{state}"

  - id: set_auto_input_switch
    label: Set Auto-Input Switching Mode
    kind: action
    command: "E {mode}AUSW}"
    params:
      - name: mode
        type: integer
        enum: [0, 1, 2]
        description: "0=disabled (manual), 1=highest active priority, 2=lowest active priority"
    response: "Ausw{mode}"

  - id: view_auto_input_switch
    label: View Auto-Input Switching
    kind: query
    command: "E AUSW}"
    response: "{mode}"

  - id: set_pixel_phase
    label: Set Pixel Phase
    kind: action
    command: "E {input}*{value} PHAS}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
        description: "RGB input 1 or 2"
      - name: value
        type: integer
        min: 0
        max: 63
        description: "Pixel phase value (default=32)"
    response: "Phas {input}*{value}"

  - id: increment_pixel_phase
    label: Increment Pixel Phase
    kind: action
    command: "E {input}+ PHAS}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Phas {input}*{value}"

  - id: decrement_pixel_phase
    label: Decrement Pixel Phase
    kind: action
    command: "E {input}- PHAS}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Phas {input}*{value}"

  - id: view_pixel_phase
    label: View Pixel Phase
    kind: query
    command: "E {input} PHAS}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "{value}"

  - id: set_total_pixels
    label: Set Total Pixels
    kind: action
    command: "E {input}*{value} TPIX}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
      - name: value
        type: integer
        description: "Total pixels value (+255 of default depending on input rate)"
    response: "Tpix {input}*{value}"

  - id: increment_total_pixels
    label: Increment Total Pixels
    kind: action
    command: "E {input}+ TPIX}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Tpix {input}*{value}"

  - id: decrement_total_pixels
    label: Decrement Total Pixels
    kind: action
    command: "E {input}- TPIX}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Tpix {input}*{value}"

  - id: view_total_pixels
    label: View Total Pixels
    kind: query
    command: "E {input} TPIX}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "{value}"

  - id: set_horizontal_start
    label: Set Horizontal Start
    kind: action
    command: "E {input}*{value} HSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
      - name: value
        type: integer
        min: 0
        max: 255
        description: "Horizontal start (default=128)"
    response: "Hsrt {input}*{value}"

  - id: increment_horizontal_start
    label: Increment Horizontal Start
    kind: action
    command: "E {input}+ HSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Hsrt {input}*{value}"

  - id: decrement_horizontal_start
    label: Decrement Horizontal Start
    kind: action
    command: "E {input}- HSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Hsrt {input}*{value}"

  - id: view_horizontal_start
    label: View Horizontal Start
    kind: query
    command: "E {input} HSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "{value}"

  - id: set_vertical_start
    label: Set Vertical Start
    kind: action
    command: "E {input}*{value} VSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
      - name: value
        type: integer
        min: 0
        max: 255
        description: "Vertical start (default=128)"
    response: "Vsrt {input}*{value}"

  - id: increment_vertical_start
    label: Increment Vertical Start
    kind: action
    command: "E {input}+ VSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Vsrt {input}*{value}"

  - id: decrement_vertical_start
    label: Decrement Vertical Start
    kind: action
    command: "E {input}- VSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "Vsrt {input}*{value}"

  - id: view_vertical_start
    label: View Vertical Start
    kind: query
    command: "E {input} VSRT}"
    params:
      - name: input
        type: integer
        min: 1
        max: 2
    response: "{value}"

  - id: set_input_audio_format
    label: Set Input Audio Format
    kind: action
    command: "E I {input}*{format} AFMT}"
    params:
      - name: input
        type: integer
        min: 3
        max: 6
        description: "HDMI inputs 3-6 only"
      - name: format
        type: integer
        enum: [0, 1, 2]
        description: "0=embedded digital, 1=analog audio, 2=auto (default)"
    response: "AfmtI*{format}"

  - id: view_input_audio_format
    label: View Input Audio Format
    kind: query
    command: "E I {input} AFMT}"
    params:
      - name: input
        type: integer
        min: 3
        max: 6
    response: "{format}"

  - id: set_audio_gain
    label: Set Program Audio Gain
    kind: action
    command: "{input}*{gain}"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
      - name: gain
        type: integer
        min: 0
        max: 24
        description: "Gain in dB (0-24, 1 dB steps)"
    response: "G In {input} Aud {level}"

  - id: set_audio_attenuation
    label: Set Program Audio Attenuation
    kind: action
    command: "{input}*{atten}"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
      - name: atten
        type: integer
        min: 1
        max: 18
        description: "Attenuation in dB (1-18, 1 dB steps). Case-sensitive: lowercase."
    response: "g In {input} Aud {level}"

  - id: increment_audio_level
    label: Increment Audio Level
    kind: action
    command: "{input}+"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
        description: "Increments input gain by 1 dB"
    response: "G In {input} Aud {level}"

  - id: decrement_audio_level
    label: Decrement Audio Level
    kind: action
    command: "{input}\u2013"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
        description: "Decrements input gain by 1 dB"
    response: "G In {input} Aud {level}"

  - id: view_audio_level
    label: View Audio Level
    kind: query
    command: "{input}G"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
    response: "{level}"

  - id: set_ducking_level
    label: Set Audio Ducking Level
    kind: action
    command: "{level}*58#"
    params:
      - name: level
        type: integer
        min: 0
        max: 30
        description: "Ducking level in dB (0=off, default=6)"
    response: "Adl {level}"

  - id: increment_ducking
    label: Increment Audio Ducking
    kind: action
    command: "+*58#"
    response: "Adl {level}"

  - id: decrement_ducking
    label: Decrement Audio Ducking
    kind: action
    command: "-*58#"
    response: "Adl {level}"

  - id: view_ducking_level
    label: View Audio Ducking Level
    kind: query
    command: "58#"
    response: "{level}"

  - id: select_program_audio_input
    label: Select Program Audio Input
    kind: action
    command: "{input}$"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
        description: "Audio input 1-6 (analog audio input). Breakaway to HDMI/DTP (3-6) only when configured for analog audio."
    response: "Pra {input}"

  - id: view_program_audio_input
    label: View Program Audio Input
    kind: query
    command: "$"
    response: "{input}"

  - id: set_volume
    label: Set Volume Level
    kind: action
    command: "{level}V"
    params:
      - name: level
        type: integer
        min: 0
        max: 100
        description: "Volume level 0-100 (default=70)"
    response: "Vol {level}"

  - id: increment_volume
    label: Increment Volume
    kind: action
    command: "+V"
    response: "Vol {level}"

  - id: decrement_volume
    label: Decrement Volume
    kind: action
    command: "\u2013V"
    response: "Vol {level}"

  - id: view_volume
    label: View Volume
    kind: query
    command: "V"
    response: "{level}"

  - id: set_audio_mute
    label: Set Program Audio Mute
    kind: action
    command: "{state}Z"
    params:
      - name: state
        type: integer
        enum: [0, 1]
        description: "0=unmute, 1=mute"
    response: "Amt {state}"

  - id: view_audio_mute
    label: View Audio Mute Status
    kind: query
    command: "Z"
    response: "{state}"

  - id: set_mic_gain
    label: Set Mic Gain
    kind: action
    command: "16*{gain}"
    params:
      - name: gain
        type: integer
        min: 0
        max: 60
        description: "Mic gain in 1 dB steps (0-60)"
    response: "G Aud {level}"

  - id: set_mic_attenuation
    label: Set Mic Attenuation
    kind: action
    command: "16*{atten}"
    params:
      - name: atten
        type: integer
        min: 1
        max: 18
        description: "Mic attenuation in 1 dB steps (1-18)"
    response: "g Aud {level}"

  - id: view_mic_level
    label: View Mic Level
    kind: query
    command: "16G"
    response: "{level}"

  - id: set_mic_mute
    label: Set Mic Mute
    kind: action
    command: "{state}M"
    params:
      - name: state
        type: integer
        enum: [0, 1]
        description: "0=unmute, 1=mute"
    response: "Mix {state}"

  - id: view_mic_mute
    label: View Mic Mute Status
    kind: query
    command: "M"
    response: "{state}"

  - id: set_talkover_threshold
    label: Set Mic Talk-Over Threshold
    kind: action
    command: "{threshold}*2#"
    params:
      - name: threshold
        type: integer
        min: 0
        max: 30
        description: "Threshold in dB (0-30, default=8)"
    response: "Thr {threshold}"

  - id: decrement_talkover_threshold
    label: Decrement Talk-Over Threshold
    kind: action
    command: "\u2013*2#"
    response: "Thr {threshold}"

  - id: increment_talkover_threshold
    label: Increment Talk-Over Threshold
    kind: action
    command: "+*2#"
    response: "Thr {threshold}"

  - id: view_talkover_threshold
    label: View Talk-Over Threshold
    kind: query
    command: "2#"
    response: "{threshold}"

  - id: set_hdcp_per_input
    label: Set HDCP Authorization Per Input
    kind: action
    command: "E E {input}*{state} HDCP}"
    params:
      - name: input
        type: integer
        min: 3
        max: 6
        description: "HDMI/DTP inputs 3-6 only"
      - name: state
        type: integer
        enum: [0, 1]
        description: "0=disabled, 1=enabled (default)"
    response: "HdcpE {input}*{state}"

  - id: set_hdcp_all_inputs
    label: Set HDCP Authorization All Inputs
    kind: action
    command: "E E {state} HDCP}"
    params:
      - name: state
        type: integer
        enum: [0, 1]
        description: "0=disabled, 1=enabled (default)"
    response: "HdcpE {state}"

  - id: view_hdcp_status
    label: View HDCP Status
    kind: query
    command: "E EHDCP}"
    response: "HdcpE {s3} {s4} {s5} {s6}"

  - id: view_input_hdcp
    label: View Input HDCP Status
    kind: query
    command: "E I {input} HDCP}"
    params:
      - name: input
        type: integer
        min: 3
        max: 6
    response: "HdcpI {status}"

  - id: view_all_input_hdcp
    label: View All Input HDCP Status
    kind: query
    command: "E I HDCP}"
    response: "HdcpI {s3} {s4} {s5} {s6}"

  - id: view_output_hdcp
    label: View Output HDCP Status
    kind: query
    command: "E O HDCP}"
    response: "HdcpO {status}"

  - id: lock_front_panel
    label: Lock Front Panel (Executive Mode 1)
    kind: action
    command: "1X"
    response: "Exe 1"

  - id: lock_mic_controls
    label: Lock Mic Controls (Executive Mode 2)
    kind: action
    command: "2X"
    response: "Exe 2"

  - id: unlock_front_panel
    label: Unlock Front Panel
    kind: action
    command: "0X"
    response: "Exe 0"

  - id: view_lock_status
    label: View Lock Status
    kind: query
    command: "X"
    response: "{state}"

  - id: factory_reset
    label: Factory Reset
    kind: action
    command: "E ZXXX}"
    response: "Zpx"

  - id: view_general_info
    label: View General Information
    kind: query
    command: "I"
    response: "In {rgb_in} RGB In {vid_in} Vid Pra {aud_in} Ausw {auto_sw} Vmt {vid_mute} Amt {aud_mute}"

  - id: query_firmware
    label: Query Firmware Version
    kind: query
    command: "Q"
    response: "{version}"

  - id: query_firmware_build
    label: Query Firmware Version with Build
    kind: query
    command: "*"
    response: "[Q] {version}"

  - id: set_unit_name
    label: Set Unit Name
    kind: action
    command: "E {name} CN}"
    params:
      - name: name
        type: string
        maxLength: 24
        description: "Up to 24 alphanumeric chars and hyphens. First char must be a letter, last char cannot be hyphen. No spaces."
    response: "Ipn {name}"

  - id: reset_unit_name
    label: Reset Unit Name to Default
    kind: action
    command: "E\u2022 CN}"
    response: "Ipn MPS-602"

  - id: view_unit_name
    label: View Unit Name
    kind: query
    command: "E CN}"
    response: "Ipn {name}"

  - id: request_part_number
    label: Request Part Number
    kind: query
    command: "N"
    response: "{part_number}"

  - id: set_verbose_mode
    label: Set Verbose Mode
    kind: action
    command: "E {mode} CV}"
    params:
      - name: mode
        type: integer
        enum: [0, 1, 2, 3]
        description: "0=none, 1=verbose (default), 2=tagged response, 3=verbose+tagged"
    response: "Vrb {mode}"

  - id: view_verbose_mode
    label: View Verbose Mode
    kind: query
    command: "E CV}"
    response: "{mode}"

  - id: assign_edid
    label: Assign EDID to Input
    kind: action
    command: "E A {input}*{slot} EDID}"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
        description: "Video input 1-6"
      - name: slot
        type: integer
        min: 1
        max: 64
        description: "EDID slot (1-56=factory, 57=VGA auto, 58=HDMI auto, 59-64=user)"
    response: "EdidA {input}*{slot}"

  - id: view_edid_assignment
    label: View EDID Assignment
    kind: query
    command: "E A {input} EDID}"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
    response: "{slot}"

  - id: save_display_edid
    label: Save Display EDID to User Location
    kind: action
    command: "E S {output}*{slot} EDID}"
    params:
      - name: output
        type: integer
        enum: [1, 2]
        description: "1=RGB, 2=HDMI/DTP"
      - name: slot
        type: integer
        min: 59
        max: 64
        description: "User EDID slot (59-64)"
    response: "EdidS {output}*{slot}"

  - id: read_edid_hex
    label: Read EDID in Hex Format
    kind: query
    command: "E R {input} EDID}"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
    response: "{hex_data}"

  - id: view_edid_native_res
    label: View EDID Native Resolution
    kind: query
    command: "E N {input} EDID}"
    params:
      - name: input
        type: integer
        min: 1
        max: 6
    response: "{resolution}"

  - id: read_dip_switch_status
    label: Read DIP Switch Status
    kind: query
    command: "E 42STAT}"
    response: "Stat42*{phantom} {hdmi_mute} {vid_output_sel}"

  - id: read_audio_clipping
    label: Read Analog Audio Clipping Status
    kind: query
    command: "E 41STAT}"
    response: "Stat41*{state}"

Feedbacks

feedbacks:
  - id: input_selection
    type: enum
    values: [1, 2, 3, 4, 5, 6]
    description: "Current selected video/audio input"

  - id: video_mute_state
    type: enum
    values: [0, 1]
    description: "Video mute status (0=off, 1=on)"

  - id: audio_mute_state
    type: enum
    values: [0, 1]
    description: "Program audio mute status (0=off, 1=on)"

  - id: mic_mute_state
    type: enum
    values: [0, 1]
    description: "Mic mute status (0=off, 1=on)"

  - id: auto_switch_mode
    type: enum
    values: [0, 1, 2]
    description: "Auto-input switching mode (0=disabled, 1=highest priority, 2=lowest priority)"

  - id: volume_level
    type: integer
    min: 0
    max: 100
    description: "Current program volume level"

  - id: mic_level
    type: integer
    description: "Current mic level in dB (-18 to +60)"

  - id: talkover_threshold
    type: integer
    min: 0
    max: 30
    description: "Mic talk-over threshold in dB"

  - id: executive_mode
    type: enum
    values: [0, 1, 2]
    description: "Executive mode state (0=off, 1=front panel lockout, 2=mic lockout)"

  - id: input_hdcp_status
    type: enum
    values: [0, 1, 2]
    description: "Input HDCP status (0=no source, 1=HDCP compliant, 2=no HDCP)"

  - id: output_hdcp_status
    type: enum
    values: [0, 1, 2]
    description: "Output HDCP status (0=no sink, 1=sink with HDCP, 2=sink no HDCP)"

  - id: verbose_mode
    type: enum
    values: [0, 1, 2, 3]
    description: "Verbose mode (0=none, 1=verbose, 2=tagged, 3=verbose+tagged)"

Variables

variables:
  - id: program_volume
    type: integer
    min: 0
    max: 100
    unit: level
    default: 70
    set_command: "{value}V"

  - id: mic_gain
    type: integer
    min: 0
    max: 60
    unit: dB
    set_command: "16*{value}"

  - id: mic_attenuation
    type: integer
    min: 1
    max: 18
    unit: dB
    set_command: "16*{value}"

  - id: talkover_threshold
    type: integer
    min: 0
    max: 30
    unit: dB
    default: 8
    set_command: "{value}*2#"

  - id: ducking_level
    type: integer
    min: 0
    max: 30
    unit: dB
    default: 6
    set_command: "{value}*58#"

  - id: audio_input_gain
    type: integer
    description: "Per-input audio gain 0-24 dB or attenuation 1-18 dB. Combined range -18 to +24 dB."
    set_command: "{input}*{value}"

Events

events:
  - id: copyright_message
    description: "Sent on power-up when connected via RS-232. Contains firmware version, model, part number, and DIP switch settings."
    format: "(c) Copyright 20nn, Extron Electronics, MPS 602 SA, Vx.xx 60-1314-51] stat42*0*0*0]"

  - id: front_panel_event
    description: "Sent when a local event (front panel selection or adjustment) takes place. No host response required."

Macros

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

Safety

confirmation_required_for:
  - factory_reset
interlocks: []

Notes

  • SIS commands are not case-sensitive unless explicitly stated (audio gain/attenuation: uppercase G for gain, lowercase g for attenuation).
  • Responses terminate with CR/LF (represented as ] in command tables).
  • The } character represents a bare carriage return (hex 0D) in commands.
  • The character represents a space character in command/response examples.
  • Executive mode 1 locks all front panel functions; mode 2 locks mic mute and mic volume only.
  • Video breakaway to HDMI/DTP inputs (3-6) only available when input is configured for analog audio.
  • Program audio breakaway to HDMI/DTP inputs (3-6) only available when audio input format is set to analog.
  • EDID slots 1-56 are factory presets, 57 is VGA auto-detect, 58 is HDMI/DTP auto-detect, 59-64 are user-loaded.
  • Default EDID for RGB inputs: 1280x720 @ 60 Hz (slot 3). Default EDID for HDMI/DTP inputs: 720p @ 60 Hz (slot 50).
  • Error codes: E01=invalid channel, E10=invalid command, E13=invalid value (out of range).
  • Talk-over ducking range: 0-30 dB (default 6 dB). Threshold range: 0-30 dB (default 8 dB).

Provenance

source_domains:
  - media.extron.com
source_urls:
  - https://media.extron.com/public/download/files/userman/68-2358-01_D_MPS_602.pdf
retrieved_at: 2026-05-14T23:37:53.361Z
last_checked_at: 2026-06-02T22:07:07.038Z

Verification Summary

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

Known Gaps

- "no TCP/IP control documented; USB control details not specified beyond mention"
- "no multi-step sequences explicitly described in source"
- "USB control protocol details not specified beyond SIS acceptance"
- "firmware version compatibility not stated"

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