Skip to main content

AVPro Edge MXNet

The mxnet driver controls an AVPro Edge MXNet AV-over-IP system — the encoders (transmitters) and decoders (receivers) that carry HDMI video, audio, USB and IR over a network switch instead of a hard-wired HDMI matrix. In GEM, one device is the MXNet controller/host; that single device discovers every encoder and decoder on the system and lets you route any source to any display by switching the network paths between them.

MXNet is a virtual matrix: unlike a fixed HDMI matrix with numbered OUT/IN ports, video, audio, USB and IR each route independently, endpoint-to-endpoint. Sending a display a new video source is a matter of pointing that decoder's video path at the chosen encoder.

How MXNet differs from a hardware matrix

An HDMI matrix (for example the AVPro Edge AC-MAX) has one device with numbered outputs, and you give each output a volume. MXNet has no OUT/IN numbers and no per-output volume — every encoder and decoder is its own network endpoint with an id, and you route by naming a source encoder and a destination decoder. Volume for a room is handled by that room's display or AVR, not by MXNet.

Prerequisites

  • The MXNet controller/host (the MXNet Hub, or the unit acting as host) on the same LAN as GEM, with a static IP or a DHCP reservation, and its control API reachable.
  • Every encoder and decoder bound to the controller in the AVPro MXNet web UI before you discover them in GEM. GEM only sees endpoints the controller already knows about.
  • A note of which encoder feeds each source (cable box, media server, game console) and which decoder drives each display. You will match these to the discovered ids.

Setup

  1. System → Devices → Add Device — choose driver AVPro MXNet (mxnet). Set:

    • Host IP (ip) — the LAN address of the MXNet controller/host (not an individual encoder or decoder).
    • TCP Port (port) — leave the default 24 unless your system was changed from it.
    • Status Poll Interval (ms) (status_interval) — optional, default 5000 (see Live state below for what this does and does not do).

    Set Enabled to Yes and save.

  2. Discover the endpoints. Run the sync_zones command against the MXNet device. The quickest way: System → Commands, pick the MXNet as the test device, find sync_zones, and run it. GEM reads the controller's device list and creates one GEM zone per endpoint in the AV subsystem:

    • Each zone's Address is the endpoint's MXNet device id — this is the identifier you select when routing.
    • Encoders (transmitters) get an _encoder name suffix; decoders (receivers) get an _decoder suffix, so a source and a display that share a base name stay distinct.

    Re-run sync_zones any time you add endpoints — it only creates zones that don't already exist, then reloads the device so the new zones bind.

  3. Confirm the zones under System → Zones (filtered to the AV subsystem). Rename the Label to something room-friendly if you like — the Address (the device id) is the key GEM routes on, so leave it alone.

  4. Route a source to a display. Run the config_set_device_videopath command with the encoder set to the source endpoint and the decoder set to the display endpoint (both are zone pickers offering your discovered endpoints). See Routing below.

Routing

A MXNet route is just a path command that names a source encoder and a destination decoder. Video, audio, USB and IR are separate paths — set the ones you need:

PathCommandWhat it connects
Videoconfig_set_device_videopathThe decoder's HDMI output follows the chosen encoder.
Audio (digital)config_set_device_audiopathThe decoder's digital audio follows the chosen encoder.
Audio (analog)config_set_device_analogaudiopathThe decoder's analog audio out follows the chosen encoder.
USBconfig_set_device_usbpathKM/USB from the decoder side reaches the encoder side.
IRconfig_set_device_irpathIR passes between the two endpoints.

Each takes an encoder and a decoder argument; both pickers list your discovered zones, and the value sent is that zone's Address (the device id).

Switch a whole room in one action

Video, audio, USB and IR route independently, so a single "watch this source here" action is usually a macro that sends the paths you care about — most rooms just need config_set_device_videopath (audio follows over HDMI), and you add config_set_device_audiopath only where the room takes audio on a separate path.

Automation → Macros → Add a macro per route (or per touchpanel button), add a Send Command step that targets the MXNet device and sends the path command with the source encoder and destination decoder selected, and bind that macro to the button or source tile that should trigger it.

Audio does not always follow video

Because the audio path is separate, switching only the video path leaves the decoder's audio on whatever it was routed to last. If a display should always take audio from the same source as its picture, send config_set_device_audiopath (or config_set_device_analogaudiopath) alongside the video path.

Turning a path off

To blank a display or drop its audio/USB/IR without routing a new source, use the matching disable command against the decoder: config_set_device_videopathdisable, config_set_device_audiopathdisable, config_set_device_usbpathdisable, or config_set_device_irpathdisable.

Live state

MXNet is command-driven. The driver does not continuously poll or push endpoint state onto the zones — the Status Poll Interval attribute exists, but the driver does not currently read routing or signal state on that timer, and it does not write volume, mute_state, or a routed-input attribute back onto the zones. To read an endpoint's current status on demand, run config_get_device_status against it, or config_get_devicelist for the whole system.

Practically, this means:

  • GEM sends routes reliably, but a zone tile will not light up to show "what's currently routed here" the way an HDMI-matrix zone does.
  • A route changed outside GEM (at the MXNet web UI or a wall keypad) is not reflected in GEM until you query it.
  • MXNet zones do not carry the generic on/off/volume/mute controls — they are routing endpoints, not volume zones. Route with the path commands above.

Attributes

Device — required

AttributeTypeDescription
ipstringLAN IP of the MXNet controller/host.

Device — optional

AttributeTypeDefaultDescription
portint24MXNet host control port.
status_intervalint (ms)5000Reserved poll interval. The driver keeps a timer at this cadence but does not read endpoint state on it (see Live state).
Attributes are not pre-cataloged

MXNet ships no catalogued attributes, so the Attribute editor's name picker won't auto-suggest MXNet-specific names — there are essentially none to add by hand beyond the connection settings above, which you set on the device when you create it.

Zone (encoder / decoder endpoint)

  • Address required: yes — the endpoint's MXNet device id. sync_zones fills this in for every endpoint; you normally never type it. The _encoder / _decoder name suffix tells you which role the endpoint plays.

Commands

Run any of these from System → Commands (select the MXNet as the test device), from a macro Send Command step, or from the AI assistant. Commands that take an encoder / decoder / encoder_decoder argument show a picker listing your discovered endpoint zones.

Discovery & status

CommandArgsNotes
sync_zonesDiscover every encoder/decoder and create a GEM zone for each. Re-runnable; skips endpoints that already have a zone.
config_get_devicelistReturn the controller's full endpoint list.
config_get_device_statusencoder_decoderRead one endpoint's current status.

Routing (encoder → decoder)

CommandArgsWireNotes
config_set_device_videopathencoder, decoderconfig set device videopath [encoder] [decoder]Point a decoder's video at an encoder. The main "switch source" command.
config_set_device_audiopathencoder, decoderconfig set device audiopath [encoder] [decoder]Route digital audio.
config_set_device_analogaudiopathencoder, decoderconfig set device analogaudiopath [encoder] [decoder]Route analog audio.
config_set_device_usbpathencoder, decoderconfig set device usbpath [encoder] [decoder]Route USB / KM.
config_set_device_irpathencoder, decoderconfig set device irpath [encoder] [decoder]Route IR.

Disable a path (on a decoder)

CommandArgsWire
config_set_device_videopathdisableencoder_decoderconfig set device videopathdisable [encoder_decoder]
config_set_device_audiopathdisabledecoderconfig set device audiopathdisable [decoder]
config_set_device_usbpathdisableencoder_decoderconfig set device usbpathdisable [encoder_decoder]
config_set_device_irpathdisabledecoderconfig set device irpathdisable [decoder]

Output tuning

CommandArgsWireNotes
config_set_device_videowidth_height_fps, encoder_decoderconfig set device video [width_height_fps] [encoder_decoder]Force a scaling mode. The picker offers Passthrough, 1280x720 50/60fps, 1920x1080 24/50/60fps, 4K 30fps, and 4K 60fps (sent to the unit as width height fps). Use it when a display goes blank on an unsupported native resolution.
config_set_device_hdrmodeencoder, hdr_modeconfig set device hdrmode [encoder] [hdr_mode]Turn HDR on / off on an encoder.

Locate & maintenance

CommandArgsWireNotes
config_set_device_light_onencoder_decoderconfig set device light on [encoder_decoder]Turn an endpoint's ID light on — handy for finding a unit in the rack.
config_set_device_light_flashencoder_decoderconfig set device light flash [encoder_decoder]Flash the ID light.
config_set_device_rebootencoder_decoderconfig set device reboot [encoder_decoder]Reboot a single encoder or decoder.
hotplug_resetencoder_decoderconfig set device hpdrst [encoder_decoder]Re-run hotplug detect on an endpoint.
reset_sourcesource_addressconfig set device hpdrst [source_address]Toggle HPD on a source-side encoder (same reset, addressed by the encoder).
config_set_rebootconfig set rebootReboot the MXNet controller/host.

Video walls

CommandArgsWireNotes
activate_videowall_layoutvideowall_name, layout_namevwid layout active [videowall_name] [layout_name]Switch a configured video wall to a named layout. Build the wall and its layouts in the AVPro MXNet web UI first.

System info

config_get_version, config_get_name, config_get_date, config_get_ntp, config_get_timezone, config_get_dns, config_get_ipsetting, config_get_ipsetting2 — each returns the corresponding controller setting (no arguments).

Advanced

CommandArgsWireNotes
config_set_irdata, encoder_decoderconfig set ir [data] [encoder_decoder]Send raw IR data out of an endpoint's IR port.
config_set_device_idnew_id, encoder_decoderconfig set device id [new_id] …Re-number an endpoint. Renumbering endpoints is normally done in the AVPro MXNet web UI — prefer that.
passthroughcommand[command]Send a raw MXNet host command verbatim — the escape hatch for anything not modeled above.

Known limitations

  • No live state feedback. The driver routes reliably but does not poll or push endpoint state; zones don't reflect "what's routed here", and out-of-band changes aren't seen until you query with config_get_device_status / config_get_devicelist.
  • No per-zone volume/mute. MXNet zones are routing endpoints; the generic on/off/volume/mute verbs are not implemented for them. Room volume belongs to the display or AVR.
  • Independent paths. Switching video does not move audio/USB/IR — send each path you need.
  • Discovery depends on the controller. sync_zones only sees endpoints already bound to the controller in the AVPro web UI.

Troubleshooting

SymptomCheck
sync_zones returns nothing / creates no zonesConfirm the Host IP is the MXNet controller, not an encoder or decoder, and that every endpoint is bound to it in the AVPro MXNet web UI.
A route switches video but not audioAudio routes on a separate path — send config_set_device_audiopath (or config_set_device_analogaudiopath) in the same macro.
A display goes blank after a route changeThe source may be outputting a resolution the display can't take. Force a known mode with config_set_device_video, or run hotplug_reset on the decoder.
A command "does nothing" for a zoneGeneric on/off/volume verbs are not implemented for MXNet zones — route with the config_set_device_*path commands instead.
GEM shows a stale route after a keypad/web-UI changeMXNet state is read on demand only. Run config_get_device_status for that endpoint, or config_get_devicelist.
Can't find a unit in the rackRun config_set_device_light_on (or config_set_device_light_flash) against its endpoint to blink its ID light.
  • AVPro Edge AC-MAX — the fixed-matrix sibling, when a room uses a hard-wired audio matrix instead of AV-over-IP.
  • Devices — add and configure the MXNet controller.
  • Zones — the discovered encoder/decoder endpoints.
  • Commands — run sync_zones and the routing commands from the Test runner.
  • Macros — build per-route or per-button switch actions.
  • AV Sources and AV Zones — model sources and rooms for touchpanel source selection.