PureLink HDMI Matrix
The purelink driver controls a PureLink HDMI matrix switcher over the
network. It speaks PureLink's ASCII control protocol on TCP port 23 (telnet,
no login) and routes any input to any output with a compact *…CI…O…! command.
In GEM the matrix is a controller: one device drives many rooms — each matrix
output feeds a display or a room, and each matrix input carries a source
(cable box, streamer, media player, camera feed).
You bind each output to an AV zone and each input to a Global AV source, then a small routing macro tells the matrix which input to send to which output when a user picks a source on a touchpanel.
The PureLink driver sends routing commands but does not read state back from the matrix. It never auto-creates zones, never polls, and never reflects the matrix's live routing — GEM shows the source you last selected, not a confirmation from the hardware. Plan your commissioning around that: if the matrix is changed from its own web UI or front panel, GEM won't know until you re-select the source.
Prerequisites
- The PureLink matrix on the same LAN as GEM, with a static IP or a DHCP reservation, and telnet/IP control reachable on port 23.
- The matrix's Router ID. This is the number in the command prefix; it defaults to 999, which matches single-router installs. Chained/stacked matrices give each router a distinct ID — confirm yours before you start, because a command sent with the wrong Router ID is silently ignored by the hardware.
- A rack map of which physical output (OUT) number feeds each room and which
input (IN) number each source is wired to. Enter these as plain numbers in
GEM — the driver zero-pads them to two digits on the wire for you (
8→08).
A PureLink AV zone address is the matrix output number and an AV source address is the matrix input number — both plain integers that match the chassis labels. That is the whole addressing model; you never enter the zero-padded form or the raw protocol string yourself.
Setup
-
System → Devices → Add Device: choose the PureLink HDMI Matrix driver. Fill in:
- IP Address — the matrix's LAN address (required).
- TCP Port — leave at 23 unless the matrix was moved to another port.
- Router ID — leave at 999 for a single matrix; set it only if your matrix uses a different router identifier (chained installs).
Set Enabled to Yes and save. The driver connects to port 23; there is no login or pairing step.
-
System → Zones → Add Zone: create one zone per display or room the matrix feeds. Set the zone's Address to that room's matrix output number (e.g.
8for OUT8). Selecting the PureLink device in the New Zone editor pre-selects the AV subsystem — leave it there so the zone surfaces in the AV routing screens.Subsystem placementThe driver hints the AV subsystem (one of the subsystems GEM ships with), so the zone editor pre-selects AV for you. Membership in AV is what makes the zone available under AV → AV Zones when you bind an AV Zone to it. The PureLink driver does not create these zones automatically — add one per output by hand.
-
AV → AV Zones → Add: create one AV zone per output you want on a touchpanel.
- AV Type —
videofor a display,audiofor an audio-only feed. - Bind to existing zone — pick the zone you made in step 2.
- Address — the same output number as the zone (e.g.
8).
- AV Type —
-
AV → AV Sources → Add: create one AV source per matrix input.
- Global source (not zone-specific) — check this. A matrix input can play in any room, so it belongs to every zone, not one. (See Route a Source to Multiple Zones.)
- Device — the PureLink matrix device from step 1.
- AV Type and Label — required; the label is what users see when they pick the source.
- Address — the input number this source is wired to (e.g.
1for IN1). - On Macro — the routing macro built in the next section.
Routing a source to a zone
GEM does not route a PureLink matrix on its own — a source is routed by its On
Macro. Unlike some matrices whose route command comes pre-wired to the AV
addresses, PureLink's input command takes plain output and input
arguments, so you point them at the AV addresses yourself. Build one macro and
reuse it for every PureLink source:
- Automation → Macros → Add a macro, e.g.
Route PureLink. - Add a step that sends the PureLink matrix's
inputcommand. - Set the step's argument values so GEM fills them at run time:
output→[@av_zone.address](the selected zone's output number).input→[@av_source.address](this source's input number).
- Set this macro as the On Macro on every PureLink AV source (the Global sources from step 4 above).
When a user picks that source in a zone, GEM substitutes the zone's output and the
source's input and sends *<router_id>CI<input>O<output>! — for example
*999CI01O08! connects input 1 to output 8.
To drop a route — for instance in a zone's Off Macro — use the matrix's
disconnect_input command with the same output/input arguments.
Attributes
Device — required
| Attribute | Type | Description |
|---|---|---|
ip | string | LAN IP of the PureLink matrix. |
Device — optional
| Attribute | Type | Default | Description |
|---|---|---|---|
port | int | 23 | Control TCP port. PureLink units listen on telnet port 23; change only if the matrix was reconfigured. |
router_id | string | 999 | Router identifier used in the command prefix. 999 matches single-router installs; chained matrices use distinct IDs. |
There are no reflected attributes — the driver does not parse responses, so it writes no live state (routed input, signal, etc.) back onto the device or zones.
AV zone
- Address required: yes — the matrix output number (1-based) that feeds this room.
AV source
- Address: the matrix input number (1-based) this source is wired to. The source's On Macro routes this input to the chosen zone's output.
Commands
Send these from a macro, the Commands page, or a control.
Both take an output (matrix output) and an input (matrix input); both
numbers are zero-padded to two digits on the wire.
| Command | Args | Wire | Notes |
|---|---|---|---|
input | output, input | *<router_id>CI<input>O<output>! | Connect an input to an output. Used by AV source On Macros. |
disconnect_input | output, input | *<router_id>DI<input>O<output>! | Disconnect an input from an output. Handy in a zone Off Macro. |
<router_id> is the device's Router ID (default 999). Note the wire order:
the input number follows CI/DI and the output number follows O, even
though you enter them as the output and input arguments. Every frame ends with
! and a carriage-return/newline.
Known quirks
- No state feedback. The driver is send-only — it does not read the matrix's responses, so GEM reflects the source you selected, not a hardware confirmation. It also never auto-creates zones; you create one AV zone per output by hand.
- One telnet session at a time. PureLink matrices allow a single control session. If the matrix's web UI or a second controller holds the connection, GEM's session drops after a few minutes — close the other control point.
- Router ID must match. A command sent with the wrong Router ID prefix is silently ignored by the hardware: the command "succeeds" from GEM's side but nothing switches.
- Numbers are zero-padded to two digits. Enter plain numbers (
8,1) in GEM; the driver sends08,01on the wire. - Port and Router ID default in the driver. The driver starts at port
23and Router ID999; the device's TCP Port and Router ID values override those when they are set.
Troubleshooting
| Symptom | Check |
|---|---|
| Routing commands are accepted but the picture never changes | Confirm the Router ID matches the matrix configuration — a wrong prefix is silently ignored by PureLink hardware. Also confirm the source's On Macro runs input with output = [@av_zone.address] and input = [@av_source.address]. |
| Selecting a source does nothing | The source needs an On Macro that runs input (see Routing a source to a zone). A Global source with no On Macro records the selection but sends nothing to the matrix. |
| Right source, wrong room | Confirm the AV source Address is the correct input number and the AV zone Address is the correct output number, and that they match the chassis labels. |
| Connection drops after a few minutes | PureLink units allow only one telnet session. Close the matrix's web UI or any second control point. |
| GEM shows a source routed but the matrix disagrees | The driver does not read matrix state — GEM reflects your last selection, not the hardware. If the matrix was changed outside GEM, re-select the source to re-send the route. |
Related documentation
- Route a Source to Multiple Zones — the local-vs-global source model this matrix uses.
- AV Zones — bind each output as an AV zone.
- AV Sources — define the inputs and their routing macros.
- Macros — build the source On Macro.
- Devices — add and configure the matrix.
- Zones — create one zone per output.
- Commands — the command grid and the Test runner.
- AVPro Edge AC-MX88 — a comparable HDMI matrix driver.