Summary

This spec covers the ASCII control API for the Wyrestorm H2X/H2XC matrix switcher family (MX-1010-HDBT-H2X, MX-1616-HDBT-H2X, MX-1010-H2XC, MX-1616-H2XC) over RS-232 and IP. Commands include video/audio routing, audio gain/mute/EQ/delay, EDID/HDCP configuration, CEC display power, presets, and diagnostic queries. A binary HDBaseT passthrough frame is also documented for relaying commands to remote devices.

Transport

protocols:
  - tcp
  - serial
addressing:
  port: 23
serial:
  baud_rate: 57600
  data_bits: 8
  parity: none
  stop_bits: 1
  flow_control: none
auth:
  type: none  # inferred: no auth procedure in source

Traits

- powerable       # inferred from CEC display power on/off commands
- routable        # inferred from SW (video) and AUDIOSW (audio) routing commands
- queryable       # inferred from extensive GET-status query commands
- levelable       # inferred from volume/gain/EQ control commands

Actions

# ---- Section 4.1 Audio/Video Output Control ----

- id: sw_set
  label: Switch Video Input to Output
  kind: action
  command: "SET SW{in} {out}<CR><LF>"
  params:
    - name: in
      type: string
      description: Video input (in1~in16)
    - name: out
      type: string
      description: Video output (out1~out16, all)

- id: mp_get
  label: Query Video Input Mapping
  kind: query
  command: "GET MP{out}<CR><LF>"
  params:
    - name: out
      type: string
      description: Video output (out1~out16, all)

- id: audiosw_m_set
  label: Configure Audio Switch Mode
  kind: action
  command: "SET AUDIOSW_M {prm}<CR><LF>"
  params:
    - name: prm
      type: enum
      values: [on, off]
      description: "on = audio independent from video; off = audio follows video"

- id: audiosw_m_get
  label: Query Audio Switch Mode
  kind: query
  command: "GET AUDIOSW_M<CR><LF>"
  params: []

- id: audiosw_set
  label: Switch Audio Input to Output
  kind: action
  command: "SET AUDIOSW{in} {out}<CR><LF>"
  params:
    - name: in
      type: string
      description: "Audio input (hdmi1~hdmi16, spdif1~spdif16, arc1~arc16)"
    - name: out
      type: string
      description: "Audio output (audioout1~audioout16, all)"

- id: audiomp_get
  label: Query Audio Input Mapping
  kind: query
  command: "GET AUDIOMP{out}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Audio output (audioout1~audioout16, all)"

- id: volgain_data_set
  label: Set Output Gain Level
  kind: action
  command: "SET VOLGAIN_DATA{aout} {prm}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"
    - name: prm
      type: integer
      description: |
        Gain in dB.
        FW below threshold: -10~10 (default 0).
        FW v1.3 (10x10) / v1.4 (16x16) or higher: -80~0 in 2 dB steps.

- id: volgain_data_get
  label: Query Current Output Gain
  kind: query
  command: "GET VOLGAIN_DATA{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"

- id: mute_set
  label: Mute Audio
  kind: action
  command: "SET MUTE{aout} {prm}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (spdifout1~spdifout16, audioout1~audioout16, all)"
    - name: prm
      type: enum
      values: [on, off]
      description: "on = mute; off = unmute"

- id: mute_get
  label: Query Current Audio Mute State
  kind: query
  command: "GET MUTE{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (spdifout1~spdifout16, audioout1~audioout16, all)"

- id: volgain_fix_set
  label: Set Audio Out Level as Fixed or Variable
  kind: action
  command: "SET VOLGAIN_FIX{aout} {prm}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"
    - name: prm
      type: enum
      values: [on, off]
      description: "on = fixed; off = variable"

- id: volgain_fix_get
  label: Query Audio Out Level Setting
  kind: query
  command: "GET VOLGAIN_FIX{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"

- id: mute_m_set
  label: Set Attenuation Method for Mute
  kind: action
  command: "SET MUTE_M{aout} {prm}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"
    - name: prm
      type: enum
      values: [cut, ramp]
      description: "cut = direct to mute level; ramp = ramps to mute level"

- id: volgain_inc
  label: Increase Volume Output Level
  kind: action
  command: "SET VOLGAIN_INC{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"

- id: volgain_dec
  label: Decrease Volume Output Level
  kind: action
  command: "SET VOLGAIN_DEC{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"

- id: volgain_step_set
  label: Configure Step Length of Volume Increase/Decrease
  kind: action
  command: "SET VOLGAIN_STEP{aout} {prm}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"
    - name: prm
      type: enum
      values: ["2", "4", "8"]
      description: Step length in dB

- id: volgain_step_get
  label: Query Step Length of Volume Increase/Decrease
  kind: query
  command: "GET VOLGAIN_STEP{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"

- id: mute_m_get
  label: Query Output Mute Method
  kind: query
  command: "GET MUTE_M{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"

# ---- Audio Delay Configuration ----

- id: audio_d_set
  label: Set Audio Output Delay Time
  kind: action
  command: "SET AUDIO_D{aout} {prm}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"
    - name: prm
      type: integer
      description: "Delay in ms (0~500). 0 = no delay."

- id: audio_d_get
  label: Query Audio Output Delay Time
  kind: query
  command: "GET AUDIO_D{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"

# ---- Audio Output EQ ----

- id: eq_fn_set
  label: Enable EQ
  kind: action
  command: "SET EQ_FN{aout} {prm}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1~audioout16, all)"
    - name: prm
      type: enum
      values: [on, off]
      description: "on = enable; off = bypassed"

- id: eq_fn_get
  label: Query EQ Function Status
  kind: query
  command: "GET EQ_FN{aout}<CR><LF>"
  params:
    - name: aout
      type: string
      description: "Audio output (audioout1, audioout2, … audioout16, all)"

- id: audio_eq_set
  label: Set Audio Out EQ Level
  kind: action
  command: "SET AUDIO_EQ{out} {freq} {gain}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Audio output (audioout1~audioout16, all)"
    - name: freq
      type: enum
      values: [31, 62, 125, 250, 500, 2000, 4000, 8000, 16000]
      description: "Frequency band in Hz"
    - name: gain
      type: integer
      description: "Gain in dB (-10~10)"

- id: audio_eq_get
  label: Query Audio Out EQ Level
  kind: query
  command: "GET AUDIO_EQ{out}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Audio output (audioout1~audioout16, all)"

# ---- Scene Save and Recall ----

- id: preset_v_save
  label: Save Video Scene
  kind: action
  command: "SAVE PRESET_V{prm}<CR><LF>"
  params:
    - name: prm
      type: integer
      description: "Scene number (1~20)"

- id: preset_v_restore
  label: Recall Video Scene
  kind: action
  command: "RESTORE PRESET_V{prm}<CR><LF>"
  params:
    - name: prm
      type: integer
      description: "Scene number (1~20)"

- id: preset_a_save
  label: Save Audio Scene
  kind: action
  command: "SAVE PRESET_A{prm}<CR><LF>"
  params:
    - name: prm
      type: integer
      description: "Scene number (1~20). Requires 10x10 FW v1.3+ or 16x16 FW v1.4+."

- id: preset_a_restore
  label: Recall Audio Scene
  kind: action
  command: "RESTORE PRESET_A{prm}<CR><LF>"
  params:
    - name: prm
      type: integer
      description: "Scene number (1~20). Requires 10x10 FW v1.3+ or 16x16 FW v1.4+."

# ---- Section 4.2 Display Power Control ----

- id: cec_pwr_set
  label: Power Display On/Off
  kind: action
  command: "SET CEC_PWR{out} {prm}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Display output (hdmiout1~hdmiout16, hdbtout1~hdbtout16, all)"
    - name: prm
      type: enum
      values: [on, off]
      description: Power state

- id: cec_pwr_get
  label: Query CEC Power Status
  kind: query
  command: "GET CEC_PWR{out}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Display output (hdmiout1~hdmiout16, hdbtout1~hdbtout16, all)"

- id: autocec_d_set
  label: Set CEC Power Delay Time
  kind: action
  command: "SET AUTOCEC_D{out} {prm}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Display output (hdbt1~hdbt16, hdmiout1~hdmiout16)"
    - name: prm
      type: integer
      description: "Delay in minutes (0~30). 0 = power off immediately if no active signal."

- id: autocec_d_get
  label: Query CEC Power Delay Time
  kind: query
  command: "GET AUTOCEC_D{out}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Display output (hdbt1~hdbt16, hdmiout1~hdmiout16)"

# ---- Section 5.1 HDCP Configuration ----

- id: hdcp_s_set
  label: Set Input HDCP On/Off
  kind: action
  command: "SET HDCP_S{in} {prm}<CR><LF>"
  params:
    - name: in
      type: string
      description: "Input (in1~in16, all)"
    - name: prm
      type: enum
      values: [on, off]

- id: hdcp_s_get
  label: Query Input HDCP Status
  kind: query
  command: "GET HDCP_S{in}<CR><LF>"
  params:
    - name: in
      type: string
      description: "Input (in1~in16, all)"

# ---- Section 5.1 EDID Configuration ----

- id: edid_dip_get
  label: Query EDID Dip Switch Status
  kind: query
  command: "GET EDID_DIP<CR><LF>"
  params: []

- id: edid_set
  label: Set Input EDID
  kind: action
  command: "SET EDID{in} {prm}<CR><LF>"
  params:
    - name: in
      type: string
      description: "Input (in1~in16, all)"
    - name: prm
      type: integer
      description: "EDID code per EDID Parameter Table (0~31)"

- id: edid_get_all
  label: Query All Inputs EDID Status
  kind: query
  command: "GET EDID{all}<CR><LF>"
  params: []

# ---- Section 5.2 IR Call Back ----

- id: irback_fn_set
  label: Set IR Call Back Control
  kind: action
  command: "SET IRBACK_FN{prm}<CR><LF>"
  params:
    - name: prm
      type: enum
      values: [on, off]

- id: irback_fn_get
  label: Query IR Call Back Status
  kind: query
  command: "GET IRBACK_FN<CR><LF>"
  params: []

# ---- Section 5.2 Long Reach Cable Mode ----

- id: lr_fn_set
  label: Set Long Reach Mode On/Off
  kind: action
  command: "SET LR_FN{prm1} {prm2}<CR><LF>"
  params:
    - name: prm1
      type: enum
      values: [hdbtall]
    - name: prm2
      type: enum
      values: [on, off]

- id: lr_fn_get
  label: Query Long Reach Mode Status
  kind: query
  command: "GET LR_FN{prm1}<CR><LF>"
  params:
    - name: prm1
      type: enum
      values: [hdbtall]

# ---- Section 5.2 IR System Codes ----

- id: ir_syscode_set
  label: Set IR System Codes
  kind: action
  command: "SET IR_SYSCODE{prm1}<CR><LF>"
  params:
    - name: prm1
      type: enum
      values: ["00", "4E", all]
      description: "all = matrix responds to both 00 and 4E code sets"

- id: ir_syscode_get
  label: Query IR System Codes
  kind: query
  command: "GET IR_SYSCODE<CR><LF>"
  params: []

# ---- Section 5.2 Matrix Switching Mode ----

- id: sw_m_set
  label: Set Matrix Switching Mode
  kind: action
  command: "SET SW_M{prm}<CR><LF>"
  params:
    - name: prm
      type: enum
      values: [normal, quick]

- id: sw_m_get
  label: Query Matrix Switching Mode
  kind: query
  command: "GET SW_M<CR><LF>"
  params: []

# ---- Section 5.2 AVR Priority Mode (Theater Zone Locking) ----

- id: zone_lock_set
  label: Set AVR Priority Mode for an Output
  kind: action
  command: "SET ZONE_LOCK{out} {prm}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Output (hdmiout1~hdmiout16, hdbtout1~hdbtout16, all)"
    - name: prm
      type: enum
      values: [on, off]

- id: zone_lock_get
  label: Query AVR Priority Mode Status for an Output
  kind: query
  command: "GET ZONE_LOCK{out}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Output (hdmiout1~hdmiout16, hdbtout1~hdbtout16, all)"

# ---- Section 5.2 Source Zone Lockout ----

- id: zone_r_set
  label: Select Sources a Zone Can Access
  kind: action
  command: "SET ZONE_R{out} {prm}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Output (out1~16, all)"
    - name: prm
      type: string
      description: "4-hex-digit source mask per Source Zone Lockout Parameter Table (e.g. AAAA, 03FF, FFFF)"

- id: zone_r_get
  label: Query Sources a Zone Can Access
  kind: query
  command: "GET ZONE_R{out}<CR><LF>"
  params:
    - name: out
      type: string
      description: "Output (out1~16, all)"

# ---- Section 6 Controlling Remote Devices over HDBaseT ----

- id: hdbt_route
  label: Route Command to Remote Device over HDBaseT
  kind: action
  command: "05 55 55 57 {card} {baud} {parity} {length} {device_cmd_hex}"
  params:
    - name: card
      type: string
      description: |
        Card slot byte per Card Slot Values table.
        HDBaseT Output cards: 01~10 (hex).
        HDBaseT Input cards (TX-H2X-HDBT): 11~20 (hex).
    - name: baud
      type: string
      description: "Baud rate byte per Baud Rate Values table (00=110 … 0C=115200)"
    - name: parity
      type: string
      description: "Parity byte per Parity Values table (00=None, 01=ODD, 02=Even, 03=Mark, 04=Space)"
    - name: length
      type: string
      description: "Length in bytes of device command (hex per Command Length HEX table)"
    - name: device_cmd_hex
      type: string
      description: "Device command bytes in hex (ASCII commands must be converted to hex)"
  notes: |
    Header = 05 55 55 57.
    Example: 05 55 55 57 02 06 05 62 67 20 0D 0A
    (card=02, baud=06 [9600], length=05, command=62 67 20 0D 0A).
    UNRESOLVED: parity byte not present in the source's worked example
    (only 11 bytes shown for header(4)+card(1)+baud(1)+length(1)+cmd(5));
    spec field kept to match the documented frame format.

# ---- Section 7 Diagnostic Troubleshooting ----

- id: cablec_in_get
  label: Query Input Cable Connection Status
  kind: query
  command: "GET CABLEC_IN{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "Input (in1~in16, all)"

- id: cablec_out_get
  label: Query Output Cable Connection Status
  kind: query
  command: "GET CABLEC_IN{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "Output (hdmiout1~hdmiout16, hdbtout1~hdbtout16, all)"
  notes: |
    Source documents the same GET CABLEC_IN mnemonic for both input and
    output cable queries (likely a source typo; preserved verbatim).

- id: hdbtl_in_get
  label: Query HDBaseT Input Link Quality
  kind: query
  command: "GET HDBTL_IN{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "HDBaseT input (hdbtin1~hdbtin16, all)"

- id: hdbtl_out_get
  label: Query HDBaseT Output Link Quality
  kind: query
  command: "GET HDBTL_OUT{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "HDBaseT output (hdbtout1~hdbtout16, all)"

- id: card_c_get
  label: Query Card Connection Status
  kind: query
  command: "GET CARD_C{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "Card slot (slot1~slot16, all)"

- id: card_t_get
  label: Query Card Type
  kind: query
  command: "GET CARD_T{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "Card slot (slot1~slot16, all)"

- id: card_com_get
  label: Query Card Communication Status With Motherboard
  kind: query
  command: "GET CARD_COM{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "Card slot (slot1~slot16, all)"

- id: card_s_get
  label: Query Board/Card Status
  kind: query
  command: "GET CARD_S{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "Target (mainboard, card1~card16, all)"

- id: fans_get
  label: Query Fan Status
  kind: query
  command: "GET FANS{prm1}<CR><LF>"
  params:
    - name: prm1
      type: string
      description: "Fan (fan1~fan4, all)"

# ---- Section 7 Rebooting and Restoring Defaults ----

- id: reboot
  label: Reboot the Matrix
  kind: action
  command: "REBOOT {prm}<CR><LF>"
  params:
    - name: prm
      type: string
      description: "Target (all, mainboard, ledboard, card1~card16)"

- id: reset
  label: Restore Factory Defaults
  kind: action
  command: "RESET<CR><LF>"
  params: []

Feedbacks

- id: video_input_mapping
  type: object
  description: |
    Response to GET MP{out}: `MP{in#} {out#}` showing which input is
    routed to which output. in = in1~in16, out = out1~out16, all.

- id: audio_switch_mode
  type: enum
  values: [on, off]
  description: "Response to GET AUDIOSW_M: on = audio independent from video, off = audio follows video."

- id: audio_input_mapping
  type: object
  description: |
    Response to GET AUDIOMP{out}: `AUDIOMP{in} {out}` (returns AUDIOSW
    form per source example). in = hdmi1~hdmi16, spdif1~spdif16, arc1~arc16;
    out = audioout1~audioout16, all.

- id: volgain_data
  type: object
  description: |
    Per-audioout gain in dB. Range depends on firmware:
    FW below v1.3 (10x10) / v1.4 (16x16): -10~10, default 0.
    FW v1.3 / v1.4 or higher: -80~0 in 2 dB steps.

- id: mute_state
  type: enum
  values: [on, off]
  description: "Response to GET MUTE{aout}: on = muted, off = unmuted."

- id: volgain_fix
  type: enum
  values: [on, off]
  description: "Response to GET VOLGAIN_FIX{aout}: on = fixed level, off = variable level."

- id: mute_method
  type: enum
  values: [cut, ramp]
  description: "Response to GET MUTE_M{aout}: cut = direct to mute, ramp = ramp to mute."

- id: audio_delay
  type: integer
  description: "Response to GET AUDIO_D{aout}: delay in ms (0~500)."

- id: eq_function
  type: enum
  values: [on, off]
  description: "Response to GET EQ_FN{aout}: on = enabled, off = bypassed."

- id: audio_eq_band
  type: object
  description: |
    Response to GET AUDIO_EQ{out}: `AUDIO_EQ{out} {freq} {gain}`.
    freq = 31|62|125|250|500|2000|4000|8000|16000 Hz.
    gain = -10~10 dB.

- id: volgain_step
  type: enum
  values: ["2", "4", "8"]
  description: "Response to GET VOLGAIN_STEP{aout}: step length in dB."

- id: cec_power
  type: enum
  values: [on, off]
  description: "Response to GET CEC_PWR{out}: display power state for given HDMI/HDBT output."

- id: autocec_d
  type: integer
  description: "Response to GET AUTOCEC_D{out}: delay in minutes (0~30)."

- id: hdcp_status
  type: enum
  values: [on, off]
  description: "Response to GET HDCP_S{in}: HDCP on/off per input."

- id: edid_dip
  type: integer
  description: "Response to GET EDID_DIP: dip-switch value 0~15."

- id: edid_per_input
  type: object
  description: "Response to GET EDID{all}: per-input EDID codes (0~31 per EDID Parameter Table)."

- id: irback_fn
  type: enum
  values: [on, off]
  description: "Response to GET IRBACK_FN: IR call back on/off."

- id: lr_fn
  type: enum
  values: [on, off]
  description: "Response to GET LR_FN{hdbtall}: long-reach mode on/off for HDBT outputs."

- id: ir_syscode
  type: enum
  values: ["00", "4E", all]
  description: "Response to GET IR_SYSCODE: active IR system code set."

- id: sw_m
  type: enum
  values: [normal, quick]
  description: "Response to GET SW_M: matrix switching mode."

- id: zone_lock
  type: enum
  values: [on, off]
  description: "Response to GET ZONE_LOCK{out}: AVR priority mode per output."

- id: zone_r_mask
  type: string
  description: |
    Response to GET ZONE_R{out}: 4-hex-digit mask per Source Zone Lockout
    Parameter Table (e.g. 0001=In1, FFFF=all 16x16).

- id: cablec_in
  type: enum
  values: [connected, not connected]
  description: "Response to GET CABLEC_IN{in}: input cable status."

- id: cablec_out
  type: enum
  values: [connected, not connected]
  description: "Response to GET CABLEC_IN{output}: output cable status (uses same mnemonic per source)."

- id: hdbtl_in_quality
  type: string
  description: "Response to GET HDBTL_IN{hdbtin}: link quality 1~10 or `no link`."

- id: hdbtl_out_quality
  type: string
  description: "Response to GET HDBTL_OUT{hdbtout}: link quality 1~10 or `no link`."

- id: card_c
  type: enum
  values: [connected, not connected]
  description: "Response to GET CARD_C{slot}: card connection status."

- id: card_t
  type: enum
  values: [hdmi, hdbt]
  description: "Response to GET CARD_T{slot}: card type."

- id: card_com
  type: enum
  values: [good, none]
  description: "Response to GET CARD_COM{slot}: card-to-motherboard comm status."

- id: card_s
  type: enum
  values: [good, none]
  description: "Response to GET CARD_S{target}: board/card functional status."

- id: fans
  type: enum
  values: [working, unworking]
  description: "Response to GET FANS{fan}: fan status."

Variables

# Source documents ranges/parameters inline within each action; no
# separate persistent variable surface described.
# UNRESOLVED: no discrete read/write variable set defined in source.

Events

# Source does not document any unsolicited notifications the device
# sends back to the controller.
# UNRESOLVED: no event/asynchronous message catalogue in source.

Macros

# UNRESOLVED: no multi-step sequence commands documented in source.

Safety

confirmation_required_for: []
interlocks: []
# UNRESOLVED: source contains no explicit safety warnings, interlock
# procedures, or power-on sequencing requirements. AUTOCEC_D mentions
# that "0 = power off the display immediately if there is no active
# signal" but this is a behavior note, not a stated safety interlock.

Notes

  • Command syntax: ASCII, case-sensitive keywords, terminated with <CR><LF>. Every command and response in this spec preserves that terminator.
  • Default IP: 192.168.11.143, default port: 23 (Telnet-style TCP). Default serial: 57600 baud, 8N1, no flow control.
  • Firmware variants: 10x10 main-board FW v1.3 and 16x16 main-board FW v1.4 split the command surface. The volgain_data range, preset_a_* commands, and several FW-gated variants only apply to v1.3/v1.4 or higher. Source explicitly states: "Supported Firmware: 10x10 Main Board FW v1.3, 16x16 Main Board FW v1.4."
  • Routing command (Section 6) is a binary frame [Header 05 55 55 57] [Card] [Baud] [Parity] [Length] [Device Command], not an ASCII line. ASCII commands to a remote device must be converted to hex before being placed in device_cmd_hex.
  • Two apparent source typos preserved verbatim: (a) GET CABLEC_IN is the documented mnemonic for the output cable status query; (b) the worked routing example in §6.1 contains 11 bytes (header(4)+card(1)+baud(1)+length(1)+cmd(5)) and omits the parity byte the frame description otherwise requires.
  • EDID codes 015 = "Copy from output #", codes 1631 = fixed EDID modes (1080p/4K variants, HDR variants, Smart EDID, EDID Write).
  • Source Zone Lockout parameter table: each input maps to a hex bit position (In1=0001 … In16=8000). Predefined groupings: odd (10x10=0155, 16x16=AAAA), even (10x10=02AA, 16x16=5555), all (10x10=03FF, 16x16=FFFF).
  • "ZONE_R" mnemonic uses lowercase "out10" in the source's example string but uppercase "out" / "all" in the parameter definition; preserved as written.

Provenance

source_domains:
  - digis.ru
source_urls:
  - https://digis.ru/upload/iblock/b37/40421_WyreStorm_MX_xxxx_HDBT_H2X_H2XC_API.pdf
retrieved_at: 2026-04-29T12:48:08.122Z
last_checked_at: 2026-06-02T07:06:59.444Z

Verification Summary

verdict: verified
checked_at: 2026-06-02T07:06:59.444Z
matched_actions: 61
action_count: 61
confidence: medium
summary: "All 61 spec actions match verbatim in source; transport (IP:23, serial:57600-8N1) verified; full command catalogue represented. (7 unresolved item(s) noted in Known Gaps.)"

Known Gaps

- "No explicit safety / interlock / power-sequencing material in source"
- "parity byte not present in the source's worked example"
- "no discrete read/write variable set defined in source."
- "no event/asynchronous message catalogue in source."
- "no multi-step sequence commands documented in source."
- "source contains no explicit safety warnings, interlock"
- "list of unsupported areas:"

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