Summary
Simplified M88SL is an 8×8 HDMI 2.0b scaling matrix switcher with HDMI and HDBaseT outputs. This spec covers ASCII control over RS-232 and TCP/IP, including routing, output scaling, EDID, CEC, network, UART, preset, and system operations.
Transport
protocols:
- tcp
- serial
addressing:
port: 8000
telnet_port: 23
serial:
baud_rate: 115200
data_bits: 8
parity: none
stop_bits: 1
flow_control: null
auth:
type: null
Traits
traits:
- powerable
- routable
- queryable
- levelable
Actions
actions:
- id: set_power
label: Set Power
kind: action
command: "s power {z}!"
params:
- name: z
type: integer
description: "0 = power off, 1 = power on"
- id: query_power
label: Query Power State
kind: query
command: "r power!"
params: []
- id: reboot_device
label: Reboot Device
kind: action
command: "s reboot!"
params: []
- id: help
label: List All Commands
kind: action
command: "help!"
params: []
- id: query_type
label: Query Device Model
kind: query
command: "r type!"
params: []
- id: query_status
label: Query Device Status
kind: query
command: "r status!"
params: []
- id: query_fw_version
label: Query Firmware Version
kind: query
command: "r fw version!"
params: []
- id: query_link_in
label: Query Input Port Connection
kind: query
command: "r link in {x}!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: query_link_out
label: Query Output Port Connection
kind: query
command: "r link out {y}!"
params:
- name: y
type: integer
description: "Output port, 0~8; 0 = all"
- id: factory_reset
label: Factory Reset
kind: action
command: "s reset!"
params: []
- id: set_beep
label: Set Buzzer
kind: action
command: "s beep {z}!"
params:
- name: z
type: integer
description: "0 = off, 1 = on"
- id: query_beep
label: Query Buzzer State
kind: query
command: "r beep!"
params: []
- id: set_panel_lock
label: Set Front Panel Lock
kind: action
command: "s lock {z}!"
params:
- name: z
type: integer
description: "0 = unlocked, 1 = locked"
- id: query_panel_lock
label: Query Front Panel Lock
kind: query
command: "r lock!"
params: []
- id: set_lcd_on_time
label: Set LCD On Time
kind: action
command: "s lcd on time {z}!"
params:
- name: z
type: integer
description: "0 = off, 1 = always on, 2 = 15 seconds, 3 = 30 seconds, 4 = 60 seconds"
- id: query_lcd_mode
label: Query LCD Backlight Mode
kind: query
command: "r lcd mode!"
params: []
- id: save_preset
label: Save Preset
kind: action
command: "s save preset {z}!"
params:
- name: z
type: integer
description: "Preset slot, 1~8"
- id: recall_preset
label: Recall Preset
kind: action
command: "s recall preset {z}!"
params:
- name: z
type: integer
description: "Preset slot, 1~8"
- id: clear_preset
label: Clear Preset
kind: action
command: "s clear preset {z}!"
params:
- name: z
type: integer
description: "Preset slot, 1~8"
- id: query_preset
label: Query Preset
kind: query
command: "r preset {z}!"
params:
- name: z
type: integer
description: "Preset slot, 1~4"
- id: set_logo1
label: Set First LCD Logo Line
kind: action
command: "s logo1 {text}!"
params:
- name: text
type: string
description: "Text up to 16 characters"
- id: set_baud_rate
label: Set RS-232 Baud Rate
kind: action
command: "s baud rate {rate}!"
params:
- name: rate
type: integer
description: "115200, 57600, 38400, 19200, 9600, or 4800"
- id: query_baud_rate
label: Query RS-232 Baud Rate
kind: query
command: "r baud rate!"
params: []
- id: set_control_id
label: Set Control ID
kind: action
command: "s id {z}!"
params:
- name: z
type: integer
description: "Control ID, 000~999"
- id: route_av
label: Route Input to Output
kind: action
command: "s in {x} av out {y}!"
params:
- name: x
type: integer
description: "Input port, 1~8"
- name: y
type: integer
description: "Output port, 0~8; 0 = all"
- id: query_av_out
label: Query Output Signal Status
kind: query
command: "r av out {y}!"
params:
- name: y
type: integer
description: "Output port, 0~8; 0 = all"
- id: set_hdmi_stream
label: Set HDMI Output Stream
kind: action
command: "s hdmi {y} stream {z}!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- name: z
type: integer
description: "0 = disable, 1 = enable"
- id: query_hdmi_stream
label: Query HDMI Output Stream
kind: query
command: "r hdmi {y} stream!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: set_hdbt_stream
label: Set HDBaseT Output Stream
kind: action
command: "s hdbt {y} stream {z}!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- name: z
type: integer
description: "0 = disable, 1 = enable"
- id: query_hdbt_stream
label: Query HDBaseT Output Stream
kind: query
command: "r hdbt {y} stream!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: set_hdmi_scaler
label: Set HDMI Output Scaler Mode
kind: action
command: "s hdmi {y} scaler {z}!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- name: z
type: integer
description: "1 = bypass, 2 = 4K to 1080p, 3 = auto"
- id: query_hdmi_scaler
label: Query HDMI Output Scaler Mode
kind: query
command: "r hdmi {y} scaler!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: set_hdbt_scaler
label: Set HDBaseT Output Scaler Mode
kind: action
command: "s hdbt {y} scaler {z}!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- name: z
type: integer
description: "1 = bypass, 2 = 4K to 1080p, 3 = auto"
- id: query_hdbt_scaler
label: Query HDBaseT Output Scaler Mode
kind: query
command: "r hdbt {y} scaler !"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: set_edid_input
label: Set Input EDID
kind: action
command: "s edid in {x} from {z}!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- name: z
type: integer
description: "EDID index, 1~39"
- id: query_edid_data_hdmi
label: Query HDMI Output EDID Data
kind: query
command: "r edid data hdmi {y}!"
params:
- name: y
type: integer
description: "HDMI output, 1~8"
- id: query_edid_data_hdbt
label: Query HDBaseT Output EDID Data
kind: query
command: "r edid data hdbt {y}!"
params:
- name: y
type: integer
description: "HDBaseT output, 1~8"
- id: query_edid_input
label: Query Input EDID Status
kind: query
command: "r edid in {x}!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_on
label: CEC Input Power On
kind: action
command: "s cec in {x} on!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_off
label: CEC Input Power Off
kind: action
command: "s cec in {x} off!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_menu
label: CEC Input Menu
kind: action
command: "s cec in {x} menu!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_play
label: CEC Input Play
kind: action
command: "s cec in {x} play!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_pause
label: CEC Input Pause
kind: action
command: "s cec in {x} pause!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_stop
label: CEC Input Stop
kind: action
command: "s cec in {x} stop!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_rewind
label: CEC Input Rewind
kind: action
command: "s cec in {x} rew!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_mute
label: CEC Input Mute
kind: action
command: "s cec in {x} mute!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_vol_down
label: CEC Input Volume Down
kind: action
command: "s cec in {x} vol-!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_vol_up
label: CEC Input Volume Up
kind: action
command: "s cec in {x} vol+!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_fast_forward
label: CEC Input Fast Forward
kind: action
command: "s cec in {x} ff!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_previous
label: CEC Input Previous
kind: action
command: "s cec in {x} previous!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_in_next
label: CEC Input Next
kind: action
command: "s cec in {x} next!"
params:
- name: x
type: integer
description: "Input port, 0~8; 0 = all"
- id: cec_hdmi_out_on
label: CEC HDMI Output Power On
kind: action
command: "s cec hdmi out {y} on!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: cec_hdmi_out_off
label: CEC HDMI Output Power Off
kind: action
command: "s cec hdmi out {y} off!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: cec_hdmi_out_mute
label: CEC HDMI Output Mute
kind: action
command: "s cec hdmi out {y} mute!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: cec_hdmi_out_vol_down
label: CEC HDMI Output Volume Down
kind: action
command: "s cec hdmi out {y} vol-!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: cec_hdmi_out_vol_up
label: CEC HDMI Output Volume Up
kind: action
command: "s cec hdmi out {y} vol+!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: cec_hdmi_out_active
label: CEC HDMI Output Active Source
kind: action
command: "s cec hdmi out {y} active!"
params:
- name: y
type: integer
description: "HDMI output, 0~8; 0 = all"
- id: cec_hdbt_out_on
label: CEC HDBaseT Output Power On
kind: action
command: "s cec hdbt out {y} on!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: cec_hdbt_out_off
label: CEC HDBaseT Output Power Off
kind: action
command: "s cec hdbt out {y} off!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: cec_hdbt_out_mute
label: CEC HDBaseT Output Mute
kind: action
command: "s cec hdbt out {y} mute!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: cec_hdbt_out_vol_down
label: CEC HDBaseT Output Volume Down
kind: action
command: "s cec hdbt out {y} vol-!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: cec_hdbt_out_vol_up
label: CEC HDBaseT Output Volume Up
kind: action
command: "s cec hdbt out {y} vol+!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: cec_hdbt_out_active
label: CEC HDBaseT Output Active Source
kind: action
command: "s cec hdbt out {y} active!"
params:
- name: y
type: integer
description: "HDBaseT output, 0~8; 0 = all"
- id: cec_cmd_hdmi
label: Send Custom CEC Command to HDMI Output
kind: action
command: "s cec cmd {x} {y1y2}{y3}{y4}end!"
params:
- name: x
type: string
description: "HDMI output selector in hex, 01~04"
- name: y1y2
type: string
description: "Initiator and follower logical-address byte in hex"
- name: y3
type: string
description: "CEC opcode in hex"
- name: y4
type: string
description: "Optional CEC opcode parameters in hex"
- id: cec_cmd_hdbt
label: Send Custom CEC Command to HDBaseT Output
kind: action
command: "s cec cmd {x} {y1y2}{y3}{y4}end!"
params:
- name: x
type: string
description: "HDBaseT output selector in hex, f1~f4"
- name: y1y2
type: string
description: "Initiator and follower logical-address byte in hex"
- name: y3
type: string
description: "CEC opcode in hex"
- name: y4
type: string
description: "Optional CEC opcode parameters in hex"
- id: query_ipconfig
label: Query IP Configuration
kind: query
command: "r ipconfig!"
params: []
- id: query_mac_addr
label: Query MAC Address
kind: query
command: "r mac addr!"
params: []
- id: set_ip_mode
label: Set IP Mode
kind: action
command: "s ip mode {z}!"
params:
- name: z
type: integer
description: "0 = static, 1 = DHCP"
- id: query_ip_mode
label: Query IP Mode
kind: query
command: "r ip mode!"
params: []
- id: set_ip_addr
label: Set IP Address
kind: action
command: "s ip addr {addr}!"
params:
- name: addr
type: string
description: "IPv4 address in xxx.xxx.xxx.xxx format"
- id: query_ip_addr
label: Query IP Address
kind: query
command: "r ip addr!"
params: []
- id: set_subnet
label: Set Subnet Mask
kind: action
command: "s subnet {mask}!"
params:
- name: mask
type: string
description: "Subnet mask in xxx.xxx.xxx.xxx format"
- id: query_subnet
label: Query Subnet Mask
kind: query
command: "r subnet!"
params: []
- id: set_gateway
label: Set Gateway
kind: action
command: "s gateway {gateway}!"
params:
- name: gateway
type: string
description: "Gateway in xxx.xxx.xxx.xxx format"
- id: query_gateway
label: Query Gateway
kind: query
command: "r gateway!"
params: []
- id: set_tcp_ip_port
label: Set TCP/IP Port
kind: action
command: "s tcp/ip port {x}!"
params:
- name: x
type: integer
description: "TCP/IP port, 1~65535"
- id: query_tcp_ip_port
label: Query TCP/IP Port
kind: query
command: "r tcp/ip port!"
params: []
- id: set_telnet_port
label: Set Telnet Port
kind: action
command: "s telnet port {x}!"
params:
- name: x
type: integer
description: "Telnet port, 1~65535"
- id: query_telnet_port
label: Query Telnet Port
kind: query
command: "r telnet port!"
params: []
- id: net_reboot
label: Reboot Network Modules
kind: action
command: "s net reboot!"
params: []
- id: set_uart_baudrate
label: Set Local or HDBaseT UART Baud Rate
kind: action
command: "s uart {x} baudrate {y}!"
params:
- name: x
type: integer
description: "UART index, 0~8"
- name: y
type: integer
description: "1 = 115200, 2 = 57600, 3 = 56000, 4 = 38400, 5 = 19200, 6 = 14400, 7 = 9600, 8 = 4800"
- id: set_uart_datalen
label: Set Local or HDBaseT UART Data Length
kind: action
command: "s uart {x} datalen {y}!"
params:
- name: x
type: integer
description: "UART index, 0~8"
- name: y
type: integer
description: "1 = 8 bits, 2 = 7 bits"
- id: set_uart_parity
label: Set Local or HDBaseT UART Parity
kind: action
command: "s uart {x} parity {y}!"
params:
- name: x
type: integer
description: "UART index, 0~8"
- name: y
type: integer
description: "1 = none, 2 = odd, 3 = even"
- id: uart_send_data
label: Send UART Data
kind: action
command: "s uart {x} type {z} senddata {y} end!"
params:
- name: x
type: integer
description: "Local or HDBaseT UART index, 0~4"
- name: z
type: integer
description: "0 = ASCII, 1 = hex"
- name: y
type: string
description: "Data payload"
- id: query_uart_status
label: Query UART Status
kind: query
command: "r uart status {x}!"
params:
- name: x
type: integer
description: "Local or HDBaseT UART index, 0~4"
- id: set_ir_out_level
label: Set IR Output Level
kind: action
command: "s ir out level {x}!"
params:
- name: x
type: integer
description: "0 = 5V, 1 = 12V"
- id: query_ir_out_level
label: Query IR Output Level
kind: query
command: "r ir out level!"
params: []
Feedbacks
feedbacks:
- id: power_state
type: enum
values:
- "power on"
- "power off"
- id: device_model
type: string
- id: firmware_versions
type: string
- id: device_status
type: string
- id: input_connection
type: enum
values:
- "connect"
- "disconnect"
- id: output_connection
type: enum
values:
- "connect"
- "disconnect"
- id: beep_state
type: enum
values:
- "beep on"
- "beep off"
- id: panel_lock_state
type: enum
values:
- "panel button lock on"
- "panel button lock off"
- id: lcd_mode
type: enum
values:
- "lcd on always"
- "lcd on 15 seconds"
- "lcd on 30 seconds"
- "lcd on 60 seconds"
- "lcd off"
- id: preset_information
type: string
- id: rs232_baud_rate
type: integer
- id: output_route
type: string
- id: hdmi_stream_state
type: enum
values:
- "enable"
- "disable"
- id: hdbt_stream_state
type: enum
values:
- "enable"
- "disable"
- id: hdmi_scaler_mode
type: enum
values:
- "bypass"
- "4k->1080p"
- "Auto"
- id: hdbt_scaler_mode
type: enum
values:
- "bypass"
- "4k->1080p"
- "Auto"
- id: input_edid
type: string
- id: hdmi_output_edid_data
type: string
- id: hdbt_output_edid_data
type: string
- id: ip_configuration
type: string
- id: mac_address
type: string
- id: ip_mode
type: enum
values:
- "Static"
- "DHCP"
- id: ip_address
type: string
- id: subnet_mask
type: string
- id: gateway
type: string
- id: tcp_ip_port
type: integer
- id: telnet_port
type: integer
- id: uart_status
type: string
- id: uart_received_data
type: string
- id: ir_out_level
type: enum
values:
- "5V"
- "12V"
Variables
variables: []
Events
events:
- id: boot_initializing
description: "Boot or reboot initialization message"
example: "System Initializing..."
- id: boot_finished
description: "Boot or reboot completion message"
example: "Initialization Finished!"
Macros
macros: []
Safety
confirmation_required_for: []
interlocks: []
Notes
sintroduces set commands,rintroduces read commands, and!terminates commands.- Default network mode is DHCP.
- Default TCP/IP port is 8000; default Telnet port is 23.
- Static IP address, subnet, and gateway changes require DHCP to be disabled first.
- IP mode, address, subnet, gateway, TCP/IP port, and Telnet-port changes require
s net reboot!or device power cycling before taking effect. - EDID indices 1–21 select built-in definitions, 22–23 select user definitions, 24–31 copy HDMI outputs 1–8, and 31–39 copy HDBaseT outputs 1–8 as printed in source.
- Web GUI has
AdminandUserlogin names with lowercase matching passwords. Source does not state that these credentials apply to raw TCP or Telnet control. - Factory reset requires physical RS-232 cabling; source states all other functions can operate over IP or cable.
Provenance
source_domains:
- simplifiedmfg.com
- grouponenw.com
- store.midstatedistributing.com
source_urls:
- https://www.simplifiedmfg.com/simplified-products/m88sl
- https://grouponenw.com/customcontent/attachment/M88SL-Data-Sheet.pdf
- https://store.midstatedistributing.com/images/pdf/SMP_M88SL_SS.pdf
retrieved_at: 2026-07-25T03:37:09.123Z
last_checked_at: 2026-08-05T08:43:23.798Z
Verification Summary
verdict: verified
checked_at: 2026-08-05T08:43:23.798Z
matched_actions: 87
action_count: 87
confidence: medium
summary: "All 87 spec actions match literal ASCII commands in the source table; transport parameters (115200 baud, port 8000, telnet 23) all appear verbatim. (7 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "firmware compatibility range not stated; firmware values occur only in response examples."
- "authentication procedure for raw TCP and Telnet control channels not stated."
- "serial flow control not stated."
- "source gives no explicit confirmation requirements, safety interlocks, or power sequencing procedure."
- "EDID index 31 appears in both HDMI-copy and HDBaseT-copy ranges in source."
- "response timing, inter-byte delay, message framing beyond `!`, and concurrency limits not stated."
- "UART topology behind indices 0~8 and 0~4 is not fully defined in source."
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0