Extron SIS Control
Driver for any Extron Electronics device that speaks Simple Instruction Set (SIS) over TCP/Telnet — the lingua franca of Extron commercial AV. One driver, one product family, broad coverage:
- Matrix switchers — DTP CrossPoint, XTP CrossPoint, MAV Plus, IN1604, IN1606, IN1808.
- Presentation switchers — SMP / SMD recorders, ShareLink, ISS, etc.
- Audio amplifiers — XPA Ultra, MPA series.
- Control processors — IP-Link / IPCP Pro (when used as a SIS endpoint rather than a programming target).
Most Extron products since ~2008 ship with the same core SIS routing,
volume, and mute verbs. Product-specific commands are sent through the
send passthrough.
Prerequisites
- Telnet enabled on the device. This driver connects over plain Telnet (TCP) — it does not speak SSH. Most products ship with Telnet on by default, but firmware-hardened sites sometimes disable it in favor of SSH-only (port 22023). If Telnet is off the driver cannot connect at all — re-enable Telnet (port 23) before integrating. Pointing the driver at the SSH port (22023) will not work.
- A static IP or DHCP reservation. The device IP is shown on the front-panel LCD on most products, and via Extron Toolbelt or GlobalViewer.
- If a Local (Administrator or User) password is set on the device, note the password. Default ships with no password.
Setup
- In Extron Toolbelt, confirm IP Setup → Telnet is enabled and the Telnet Port is 23. The driver speaks plain Telnet only; the SSH port (22023) is not supported, so if Telnet was turned off, re-enable it.
- In GEM admin → Devices, add a new device with driver
extron_sis. - Required:
ip. Optional but recommended:port(default 23),password(only if device has Local password protection),input_countandoutput_count(default 8/8 — set to match the physical matrix), andvolume_scale(default 100; XPA-series amps use 255). - On connect the driver:
- Detects and answers a
Password:prompt if present. - Enables verbose mode 3 (
Esc 3 CV) so front-panel and external route changes echo to the IP session. - Pulls model (
1I) and firmware (Q) for telemetry. - Polls every output once for its current tie (route) and volume. Mute state is not polled — it updates only when a mute command is sent or the device echoes a mute change under verbose mode.
- Detects and answers a
- Create one GEM zone per output you want to address;
zone.address= output number as a string ("1", "2", ...).
Attributes
Device
| Attribute | Type | Required | Description |
|---|---|---|---|
ip | string | yes | LAN IP of the Extron device. |
port | int | no | Telnet port. Default 23. Plain Telnet only — the SSH port (22023) is not supported. |
password | string (secure) | no | Local password if device has one. |
input_count | int | no | Number of matrix inputs. Default 8. |
output_count | int | no | Number of matrix outputs. Default 8. |
volume_scale | int | no | Device-side volume max. 100 (%) by default; 255 for XPA-series amps. |
status_interval | int | no | Poll interval in ms. Default 30000. |
model | string | auto | Populated from 1I (information response). |
firmware | string | auto | Populated from Q response. |
Zone
The driver publishes:
| Attribute | Description |
|---|---|
input | Currently routed input (1..input_count). |
volume | 0-100 scaled from the device volume_scale. |
mute_state | on / off for audio output mute. |
zone.source is reserved for the GEM av_source FK and must never be
written by drivers — the physical input number goes in zone.input
(GEM convention).
Commands
| Command | Args | What it sends |
|---|---|---|
route / set_source | address, source | <src>*<out>! (A/V tie) |
route_video | address, source | <src>*<out>% (video plane) |
route_audio | address, source | <src>*<out>$ (audio plane) |
tie_all | source | <src>*! (one input to all outputs) |
untie | address | 0*<out>! (disconnect output) |
set_volume | address, level (0-100) | <scaled>V<out> |
volume_up / volume_down | address | +V<out> / -V<out> |
mute_on / mute_off | address | 1Z<out> / 0Z<out> |
mute_toggle | address | Resolved inside the driver from the output's last-known mute_state (sends 0Z<out> / 1Z<out>). If GEM has not yet observed a mute state for that output, it defaults to muting. |
get_zone_status | address | <out>! plus V<out>. |
get_outputs | — | Refresh ties for all 1..output_count outputs. |
get_info | — | 1I + Q to refresh model / firmware. |
lock_front_panel / unlock_front_panel | — | Esc 1X / Esc 0X. |
send | raw | Escape hatch — send a literal SIS command. The carriage-return terminator (\r) is appended automatically, so do not include a trailing CR in raw (e.g. send 1*2!, not 1*2!\r). |
Zone address format
Output number as a plain string: "1", "2", ... up to the device's
output count. AV zones bind to these zones via volume_device_id or
source_device_id depending on whether the install treats the Extron as
the volume target, the source switcher, or both.
Known limitations
- The Extron product line is enormous. The driver implements the
common SIS subset shared across matrix switchers, presentation
switchers, and amplifiers. Product-specific verbs (display warm-up,
EDID management, scaler test patterns, OSD control) are not covered
— use the
sendpassthrough. - Power state is not exposed as a command. Most matrices have no soft
power; products that do (e.g., some XPA amps) accept the verbs
through
send. - IPCP Pro / IP-Link processors run user-written control scripts internally. SIS access from GEM coexists with those scripts and competes for state ownership — coordinate with the Extron programmer before integrating.
- The driver assumes verbose mode 3 (tagged responses). If a third
party resets verbose to 0, front-panel changes stop echoing and the
driver becomes poll-only until reconnect. Send
\x1B3CVviasendto recover without bouncing the socket. - The bare-numeric response shape to a single-output query (
<out>!returns just<input>) is ambiguous without context, so the driver does not map those bare replies back to a zone. Routing state is tracked only from the tagged verbose-mode-3 responses (Out<N> In<M> All), which parse cleanly. Practically: keep verbose 3 enabled (the driver sets it on connect) or zone routing state will not update — only the volume and mute echoes will.
Troubleshooting
| Symptom | Check |
|---|---|
| device never connects (or the socket opens then fails immediately) | Telnet is likely disabled on the device (SSH-only). This driver does not speak SSH — re-enable Telnet and use port 23. The SSH port 22023 will not work. |
| socket connects then drops a few seconds later | Concurrent Telnet sessions exceeded (typically 4). Disconnect Toolbelt / GlobalViewer sessions and retry. |
Password: prompt loops in the logs | Wrong password attribute. The driver sends the same string for User and Administrator accounts — confirm on the device which it expects. |
| route commands echo but the matrix does not change | Front-panel lockout is engaged. Send unlock_front_panel (Esc 0X) or unlock via the web UI. |
| volume sliders move but device volume does not change | volume_scale mismatch. Modern Extron products use 0-100 (%); XPA-series amps use 0-255 raw. |
| no responses on the socket but stays connected | Verbose mode is off. Send \x1B3CV via the send command. |
E10 / E13 errors in the logs | E10 = invalid command, E13 = invalid value. The driver passes them through; usually means the product does not implement that SIS verb (use send with the product-specific equivalent). |