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
After saving the device, its Setup tab does the output zones and sources for you: a live crosspoint grid (read-only until you turn on Route on click), Create output zones for every output without one, Create routing macro (one macro that routes the selected source to the room on this matrix), a Create source row per input where you pick the device plugged into it, and an AV zone picker per output. See Devices — Setup Tab.
- 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). Write a control byte as \x plus two hex digits: \x1B3CV sends Esc 3 CV. |
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>) carries no output number. The driver runs its tie queries one at a time and pairs a bare reply only with the query it is waiting on; a bare number that arrives at any other time is ignored. The tagged verbose-mode-3 responses (Out<N> In<M> All) always parse, so keep verbose 3 enabled (the driver sets it on connect).
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). |