Summary
Lightware Mx12X12Dvi Slim is a DVI matrix switcher with 12 inputs and 12 outputs. This spec covers both control protocols documented in the source: the legacy LW2 protocol (TCP port 10001) and the tree-based LW3 protocol (TCP port 6107). LW2 uses bracket-delimited ASCII commands; LW3 uses slash-separated node paths with GET/SET/CALL verbs.
Transport
# Two control protocols supported in parallel: LW2 (port 10001) and LW3 (port 6107).
# Source explicitly states both port numbers.
protocols:
- tcp
addressing:
port: 10001 # LW2 protocol port
# LW3 also listens on TCP port 6107 (noted in source)
auth:
type: none # inferred: no auth procedure in source
Traits
- routable # inferred: input-to-output switching commands present in both protocols
- queryable # inferred: query commands returning state present in both protocols
- powerable # inferred: device reset/restart command present
- levelable # inferred: analog audio output volume commands present (LW3)
Actions
# --- LW2 Protocol Commands ---
- id: lw2_switch_input_to_output
label: LW2 Switch Input to Output
kind: action
command: "{input}@{output}"
params:
- name: input
type: integer
description: Input number (1-based)
- name: output
type: integer
description: Output number (1-based)
notes: "Example: {1@5} switches Input 1 to Output 5. Response: (O05 I01)."
- id: lw2_batch_switch
label: LW2 Batch Switch
kind: action
command: "{input}@{output}"
params:
- name: input
type: integer
description: Input number
- name: output
type: integer
description: Output number
notes: "Send multiple switch commands within 10ms for atomic batch switching. Example: {02@01}{+06}{05@04}."
- id: lw2_unmute_input
label: LW2 Unmute Input
kind: action
command: "{+input}"
params:
- name: input
type: integer
description: Input number to unmute
notes: "Used in batch switching examples."
- id: lw2_view_crosspoint
label: LW2 View Crosspoint Connections
kind: query
command: "{vc}"
params: []
notes: "Response example: (ALL M01 L01 01 01 02 02 02 U02). M=muted, L=locked, U=muted and locked."
- id: lw2_load_preset
label: LW2 Load Crosspoint Preset
kind: action
command: "{%preset}"
params:
- name: preset
type: integer
description: Preset number
notes: "Example: {%4} loads preset 4. Response: (LPR04). Preset loading does not affect locked outputs."
- id: lw2_query_input_status
label: LW2 Query Input Port Signal Status
kind: query
command: "{:isd}"
params: []
notes: "Response: (ISD <bitstring>). 1 = source connected, 0 = no source."
- id: lw2_query_ip_config
label: LW2 Query IP Configuration
kind: query
command: "{ip_config=?}"
params: []
notes: "Response: (IP_CONFIG=<static> <ip> <port> <subnet> <gateway>)."
- id: lw2_set_ip_config
label: LW2 Set IP Configuration
kind: action
command: "{ip_config=<static> <ip> <port> <subnet> <gateway>}"
params:
- name: static
type: integer
description: 0 = static IP
- name: ip
type: string
description: IP address
- name: port
type: integer
description: TCP port number
- name: subnet
type: string
description: Subnet mask
- name: gateway
type: string
description: Gateway address
- id: lw2_query_health
label: LW2 Query Health Status
kind: query
command: "{st}"
params: []
notes: "Response: (ST CPU <3V> <5V> <12V> <temp>) and (ST FAN#N <rpm>)."
- id: lw2_query_product_type
label: LW2 Query Product Type
kind: query
command: "{i}"
params: []
notes: "Response example: (I: MX-FR17). Read-only identification."
- id: lw2_set_input_edid
label: LW2 Set EDID on Input Port
kind: action
command: "{e<input>:f<edid>}"
params:
- name: input
type: integer
description: Input port number
- name: edid
type: string
description: EDID identifier (e.g. F10)
notes: "Example: {e5:f10} emulates EDID F10 on Input 5. Response: (E_SW_OK) then (E_S_C)."
# --- LW3 Protocol Commands ---
- id: lw3_open_subscription
label: LW3 Open Subscription
kind: action
command: "OPEN /<node>/*"
params:
- name: node
type: string
description: Node path to subscribe to (e.g. /MEDIA/VIDEO)
notes: "Subscribe to a node for change notifications. Without * only the node itself is checked."
- id: lw3_get_node_manual
label: LW3 Get Node Manual
kind: query
command: "MAN /<path>"
params:
- name: path
type: string
description: Full node path
notes: "Returns human-readable manual text. Example: MAN /MEDIA/VIDEO/O1.Pwr5vMode."
- id: lw3_query_crosspoint
label: LW3 Query Crosspoint Connections
kind: query
command: "GET /MEDIA/VIDEO/XP.DestinationConnectionList"
params: []
notes: "Response: pr /MEDIA/VIDEO/XP.DestinationConnectionList=I1;I3;I1;I3"
- id: lw3_switch_input_to_output
label: LW3 Switch Input to Output
kind: action
command: "CALL /MEDIA/VIDEO/XP:switch(I{input}:O{output})"
params:
- name: input
type: integer
description: Input number
- name: output
type: integer
description: Output number
notes: "Example: CALL /MEDIA/VIDEO/XP:switch(I4:O1). Multiple I:O pairs can be supplied for batch switching."
- id: lw3_query_input_signal
label: LW3 Query Input Video Signal Presence
kind: query
command: "GET /MEDIA/VIDEO/I{input}.SignalPresent"
params:
- name: input
type: integer
description: Input number
notes: "1 = signal present, 0 = no signal."
- id: lw3_query_hdcp_state
label: LW3 Query HDCP State
kind: query
command: "GET /MEDIA/VIDEO/I{input}.HdcpState"
params:
- name: input
type: integer
description: Input number
notes: "1 = HDCP enabled, 0 = HDCP disabled."
- id: lw3_set_hdcp_state
label: LW3 Set HDCP State
kind: action
command: "SET /MEDIA/VIDEO/I{input}.HdcpState={state}"
params:
- name: input
type: integer
description: Input number
- name: state
type: integer
description: 0 = disabled, 1 = enabled
- id: lw3_mute_sources
label: LW3 Mute Input Ports
kind: action
command: "CALL /MEDIA/VIDEO/XP:muteSource(I{input1};I{input2})"
params:
- name: input1
type: integer
description: First input to mute
- name: input2
type: integer
description: Second input to mute
notes: "Multiple inputs can be muted in one call, separated by semicolons."
- id: lw3_query_source_port_status
label: LW3 Query Source Port Status
kind: query
command: "GET /MEDIA/VIDEO/XP.SourcePortStatus"
params: []
notes: "Returns per-input status groups: T=unmuted+unlocked, M=muted, L=locked, U=locked+muted, followed by 2 hex bytes for audio/HDCP/signal state."
- id: lw3_query_cpu_temperature
label: LW3 Query CPU Temperature
kind: query
command: "GET /MANAGEMENT/STATUS.CpuTemperature"
params: []
notes: "Returns current temperature plus min/max/warning thresholds."
- id: lw3_query_5v_main
label: LW3 Query 5V Main Voltage
kind: query
command: "GET /MANAGEMENT/STATUS.5VMain"
params: []
notes: "Returns current voltage plus min/max/warning thresholds."
- id: lw3_query_hdbt_stat
label: LW3 Query HDBaseT Cable Status
kind: query
command: "GET /REMOTE/S{port}.HdbtStat"
params:
- name: port
type: integer
description: Source port number
notes: "Returns 4 error rate values in dB (one per twisted pair). UNRESOLVED: HDBaseT support on Mx12X12Dvi Slim not confirmed."
- id: lw3_query_tx_ber
label: LW3 Query Transmitter Bit Error Ratio
kind: query
command: "GET /REMOTE/S{port}.TxBer"
params:
- name: port
type: integer
description: Source port number
notes: "Returns BER value. UNRESOLVED: HDBaseT support on Mx12X12Dvi Slim not confirmed."
- id: lw3_query_autoselect
label: LW3 Query Video Input Autoselection
kind: query
command: "GET /MEDIA/VIDEO/XP.DestinationPortAutoselect"
params: []
notes: "Returns per-output flag. E=Enabled, L=Last detect mode, P=Priority mode, D=Disabled."
- id: lw3_set_autoselect
label: LW3 Set Video Input Autoselection
kind: action
command: "CALL /MEDIA/VIDEO/XP:setDestinationPortAutoselect(O{output}:{mode})"
params:
- name: output
type: integer
description: Output port number
- name: mode
type: string
description: "Mode flags, e.g. EP (Enabled+Priority), EL (Enabled+Last detect)"
- id: lw3_set_volume_db
label: LW3 Set Analog Audio Output Volume (dB)
kind: action
command: "SET /MEDIA/AUDIO/O{output}.VolumedB={value}"
params:
- name: output
type: integer
description: Analog audio output port number
- name: value
type: integer
description: Volume in dB
- id: lw3_set_volume_percent
label: LW3 Set Analog Audio Output Volume (Percent)
kind: action
command: "SET /MEDIA/AUDIO/O{output}.VolumePercent={value}"
params:
- name: output
type: integer
description: Analog audio output port number
- name: value
type: integer
description: Volume percent (0-100)
- id: lw3_query_product_name
label: LW3 Query Product Name
kind: query
command: "GET /.ProductName"
params: []
notes: "Read-only."
- id: lw3_reset_device
label: LW3 Reset Device
kind: action
command: "CALL /SYS:reset()"
params: []
notes: "Restarts device. Terminates Ethernet, RS-232, USB connections."
- id: lw3_query_dhcp
label: LW3 Query DHCP State
kind: query
command: "GET /MANAGEMENT/NETWORK.DhcpEnabled"
params: []
- id: lw3_set_dhcp
label: LW3 Set DHCP State
kind: action
command: "SET /MANAGEMENT/NETWORK.DhcpEnabled={value}"
params:
- name: value
type: boolean
description: true = DHCP, false = static IP
- id: lw3_query_static_ip
label: LW3 Query Static IP Address
kind: query
command: "GET /MANAGEMENT/NETWORK.StaticIpAddress"
params: []
- id: lw3_set_static_ip
label: LW3 Set Static IP Address
kind: action
command: "SET /MANAGEMENT/NETWORK.StaticIpAddress={ip}"
params:
- name: ip
type: string
description: IPv4 address
notes: "Only effective when DhcpEnabled is false."
- id: lw3_set_uart_baudrate
label: LW3 Set RS-232 UART Baud Rate
kind: action
command: "SET /MEDIA/UART/P{port}.Baudrate={index}"
params:
- name: port
type: integer
description: UART port number
- name: index
type: integer
description: "Baud rate index. 2 = 9600. Other indices map to different rates (UNRESOLVED: full mapping not in source)."
- id: lw3_uart_send_message
label: LW3 Send Message over RS-232
kind: action
command: 'CALL /MEDIA/UART/P{port}:sendMessage({message}/r/n)'
params:
- name: port
type: integer
description: UART port number
- name: message
type: string
description: Message text terminated with CR LF
- id: lw3_gpio_toggle
label: LW3 Toggle GPIO Pin
kind: action
command: "CALL /MEDIA/GPIO/P{port}:toggle({pin})"
params:
- name: port
type: integer
description: GPIO port number
- name: pin
type: integer
description: Pin number
notes: "Pin direction must be set to Output first. UNRESOLVED: GPIO availability on Mx12X12Dvi Slim not confirmed."
- id: lw3_ethernet_tcp_text
label: LW3 Send TCP Text over Ethernet
kind: action
command: "CALL /MEDIA/ETHERNET:tcpText({ip}:{port}={message})"
params:
- name: ip
type: string
description: Target IP address
- name: port
type: integer
description: Target TCP port
- name: message
type: string
description: Message text to send
Feedbacks
- id: power_state
type: enum
values: [on, off]
notes: "UNRESOLVED: no explicit power on/off commands in source. Device reset restarts but is not a power toggle."
- id: crosspoint_connection
type: string
description: "Current input-to-output mapping. Source: LW2 {vc} or LW3 GET /MEDIA/VIDEO/XP.DestinationConnectionList."
- id: input_signal_present
type: enum
values: [present, absent]
description: "Source: LW2 {:isd} or LW3 GET /MEDIA/VIDEO/I{n}.SignalPresent."
- id: hdcp_state
type: enum
values: [enabled, disabled]
description: "Source: LW3 GET /MEDIA/VIDEO/I{n}.HdcpState."
- id: source_port_status
type: string
description: "Per-input mute/lock/audio/signal status. Source: LW3 GET /MEDIA/VIDEO/XP.SourcePortStatus."
- id: cpu_temperature
type: string
description: "CPU temperature in Celsius plus thresholds. Source: LW3 GET /MANAGEMENT/STATUS.CpuTemperature."
- id: voltage_5v_main
type: string
description: "5V rail voltage plus thresholds. Source: LW3 GET /MANAGEMENT/STATUS.5VMain."
- id: product_name
type: string
description: "Read-only product identification. Source: LW3 GET /.ProductName or LW2 {i}."
- id: ip_config
type: string
description: "Static/DHCP flag, IP, port, subnet, gateway. Source: LW2 {ip_config=?}."
- id: hdbt_cable_status
type: string
description: "Per-pair error rates in dB. UNRESOLVED: HDBaseT support not confirmed for this model."
- id: hdbt_tx_ber
type: string
description: "Transmitter bit error ratio. UNRESOLVED: HDBaseT support not confirmed for this model."
- id: autoselect_mode
type: string
description: "Per-output autoselect flags (E/L/P/D). Source: LW3 GET /MEDIA/VIDEO/XP.DestinationPortAutoselect."
Variables
- id: volume_db
type: number
description: "Analog audio output volume in dB. Source: LW3 SET /MEDIA/AUDIO/O{n}.VolumedB."
- id: volume_percent
type: number
range: [0, 100]
description: "Analog audio output volume percent. Source: LW3 SET /MEDIA/AUDIO/O{n}.VolumePercent."
- id: static_ip_address
type: string
description: "Static IPv4 address. Source: LW3 SET /MANAGEMENT/NETWORK.StaticIpAddress."
- id: dhcp_enabled
type: boolean
description: "DHCP state. Source: LW3 SET /MANAGEMENT/NETWORK.DhcpEnabled."
- id: uart_baudrate
type: integer
description: "UART baud rate as index (2 = 9600). Source: LW3 SET /MEDIA/UART/P{n}.Baudrate. UNRESOLVED: full index-to-rate mapping not in source."
Events
- id: lw3_change_notification
type: string
description: "Asynchronous change message for subscribed nodes. Source: CHG /<path>.<property>=<value>. Requires prior OPEN /<node>/* subscription."
- id: lw2_unexpected_responses
type: string
description: "LW2 emits per-command responses asynchronously when batched. Each command in a batch produces its own (response) line."
Macros
# UNRESOLVED: no explicit multi-step sequences documented in source.
# Batch switching in LW2 ({02@01}{+06}{05@04}) is a syntactic batching pattern, not a stored macro.
Safety
confirmation_required_for:
- lw3_reset_device # Restarts device, terminates all control connections.
interlocks: []
# UNRESOLVED: no explicit safety warnings, electrical interlocks, or power-on
# sequencing documented in source.
Notes
Two parallel protocols: LW2 on TCP 10001 and LW3 on TCP 6107. LW2 uses {curly bracket} commands with round-bracketed responses; LW3 uses slash-separated node paths with GET/SET/CALL verbs and prefix-coded responses (mO success, mE error, pr/pw read/write property).
LW2 commands uppercased on input; responses may mix case. Both protocols terminate responses with CR LF.
Several LW3 command examples in the source reference subsystems (HDBaseT remote ports, GPIO, analog audio outputs, EDID F10) that may not exist on the Mx12X12Dvi Slim hardware. Treat them as protocol-grammar evidence rather than confirmed device features until verified against a unit.
Baud rate for the RS-232 port is referenced via LW3 index value 2 (= 9600); the full index-to-rate table is not present in this excerpt.
Provenance
source_domains:
- go.lightware.com
source_urls:
- https://go.lightware.com/open-api-environment
- https://go.lightware.com/mx-dvi-slim-series-pum
retrieved_at: 2026-08-07T18:07:02.347Z
last_checked_at: 2026-08-19T09:30:41.658Z
Verification Summary
verdict: verified
checked_at: 2026-08-19T09:30:41.658Z
matched_actions: 38
action_count: 38
confidence: medium
summary: "All 38 spec actions (LW2 + LW3) are present verbatim in the source; both ports 10001 and 6107 are documented; coverage ratio is 1.0. (12 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "source describes commands generically; several command examples reference features (e.g. GPIO, UART, HDBaseT remote ports, EDID F10) that may not exist on the Mx12X12Dvi Slim hardware. Treat as evidence of protocol grammar, not as confirmed device features."
- "HDBaseT support on Mx12X12Dvi Slim not confirmed.\""
- "full mapping not in source).\""
- "GPIO availability on Mx12X12Dvi Slim not confirmed.\""
- "no explicit power on/off commands in source. Device reset restarts but is not a power toggle.\""
- "HDBaseT support not confirmed for this model.\""
- "full index-to-rate mapping not in source.\""
- "no explicit multi-step sequences documented in source."
- "no explicit safety warnings, electrical interlocks, or power-on"
- "firmware version compatibility not stated in source."
- "RS-232 default baud rate, data bits, parity, stop bits not stated in source."
- "device-specific feature confirmation (HDBaseT, GPIO, analog audio, EDID F10 availability) requires hardware check."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0