Summary

Extron DTP2 CrossPoint 82 is an 8x2 4K/60 scaling presentation matrix switcher with DTP2/XTP/HDBaseT twisted-pair extension, audio DSP, and CEC. This spec covers the Extron SIS (Simple Instruction Set) control protocol over RS-232, USB, Telnet, and SSH as documented in the vendor SIS reference. Commands use ASCII; the escape character (rendered "E" in the source) is 0x1B and lines terminate with CR (and CR/LF in responses).

Transport

protocols:
  - serial
  - tcp
serial:
  baud_rate: 9600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none  # UNRESOLVED: flow control not stated in source; only baud/parity/data/stop documented as defaults
addressing:
  port: null  # UNRESOLVED: control Telnet/SSH port not stated in source
  default_ip: 192.168.254.254
  default_subnet: 255.255.255.0
  default_gateway: 0.0.0.0
auth:
  type: password
  notes: "Factory-configured password for all accounts equals the device serial number; case-sensitive. After a factory reset (E ZQQQ }) the unit has no password. Login response is 'Login Administrator' or 'Login User'."

Traits

- routable        # inferred from input-to-output tie commands
- queryable       # inferred from numerous query commands (PWR, HDCP status, info, temperature, etc.)
- levelable       # inferred from contrast/brightness/detail/gain/group-master commands
- powerable       # inferred from power-save mode and DTP remote power commands

Actions

# NOTE: In all commands below, "E" represents the ASCII escape character (0x1B) per the source
# symbol definitions ("E = Escape"). "W" is interchangeable with E. "}" is CR (0x0D) with no LF.
# Responses terminate with "]" which is CR/LF (0x0D 0x0A). Spaces in command strings are literal
# spaces only where shown in the source tables. Upper- and lower-case are interchangeable.

# -------- Input Selection and Ties --------
- id: tie_video_and_audio
  label: Tie Video and Audio Input to Output
  kind: action
  command: "{input}*{output}!"
  params:
    - { name: input, type: integer, description: "1=DP1, 2-6=HDMI/DVI 2-6, 7-8=DTP2/XTP 7-8, 9=Aux audio (audio only)" }
    - { name: output, type: integer, description: "1=HDMI/DVI out 1 unscaled, 2=DTP2/XTP/HDBT out 2 scaled, 3=HDMI/DVI Loop out" }

- id: tie_video_only
  label: Tie Video Input to Output
  kind: action
  command: "{input}*{output}%"
  params:
    - { name: input, type: integer }
    - { name: output, type: integer }

- id: tie_audio_only
  label: Tie Audio Input to Output
  kind: action
  command: "{input}*{output}$"
  params:
    - { name: input, type: integer }
    - { name: output, type: integer }

- id: view_current_input
  label: View Current Input on Output
  kind: query
  command: "{output}!"
  params: [{ name: output, type: integer }]

- id: view_video_input
  label: View Video Input on Output
  kind: query
  command: "{output}%"
  params: [{ name: output, type: integer }]

- id: view_audio_input
  label: View Audio Input on Output
  kind: query
  command: "{output}$"
  params: [{ name: output, type: integer }]

# -------- Untie --------
- id: untie_all_outputs
  label: Untie All Outputs (Video and Audio)
  kind: action
  command: "0*!"
  params: []

- id: untie_one_output
  label: Untie One Output (Video and Audio)
  kind: action
  command: "0*{output}!"
  params: [{ name: output, type: integer }]

- id: untie_one_input
  label: Untie All Outputs From Input
  kind: action
  command: "{input}*0!"
  params: [{ name: input, type: integer }]

# -------- Loop Out Tie --------
- id: loop_out_set
  label: Set Loop Out Input
  kind: action
  command: "E!{input}LOUT\r"
  params: [{ name: input, type: integer }]

- id: loop_out_view
  label: View Loop Out Input
  kind: query
  command: "E LOUT\r"
  params: []

# -------- Video Input Name --------
- id: video_input_name_set
  label: Write Video Input Name
  kind: action
  command: "E I{input}*{name}VNAM\r"
  params:
    - { name: input, type: integer }
    - { name: name, type: string, description: "Up to 32 chars; excludes comma, *, |" }

- id: video_input_name_view
  label: View Video Input Name
  kind: query
  command: "E I{input}VNAM\r"
  params: [{ name: input, type: integer }]

# -------- Input Video Format --------
- id: input_video_format_view
  label: View Detected Input Video Format
  kind: query
  command: "{input}*\\"
  params: [{ name: input, type: integer }]

# -------- Input EDID --------
- id: edid_assign_input
  label: Assign EDID to Input
  kind: action
  command: "E A{input}*{edid}EDID\r"
  params:
    - { name: input, type: integer }
    - { name: edid, type: integer, description: "See EDID table; 10-76 default slots, 201-210 custom" }

- id: edid_view_input
  label: View EDID Assigned to Input
  kind: query
  command: "E A{input}EDID\r"
  params: [{ name: input, type: integer }]

- id: edid_save_from_output
  label: Save Output EDID to Custom Slot
  kind: action
  command: "E S{output}*{edid}EDID\r"
  params:
    - { name: output, type: integer }
    - { name: edid, type: integer }

- id: edid_view_native_resolution
  label: View EDID Native Resolution
  kind: query
  command: "E N{edid}EDID\r"
  params: [{ name: edid, type: integer }]

- id: edid_export
  label: Export EDID to File
  kind: action
  command: "E E{edid},{filename}EDID\r"
  params:
    - { name: edid, type: integer, description: "201-210 for export" }
    - { name: filename, type: string }

- id: edid_import
  label: Import EDID From File
  kind: action
  command: "E I{edid},{filename}EDID\r"
  params:
    - { name: edid, type: integer, description: "10-210 for import" }
    - { name: filename, type: string }

# -------- HDCP Authorized --------
- id: hdcp_input_enable
  label: Enable HDCP Support on Input
  kind: action
  command: "E E{input}*1HDCP\r"
  params: [{ name: input, type: integer }]

- id: hdcp_input_disable
  label: Disable HDCP Support on Input
  kind: action
  command: "E E{input}*0HDCP\r"
  params: [{ name: input, type: integer }]

- id: hdcp_input_view_support
  label: View HDCP Support Status on Input
  kind: query
  command: "E E{input}HDCP\r"
  params: [{ name: input, type: integer }]

# -------- Input Aspect Ratio --------
- id: aspect_fill
  label: Set Input Aspect Ratio to Fill
  kind: action
  command: "E{input}*1ASPR\r"
  params: [{ name: input, type: integer }]

- id: aspect_follow
  label: Set Input Aspect Ratio to Follow
  kind: action
  command: "E{input}*2ASPR\r"
  params: [{ name: input, type: integer }]

- id: aspect_view
  label: View Aspect Setting on Input
  kind: query
  command: "E{input}ASPR\r"
  params: [{ name: input, type: integer }]

# -------- Active Pixels and Lines --------
- id: active_pixels_view
  label: View Active Pixels on Input
  kind: query
  command: "E{input}APIX\r"
  params: [{ name: input, type: integer }]

- id: active_lines_view
  label: View Active Lines on Input
  kind: query
  command: "E{input}ALIN\r"
  params: [{ name: input, type: integer }]

# -------- Film Mode Detection --------
- id: film_mode_auto
  label: Enable Auto Film Mode Detection
  kind: action
  command: "E{input}*1FILM\r"
  params: [{ name: input, type: integer }]

- id: film_mode_off
  label: Disable Film Mode Detection
  kind: action
  command: "E{input}*0FILM\r"
  params: [{ name: input, type: integer }]

- id: film_mode_view
  label: View Film Mode Setting
  kind: query
  command: "E{input}FILM\r"
  params: [{ name: input, type: integer }]

# -------- Freeze (Output) --------
- id: freeze_enable
  label: Freeze Output
  kind: action
  command: "1*1F"
  params: []

- id: freeze_disable
  label: Unfreeze Output
  kind: action
  command: "1*0F"
  params: []

- id: freeze_view
  label: View Freeze Status
  kind: query
  command: "1F"
  params: []

# -------- Contrast --------
- id: contrast_set
  label: Set Contrast
  kind: action
  command: "E{input}*{value}CONT\r"
  params:
    - { name: input, type: integer }
    - { name: value, type: integer, description: "0-127 (default 64)" }

- id: contrast_increment
  label: Increment Contrast
  kind: action
  command: "E{input}+CONT\r"
  params: [{ name: input, type: integer }]

- id: contrast_decrement
  label: Decrement Contrast
  kind: action
  command: "E{input}-CONT\r"
  params: [{ name: input, type: integer }]

- id: contrast_view
  label: View Contrast
  kind: query
  command: "E{input}CONT\r"
  params: [{ name: input, type: integer }]

# -------- Brightness --------
- id: brightness_set
  label: Set Brightness
  kind: action
  command: "E{input}*{value}BRIT\r"
  params:
    - { name: input, type: integer }
    - { name: value, type: integer, description: "0-127 (default 64)" }

- id: brightness_increment
  label: Increment Brightness
  kind: action
  command: "E{input}+BRIT\r"
  params: [{ name: input, type: integer }]

- id: brightness_decrement
  label: Decrement Brightness
  kind: action
  command: "E{input}-BRIT\r"
  params: [{ name: input, type: integer }]

- id: brightness_view
  label: View Brightness
  kind: query
  command: "E{input}BRIT\r"
  params: [{ name: input, type: integer }]

# -------- Detail Filter --------
- id: detail_set
  label: Set Detail Level
  kind: action
  command: "E 1*{value}HDET\r"
  params: [{ name: value, type: integer, description: "0-127" }]

- id: detail_increment
  label: Increment Detail
  kind: action
  command: "E 1+HDET\r"
  params: []

- id: detail_decrement
  label: Decrement Detail
  kind: action
  command: "E 1-HDET\r"
  params: []

- id: detail_view
  label: View Detail Level
  kind: query
  command: "E 1HDET\r"
  params: []

# -------- Horizontal Position (Image) --------
- id: h_position_set
  label: Set Horizontal Position
  kind: action
  command: "E I1*{value}HCTR\r"
  params: [{ name: value, type: integer, description: "-4096 to 4096" }]

- id: h_position_increment
  label: Shift Image Right 1 Pixel
  kind: action
  command: "E I1+HCTR\r"
  params: []

- id: h_position_decrement
  label: Shift Image Left 1 Pixel
  kind: action
  command: "E I1-HCTR\r"
  params: []

- id: h_position_view
  label: View Horizontal Position
  kind: query
  command: "E I1 HCTR\r"
  params: []

# -------- Vertical Position (Image) --------
- id: v_position_set
  label: Set Vertical Position
  kind: action
  command: "E I1*{value}VCTR\r"
  params: [{ name: value, type: integer, description: "-2400 to 2400" }]

- id: v_position_increment
  label: Shift Image Down 1 Line
  kind: action
  command: "E I1+VCTR\r"
  params: []

- id: v_position_decrement
  label: Shift Image Up 1 Line
  kind: action
  command: "E I1-VCTR\r"
  params: []

- id: v_position_view
  label: View Vertical Position
  kind: query
  command: "E I1 VCTR\r"
  params: []

# -------- Horizontal Size (Image) --------
- id: h_size_set
  label: Set Horizontal Size
  kind: action
  command: "E I1*{value}HSIZ\r"
  params: [{ name: value, type: integer, description: "10 to 2x max output res" }]

- id: h_size_increment
  label: Widen Image 1 Pixel
  kind: action
  command: "E I1+HSIZ\r"
  params: []

- id: h_size_decrement
  label: Narrow Image 1 Pixel
  kind: action
  command: "E I1-HSIZ\r"
  params: []

- id: h_size_view
  label: View Horizontal Size
  kind: query
  command: "E I1 HSIZ\r"
  params: []

# -------- Vertical Size (Image) --------
- id: v_size_set
  label: Set Vertical Size
  kind: action
  command: "E I1*{value}VSIZ\r"
  params: [{ name: value, type: integer }]

- id: v_size_increment
  label: Taller Image 1 Line
  kind: action
  command: "E I1+VSIZ\r"
  params: []

- id: v_size_decrement
  label: Shorten Image 1 Line
  kind: action
  command: "E I1-VSIZ\r"
  params: []

- id: v_size_view
  label: View Vertical Size
  kind: query
  command: "E I1 VSIZ\r"
  params: []

# -------- Compound Image Position and Size --------
- id: compound_image_set
  label: Set Compound Image Position and Size
  kind: action
  command: "E 1,{h_pos}*{v_pos}*{h_size}*{v_size}XIMG\r"
  params:
    - { name: h_pos, type: integer }
    - { name: v_pos, type: integer }
    - { name: h_size, type: integer }
    - { name: v_size, type: integer }

- id: compound_image_view
  label: View Compound Image Position and Size
  kind: query
  command: "E 1 XIMG\r"
  params: []

# -------- Output Video Mute (per-output) --------
- id: output_video_unmute
  label: Unmute Output Video
  kind: action
  command: "{output}*0B"
  params: [{ name: output, type: integer }]

- id: output_video_mute
  label: Mute Output Video
  kind: action
  command: "{output}*1B"
  params: [{ name: output, type: integer }]

- id: output_video_mute_with_sync
  label: Mute Output Video and Sync
  kind: action
  command: "{output}*2B"
  params: [{ name: output, type: integer }]

- id: output_video_mute_view
  label: View Output Video Mute Status
  kind: query
  command: "{output}B"
  params: [{ name: output, type: integer }]

# -------- Video Mute All Outputs --------
- id: all_outputs_mute
  label: Mute Video All Outputs
  kind: action
  command: "1B"
  params: []

- id: all_outputs_mute_with_sync
  label: Mute Video and Sync All Outputs
  kind: action
  command: "2B"
  params: []

- id: all_outputs_unmute
  label: Unmute All Outputs
  kind: action
  command: "0B"
  params: []

- id: all_outputs_mute_view
  label: View Global Mute
  kind: query
  command: "B"
  params: []

# -------- Output Switcher Rate --------
- id: output_rate_set
  label: Set Output Rate (DTP2 Output 2)
  kind: action
  command: "E 1*{rate}RATE\r"
  params: [{ name: rate, type: integer, description: "EDID emulation table value" }]

- id: output_rate_view
  label: View Output Rate
  kind: query
  command: "E 1 RATE\r"
  params: []

# -------- Video Output Name --------
- id: video_output_name_set
  label: Write Video Output Name
  kind: action
  command: "E O{output}*{name}VNAM\r"
  params:
    - { name: output, type: integer }
    - { name: name, type: string }

- id: video_output_name_view
  label: View Video Output Name
  kind: query
  command: "E O{output}VNAM\r"
  params: [{ name: output, type: integer }]

# -------- HDMI Output Format --------
- id: hdmi_output_format_set
  label: Set HDMI Output Colorspace and Format
  kind: action
  command: "E{output}*{format}VTPO\r"
  params:
    - { name: output, type: integer }
    - { name: format, type: integer, description: "0=Auto,1=DVI,2=RGB Full,3=RGB Limited,5=YUV444 Lim,7=YUV422 Lim" }

- id: hdmi_output_format_view
  label: View HDMI Output Format
  kind: query
  command: "E{output}VTPO\r"
  params: [{ name: output, type: integer }]

- id: hdmi_output_format_view_auto
  label: View HDMI Output Auto Format Resolution
  kind: query
  command: "E{output}*VTPO\r"
  params: [{ name: output, type: integer }]

# -------- Video Bit Depth --------
- id: bit_depth_set
  label: Set Video Bit Depth
  kind: action
  command: "E V{output}*{depth}BITD\r"
  params:
    - { name: output, type: integer }
    - { name: depth, type: integer, description: "0=Auto,1=Force 8-bit (default)" }

- id: bit_depth_view
  label: View Video Bit Depth
  kind: query
  command: "E V{output}BITD\r"
  params: [{ name: output, type: integer }]

# -------- Power Save --------
- id: power_save_set
  label: Set Power Save Mode
  kind: action
  command: "E{mode}PSAV\r"
  params: [{ name: mode, type: integer, description: "0=Full (default),1=Lowest,2=Low" }]

- id: power_save_view
  label: View Power Save Mode
  kind: query
  command: "E PSAV\r"
  params: []

# -------- Screen Saver (DTP2 Output 2 only) --------
- id: screen_saver_mode_set
  label: Set Screen Saver Mode
  kind: action
  command: "E M1*{mode}SSAV\r"
  params: [{ name: mode, type: integer, description: "Default 1 (black)" }]

- id: screen_saver_mode_view
  label: View Screen Saver Mode
  kind: query
  command: "E M1 SSAV\r"
  params: []

- id: screen_saver_duration_set
  label: Set Screen Saver Timeout
  kind: action
  command: "E T1*{seconds}SSAV\r"
  params: [{ name: seconds, type: integer, description: "1-500 sec, 0=instant black, 501=never (default)" }]

- id: screen_saver_duration_view
  label: View Screen Saver Timeout
  kind: query
  command: "E T1 SSAV\r"
  params: []

- id: screen_saver_status_view
  label: View Screen Saver Status
  kind: query
  command: "E S1 SSAV\r"
  params: []

# -------- OSD Menu Duration --------
- id: osd_duration_set
  label: Set OSD Menu Duration
  kind: action
  command: "E{seconds}MDUR\r"
  params: [{ name: seconds, type: integer, description: "1-500 sec, 501=never" }]

- id: osd_duration_view
  label: View OSD Menu Duration
  kind: query
  command: "E MDUR\r"
  params: []

# -------- Logos: User-Supplied Image --------
- id: logo_image_assign
  label: Assign Logo Image File to Slot
  kind: action
  command: "E A{slot},{filename}LOGO\r"
  params:
    - { name: slot, type: integer, description: "1-16, 101=No Signal, 201=HDCP" }
    - { name: filename, type: string }

- id: logo_image_view
  label: View Logo File Assigned to Slot
  kind: query
  command: "E A{slot}LOGO\r"
  params: [{ name: slot, type: integer }]

# -------- Logos: Clear Slot --------
- id: logo_slot_clear
  label: Clear Logo Slot
  kind: action
  command: "E X3*{slot}PRST\r"
  params: [{ name: slot, type: integer }]

# -------- Logo Name --------
- id: logo_name_set
  label: Write Logo Name
  kind: action
  command: "E L{slot},{name}UNAM\r"
  params:
    - { name: slot, type: integer }
    - { name: name, type: string }

- id: logo_name_view
  label: View Logo Name
  kind: query
  command: "E L{slot}UNAM\r"
  params: [{ name: slot, type: integer }]

# -------- Logo Availability --------
- id: logo_availability_view
  label: View Logo Availability
  kind: query
  command: "E Q LOGO\r"
  params: []

# -------- Logo On or Off --------
- id: logo_disable
  label: Disable Current Logo
  kind: action
  command: "E E1*0 LOGO\r"
  params: []

- id: logo_enable
  label: Enable Logo From Slot
  kind: action
  command: "E E1*{slot}LOGO\r"
  params: [{ name: slot, type: integer }]

- id: logo_status_view
  label: View Logo Slot Enabled
  kind: query
  command: "E E 1 LOGO\r"
  params: []

# -------- Logo Horizontal Shift --------
- id: logo_h_shift_set
  label: Set Logo Horizontal Shift
  kind: action
  command: "E L{slot}*{pos}HCTR\r"
  params:
    - { name: slot, type: integer }
    - { name: pos, type: integer }

- id: logo_h_shift_increment
  label: Shift Logo Right 1 Pixel
  kind: action
  command: "E L{slot}+HCTR\r"
  params: [{ name: slot, type: integer }]

- id: logo_h_shift_decrement
  label: Shift Logo Left 1 Pixel
  kind: action
  command: "E L{slot}-HCTR\r"
  params: [{ name: slot, type: integer }]

- id: logo_h_shift_view
  label: View Logo Horizontal Shift
  kind: query
  command: "E L{slot}HCTR\r"
  params: [{ name: slot, type: integer }]

# -------- Logo Vertical Shift --------
- id: logo_v_shift_set
  label: Set Logo Vertical Shift
  kind: action
  command: "E L{slot}*{pos}VCTR\r"
  params:
    - { name: slot, type: integer }
    - { name: pos, type: integer, description: "+/- 2400 max" }

- id: logo_v_shift_increment
  label: Shift Logo Down 1 Pixel
  kind: action
  command: "E L{slot}+VCTR\r"
  params: [{ name: slot, type: integer }]

- id: logo_v_shift_decrement
  label: Shift Logo Up 1 Pixel
  kind: action
  command: "E L{slot}-VCTR\r"
  params: [{ name: slot, type: integer }]

- id: logo_v_shift_view
  label: View Logo Vertical Shift
  kind: query
  command: "E L{slot}VCTR\r"
  params: [{ name: slot, type: integer }]

# -------- Logo Key Effect --------
- id: logo_key_disabled
  label: Disable Logo Key Effect
  kind: action
  command: "E{slot}*0 LKEF\r"
  params: [{ name: slot, type: integer }]

- id: logo_key_transparency
  label: Enable Logo Key Transparency
  kind: action
  command: "E{slot}*1 LKEF\r"
  params: [{ name: slot, type: integer }]

- id: logo_key_rgb
  label: Enable Logo RGB Key
  kind: action
  command: "E{slot}*2 LKEF\r"
  params: [{ name: slot, type: integer }]

- id: logo_key_level
  label: Enable Logo Level Key
  kind: action
  command: "E{slot}*3 LKEF\r"
  params: [{ name: slot, type: integer }]

- id: logo_key_alpha
  label: Enable Logo Alpha Key
  kind: action
  command: "E{slot}*4 LKEF\r"
  params: [{ name: slot, type: integer }]

- id: logo_key_view
  label: View Logo Key Effect
  kind: query
  command: "E{slot}LKEF\r"
  params: [{ name: slot, type: integer }]

# -------- Logo Key Effect Level --------
- id: logo_key_level_set
  label: Set Logo Key Effect Level
  kind: action
  command: "E{slot}*{var}*{lvl}*LKEY\r"
  params:
    - { name: slot, type: integer }
    - { name: var, type: integer, description: "Key effect variable selector" }
    - { name: lvl, type: integer }

- id: logo_key_level_view
  label: View Logo Key Effect Level
  kind: query
  command: "E{slot}*{var}LKEY\r"
  params:
    - { name: slot, type: integer }
    - { name: var, type: integer }

# -------- Input Presets --------
- id: input_preset_recall
  label: Recall Input Preset
  kind: action
  command: "2*{preset}."
  params: [{ name: preset, type: integer, description: "1-16" }]

- id: input_preset_save
  label: Save Input Preset
  kind: action
  command: "2*{preset},"
  params: [{ name: preset, type: integer }]

- id: input_preset_delete
  label: Delete Input Preset
  kind: action
  command: "E X2*{preset}PRST\r"
  params: [{ name: preset, type: integer }]

# -------- Input Preset Name --------
- id: input_preset_name_set
  label: Write Input Preset Name
  kind: action
  command: "E 2*{preset},{name}PNAM\r"
  params:
    - { name: preset, type: integer }
    - { name: name, type: string }

- id: input_preset_name_view
  label: View Input Preset Name
  kind: query
  command: "E 2*{preset}PNAM\r"
  params: [{ name: preset, type: integer }]

# -------- Auto Memories --------
- id: auto_memory_enable
  label: Enable Auto Memory on Input
  kind: action
  command: "E{input}*1 AMEM\r"
  params: [{ name: input, type: integer }]

- id: auto_memory_disable
  label: Disable Auto Memory on Input
  kind: action
  command: "E{input}*0 AMEM\r"
  params: [{ name: input, type: integer }]

- id: auto_memory_view
  label: View Auto Memory Status
  kind: query
  command: "E{input}AMEM\r"
  params: [{ name: input, type: integer }]

# -------- Tie Presets --------
- id: tie_preset_save
  label: Save Tie Preset
  kind: action
  command: "5*{preset},"
  params: [{ name: preset, type: integer, description: "1-16" }]

- id: tie_preset_recall
  label: Recall Tie Preset
  kind: action
  command: "5*{preset}."
  params: [{ name: preset, type: integer }]

- id: tie_preset_clear
  label: Clear Tie Preset
  kind: action
  command: "E X5*{preset}PRST\r"
  params: [{ name: preset, type: integer }]

- id: tie_preset_name_set
  label: Write Tie Preset Name
  kind: action
  command: "E 5*{preset},{name}PNAM\r"
  params:
    - { name: preset, type: integer }
    - { name: name, type: string }

- id: tie_preset_name_view
  label: View Tie Preset Name
  kind: query
  command: "E 5*{preset}PNAM\r"
  params: [{ name: preset, type: integer }]

# -------- Audio Input Format --------
- id: audio_input_format_set
  label: Set Audio Input Format
  kind: action
  command: "E I{input}*{format}AFMT\r"
  params:
    - { name: input, type: integer }
    - { name: format, type: integer, description: "0=None,1=Analog Aux,2=LPCM-2Ch,3=Multi-Ch,4=LPCM-2Ch Auto Aux,5=Multi-Ch Auto Aux" }

- id: audio_input_format_view
  label: View Audio Input Format
  kind: query
  command: "E I{input}AFMT\r"
  params: [{ name: input, type: integer }]

# -------- Audio Input Name --------
- id: audio_input_name_set
  label: Write Audio Input Name
  kind: action
  command: "E I{audio_input}*{name}ANAM\r"
  params:
    - { name: audio_input, type: integer, description: "1-15 per audio input table" }
    - { name: name, type: string }

- id: audio_input_name_view
  label: View Audio Input Name
  kind: query
  command: "E I{audio_input}ANAM\r"
  params: [{ name: audio_input, type: integer }]

# -------- Audio Output Name --------
- id: audio_output_name_set
  label: Write Audio Output Name
  kind: action
  command: "E O{audio_output}*{name}ANAM\r"
  params:
    - { name: audio_output, type: integer, description: "1=HDMI1,2=TP2,3=Over DTP Analog,4=Line Out,5=Line Out 2,6=Line Out 3,7=Line Out 4" }
    - { name: name, type: string }

- id: audio_output_name_view
  label: View Audio Output Name
  kind: query
  command: "E O{audio_output}ANAM\r"
  params: [{ name: audio_output, type: integer }]

# -------- Audio Mute (output embedded) --------
- id: audio_output_mute_set
  label: Mute/Unmute Output Embedded Audio
  kind: action
  command: "{output}*{state}ZAmt"
  params:
    - { name: output, type: integer }
    - { name: state, type: integer, description: "0=Unmuted,1=Muted" }
  notes: "Z is rendered as escape character in source"

- id: audio_output_mute_view
  label: View Output Audio Mute Status
  kind: query
  command: "{output}*ZAmt"
  params: [{ name: output, type: integer }]

- id: audio_global_mute_view
  label: View Global Audio Mute Status
  kind: query
  command: "ZAmt"
  params: []

# -------- Configure Playback --------
- id: playback_assign_file
  label: Assign File to Playback Slot
  kind: action
  command: "E A{slot},{filename}CPLY\r"
  params:
    - { name: slot, type: integer, description: "1-16" }
    - { name: filename, type: string }

- id: playback_delay_set
  label: Set Playback Repeat Delay
  kind: action
  command: "E D{slot}*{seconds}CPLY\r"
  params:
    - { name: slot, type: integer }
    - { name: seconds, type: integer, description: "0=no delay, 1-300 seconds" }

- id: playback_delay_view
  label: View Playback Repeat Delay
  kind: query
  command: "E D{slot}CPLY\r"
  params: [{ name: slot, type: integer }]

- id: playback_name_set
  label: Write Playback File Name
  kind: action
  command: "E N{slot}*{name}CPLY\r"
  params:
    - { name: slot, type: integer }
    - { name: name, type: string }

- id: playback_name_view
  label: View Playback File Name
  kind: query
  command: "E N{slot}CPLY\r"
  params: [{ name: slot, type: integer }]

# -------- Playback Transport --------
- id: playback_transport_set
  label: Start/Stop Playback on Slot
  kind: action
  command: "E{slot}*{state}PLAY\r"
  params:
    - { name: slot, type: integer }
    - { name: state, type: integer, description: "0=Stop,1=Play" }

- id: playback_slot_status_view
  label: View Slot Playback Status
  kind: query
  command: "E{slot}PLAY\r"
  params: [{ name: slot, type: integer }]

- id: playback_global_status_view
  label: View Currently Playing Slot
  kind: query
  command: "E PLAY\r"
  params: []

# -------- Test Pattern --------
- id: test_pattern_set
  label: Set Test Pattern
  kind: action
  command: "E 1*{pattern}TEST\r"
  params: [{ name: pattern, type: integer, description: "0=Off,1=Crop,2=Alt pixels,3=Crosshatch,4=Color bars,5=Grayscale,6=Audio test" }]

- id: test_pattern_view
  label: View Test Pattern
  kind: query
  command: "E 1 TEST\r"
  params: []

# -------- Switch Effects --------
- id: switch_effect_set
  label: Set Output Switch Effect
  kind: action
  command: "E O1*{effect}SWEF\r"
  params: [{ name: effect, type: integer, description: "0=Cut through black,1=Fade through black,2=Seamless fade (default),3=Seamless cut" }]

- id: switch_effect_view
  label: View Output Switch Effect
  kind: query
  command: "E O1 SWEF\r"
  params: []

# -------- Upstream Video Switch Effects --------
- id: upstream_effect_cut
  label: Set Upstream Switch Effect Off (Cut)
  kind: action
  command: "E U1*0 SWEF\r"
  params: []

- id: upstream_effect_seamless
  label: Set Upstream Seamless Cut
  kind: action
  command: "E U1*1 SWEF\r"
  params: []

- id: upstream_effect_view
  label: View Upstream Switch Effect
  kind: query
  command: "E U1 SWEF\r"
  params: []

# -------- Video Signal Presence --------
- id: video_signal_presence_view
  label: View Video Signal Presence All Inputs
  kind: query
  command: "E 0 LS\r"
  params: []

# -------- Front Panel Lock --------
- id: front_panel_lock_set
  label: Set Front Panel Lock Mode
  kind: action
  command: "{mode}X"
  params: [{ name: mode, type: integer, description: "1=Full lockout,2=Input/logos/volume,3=Input/logos,4=Volume only" }]

- id: front_panel_unlock
  label: Disable Front Panel Lock
  kind: action
  command: "0X"
  params: []

- id: front_panel_lock_view
  label: View Front Panel Lock Mode
  kind: query
  command: "X"
  params: []

# -------- HDCP Output Mode --------
- id: hdcp_output_mode_set
  label: Set HDCP Output Mode
  kind: action
  command: "E S{output}*{mode}HDCP\r"
  params:
    - { name: output, type: integer }
    - { name: mode, type: integer, description: "0=Off,1=Follow input,2=Encrypt output,3=Follow input continuous,4=Encrypt output continuous" }

- id: hdcp_output_mode_view
  label: View HDCP Output Mode
  kind: query
  command: "E S{output}HDCP\r"
  params: [{ name: output, type: integer }]

# -------- HDCP Notification --------
- id: hdcp_notification_set
  label: Set HDCP Notification Mode
  kind: action
  command: "E N{output}*{mode}HDCP\r"
  params:
    - { name: output, type: integer }
    - { name: mode, type: integer, description: "0=Black,1=Green w/ OSD bug,2=User image" }

- id: hdcp_notification_view
  label: View HDCP Notification Mode
  kind: query
  command: "E N{output}HDCP\r"
  params: [{ name: output, type: integer }]

# -------- HDCP Status --------
- id: hdcp_input_status_query
  label: Query Input HDCP Status
  kind: query
  command: "E I{input}HDCP\r"
  params: [{ name: input, type: integer }]

- id: hdcp_output_status_query
  label: Query Output HDCP Status
  kind: query
  command: "E O{output}HDCP\r"
  params: [{ name: output, type: integer }]

# -------- Twisted Pair Protocol --------
- id: tp_input_protocol_set
  label: Set Input TP Protocol
  kind: action
  command: "E I{input}*{protocol}HDBT\r"
  params:
    - { name: input, type: integer, description: "7 or 8 only" }
    - { name: protocol, type: integer, description: "0=DTP,1=XTP" }

- id: tp_input_protocol_view
  label: View Input TP Protocol
  kind: query
  command: "E I{input}HDBT\r"
  params: [{ name: input, type: integer }]

- id: tp_output_protocol_set
  label: Set Output 2 TP Protocol
  kind: action
  command: "E O 2*{protocol}HDBT\r"
  params: [{ name: protocol, type: integer, description: "0=DTP,1=XTP,2=HDBaseT" }]

- id: tp_output_protocol_view
  label: View Output 2 TP Protocol
  kind: query
  command: "E O 2 HDBT\r"
  params: []

# -------- DTP Remote Power --------
- id: dtp_input_power_set
  label: Set Input DTP Remote Power
  kind: action
  command: "E I{input}*{power}RPWR\r"
  params:
    - { name: input, type: integer, description: "7 or 8 only" }
    - { name: power, type: integer, description: "0=None,1=DTP 12VDC,2=DTP2 48VDC" }

- id: dtp_input_power_view
  label: View Input DTP Remote Power
  kind: query
  command: "E I{input}RPWR\r"
  params: [{ name: input, type: integer }]

- id: dtp_output_power_set
  label: Set Output 2 DTP Remote Power
  kind: action
  command: "E O 2*{power}RPWR\r"
  params: [{ name: power, type: integer }]

- id: dtp_output_power_view
  label: View Output 2 DTP Remote Power
  kind: query
  command: "E O 2 RPWR\r"
  params: []

# -------- Resets --------
- id: reset_partial
  label: System Reset (Partial)
  kind: action
  command: "E ZXXX\r"
  params: []
  notes: "Resets all device settings to factory defaults"

- id: reset_absolute
  label: Absolute System Reset
  kind: action
  command: "E ZQQQ\r"
  params: []
  notes: "Resets all settings + DHCP/IP; removes factory serial-number passwords"

- id: reset_absolute_retain_ip
  label: Absolute System Reset (Retain IP)
  kind: action
  command: "E ZY\r"
  params: []
  notes: "Like ZQQQ but retains IP/subnet/gateway/DHCP/port mapping"

- id: erase_file
  label: Erase User File
  kind: action
  command: "E{filename}EF\r"
  params: [{ name: filename, type: string }]

- id: erase_current_dir
  label: Erase Current Directory and Files
  kind: action
  command: "E /EF\r"
  params: []

- id: erase_current_dir_recursive
  label: Erase Current Directory and Subdirectories
  kind: action
  command: "E //EF\r"
  params: []

- id: erase_flash
  label: Erase Flash Memory
  kind: action
  command: "E ZFFF\r"
  params: []

# -------- Serial Port Configuration --------
- id: serial_port_set
  label: Set Serial Port Parameters
  kind: action
  command: "E{port}*{baud},{parity},{data},{stop}CP\r"
  params:
    - { name: port, type: integer, description: "1=Remote 3-pole, 7=UART TP IN7, 8=UART TP IN8, 9=UART TP OUT2" }
    - { name: baud, type: integer, description: "300-115200" }
    - { name: parity, type: string, description: "O/E/N/M/S (first letter)" }
    - { name: data, type: integer, description: "7 or 8" }
    - { name: stop, type: integer, description: "1 or 2" }

- id: serial_port_view
  label: View Serial Port Parameters
  kind: query
  command: "E{port}CP\r"
  params: [{ name: port, type: integer }]

- id: uart_start_set
  label: Set UART Port Start Point
  kind: action
  command: "E{port}MD\r"
  params: [{ name: port, type: integer, description: "Default 2000" }]

- id: uart_start_view
  label: View UART Port Start Point
  kind: query
  command: "E MD\r"
  params: []

# -------- Backup --------
- id: config_backup
  label: Backup Unit Configuration
  kind: action
  command: "E 1*{name}XF\r"
  params: [{ name: name, type: string, description: "Backup file name" }]

# -------- Information Requests --------
- id: info_general
  label: View General Input Information
  kind: query
  command: "{input}*I"
  params: [{ name: input, type: integer }]

- id: info_model_name
  label: Query Model Name
  kind: query
  command: "1I"
  params: []

- id: info_firmware_version
  label: Query Firmware Version
  kind: query
  command: "Q"
  params: []

- id: info_firmware_full
  label: Query Full Firmware Version with Build
  kind: query
  command: "*Q"
  params: []

- id: info_part_number
  label: Query Part Number
  kind: query
  command: "N"
  params: []

- id: info_description
  label: Query Unit Description
  kind: query
  command: "2I"
  params: []

- id: info_temperature
  label: View Internal Temperature (Celsius)
  kind: query
  command: "E 20 STAT\r"
  params: []

# -------- Verbose Mode --------
- id: verbose_mode_set
  label: Set Verbose Mode
  kind: action
  command: "E{mode}CV\r"
  params: [{ name: mode, type: integer, description: "0=None,1=Verbose,2=Tagged queries,3=Verbose+tagged" }]

- id: verbose_mode_view
  label: View Verbose Mode
  kind: query
  command: "E CV\r"
  params: []

# -------- IP Setup --------
- id: dhcp_set
  label: Set DHCP Mode
  kind: action
  command: "E{state}DH\r"
  params: [{ name: state, type: integer, description: "0=Disabled (default),1=Enabled" }]

- id: dhcp_view
  label: View DHCP Mode
  kind: query
  command: "E DH\r"
  params: []

- id: ip_address_set
  label: Set IP Address
  kind: action
  command: "E{ip}CI\r"
  params: [{ name: ip, type: string, description: "nnn.nnn.nnn.nnn" }]

- id: ip_address_view
  label: View IP Address
  kind: query
  command: "E CI\r"
  params: []

- id: subnet_mask_set
  label: Set Subnet Mask
  kind: action
  command: "E{mask}CS\r"
  params: [{ name: mask, type: string }]

- id: subnet_mask_view
  label: View Subnet Mask
  kind: query
  command: "E CS\r"
  params: []

- id: gateway_set
  label: Set Gateway IP Address
  kind: action
  command: "E{gateway}CG\r"
  params: [{ name: gateway, type: string }]

- id: gateway_view
  label: View Gateway IP Address
  kind: query
  command: "E CG\r"
  params: []

# -------- Port Timeout --------
- id: port_timeout_set
  label: Set Current Connection Port Timeout
  kind: action
  command: "E 0*{timeout}TC\r"
  params: [{ name: timeout, type: integer, description: "Tens of seconds; 1-65000" }]

- id: port_timeout_view
  label: View Current Port Timeout
  kind: query
  command: "E 0 TC\r"
  params: []

- id: port_timeout_global_set
  label: Set Global Port Timeout
  kind: action
  command: "E 1*{timeout}TC\r"
  params: [{ name: timeout, type: integer }]

- id: port_timeout_global_view
  label: View Global Port Timeout
  kind: query
  command: "E 1 TC\r"
  params: []

- id: mac_address_view
  label: View MAC Address
  kind: query
  command: "E CH\r"
  params: []

# -------- Combined LAN IP/Subnet/Gateway --------
- id: lan_ip_combined_set
  label: Set IP/Subnet/Gateway Combined
  kind: action
  command: "E 1*{ip}/{prefix}*{gateway}CISG\r"
  params:
    - { name: ip, type: string }
    - { name: prefix, type: integer, description: "0-31" }
    - { name: gateway, type: string }

- id: lan_ip_combined_view
  label: View Combined IP Settings
  kind: query
  command: "E 1 CISG\r"
  params: []

- id: network_reboot
  label: Reboot Networking
  kind: action
  command: "E 2BOOT\r"
  params: []
  notes: "Required for TCP/IP setting changes to take effect"

# -------- Open Connections --------
- id: open_connections_view
  label: Query Number of Open Connections
  kind: query
  command: "E CC\r"
  params: []

# -------- Unit Name --------
- id: unit_name_set
  label: Set Unit Name
  kind: action
  command: "E{name}CN\r"
  params: [{ name: name, type: string, description: "Up to 63 chars: A-Z, 0-9, hyphen; must start with letter" }]

- id: unit_name_reset_default
  label: Reset Unit Name to Factory Default
  kind: action
  command: "E CN\r"
  params: []
  notes: "Source documents same syntax as view; empty name parameter triggers reset"

- id: unit_name_view
  label: View Unit Name
  kind: query
  command: "E CN\r"
  params: []

# -------- Echo for SIS over SSH --------
- id: ssh_echo_enable
  label: Enable Echo (SSH)
  kind: action
  command: "E 1 ECHO\r"
  params: []

- id: ssh_echo_disable
  label: Disable Echo (SSH, Telnet-like)
  kind: action
  command: "E 0 ECHO\r"
  params: []

- id: ssh_echo_view
  label: View Echo Status
  kind: query
  command: "E ECHO\r"
  params: []

# -------- Passwords --------
- id: admin_password_set
  label: Set Administrator Password
  kind: action
  command: "E{password}CA\r"
  params: [{ name: password, type: string, description: "1-128 chars; no pipe" }]

- id: admin_password_view
  label: View Administrator Password (Masked)
  kind: query
  command: "E CA\r"
  params: []

- id: admin_password_clear
  label: Clear Administrator Password
  kind: action
  command: "E CA\r"
  params: []
  notes: "Empty password parameter clears admin password (also clears user password)"

- id: user_password_set
  label: Set User Password
  kind: action
  command: "E{password}CU\r"
  params: [{ name: password, type: string }]

- id: user_password_view
  label: View User Password (Masked)
  kind: query
  command: "E CU\r"
  params: []

- id: user_password_clear
  label: Clear User Password
  kind: action
  command: "E CU\r"
  params: []
  notes: "Empty password parameter clears user password"

# -------- Group Master SIS --------
- id: group_master_limits_view
  label: View Group Master Soft Limits
  kind: query
  command: "E L{group}GRPM\r"
  params: [{ name: group, type: integer, description: "1-10 or alias in braces" }]

- id: group_master_fader_set
  label: Set Group Fader Value
  kind: action
  command: "E D{group}*{value}GRPM\r"
  params:
    - { name: group, type: integer }
    - { name: value, type: integer, description: "0.1 dB resolution x10" }

- id: group_master_fader_view
  label: View Group Fader Value
  kind: query
  command: "E D{group}GRPM\r"
  params: [{ name: group, type: integer }]

- id: group_master_fader_increment
  label: Increment Group Fader
  kind: action
  command: "E D{group}*{inc}+GRPM\r"
  params:
    - { name: group, type: integer }
    - { name: inc, type: integer }

- id: group_master_fader_decrement
  label: Decrement Group Fader
  kind: action
  command: "E D{group}*{dec}-GRPM\r"
  params:
    - { name: group, type: integer }
    - { name: dec, type: integer }

- id: group_master_mute
  label: Mute Group
  kind: action
  command: "E D{group}*1 GRPM\r"
  params: [{ name: group, type: integer }]

- id: group_master_unmute
  label: Unmute Group
  kind: action
  command: "E D{group}*0 GRPM\r"
  params: [{ name: group, type: integer }]

- id: group_master_mute_view
  label: View Group Mute Status
  kind: query
  command: "E D{group}GRPM\r"
  params: [{ name: group, type: integer }]
  notes: "Same syntax as view fader value; response context distinguishes"

# -------- DSP SIS (output 2 only) --------
- id: dsp_gain_set
  label: Set Gain Level on OID
  kind: action
  command: "E G{oid}*{value}AU\r"
  params:
    - { name: oid, type: integer, description: "See OID table 30000-30017, 40100-40105, 60000-60011" }
    - { name: value, type: integer, description: "Level in 0.1 dB steps (x10)" }

- id: dsp_gain_view
  label: View Gain Level on OID
  kind: query
  command: "E G{oid}AU\r"
  params: [{ name: oid, type: integer }]

- id: dsp_audio_mute
  label: Mute Audio on OID
  kind: action
  command: "E M{oid}*1 AU\r"
  params: [{ name: oid, type: integer }]

- id: dsp_audio_unmute
  label: Unmute Audio on OID
  kind: action
  command: "E M{oid}*0 AU\r"
  params: [{ name: oid, type: integer }]

- id: dsp_audio_mute_view
  label: View Audio Mute Status on OID
  kind: query
  command: "E M{oid}AU\r"
  params: [{ name: oid, type: integer }]

- id: dsp_phantom_enable
  label: Enable Phantom Power on OID
  kind: action
  command: "E Z{oid}*1 AU\r"
  params: [{ name: oid, type: integer, description: "Only Mic/Line Inputs 1 and 2" }]

- id: dsp_phantom_disable
  label: Disable Phantom Power on OID
  kind: action
  command: "E Z{oid}*0 AU\r"
  params: [{ name: oid, type: integer }]

- id: dsp_phantom_view
  label: View Phantom Power Status on OID
  kind: query
  command: "E Z{oid}AU\r"
  params: [{ name: oid, type: integer }]

# -------- CEC: Enable/Disable --------
- id: cec_output_mode_set
  label: Enable/Disable CEC on Output
  kind: action
  command: "E O{output}*{mode}CCEC\r"
  params:
    - { name: output, type: integer }
    - { name: mode, type: integer, description: "0=Disabled,2=Insertion unidirectional,4=Bidirectional" }

- id: cec_all_outputs_mode_set
  label: Enable/Disable CEC on All Outputs
  kind: action
  command: "E O{mode}*CCEC\r"
  params: [{ name: mode, type: integer }]

- id: cec_output_status_view
  label: View Output CEC Status
  kind: query
  command: "E O{output}CCEC\r"
  params: [{ name: output, type: integer }]

# -------- CEC: Send Commands --------
- id: cec_send_predefined
  label: Send CEC Predefined Command to Output
  kind: action
  command: "E O{output}*{command}DCEC\r"
  params:
    - { name: output, type: integer }
    - { name: command, type: string, description: 'Quoted predefined action e.g. "PwrOn", "PwrOff", "ShowMe"' }

- id: cec_send_raw
  label: Send CEC Raw Data to Output
  kind: action
  command: "E O{output}*{data}DCEC\r"
  params:
    - { name: output, type: integer }
    - { name: data, type: string, description: 'Percent-hex bytes e.g. %2A%07%FF' }

- id: cec_broadcast_predefined
  label: Broadcast CEC Predefined Command
  kind: action
  command: "E O{output}*15*{command}DCEC\r"
  params:
    - { name: output, type: integer }
    - { name: command, type: string }

- id: cec_broadcast_raw
  label: Broadcast CEC Raw Data
  kind: action
  command: "E O{output}*15*{data}DCEC\r"
  params:
    - { name: output, type: integer }
    - { name: data, type: string }

# -------- CEC: Other --------
- id: cec_list_devices
  label: List CEC Device Presence
  kind: query
  command: "E LQ!CEC\r"
  params: []

- id: cec_rediscover_output
  label: Rediscover CEC Device on Output
  kind: action
  command: "E O{output}QCEC\r"
  params: [{ name: output, type: integer }]

- id: cec_physical_address_view
  label: View CEC Physical Address of Output
  kind: query
  command: "E O{output}PCEC\r"
  params: [{ name: output, type: integer }]

Feedbacks

- id: tie_response
  type: string
  description: "Response to tie commands: 'In{input}*{output}' (audio+video), '*Vid' suffix for video, '*Aud' suffix for audio"

- id: untie_response
  type: string
  description: "Response to untie: 'In00 All', 'Out{output} In00 All', 'Out00 In{input} All'"

- id: video_mute_status
  type: enum
  values: [0, 1, 2]
  description: "0=Unmuted, 1=Muted video to black, 2=Muted video and sync"

- id: input_video_signal_type
  type: enum
  values: [0, 1, 2, 3]
  description: "0=No signal, 1=DVI, 2=HDMI, 3=DisplayPort"

- id: hdcp_status
  type: enum
  values: [0, 1, 2]
  description: "0=No sink/source detected, 1=Detected but no HDCP, 2=Detected with HDCP"

- id: hdcp_output_mode
  type: enum
  values: [0, 1, 2, 3, 4]
  description: "0=Off, 1=Follow input, 2=Encrypt output, 3=Follow input continuous, 4=Encrypt output continuous"

- id: aspect_ratio_setting
  type: enum
  values: [1, 2]
  description: "1=Fill, 2=Follow"

- id: power_save_mode
  type: enum
  values: [0, 1, 2]
  description: "0=Full power (default), 1=Lowest, 2=Low"

- id: front_panel_lock_status
  type: enum
  values: [0, 1, 2, 3, 4]
  description: "0=Off, 1=Full lockout, 2=Input/logos/volume, 3=Input/logos, 4=Volume only"

- id: video_signal_presence
  type: bitmap
  description: "Per-input signal status: 0=No signal, 1=Signal detected"

- id: bit_depth_setting
  type: enum
  values: [0, 1]
  description: "0=Auto, 1=Force 8-bit (default)"

- id: tp_protocol_setting
  type: enum
  values: [0, 1, 2]
  description: "0=DTP (default), 1=XTP, 2=HDBaseT (output only)"

- id: dtp_remote_power_status
  type: enum
  values: [0, 1, 2]
  description: "0=None (default), 1=DTP 12VDC, 2=DTP2 48VDC"

- id: cec_status
  type: enum
  values: [0, 2, 3, 4, 5]
  description: "0=Disabled, 2=Mode 2 no device, 3=Mode 2 with device, 4=Mode 4 no device, 5=Mode 4 with device"

- id: cec_send_result
  type: enum
  values: [0, 1, 2]
  description: "0=Failed NAK, 1=Success ACK, 2=Unable to send"

- id: verbose_mode_state
  type: enum
  values: [0, 1, 2, 3]
  description: "0=None (LAN default), 1=Verbose (RS-232/USB default), 2=Tagged queries, 3=Verbose+tagged"

- id: model_name
  type: string
  description: "DTP2 CrossPoint 82 / DTP2 CrossPoint 82 IPCP SA / DTP2 CrossPoint 82 IPCP MA 70"

- id: firmware_version
  type: string
  description: "Format: n.nn or n.nn.nnnn with build number"

- id: part_number
  type: string
  description: "60-1615-01 (base), 60-1615-02 (IPCP SA), or full IPCP MA 70 part number"

- id: internal_temperature_celsius
  type: integer
  description: "Two digits zero-padded; degrees Celsius"

- id: mac_address
  type: string
  description: "Six pairs of hexadecimal characters"

- id: open_connections_count
  type: integer
  description: "0 through maximum open connections"

- id: dhcp_state
  type: enum
  values: [0, 1]
  description: "0=Disabled (default), 1=Enabled"

- id: login_response
  type: enum
  values: ["Login Administrator", "Login User"]
  description: "Returned after successful password entry"

- id: error_code
  type: enum
  values: ["E01", "E10", "E11", "E12", "E13", "E14", "E17", "E22", "E24", "E25", "E28", "E33"]
  description: "E01=Invalid input, E10=Invalid command, E11=Invalid preset, E12=Invalid port, E13=Invalid value, E14=Not valid for configuration, E17=Invalid command for signal type, E22=Busy, E24=Privilege violation, E25=Device not present, E28=Bad filename, E33=Bad file type for logo"

Variables

- id: contrast
  type: integer
  description: "Per-input contrast 0-127 (default 64)"

- id: brightness
  type: integer
  description: "Per-input brightness 0-127 (default 64)"

- id: detail_filter
  type: integer
  description: "Sharpness 0-127 (default 64)"

- id: gain_level
  type: integer
  description: "DSP gain in 0.1 dB resolution (x10 multiplier), per OID"

- id: group_master_fader
  type: integer
  description: "Group master fader value 0.1 dB resolution (x10)"

- id: screen_saver_timeout
  type: integer
  description: "1-500 sec, 0=instant, 501=never (default)"

- id: osd_menu_duration
  type: integer
  description: "1-500 sec, 501=never"

- id: port_timeout
  type: integer
  description: "Tens of seconds; 1-65000 (default 30 = 300 sec)"

- id: ip_address
  type: string
  description: "nnn.nnn.nnn.nnn (default 192.168.254.254)"

- id: subnet_mask
  type: string
  description: "nnn.nnn.nnn.nnn (default 255.255.255.0)"

- id: gateway_address
  type: string
  description: "nnn.nnn.nnn.nnn (default 0.0.0.0)"

- id: unit_name
  type: string
  description: "Up to 63 chars A-Z 0-9 hyphen"

Events

- id: reconfig
  description: "Sent when a change in current input frequency is detected"
  payload: "Reconfig"

- id: hot_plug_output
  description: "Hot plug event on an output"
  payload: "HplgO{output}*{state}"
  fields:
    - { name: output, type: integer }
    - { name: state, type: integer, description: "1=assertion, 0=de-assertion" }

- id: hdcp_input_change
  description: "Change in HDCP status of an input"
  payload: "HdcpI{input}*{status}"
  fields:
    - { name: input, type: integer }
    - { name: status, type: integer }

- id: hdcp_output_change
  description: "Change in HDCP status of an output"
  payload: "HdcpO{output}*{status}"
  fields:
    - { name: output, type: integer }
    - { name: status, type: integer }

- id: sync_change
  description: "Sync detected or removed on any input (per-input bitmap)"
  payload: "IN00 {status}*...*{status}"
  fields:
    - { name: status, type: bitmap, description: "Per-input video signal status 0/1" }

- id: cec_received_data
  description: "Asynchronous CEC received data in bidirectional mode"
  payload: "DcecO{output}*{address_byte}{data}*{result}"
  fields:
    - { name: output, type: integer }
    - { name: address_byte, type: string }
    - { name: data, type: string }
    - { name: result, type: integer }

Macros

# UNRESOLVED: no multi-step macros documented in source

Safety

confirmation_required_for:
  - reset_absolute
  - reset_absolute_retain_ip
  - reset_partial
  - erase_flash
  - erase_current_dir
  - erase_current_dir_recursive
interlocks:
  - id: network_reboot_required
    description: "TCP/IP setting changes (DHCP, IP, subnet, gateway, port mapping) do not take effect until 'E 2BOOT }' is issued"
  - id: admin_password_prereq_for_user
    description: "A user password cannot be assigned if no administrative password exists (E14 error returned)"
  - id: tp_remote_power_mode_lock
    description: "Remote power is forced to Off in HDBT and XTP modes; attempting to change while not in DTP mode returns E14"
notes:
  - "Factory-configured passwords for all accounts equal the device serial number; case-sensitive"
  - "Full factory reset (E ZQQQ }) removes serial-number passwords; unit then has no password"
  - "DisplayPort Input 1 has HDCP Authorized permanently enabled"
# UNRESOLVED: no electrical or voltage interlocks documented (power/current ratings not in this excerpt)

Notes

  • All command strings use the Extron SIS convention. In the source the escape character is rendered as "E"; the actual byte is 0x1B. The character "W" is interchangeable with E. The character "}" denotes carriage return (0x0D) with no LF; "]" denotes CR/LF in responses. The pipe "|" can substitute for "}". Spaces shown in the command tables are literal.
  • Response format varies with verbose mode (E CV}): mode 0 returns terse responses; modes 1-3 prepend the command mnemonic (e.g., "Vmt", "HdcpE", "GrpmD"). In verbose response mode the device also emits unsolicited responses for setting changes triggered by signal changes or other interfaces.
  • Audio DSP and Group Master commands apply only to the DTP2/XTP/HDBT output (output 2).
  • CEC bidirectional mode (4) generates asynchronous "DcecO..." messages from sink devices; control software must parse them out-of-band.
  • Three model variants share this command set: base (60-1615-01), IPCP SA (60-1615-02), and IPCP MA 70.
  • The "Z" character in Audio Mute commands ({output}*{state}ZAmt, ZAmt) is rendered ambiguously in the source PDF extraction. Implementers should consult the original Extron SIS reference for the exact byte; based on context it appears to be a literal letter Z rather than escape.

Provenance

source_domains:
  - extron.com
  - media.extron.com
  - manua.ls
  - manuals.ca
source_urls:
  - https://www.extron.com/download/files/userman/68-3438-01_D_DTP_2_CrossPoint_82.pdf
  - https://media.extron.com/public/download/files/userman/68-3438-50_A_DTP2_CP_82_SUG.pdf
  - https://media.extron.com/public/download/files/userman/IN180x_and_DTP2_CrossPoint_82.pdf
  - https://www.manua.ls/extron/dtp2-crosspoint-82/manual
  - https://www.manuals.ca/extron/dtp2-crosspoint-82/manual
retrieved_at: 2026-05-17T16:50:14.802Z
last_checked_at: 2026-06-02T22:06:59.722Z

Verification Summary

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

Known Gaps

- "control TCP port (Telnet/SSH) not stated explicitly in source; UART pass-through start port is 2000 for over-TP UART, which is a different feature"
- "flow control not stated in source; only baud/parity/data/stop documented as defaults"
- "control Telnet/SSH port not stated in source"
- "no multi-step macros documented in source"
- "no electrical or voltage interlocks documented (power/current ratings not in this excerpt)"
- "control TCP port (Telnet/SSH) — source describes Telnet/SSH access and a UART pass-through port (default 2000) but does not state the SIS control port number"
- "serial flow control — only baud/parity/data/stop documented as defaults"
- "firmware version compatibility ranges not stated in source"
- "full set of CEC predefined command strings — source lists examples (\"PwrOn\", \"PwrOff\", \"ShowMe\") but not the complete dictionary"
- "command response timing/latency characteristics not stated"
- "per-block soft limit ranges for individual OIDs not enumerated in this excerpt"

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