Ports and endpoints
Every UDP port and who sends to it, rendered from a3-osc.json
(truth). Other pages name a port by its listener
(core.osc, motion.vu, …).
Hosts
Named in hosts; see the listener table. On the rig A³
Motion runs on the Core, hence 127.0.0.1; on its own machine
(hardware) that machine’s address replaces it.
Cabling
The Core has two network sockets, each on a network of its own:
router 192.168.8.1 ───── eno1 A³ Core 192.168.8.10/24 control network
A³ Mixer 192.168.8.11 ── router or switch, same network
StemDeck machine ─────── enp5s0 A³ Core 192.168.9.10/24 audio network (AES67, PTP)
First socket (
eno1): the Core’s address, the gateway and the DNS server (192.168.8.1), file10-a3.network. OSC, the web window and the desk run here. The A³ Mixer reaches the Core over this network through the switch or router; the Core no longer sits between them.Second socket (
enp5s0, optional): the audio network, file20-a3-aes67.network. Its own subnet192.168.9.0/24, Core192.168.9.10/24, no gateway and no DNS: the only way out is the first socket, and a reply always leaves by the socket it came in on.There is no
br0bridge and no spanning tree any more (until 2026-10-14 the second socket was bridged with the first); a cable drop on one socket does not touch the other.Written by the package (install); an upgrade retires the old bridge files.
The audio network: AES67 and PTP
Audio between machines runs on the second socket, apart from OSC:
What |
Detail |
|---|---|
Socket, subnet |
the second socket, |
Clock |
PTP: |
Core sends |
12 channels, stream |
Announcement |
SAP on |
Who drives the stream |
the audio interface: the samples leave unconverted and the engine is never pulled onto the PTP clock |
Deck streams |
one per deck, sent by the machine that runs the deck: 41 channels (MAIN1–16, AUX1–16, CUE1–9), stream |
Receive rule |
the Core receives deck streams outside the PTP clock: the sound card stays the Core’s clock and the stream is resampled into it, so a deck stream never pulls the engine. The receiver needs an MTU of 1500 |
Deck host |
a machine that runs a deck (a3nuc2 for deck B today; C and D can run on any deck host, one letter per host) runs its own sender, unit |
Latency |
a deck on another machine arrives about 18 ms later than a local one (calculated, not measured). StemDeck’s path latency setting (StemDeck) makes up for it |
EEE is off on the audio socket of every machine that has one, a deck host included: with it on the link drops every minute or two.
PTP and the AES67 sender start only when a second socket is configured
(audio-port); without one the Core has neither and uses one network. The
streams are audio, not OSC, so they are not in the port tables below. Unit:
a3-aes67; the engine’s JACK links: I/O map.
Ports, by listener
Rendered: edit a3-osc.json, not this. core.web also serves
GET /api/truth. devices.announce is where Core broadcasts /core/here every
2 s for the devices that follow it. Host any (0.0.0.0): every interface;
local: this machine only.
Program |
Role |
Host |
Port |
Carries |
|---|---|---|---|---|
core |
osc |
any (0.0.0.0) |
9000 |
every controller’s messages, and /beat from the analyzer |
core |
vu-relay |
local (127.0.0.1) |
9003 |
the engine’s and StemDeck’s /vu bundles, forwarded unchanged to Motion, the mixer, radla, the remote Motion followed and every desk followed |
core |
web |
any (0.0.0.0) |
9080 |
the traffic window (HTTP, not OSC); every interface, decided 2026-09-30 |
motion |
osc |
any (0.0.0.0) |
7771 |
Core’s relays (StemDeck’s preview among them), /beat |
motion |
vu |
any (0.0.0.0) |
7772 |
Core’s /vu bundles (the engine’s meters, forwarded) |
motion |
energy |
any (0.0.0.0) |
7777 |
the IEM EnergyVisualizer’s /EnergyVisualizer/RMS |
stemdeck |
osc |
any (0.0.0.0) |
7780 |
Core’s bus switches and its request for all of them; a one-deck instance k (–deck A..D) listens on this port + (k - 1): A 7780, B 7781, C 7782, D 7783 (Core’s deck relay sends deck k there); the two-deck StemDeck keeps 7780 |
devices |
announce |
any (0.0.0.0) |
7790 |
Core’s /core/here broadcast: where every device fetches the truth |
mixer |
osc |
mixer (192.168.8.11) |
7772 |
Core’s relays and lamps, /beat, /vu |
desk |
osc |
any (0.0.0.0) |
7773 |
Core’s relays, lamps and stems, /beat – every virtual desk Core follows (four at most) |
desk |
vu |
any (0.0.0.0) |
7774 |
the engine’s and StemDeck’s /vu bundles, forwarded unchanged by Core (core.vu-relay) |
beat-analyzer |
clock |
any (0.0.0.0) |
7775 |
/tap, /clockmode, and /beat from Motion in clock mode 0 |
engine |
control |
local (127.0.0.1) |
9005 |
the a3-core window’s view of the engine (HTTP JSON, loopback only; not OSC) |
update |
control |
any (0.0.0.0) |
9081 |
a3-update on every machine: Core asks for its packages and for an update to a release (HTTP JSON, only from the core host; not OSC) |
engine |
osc |
local (127.0.0.1) |
9004 |
a3-engine: Core’s words in engine mode – channel.gain/eq./volume/3d/filter.frequency/filter.q/aux-send/cue/filter/azimuth/elevation/source, filter.frequency/resonance/mode, master., aux-return.cue, delay.bpm, aux-return.delay.*, engine.open |
x11vnc |
vnc |
any (0.0.0.0) |
5901 |
the Core’s screen (VNC, not OSC) |
screencast |
stream |
any (0.0.0.0) |
9930 |
the screen’s picture as MPEG-TS, several viewers on one encode (OBS, the pro-DJ apps) (listener, not OSC) |
radla |
osc |
radla (192.168.43.96) |
9000 |
/beat |
radla |
vu |
radla (192.168.43.96) |
9001 |
/vu |
prolink |
announce |
any (0.0.0.0) |
50000 |
Pro DJ Link keep-alives (broadcast, not OSC) |
prolink |
beat |
any (0.0.0.0) |
50001 |
Pro DJ Link beat packets (broadcast, not OSC) |
prolink |
status |
any (0.0.0.0) |
50002 |
Pro DJ Link status packets (broadcast, not OSC) |
aes67 |
stream |
aes67-core (239.69.150.243) |
5004 |
the Core’s 12 channels as AES67 (RTP, L24, 44.1 kHz, 0.5 ms packets), multicast on the audio socket; not OSC |
aes67 |
deck |
aes67-deck-{deck} (239.69.150.244, 239.69.150.245) |
5004 |
one deck’s 41 channels: MAIN1-16, AUX1-16, CUE1-9 (L24, 44.1 kHz, ptime 0.25 ms), sess.name “AES67 deck |
aes67 |
sap |
sap (239.255.255.255) |
9875 |
AES67 stream announcements (SAP/SDP), multicast on the audio socket, every sender and receiver; not OSC |
ptp4l |
event |
ptp (224.0.1.129) |
319 |
PTP event messages; the Core is master on the audio socket; not OSC |
ptp4l |
general |
ptp (224.0.1.129) |
320 |
PTP general messages (announce, follow-up); not OSC |
Who sends where
The file’s routes, rendered. Carries: the route’s mark (vu: meters), else
what the listener takes. Sender iem is the IEM EnergyVisualizer, which no longer runs (see below);
prolink: any Pro DJ Link player; StemDeck as master has its own rows.
From |
To |
Carries |
|---|---|---|
mixer |
|
every controller’s messages, and /beat from the analyzer |
mixer |
|
/tap, /clockmode, and /beat from Motion in clock mode 0 |
desk |
|
every controller’s messages, and /beat from the analyzer |
desk |
|
/tap, /clockmode, and /beat from Motion in clock mode 0 |
prodj |
|
every controller’s messages, and /beat from the analyzer |
prodj |
|
/tap, /clockmode, and /beat from Motion in clock mode 0 |
motion |
|
every controller’s messages, and /beat from the analyzer |
motion |
|
/tap, /clockmode, and /beat from Motion in clock mode 0 |
core |
|
Core’s relays (StemDeck’s preview among them), /beat |
core |
|
Core’s /vu bundles (the engine’s meters, forwarded) |
core |
|
Core’s relays and lamps, /beat, /vu |
core |
|
Core’s relays, lamps and stems, /beat – every virtual desk Core follows (four at most) |
core |
|
vu |
core |
|
vu |
core |
|
/vu |
core |
|
a3-engine: Core’s words in engine mode – channel.gain/eq./volume/3d/filter.frequency/filter.q/aux-send/cue/filter/azimuth/elevation/source, filter.frequency/resonance/mode, master., aux-return.cue, delay.bpm, aux-return.delay.*, engine.open |
core |
|
a3-update on every machine: Core asks for its packages and for an update to a release (HTTP JSON, only from the core host; not OSC) |
core |
|
Core’s bus switches and its request for all of them; a one-deck instance k (–deck A..D) listens on this port + (k - 1): A 7780, B 7781, C 7782, D 7783 (Core’s deck relay sends deck k there); the two-deck StemDeck keeps 7780 |
core |
|
Core’s /core/here broadcast: where every device fetches the truth |
engine |
|
every controller’s messages, and /beat from the analyzer |
engine |
|
vu |
beat-analyzer |
|
every controller’s messages, and /beat from the analyzer |
beat-analyzer |
|
Core’s relays (StemDeck’s preview among them), /beat |
beat-analyzer |
|
Core’s relays and lamps, /beat, /vu |
beat-analyzer |
|
/beat |
iem |
|
the IEM EnergyVisualizer’s /EnergyVisualizer/RMS |
stemdeck |
|
Pro DJ Link keep-alives (broadcast, not OSC) |
stemdeck |
|
Pro DJ Link status packets (broadcast, not OSC) |
stemdeck |
|
Pro DJ Link beat packets (broadcast, not OSC) |
stemdeck |
|
every controller’s messages, and /beat from the analyzer |
stemdeck |
|
vu |
stemdeck |
|
vu |
prolink |
|
Pro DJ Link beat packets (broadcast, not OSC) |
Motion’s energy listener has no sender.
/EnergyVisualizer/RMScame straight from the EnergyVisualizer plug-in inside REAPER, bypassing Core (asidein the register). REAPER is gone and the engine does not send it, so the listener stays open and nothing arrives (an open issue).Core has two receive ports: commands on
core.osc, meters oncore.vu-relay; Motion three (control, 25 Hz meters, 426-float energy frames)./tapgoes straight to the beat-analyzer: timing wants no relay.radlais off this subnet, via the gateway: beat, meters, network audio.Read a port with its host: 7772 is both Motion’s and the Mixer’s meter port. A sending port is ephemeral and means nothing.
The numbering, and what would be better
The numbers grew: 7771, 7772, 7775, 7777 have three owners and two
gaps; 9000–9005 interleave Core and the engine; no number names its owner.
Proposal — the block names the owner:
Block |
Owner |
|---|---|
|
A³ Core |
|
Core’s engine |
|
A³ Motion |
|
A³ Mixer |
|
beat-analyzer |
with fixed offsets: +0 control, +1 VU, +2 energy, +5 beat clock.
Not the current state. The devices follow one edit of a3-osc.json, but
a half-done renumbering is silent. The tables above are what the rig does today.