Skip to main content

WyreStorm NetworkHD

Drives a WyreStorm NetworkHD AV-over-IP system through the NHD-000-CTL or NHD-CTL-PRO controller. One GEM device represents the controller; each decoder (RX) becomes a zone. Supports matrix routing, video wall and multiview scene recall, display power over CEC, and live endpoint feedback.

The controller is the only thing GEM talks to — encoders and decoders are never addressed directly on the network. Everything is routed by alias, the friendly name assigned in NetworkHD Console.

Prerequisites

  • The NHD controller must be commissioned and reachable on the control LAN. The factory default control IP is 192.168.11.243; give it a static IP or a DHCP reservation.
  • Do not point the driver at the AV LAN address (169.254.1.1) — that side carries the video fabric, not the API.
  • All encoders and decoders must already be commissioned in NetworkHD Console and given aliases. Routing by alias is what makes a GEM zone survive a hardware swap.
  • Telnet (TCP 23) must be reachable from the GEM server. There is no login on this port.
note

The controller also exposes Telnet-over-TLS (992) and SSH (10022), both with credentials and both disabled from the factory. This driver uses plain telnet on 23, which is the documented default control path.

Setup steps

  1. Go to /admin/devices and create a device with driver wyrestorm_networkhd.
  2. Set Controller IP to the NHD controller's control-LAN address. Leave Telnet Port at 23 unless you have remapped it.
  3. Save and enable the device. On connect the driver pins alias mode on, reads the API and system versions, enumerates every endpoint, and reads the routing table.
  4. Check the device attributes — endpoints is populated with a JSON list of every encoder/decoder (alias, hostname, IP, online). Use it to confirm commissioning before building zones.
  5. Create one zone per decoder at /admin/zones, setting Address to the decoder alias (e.g. display1).

Attribute reference

Device

AttributeRequiredDefaultPurpose
ipyesControl-LAN IP or hostname of the NHD controller.
portno23Controller telnet API port.
status_intervalno60000How often (ms) the routing table is re-read. Endpoint online/offline arrives unsolicited, so this can be slow.

The driver also writes back api_version, system_version, and endpoints (JSON) as device attributes.

Zone

Zones need no attributes of their own — only an Address. The driver writes state onto each zone:

AttributeMeaning
inputAlias of the encoder currently routed to this decoder. Empty when unrouted.
input_video / input_audioDiscrete breakaway assignments, populated by get_matrix_video / get_matrix_audio.
onlineWhether the endpoint is currently on the network.
signal_statefound or lost, from the controller's unsolicited video notifications (400/500-Series).

Zone address format

The zone address is the decoder alias exactly as set in NetworkHD Console — display1, boardroom_left, and so on.

The device hostname (NHD-400-RX-E4CE02104E55, i.e. <model>-<MAC>) also works and is accepted by the controller, but it is derived from the hardware MAC and changes when a unit is replaced. Prefer the alias.

warning

An alias that was never set reads back literally as null. If endpoints shows aliases of null, finish commissioning in NetworkHD Console before building zones — otherwise you are addressing hardware by MAC.

Commands

CommandArgumentsNotes
get_devicesEnumerate endpoints into the endpoints attribute.
get_matrixRead the all-media routing table.
get_matrix_video / get_matrix_audioRead breakaway routing tables.
get_versionController API + system versions.
set_sourceaddress, sourceRoute encoder → decoder, all media. The universal verb.
set_video_source / set_audio_sourceaddress, sourceBreakaway routing. Not on base 100/200-Series.
clear_sourceaddressDetach a decoder from any encoder.
on / offaddressDisplay power via CEC one-touch-play / standby.
sink_power_on / sink_power_offaddressPower via the sinkpower proxy. Off by default per endpoint.
volume_up / volume_downaddressAnalog audio. 400-Series only.
mute_on / mute_offaddressAnalog audio. 100/200-Series only.
scene_recallsceneRecall a video wall scene, e.g. OfficeVW-Combined.
wscene_recallsceneRecall a wscene2 layout.
vw_sourcescene, sourceChange the encoder feeding a logical screen.
get_scenesList configured video wall scenes.
mview_setaddress, source, modeRoute to a multiview decoder. mode is tile or overlay.
mscene_recalladdress, layoutRecall a saved multiview layout.
get_mscenesaddressList multiview layouts — all decoders, or one if address is given.
cec_raw / ir_rawaddress, dataRaw CEC hex / Pronto CCF IR passthrough.

Known limitations

  • Video walls and multiview layouts must already exist. They are built in NetworkHD Console; this driver recalls them by name and cannot create, edit, or enumerate their internal geometry.
  • notify serialinfo is logged, not parsed. That message embeds a CRLF inside its payload and needs its length prefix to reassemble safely. RS-232 passthrough from an endpoint is therefore not surfaced as state. Sending raw serial is not implemented either — use cec_raw / ir_raw for passthrough control.
  • No matrix audio2 / audio3. The 600-Series second analog output and the 500-Series ARC return path are not exposed.
  • Volume is series-split by the hardware, not by us. A 400-Series endpoint answers up/down but not mute; 100/200-Series is the reverse. GEM sends what you ask; an unsupported verb is a no-op on the endpoint.
  • Video-wall and multiview layout geometry, endpoint firmware update, and NetworkHD Console configuration are all out of scope.

Troubleshooting

SymptomCheck
Connection refused, or nothing on port 23Confirm you are using the control LAN address, not the AV LAN. Close any other control-system telnet session — concurrent sessions behave unpredictably.
Every command answers unknown commandA terminator problem. The API requires LF as the final byte and rejects CR-only; anything relaying the session must not rewrite line endings. The controller also rejects smart quotes — aliases must use plain ASCII ".
Routing a multiview decoder does nothingNHD-220/250 multiview decoders ignore matrix set. Use mview_set, or mscene_recall for a saved layout. Note 600-Series multiview is the exception and does use matrix set.
Display power does nothingsink_power is disabled per endpoint by default in NetworkHD Console. Use on/off (CEC) instead, and confirm the display has CEC enabled — most TVs ship with it off, often under a vendor brand name (Anynet+, Bravia Sync, SimpLink).
Zone shows no source right after a successful routematrix get reports NULL both for an unrouted decoder and for one carrying discrete breakaway streams. Query get_matrix_video / get_matrix_audio to see the real assignment.
Endpoints missing from endpointsOnly commissioned devices appear. If an alias reads null, finish commissioning in NetworkHD Console.

See also

  • Devices — creating and enabling the controller device.
  • Zones — mapping decoders to rooms.