Summary
Extron MLC 60 Series MediaLink Controllers are media room control panels providing RS-232, IR, relay, and digital input control for display devices and switchers. This spec covers the Simple Instruction Set (SIS) commands used to control the MLC via the bidirectional RS-232 Remote port. The MLC62BTNKIT is a button kit accessory; the controllable device is the MLC 60 Series controller (MLC 62 RS, MLC 62 IR, MLC 64 RS variants).
Transport
protocols:
- serial
serial:
baud_rate: 9600
data_bits: 8
parity: none
stop_bits: 1
flow_control: none
auth:
type: none # inferred: no auth procedure in source
Traits
- queryable # inferred from query command examples (Q, N, I, etc.)
- levelable # inferred from volume control commands (+V, -V, X(V)
Actions
# SIS Symbol Key (from source):
# E = ESC (0x1B)
# } = soft carriage return (0x0D, no line feed)
# ] = CR/LF (0x0D 0x0A)
# • = space (0x20)
# X! = button number: 01-10
# X@ = relay port number: 1 or 2
# X# = pulse length: 1-255 (increments of 0.5 seconds)
# X( = volume level: up to 3 digits
# X1@ = device name: up to 24 alphanumeric chars
# X1! = lockout mode: 0=off, 1=on
# X^ = digital input state: 0=low, 1=high
# X* = firmware version (n.nn)
# X2% = firmware compatibility version (nnn.nnn)
# X2^ = device config compatibility version (nnn.nnn)
# X2# = relay status: 0=open, 1=closed
# X4( = default product name
# X5) = LED status: 32-digit number
#
# NOTE: Commands are NOT case-sensitive unless otherwise indicated.
# Spaces between backtick-quoted tokens in source tables are documentation
# formatting; concatenate tokens for actual transmission. The • symbol
# inside a token represents an actual space byte (0x20).
- id: trigger_button
label: Trigger Button
kind: action
command: "E B*{button}BTNO}"
params:
- name: button
type: string
description: "Button number 01-10. Buttons numbered from front panel top-left (01) to bottom-right (10)."
notes: "Executes commands programmed to the button. Same as pressing the button on the front panel."
- id: set_volume_level
label: Set Volume Level
kind: action
command: "{level}V"
params:
- name: level
type: string
description: "Volume table level, up to 3 digits. Leading zeros optional. Only positive values allowed. Only for MLC 62 RS models with volume tables."
notes: "Out-of-range values return E13. Devices without volume tables return E14."
- id: volume_increment
label: Volume Increment
kind: action
command: "+V"
params: []
notes: "Response: 'Vol{level}]' on devices with volume tables; 'Vol+]' on devices without."
- id: volume_decrement
label: Volume Decrement
kind: action
command: "-V"
params: []
notes: "Source uses en-dash (-, U+2013); may represent ASCII minus (0x2D). Response: 'Vol{level}]' on devices with volume tables; 'Vol-]' on devices without."
- id: volume_view
label: View Volume Level
kind: query
command: "V"
params: []
notes: "Response: '{level}]' on devices with volume tables; '---]' on devices without."
- id: pulse_relay
label: Pulse Relay
kind: action
command: "{relay}*3*{pulse_length}O"
params:
- name: relay
type: integer
description: "Relay port number: 1 = Relay 1, 2 = Relay 2"
- name: pulse_length
type: integer
description: "Pulse length in 0.5-second increments: 1 = 0.5s, 2 = 1s, ..., 255 ≈ 130s. Default is 1."
notes: "Response includes relay status: 'Rly{relay}*{status}]'."
- id: toggle_relay
label: Toggle Relay
kind: action
command: "{relay}*2O"
params:
- name: relay
type: integer
description: "Relay port number: 1 = Relay 1, 2 = Relay 2"
notes: "Toggles relay between on (closed) and off (open). Response: 'Rly{relay}*{status}]'."
- id: force_relay_on
label: Force Relay On
kind: action
command: "{relay}*1O"
params:
- name: relay
type: integer
description: "Relay port number: 1 = Relay 1, 2 = Relay 2"
notes: "Sets relay to closed (on). Response: 'Rly{relay}*1]'."
- id: force_relay_off
label: Force Relay Off
kind: action
command: "{relay}*0O"
params:
- name: relay
type: integer
description: "Relay port number: 1 = Relay 1, 2 = Relay 2"
notes: "Sets relay to open (off). Response: 'Rly{relay}*0]'."
- id: view_relay_state
label: View Relay State
kind: query
command: "{relay}O"
params:
- name: relay
type: integer
description: "Relay port number: 1 = Relay 1, 2 = Relay 2"
notes: "Response: status (0=open, 1=closed) + CR/LF."
- id: view_digital_input_state
label: View Digital Input State
kind: query
command: "]"
params: []
notes: "Command is CR/LF (0x0D 0x0A). Response: state (0=low, 1=high) + CR/LF. RS models only."
- id: front_panel_lockout_off
label: Front Panel Lockout Off
kind: action
command: "0X"
params: []
notes: "Unlocks all front panel buttons. Response: 'Exe0]'."
- id: front_panel_lockout_on
label: Front Panel Lockout On
kind: action
command: "1X"
params: []
notes: "Locks all front panel buttons (executive mode). Response: 'Exe1]'."
- id: view_lockout_status
label: View Lockout Status
kind: query
command: "X"
params: []
notes: "Response: lockout state (0=off, 1=on) + CR/LF."
- id: set_unit_name
label: Set Unit Name
kind: action
command: "E {name} CN}"
params:
- name: name
type: string
description: "Device name up to 24 alphanumeric characters. First character must be alphabetic. Last character cannot be hyphen/minus (-). No spaces permitted."
notes: "Response: 'Ipn•{name}]'."
- id: set_unit_name_default
label: Set Unit Name to Default
kind: action
command: "E•CN}"
params: []
notes: "Resets name to factory default. Response: 'Ipn•{default_name}]'. Default names: MLC-62-RS, MLC-62-IR, MLC-64-RS-D."
- id: configuration_reset
label: Configuration Reset
kind: action
command: "E ZXXX}"
params: []
notes: "Resets MLC configuration to factory default. Response: 'ZapXXX]'."
- id: query_firmware_version
label: Query Firmware Version
kind: query
command: "Q"
params: []
notes: "Response: firmware version (n.nn) + CR/LF. Example: '1.00]'."
- id: query_firmware_compatibility_version
label: Query Firmware Compatibility Version
kind: query
command: "**Q"
params: []
notes: "Response: firmware compatibility version (nnn.nnn) + CR/LF."
- id: query_device_config_compatibility_version
label: Query Device Config Compatibility Version
kind: query
command: "E DIMQ}"
params: []
notes: "Response: device config compatibility version (nnn.nnn) + CR/LF. Example: '002.100]'."
- id: request_part_number
label: Request Part Number
kind: query
command: "N"
params: []
notes: "Response: part number + CR/LF. Known values: MLC 62 RS D = 60-1005-02, MLC 62 RS EU = 60-1005-35, MLC 62 RS MK = 60-1005-23, MLC 62 IR D = 60-1006-02, MLC 64 RS D = 60-1182-02."
- id: query_model_name
label: Query Model Name
kind: query
command: "I"
params: []
notes: "Response: model name + CR/LF. Examples: 'MLC•62•RS•D]', 'MLC•62•RS•EU]', 'MLC•62•RS•MK]', 'MLC•62•IR•D]', 'MLC•64•RS•D]'."
- id: query_led_status
label: Query LED Status
kind: query
command: "E LC}"
params: []
notes: "Response: 32-digit number + CR/LF. Each digit (0-4) represents an LED status: 0=off, 1=dim, 2=on(bright), 3=slow blink, 4=fast blink. Digits ordered LED 32 (leftmost) to LED 1 (rightmost). See LED maps in source for MLC 62 vs MLC 64."
Feedbacks
- id: button_press_notification
type: string
description: "Unsolicited message sent when front panel button is pressed locally. Format: 'BtnoB*{button}]'."
- id: power_on_copyright
type: string
description: "Sent only on power-on via RS-232 (not USB). Format: '(c)Copyright20nn,ExtronElectronics,MLCnn,vn.nn,60-nnnn-nn'. Contains model name, firmware version, and part number."
- id: error_response
type: enum
values:
- E10 # Invalid command or parameter
- E13 # Invalid value (out of range)
- E14 # Not valid for this configuration
- E22 # Busy
description: "Returned when command is invalid or cannot be executed. Format: 'E{code}' + CR/LF."
- id: volume_level_response
type: string
description: "Response to volume query/increment/decrement. With volume tables: 'Vol{level}]' or '{level}]'. Without: 'Vol+]', 'Vol-]', or '---]'."
- id: relay_state_response
type: string
description: "Response to relay commands. Format: 'Rly{relay}*{status}]' or '{status}]'. Status: 0=open, 1=closed."
- id: digital_input_state_response
type: enum
values: ["0", "1"]
description: "Response to digital input query. 0=low, 1=high."
- id: lockout_status_response
type: string
description: "Response to lockout commands. 'Exe0]' (off), 'Exe1]' (on), or '{state}]' (query)."
- id: firmware_version_response
type: string
description: "Firmware version to two decimal places (n.nn)."
- id: firmware_compatibility_response
type: string
description: "Firmware compatibility version (nnn.nnn). Major (first 3 digits) must match for compatibility."
- id: device_config_compatibility_response
type: string
description: "Device config compatibility version (nnn.nnn). Major (first 3 digits) must match for compatibility."
- id: part_number_response
type: string
description: "Controller part number (60-nnnn-nn)."
- id: model_name_response
type: string
description: "Model name with space separators (e.g. 'MLC•62•RS•D')."
- id: led_status_response
type: string
description: "32-digit number, each digit 0-4 representing LED status."
- id: device_name_response
type: string
description: "Response to set name command. Format: 'Ipn•{name}]'."
Variables
# All settable parameters are covered by discrete Actions above:
# - Volume level (set_volume_level, volume_increment, volume_decrement)
# - Relay states (force_relay_on/off, toggle_relay, pulse_relay)
# - Lockout mode (front_panel_lockout_on/off)
# - Device name (set_unit_name, set_unit_name_default)
# No additional continuous variables documented in source.
Events
- id: button_pressed
description: "Sent when a front panel button is pressed locally. No host response required."
payload: "BtnoB*{button}]"
params:
- name: button
type: string
description: "Button number 01-10 that was pressed."
- id: power_on_message
description: "Sent only when MLC first powers on via RS-232 connection. Does not appear with USB connection."
payload: "(c)Copyright20nn,ExtronElectronics,MLCnn,vn.nn,60-nnnn-nn"
params:
- name: year
type: string
description: "Copyright year (20nn)"
- name: model
type: string
description: "MLC model name (MLCnn)"
- name: firmware_version
type: string
description: "Firmware version (n.nn)"
- name: part_number
type: string
description: "Model part number (60-nnnn-nn)"
Macros
# UNRESOLVED: no multi-step sequences described explicitly in source
Safety
confirmation_required_for: []
interlocks: []
# Source documents relay ratings (normally open, 24 V, 1 A) and digital input
# voltage thresholds (0-24 VDC; <1.0 VDC = low, >1.5 VDC = high) but does not
# describe safety warnings, interlock procedures, or power-on sequencing
# requirements. Relay ratings and voltage thresholds noted in Notes section.
Notes
Device mapping: MLC62BTNKIT is a button kit accessory (cosmetic button caps/bezel). The controllable RS-232 device is the MLC 60 Series controller family: MLC 62 RS D, MLC 62 RS EU, MLC 62 RS MK, MLC 62 IR D, and MLC 64 RS D.
SIS communication: SIS commands are strings of one or more characters. No special characters required to begin or end a command sequence. The MLC validates and executes valid commands, then sends a response. Most responses end with CR/LF (0x0D 0x0A).
Serial connection: The Remote port is a 3-pole, 3.5 mm captive screw connector for bidirectional RS-232. Pin 1 = Tx, Pin 2 = Rx, Pin 3 = G. Use a female 9-pin to bare wire RS-232 cable or universal control cable (UC50', UC100').
Port architecture:
- Remote port (Port A) — bidirectional RS-232 for SIS control and configuration
- Port A Com (RS models) — unidirectional RS-232 output to control display/switcher
- Port B IR/S (RS models) — unidirectional RS-232 or IR output (configurable)
- Port A IR (MLC 62 IR D) — IR output only
- Relays port (RS models) — 2 normally open relays, rated 24 V, 1 A
- Digital Input port (RS models) — accepts 0-24 VDC; <1.0 VDC = logic low, >1.5 VDC = logic high; internal +5 VDC selectable pull-up resistor
Volume table behavior: MLC 62 RS models may have serial drivers with volume tables. Devices with volume tables support discrete level setting ({level}V). Devices without return E14 for discrete set attempts. Increment/decrement/view commands work on both but return different response formats.
Compatibility versioning: Firmware (X2%) and device config (X2^) compatibility versions each have major (first 3 digits) and minor (last 3 digits) numbers. Matching major numbers = compatible. Mismatched minor numbers may not be backward compatible.
LED status (X5)): 32-digit number, digits ordered LED 32 (leftmost) to LED 1 (rightmost). MLC 62 uses LEDs 1-25 (26-32 unused). MLC 64 uses LEDs 1-20 (21-32 unused). Each digit: 0=off, 1=dim, 2=on, 3=slow blink, 4=fast blink.
Provenance
source_domains:
- media.extron.com
- extron.com
source_urls:
- https://media.extron.com/public/download/files/userman/68-2166-01_E_MLC_60_Series_UG.pdf
- https://www.extron.com/download/download-center
retrieved_at: 2026-07-11T01:28:41.914Z
last_checked_at: 2026-07-12T08:59:05.565Z
Verification Summary
verdict: verified
checked_at: 2026-07-12T08:59:05.565Z
matched_actions: 23
action_count: 23
confidence: medium
summary: "All 23 spec actions matched literal commands in source; transport parameters verified; full command coverage confirmed. (8 unresolved item(s) noted in Known Gaps.)"
Known Gaps
- "USB configuration port commands not documented in this source. Port A Com and Port B IR/S output port user-programmed command strings not covered — configured via MLC configuration software, not via SIS. IR emitter commands not documented."
- "no multi-step sequences described explicitly in source"
- "exact byte layout of ESC-prefixed commands — spaces between backtick-quoted tokens in source may be documentation formatting. Verify with device testing."
- "en-dash (–) in volume decrement command may represent ASCII minus (0x2D). Verify with device testing."
- "firmware version compatibility ranges not stated in source"
- "USB port SIS command set not documented in this source"
- "IR emitter command protocol not documented in this source"
- "Port A Com / Port B IR/S user-programmed output command configuration not documented (configured via MLC configuration software)"
From the AI4AV catalog (https://ai4av.net) · ODbL-1.0