masterETH Controller#

Last updated · 8 min read

The masterETH is a small Ethernet-only management box that lives on your lighting LAN, automatically discovers every expanseElectronics node it can reach, and exposes one web UI for the whole fleet — configuration, status, firmware updates, and live diagnostics. If you have more than two or three dualETH-PixelControl nodes on a show, the per-node web UI starts to fight you; masterETH is the answer to that.

Pre-order. masterETH is currently in pre-order (£49.99). Early units ship as soon as production starts. This guide describes firmware v1.1 — the version your unit will ship with.

What it does, in one sentence#

It listens on the LAN for Art-Net ArtPollReply packets, asks every responder "are you an expanseElectronics node?", and if the answer is yes, presents that node in a single web UI alongside everything else it found.

First boot#

When you power masterETH:

  1. The status LED pulses dim cyan while Ethernet is coming up — usually a couple of seconds.
  2. Once link is up and DHCP completes, the LED moves to pulsing green ("healthy").
  3. You can now reach the web UI at http://<masterETH-ip>/.

Network defaults#

Setting Default
DHCP Enabled
Static fallback IP 10.10.1.1 / 255.255.255.0 (only if DHCP fails twice and DHCP-fallback server is enabled — see below)
Node name masterETH
Web UI HTTP on port 80

If your network has a DHCP server, masterETH takes an address from it. The hostname it advertises is masterETH — most home routers' DHCP client lists will let you find it that way.

Status LED reference#

The single front LED is a state indicator, not a packet blip. Five states:

State LED
Boot dim cyan, steady
Link down red, steady — Ethernet cable is unplugged or the switch port is dead
Searching pulsing white — link is up, no nodes discovered yet
Healthy pulsing green — at least one compatible node is online
All offline pulsing red — known nodes have all gone unreachable
Fallback DHCP server pulsing amber — masterETH is acting as the LAN's DHCP server (see below)

Discovery#

masterETH broadcasts an Art-Net ArtPoll packet on UDP port 6454 every 5 seconds. Every Art-Net device on the same broadcast domain replies with ArtPollReply — that's how masterETH learns which IPs are alive.

For each new IP it sees, masterETH issues a single HTTP GET http://<ip>/api/identify. The response classifies the node:

Classification Meaning What you can do
Compatible vendor: "expanseElectronics", firmware v7.4 or newer Full edit access — change ports, network, reboot, etc.
Read-only expanseElectronics node, firmware v7.3 Can view but not edit. v7.3 doesn't ship CORS, so writes are blocked by the browser. Update the dualETH firmware to v7.4+ to unlock edits.
Incompatible Replies, but doesn't claim vendor: "expanseElectronics" Shown if you turn the vendor filter off; not actionable.
Unknown Doesn't respond on /api/identify (third-party Art-Net device, lighting console, software sender) Filtered out by default.

The registry holds up to 32 nodes, keyed by MAC address. IPs are treated as a mutable display field — if a node's DHCP lease renews and it comes up on a new address, masterETH follows it via MAC.

You can force an immediate poll from the Nodes page if you don't want to wait for the next 5-second tick.

What you can do from the web UI#

The SPA has five top-level pages:

  • Nodes — list of every discovered node with live activity (port mode, packets/sec, status dot). Search box (or hit /), keyboard navigation (//Enter), multi-select with bulk actions.
  • Detail — one node, two tabs:
  • Identity — MAC, IP, firmware version, hardware revision, your tag for it
  • Configuration — node name, per-port mode (DMX out / DMX in / RDM / WS2812), protocol, merge mode, net/subnet/universe, WS2812 pixel count + pixel mode. Plus Reboot Node and Locate (briefly flickers the target's activity LED so you can find the right unit in a rack).
  • Universe map — a single table of every (net, subnet, universe) in your fleet and which port maps to it. Conflicts are highlighted.
  • Network — masterETH's own IP, DHCP, hostname, and the optional DHCP-fallback server settings.
  • System — uptime, free heap, fleet health summary, link state.
  • Firmware — OTA-upload a new firmware blob.

Editing dualETH nodes#

masterETH does not proxy writes — when you edit a node's settings, your browser talks directly to that node over CORS. This is faster and removes masterETH as a single point of failure for edits, but it means the node has to be running dualETH firmware v7.4 or newer. v7.3 nodes show up with a "read-only" banner and a link to the firmware updater.

Bulk operations#

Select multiple nodes from the Nodes list and the action bar appears at the bottom of the screen. From there:

  • Reboot selected — reboot every selected node in turn
  • Set sequential universes — assign Net 0, Subnet 0, Universes 0…N across the selection in order. Useful when you've just unboxed a stack of nodes and want to give each one a unique universe span without 20 clicks.
  • Tag selected — apply a colour tag to the whole selection
  • Clear — drop the selection

Configuration backup & restore#

The System page has a Download fleet config button — it pulls the current network settings + both port configs from every compatible node and from masterETH itself, and bundles it into a single JSON file. To restore, drop the file back in: masterETH matches each entry to a live node by MAC, computes a per-field diff, and shows you exactly what's about to change. Nothing is applied until you click Apply.

This is what you want before a show: dump the fleet, save it next to your show file, and you can put any node (or every node) back to a known-good config in seconds.

Tags#

You can give each node a short tag — FOH, Prod, Spare, etc. Tags are stored on masterETH itself, keyed by MAC, so they survive across browsers and across replacing the node's IP. (Older tags written to browser localStorage are migrated to the server on first load of v1.1.)

DHCP-fallback server#

masterETH can optionally take over as the LAN's DHCP server if no upstream DHCP server replies at boot. This is off by default — turning it on by accident on a managed network would mean masterETH starts handing out addresses alongside the existing DHCP server, which is exactly the rogue-server scenario IT teams hate.

You'd turn it on when:

  • You've built a portable lighting LAN with no router on it (a single switch + a stack of nodes + masterETH), and you want every node to come up on a sensible address without setting them all to static.
  • You want predictable IPs across power-cycles — masterETH's lease table is persisted in EEPROM, so a node that had 10.10.1.105 before the show still has 10.10.1.105 after.

When fallback is active, the front LED switches to pulsing amber so you know masterETH is doing more than just observing the network.

Settings (Network page):

Setting Default What it does
Fallback enabled Off Master switch. Off means masterETH is a normal DHCP client only.
Fallback IP / Subnet 10.10.1.1 / 255.255.255.0 masterETH's own static address while it's running the server
Pool start 100 Last octet of the first leased address (so the pool is 10.10.1.100…)
Pool size 32 How many consecutive addresses can be leased
Lease seconds 3600 One hour

The server ARP-probes each candidate address before offering it, so it won't lease an IP that's already statically claimed by some other device on the wire.

Don't turn this on if you don't know what your network's DHCP situation already is. If there's a router on the LAN, leave it off.

Updating masterETH firmware#

masterETH supports OTA updates from its Firmware page — upload a .bin and it reflashes itself, then reboots. The current shipping firmware is v1.1. Once production is rolling we'll publish masterETH builds to the browser-based firmware updater alongside the dualETH builds.

Limits and known constraints#

A few hard numbers from the firmware that are useful to know upfront:

  • 32-node registry. That's the cap; nodes 33+ are dropped. The registry is sized for typical theatre / installation rigs.
  • Discovery is Art-Net only. masterETH only ever sends ArtPoll and parses ArtPollReply. It does not speak sACN discovery — but that's fine, because every dualETH replies to ArtPoll regardless of which protocol it's outputting.
  • One broadcast domain. Discovery only sees nodes on the same Layer-2 broadcast domain. If your nodes are behind a router, you'll need DHCP relays or static IPs and to reach masterETH from a routable address — masterETH itself doesn't do unicast discovery.
  • No mDNS yet — finding masterETH on a fresh LAN means checking your DHCP server, looking for the hostname masterETH, or temporarily turning on the DHCP-fallback server.

Where to go next#