Skip to main content

Just Add Power (AV-over-IP)

Just Add Power (often shortened to "JAP" or "J+P") is an AV-over-IP video distribution system. Instead of a fixed-size matrix box, every source is plugged into an encoder (a transmitter, named like TX2) and every display is plugged into a decoder (a receiver, named like RX4), and all of them live on a managed network switch. "Route source 2 to display 4" means telling decoder 4 to subscribe to encoder 2's multicast stream — the network is the matrix, so it grows 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 Just Add Power — and point it at the IP of any one JAP unit. On connect it talks to that unit's directory, discovers every encoder and decoder on the system, and auto-creates one GEM zone per decoder so each display shows up ready to control. Routing is done with one command, set_input, which switches a decoder to a chosen encoder by number.

Commission the JAP hardware and network first

GEM routes streams; it does not configure the JAP boxes or the switch. Provision the encoders and decoders (IP addresses, transmit settings) in Just Add Power's own tooling, and configure the network switch for multicast — IGMP snooping on, an IGMP querier active, and the JAP units on a dedicated multicast-capable VLAN. Without proper multicast handling, decoders show snow or freeze on every route change. Once each box has a reachable IP and the switch passes multicast cleanly, GEM can discover and route between them.

How GEM models Just Add Power

In the real worldIn GEM
The whole JAP system (many encoders + decoders)One coordinator device
A display's decoder (e.g. RX4)An auto-created zone, address = the decoder's number (4)
A source's encoder (e.g. TX2)An input number (2) you route with set_input
"Route this source to this display"A set_input command on the decoder's zone

The driver only auto-creates zones for decoders (displays). Encoders are discovered too, but they're not given zones — they're the inputs you route, identified by their number. You point the coordinator at one reachable JAP IP; it does not need to be any particular unit, it's just the anchor GEM queries to read the system directory.

Prerequisites

  • Encoders and decoders fully commissioned in Just Add Power's tooling and reachable by IP from the GEM controller.
  • A multicast-capable VLAN for the JAP traffic: IGMP snooping configured and an IGMP querier active on the switch. This is the single most common cause of JAP problems — a switch that floods or drops multicast makes decoders freeze or show snow on route changes.
  • DHCP reservations (or static IPs) for every JAP unit, so encoder and decoder IPs never move. The coordinator re-reads each unit's IP on every sync, but stable addressing keeps things predictable.
  • The JAP units serve control over plain HTTP on port 80 with no authentication — there is no login to set in GEM.

Setup

  1. Open Devices, add a device, and choose the Just Add Power driver. It suggests the AV subsystem and a controller device type — accept those. This one device stands in for the whole JAP system; you do not add a device per encoder or decoder.
  2. Set the Coordinator IP Address (ip) to the IP of any reachable JAP unit. This is the anchor GEM queries to read the system directory.
  3. Save and enable the device. On connect the driver runs a sync automatically — it reads the JAP directory, then for every decoder it finds it creates a GEM zone in the AV subsystem, filling in:
    • Address = the decoder's number (the digits in its JAP ID, e.g. RX44).
    • Unit IP (ip) = that decoder's own IP address.
    • JAP Mode (jap_mode) = decoder.
  4. Open Zones and confirm one zone per display appeared, each named after the device and decoder number (for example <device>_4) with the decoder's reported name as its label. Rename the labels to room-friendly names ("Great Room TV", "Bar Left") so they read well on touch panels.
Re-run discovery anytime

If you add JAP units later, or the first sync didn't see everything, send the sync_devices command to the coordinator (from the device's Commands tab, a macro, or a button). It re-reads the directory and creates zones for any new decoders. Discovery only works within the coordinator's own VLAN — JAP units on other subnets are not found.

Routing AV — set_input

Switching what a display shows is one command: set_input, sent to the decoder's zone, with the encoder's number.

ArgumentRequiredWhat it is
encoderyesThe encoder (input) number to route to this decoder — the digits in the encoder's JAP ID (e.g. TX22).
addressautoThe decoder number identifying the target zone. GEM fills this in automatically when you send the command to a JAP zone; you only set it by hand when targeting the device directly.

For example, to show encoder 2 on the decoder that GEM created as zone "Great Room TV", send set_input to that zone with encoder = 2. GEM tells the JAP system to route transmitter 2 to that receiver, and records the choice as the zone's input attribute so the UI reflects what's playing.

Where you issue the command

  • From the device's Commands tab — handy for testing a route during commissioning. Set the command to set_input, pick the decoder zone, and enter the encoder number. See Commands.
  • From a UI button — wire a control to run set_input on a fixed decoder zone with a fixed encoder number ("Watch Cable" on the Great Room TV).
  • In a macro / as an AV source — the standard way to give users a source menu per room. See the next section.

Building source selection with AV Sources and AV Zones

The auto-created entries are plain Zones, not AV Zones. To present each display as a viewing area with a source menu on a touch panel, layer the AV system on top — this is the same matrix pattern GEM uses for any switcher:

  1. For each decoder, create an AV Zone (Open AV Zones) linked to that decoder's zone. Set the AV Zone's Address to the decoder number (its matrix output).

  2. For each encoder/source, create an AV Source (Open AV Sources). Set the AV Source's Address to the encoder number (its matrix input), and give it an On Macro that routes it.

  3. The On Macro is a single Send Command to the JAP coordinator with command set_input, targeting the AV zone and passing the encoder via the address placeholders, so one macro serves every source:

    • encoder = [@av_source.address] — the selected source's encoder number.
    • address = [@av_zone.address] — the target display's decoder number.

    Mark these in the macro step's arg options so GEM substitutes the live source/zone numbers at run time. ([@av_zone.address] resolves to the matrix output; [@av_source.address] to the matrix input — see AV Sources.)

With that in place, selecting a source in a room runs its On Macro, which fires set_input, and the display switches. Sources shared across every room (a cable headend, a streaming encoder) are good candidates for Global AV sources; gear feeding a single display can be a zone-specific source.

Other commands

All of these except sync_devices operate on a decoder zone (GEM resolves the target unit from the zone's IP), so send them to a zone — address is filled in for you.

CommandArgumentsAction
sync_devices(none)Re-read the JAP directory and auto-create zones for any new decoders. Targets the coordinator, not a zone.
set_inputencoder (+ address)Route the encoder to this decoder.
reboot(uses address)Reboot the JAP unit behind the addressed zone.
get_detailsitem (+ address)Read a live status section from the unit (for example video, device, system). Diagnostic.
get_settingsitem (+ address)Read a settings section from the unit. Diagnostic.
clicommand (+ address)Pass a raw Just Add Power CLI command straight through to the addressed unit. For advanced use against JAP's own command set.
Reaching an encoder by command

Because GEM only auto-creates zones for decoders, the per-unit commands (reboot, get_details, get_settings, cli) target decoders out of the box. To run one of these against an encoder, create a zone manually, set its Unit IP (ip) to the encoder's address and JAP Mode (jap_mode) to encoder, then send the command to that zone.

Live status

While connected, the coordinator polls every decoder zone's video status on an interval (default 30 seconds, set by Status Poll Interval below) and writes what it reads back onto the zone as attributes — so the zone reflects the decoder's current signal without you asking. This is also why a freshly switched display updates its state shortly after a route change.

Attributes

Device

AttributeTypeRequiredDescription
ipstringyesCoordinator IP Address — the IP of any reachable JAP unit, used as the sync anchor.
status_intervalintegernoStatus Poll Interval (ms) — how often decoder video status is polled. Default 30000 (30 s).
request_timeoutintegernoRequest Timeout (ms) — per-request HTTP timeout to a JAP unit. Default 30000.

Zone (auto-populated during sync)

AttributeTypeDescription
ipstringUnit IP — the IP of the encoder or decoder this zone represents.
jap_modestringJAP Modedecoder or encoder. Set automatically on auto-created decoder zones; set it yourself on a hand-made encoder zone.
inputintegerThe encoder number currently routed to this decoder. Set by set_input; reflects the live route.

The zone's Address field (not an attribute) holds the JAP decoder number — this is what identifies the unit to route to. It is populated automatically during sync.

Known limitations

  • Decoders get zones; encoders don't. Encoders are discovered and used as input numbers, but GEM doesn't create a zone or list them for you. Identify an encoder by the number in its JAP ID (TX33), which you can read from the Just Add Power tooling.
  • Discovery is VLAN-local. sync_devices only finds units the coordinator IP can reach on its own VLAN. JAP units on other subnets won't appear.
  • GEM does not configure the JAP boxes or the network. Encoder/decoder provisioning, transmit settings, and the switch's multicast configuration are done on the hardware, not through GEM.
  • No login. The driver assumes the JAP units' default unauthenticated HTTP control interface.

Troubleshooting

SymptomCheck
sync_devices comes back empty / no zones createdConfirm the coordinator IP can reach the JAP units on the same VLAN; units are not discovered across subnets. Check the unit is powered and its web interface is reachable from the GEM host.
Decoder image freezes or shows snow on switchMulticast misconfiguration on the switch — turn on IGMP snooping and ensure an IGMP querier is active, with the JAP units on a dedicated multicast-capable VLAN. This is by far the most common JAP issue and is a network fix, not a GEM one.
set_input returns 404The zone's Unit IP is wrong, or the unit is in the wrong role (an encoder where a decoder is expected). Verify the zone's ip and jap_mode.
set_input says "invalid encoder or decoder address"The encoder argument or the zone's Address isn't a number. Both must be the numeric part of the JAP ID.
A new JAP unit doesn't appearRun sync_devices again after the unit is on the network; only decoders auto-create zones.
A zone's address looks like an IP, not a numberOlder auto-created zones used the unit IP as the address; the driver migrates these to the numeric decoder number on the next sync. Run sync_devices once and re-check.
  • Devices — add and configure the coordinator device.
  • Zones — the per-decoder zones the driver auto-creates.
  • Subsystems — the AV subsystem the coordinator and its zones belong to.
  • Commands — the Commands tab and Test runner for set_input / sync_devices.
  • AV Sources and AV Zones — build per-room source menus on top of the auto-created zones.
  • Macros — the per-source On Macro that issues set_input.
  • Crestron NVX — another AV-over-IP coordinator driver, command-driven rather than zone-discovering.