Skip to main content

Crestron NVX (AV-over-IP)

Crestron NVX is an AV-over-IP video distribution system. Instead of a fixed-size matrix box, every source is plugged into an encoder (a transmitter) and every display is plugged into a decoder (a receiver), and all of them live on a managed network. "Routing source 3 to display 5" means telling display 5's decoder to subscribe to source 3's encoder stream — the network is the matrix, so it scales to as many endpoints as the switch fabric allows.

This GEM driver is a coordinator, not one device per box. You add a single GEM device — it appears in the driver list as Crestron NVX (Coordinator) — and that one device represents the whole NVX fabric. It holds the shared admin login and routes AV by issuing commands that name the encoder IP and decoder IP directly. GEM does not auto-discover the encoders/decoders, does not create a device per box, and does not create zones. You drive the fabric with two commands: set_input (route an encoder onto a decoder) and zone_off (clear a decoder).

Commission the NVX hardware first

GEM routes streams; it does not configure the NVX boxes themselves. Set up the encoders and decoders in Crestron's own tooling first — IP addresses, stream transmit settings, admin credentials, and (for larger systems) DM NVX Director — using the NVX web interface or Director. Once each box has a reachable IP and a working admin login, GEM can route between them.

How GEM models NVX

In the real worldIn GEM
The whole NVX fabric (many encoders + decoders)One coordinator device
A source's encoderAn IP address you pass to set_input as encoder_ip
A display's decoderAn IP address you pass to set_input / zone_off as decoder_ip
"Route this source to this display"A set_input command
"Blank this display"A zone_off command

Because routing is command-driven, you build the room's source-selection logic at the command, macro, or button layer — typically one macro per route (for example "Watch Cable in the Great Room"). The driver itself does not expose NVX endpoints on the AV Sources / AV Zones screens; it has no zones of its own.

What's controlled

  • set_input — route an encoder's stream onto a decoder (subscribe the decoder to the stream and send it to the decoder's HDMI output).
  • zone_off — stop routing on a decoder, blanking its output.

That's the full command set. NVX-side configuration such as creating streams, naming endpoints, or setting transmit resolution is done on the NVX hardware, not through GEM.

Prerequisites

  • NVX encoders and decoders on the same multicast-capable VLAN, fully commissioned and reachable by IP from the GEM controller.
  • Admin credentials set on each unit. The driver authenticates to each box's web interface to route. If every unit shares one admin login (the usual case), you set it once on the coordinator; if a unit has different credentials, you can override per command.
  • A note of each encoder's IP and each decoder's IP — these are the addresses you put in the routing commands. Give every NVX box a static IP or DHCP reservation so the addresses never move.
  • NVX defaults to HTTPS on port 443 with a self-signed certificate. If a unit has only HTTP enabled, you can switch the driver to http (see Protocol, TLS, and certificates below).

Setup

  1. Open Devices, add a device, and choose the Crestron NVX (Coordinator) driver. It suggests the AV subsystem and a controller device type — accept those. This is the one device that stands in for the whole NVX system; you do not add a device per encoder or decoder.
  2. Set the shared login under the device's attributes:
    • Default Username — the NVX admin username used when a command doesn't carry its own.
    • Default Password — the matching password. It is stored encrypted (a secure attribute) and never shown back in plain text.
    • Default Protocol (optional)https (default) or http. Set it to http only if your units serve control over plain HTTP.
  3. Save and enable the device.
  4. Build your routes. Each route is a Send Command to this device with the command set to set_input and the encoder/decoder IPs filled in — see below.
You don't need per-unit logins if they all match

The Default Username / Default Password cover every unit that shares one admin login, which is the typical deployment. Only reach for the per-command credential arguments when a specific encoder or decoder has a different login.

Routing AV — set_input

Send the set_input command to the coordinator device with these arguments:

ArgumentRequiredWhat it is
encoder_ipyesIP of the source's encoder (the transmitter).
decoder_ipyesIP of the display's decoder (the receiver).
stream_uuidnoA specific stream UUID on the encoder. Omit it to use the encoder's first active stream.
encoder_username / encoder_passwordnoOverride the default login for this encoder only.
decoder_username / decoder_passwordnoOverride the default login for this decoder only.
protocolnohttp or https for this command, overriding the device default.

The most common call is just the two IPs. For example, to show the cable box (encoder at 10.0.20.11) on the great-room display (decoder at 10.0.20.31), issue set_input with encoder_ip = 10.0.20.11 and decoder_ip = 10.0.20.31. Under the hood GEM reads the encoder's active streams, subscribes the decoder to the chosen stream, and routes it to the decoder's HDMI output — but you only issue the one command.

note
When to set stream_uuid

Most NVX encoders transmit a single stream, so you can leave stream_uuid blank and GEM routes the first active stream it finds on that encoder. Set stream_uuid only when an encoder transmits more than one stream and you need a specific one; get the UUID from that encoder's web interface or from DM NVX Director (GEM does not list stream UUIDs for you). If you pass a stream_uuid that the encoder isn't actively transmitting, the route fails with a "stream not found" error.

If the encoder has no active streams, set_input fails with "No active streams found" — that means the encoder isn't transmitting (check it's powered, has a live source, and its stream is started on the NVX side).

Where you issue the command

You issue set_input anywhere GEM sends a device command:

  • In a macro — add a Send Command step, set its target to this coordinator device, set the command to set_input, and supply encoder_ip and decoder_ip. Building one macro per route is the usual pattern, then attach those macros to source buttons on a touch panel. See Macros.
  • From a UI button — wire a control to run the same command with fixed arguments.
  • From the device's Commands tab — handy for testing a route during commissioning. See Commands.

Clearing a display — zone_off

Send zone_off to the coordinator with decoder_ip set to the display you want to blank:

ArgumentRequiredWhat it is
decoder_ipyesIP of the decoder to stop routing.
stream_uuidnoIf given, the decoder is also unsubscribed from that stream (not just stopped).
decoder_username / decoder_passwordnoOverride the default login for this decoder.
protocolnohttp or https for this command.

zone_off stops the decoder's output route. If you also pass the stream_uuid it had been showing, the decoder is additionally unsubscribed from that stream.

A display may keep showing the last frame

NVX can hold the last received frame in its output buffer. After zone_off the stream subscription is cleared, but the decoder may briefly continue to show the last image rather than going to a black or "no signal" screen. This is NVX behavior, not a GEM fault.

Credentials and per-command overrides

The driver authenticates to each NVX unit independently as it routes. For every command it needs a username and password for the encoder and/or decoder it touches, resolved in this order:

  1. The per-command argument (encoder_username / encoder_password, decoder_username / decoder_password), if you provided it.
  2. Otherwise the device's Default Username / Default Password.

If neither is available for a unit the command touches, it fails with "username or default_username required" (or the password equivalent) — set the defaults on the device, or pass the per-command arguments.

Protocol, TLS, and certificates

  • NVX units default to HTTPS on port 443 with a self-signed certificate. The driver does not validate the certificate chain, so a self-signed cert is fine — no cert import is needed.
  • Some firmwares accept only TLS 1.2. If the TLS handshake fails, confirm the GEM host's OpenSSL allows TLS 1.2.
  • If a unit has plain HTTP enabled instead, set Default Protocol to http (or pass protocol: http on the command). The default is https.
Sessions are cached for a few minutes

After it logs into a unit, the driver reuses that authenticated session for about 5 minutes (keyed by protocol, IP, port, and username) and re-authenticates automatically if the unit's session expires. One consequence: if you change a unit's password without restarting that unit, the cached session can keep working until it expires on its own. If a credential change doesn't seem to take effect immediately, give it a few minutes or restart the affected NVX unit.

Attributes

These are set on the coordinator device. There are no required attributes — a coordinator with no defaults still works as long as every routing command carries its own credentials, but setting the defaults is far simpler.

Device — optional

AttributeTypeDescription
default_usernamestringNVX admin username used when a command omits per-unit credentials.
default_passwordstring (secure)The matching password. Stored encrypted; never shown back.
protocolstringDefault transport for routing requests: https (default) or http.
Type these names exactly

The Crestron NVX driver doesn't add these names to the attribute autocomplete catalog, so when you add them in the Attribute editor, type default_username, default_password, and protocol exactly as shown. Mark default_password secure so it's stored encrypted.

Commands

Both commands appear on the device's Commands tab and can be used in macros, triggers, and on UI buttons. They take no template — the driver performs the NVX web calls itself — so you supply only the arguments.

CommandArgumentsAction
set_inputencoder_ip, decoder_ip, stream_uuid, encoder_username, encoder_password, decoder_username, decoder_password, protocolRoute the encoder's stream onto the decoder. Only encoder_ip and decoder_ip are required.
zone_offdecoder_ip, stream_uuid, decoder_username, decoder_password, protocolStop routing on the decoder (and unsubscribe if stream_uuid is given). Only decoder_ip is required.

Known limitations

  • No "encoder N → decoder M" shortcut. Routing is always by IP address — there's no global numbering where you'd say "encoder 3 to decoder 5". Identify every endpoint by its IP.
  • One coordinator device, no zones. The driver creates no GEM zones and does not surface NVX endpoints on the AV Sources / AV Zones screens. Source selection is built as commands, macros, or buttons that call set_input.
  • GEM does not list streams. There's no command to enumerate an encoder's stream UUIDs from GEM; when you need a specific UUID, read it off the NVX web interface or Director.
  • GEM does not configure the NVX boxes. Stream creation, transmit resolution, endpoint naming, and network setup are done on the NVX hardware.

Troubleshooting

SymptomCheck
set_input or zone_off returns 401The login for that unit is wrong. Confirm Default Username / Default Password (or the per-command override) match the NVX unit's admin login. The driver authenticates each unit separately, so a bad credential affects only the units that use it.
"No active streams found on encoder …"The encoder isn't transmitting. Confirm it's powered, has a live source connected, and its stream is started on the NVX side.
A specific stream_uuid route failsThat UUID isn't an active stream on the encoder. Omit stream_uuid to use the first active stream, or get the correct UUID from the encoder's web interface / Director.
TLS handshake failsThe unit may accept only TLS 1.2 — ensure the GEM host's OpenSSL allows it. If the unit has HTTP enabled, set Default Protocol to http as a fallback.
A display keeps showing the last frame after zone_offNVX retains the last buffered frame; the subscription is cleared but the decoder may briefly hold the image. This is normal NVX behavior.
A password change doesn't take effect right awayThe driver caches each unit's session for about 5 minutes. Wait for it to expire or restart the affected NVX unit.
Routes work to some displays but not othersConfirm those endpoints are on the same multicast-capable VLAN and reachable by IP from the GEM controller, and that their admin logins match the credentials GEM is using.
  • Devices — add and configure the coordinator device.
  • Subsystems — the AV subsystem the coordinator belongs to.
  • Commands — the Commands tab and Test runner for set_input / zone_off.
  • Macros — build one macro per route and attach them to source buttons.
  • AV Sources and AV Zones — how GEM models matrix-style AV elsewhere (this coordinator driver routes by command rather than through these screens).