[
  {
    "id": "0-10v",
    "name": "0-10V Analog Dimming Control",
    "aka": [
      "0-10V",
      "1-10V"
    ],
    "category": "lighting-control",
    "summary": "A simple two-wire analog DC control voltage (0-10V, or 1-10V for fluorescent ballasts) used to dim architectural/LED lighting fixtures and drivers, standardized for entertainment use in ANSI/ESTA E1.3 and predating DMX512 in theatrical dimming.",
    "transport": [
      "other"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://webstore.ansi.org/standards/esta/ansie12001r2011"
    },
    "steward": "ESTA/PLASA (Entertainment Services and Technology Association), via ANSI",
    "status": "current",
    "gotchas": [
      "No addressing or digital data - every fixture on a 0-10V control line dims together, so per-fixture control needs separate runs or a downstream decoder.",
      "Sourcing vs. sinking wiring schemes are not interchangeable, and mixing them on the same control line is a common installation error.",
      "Largely superseded in theatrical dimming by DMX512, but remains common today in architectural LED drivers and flat-panel fixtures."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "ANSI E1.3-2001 (R2011) - Entertainment Technology - Lighting Control Systems - 0 to 10V Analog Control Specification",
        "url": "https://webstore.ansi.org/standards/esta/ansie12001r2011",
        "primary": true
      },
      {
        "title": "0-10 V lighting control - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/0-10_V_lighting_control"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "0-10 VDC analogue inputs and contact closures. Four local closures on Ti/Gio/Ion, more via a Net3 I/O Gateway."
      }
    ],
    "flow": "control"
  },
  {
    "id": "ableton-link",
    "name": "Ableton Link",
    "aka": [
      "Link"
    ],
    "category": "timecode-sync",
    "summary": "Ableton's peer-to-peer protocol for sharing tempo, beat and phase between music applications on a local network. There is no master and no clock owner: any peer can change the tempo and everyone else follows within a beat.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 20808,
        "transport": "udp",
        "role": "Link discovery and session state messages",
        "note": "The same port is used for the IPv4 and the IPv6 multicast endpoints in the reference implementation."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "224.76.78.75 (IPv4)",
        "ff12::8080 (IPv6)"
      ],
      "note": "Taken from multicastEndpointV4() and multicastEndpointV6() in the Ableton Link source. Peers announce and discover each other on this group, so anything that blocks local multicast makes Link look broken."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://github.com/Ableton/link",
      "label": "Ableton Link reference implementation (there is no separate wire specification)"
    },
    "steward": "Ableton AG",
    "status": "current",
    "typical_use": [
      "Keeping laptops and tablets running different music software on one tempo",
      "DJ software and a live performance rig sharing a grid",
      "Lighting and VJ software following a musical tempo rather than timecode",
      "Ad-hoc jam setups where nobody wants to nominate a master clock"
    ],
    "gotchas": [
      "There is no master. Any peer joining a session adopts the session tempo, and any peer can then change tempo for everyone. If someone nudges a tempo control on the wrong machine, the whole room moves.",
      "Discovery is multicast on 224.76.78.75 port 20808. Client isolation on guest wifi, a VPN client, or a firewall silently blocking multicast all produce the same symptom: zero peers found and no error message.",
      "Link does not work over a VPN or over Bluetooth. Ableton state this directly. A tethered phone or a corporate VPN left running is the usual reason one machine cannot see the others.",
      "On recent macOS versions the local network permission must be granted to each application. If it is not, the app finds nothing and gives no clue why.",
      "Link carries tempo, beat and phase only. Start/stop sync is an optional feature that applications must opt into, so do not assume pressing play on one device starts the others.",
      "It is not timecode. There is no absolute position and no relationship to SMPTE, so Link will keep a band in time with each other but will not lock them to a video playback or a show timeline."
    ],
    "implementations": [
      {
        "name": "Ableton Link",
        "url": "https://github.com/Ableton/link",
        "language": "C++",
        "license": "GPL-2.0-or-later",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "tempo",
      "music",
      "multicast",
      "sync"
    ],
    "sources": [
      {
        "title": "Ableton Link source — multicast endpoints (224.76.78.75 and ff12::8080, port 20808)",
        "url": "https://github.com/Ableton/link/blob/master/include/ableton/discovery/IpInterface.hpp",
        "publisher": "Ableton AG",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Link Troubleshooting (port 20808, multicast, no VPN, no Bluetooth, macOS local network permission)",
        "url": "https://help.ableton.com/hc/en-us/articles/209073069-Link-Troubleshooting",
        "publisher": "Ableton AG",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Ableton Link repository and licence",
        "url": "https://github.com/Ableton/link",
        "publisher": "Ableton AG",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "ableton-live",
        "name": "Ableton Live",
        "vendor": "Ableton AG",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Peer-to-peer tempo, beat and phase sync over the local network. There is no master: any peer can change the session tempo. Tempo Follower and External Sync are mutually exclusive."
      },
      {
        "kind": "software",
        "id": "chataigne",
        "name": "Chataigne",
        "vendor": "Ben Kuper",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Listed among the built-in protocol modules."
      },
      {
        "kind": "software",
        "id": "max-msp",
        "name": "Max",
        "vendor": "Cycling '74",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through Max for Live and Link-aware objects."
      }
    ],
    "flow": "clock"
  },
  {
    "id": "acn",
    "name": "ACN",
    "aka": [
      "Architecture for Control Networks",
      "E1.17",
      "Full ACN"
    ],
    "category": "network-transport",
    "summary": "ESTA's full control network architecture: SDT for reliable sessions over UDP, DMP for device properties, and DDL device descriptions in XML so a controller can drive a device it has never met. sACN borrows only the root layer of this; ACN is the rest of it.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 5568,
        "transport": "udp",
        "role": "SDT (Session Data Transport)",
        "iana_registered": true,
        "note": "Registered with IANA in 2006 as \"sdt\", Session Data Transport Multicast. E1.31 sACN shares this port because it sits on the same ACN root layer."
      }
    ],
    "multicast": {
      "used": true,
      "note": "SDT is a reliable multicast transport and ACN's EPI documents cover multicast address allocation. The specific group ranges are defined per EPI rather than by one fixed block, so confirm against the relevant EPI before configuring a switch."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
      "label": "ESTA TSP published documents (ANSI E1.17, free download)"
    },
    "steward": "ESTA (Entertainment Services and Technology Association)",
    "first_published": 2006,
    "status": "current",
    "typical_use": [
      "ETC Net3 device configuration and control",
      "The root layer that E1.31 sACN packets are built on",
      "Self-describing device control where a DDL file replaces a hand-written driver",
      "Shure wireless microphone system control"
    ],
    "gotchas": [
      "When someone on headset says \"ACN\" they almost always mean sACN (E1.31). They share a port and a root layer but not a purpose, and a device that speaks one does not necessarily speak the other at all.",
      "ACN is a suite of documents plus EPIs that pin down discovery, addressing, port assignment and timeouts. Implementing SDT and DMP from the core documents alone will not give you anything interoperable.",
      "DDL is the whole point and also the hard part. A device is only as self-describing as the DDL file the vendor shipped, and incomplete or stale descriptions are common.",
      "SDT is session-based with membership and sequencing, so it carries state. Dropping and rejoining a session is not the free operation that restarting an sACN packet stream is.",
      "Real-world deployment is narrow. ETC's Net3 and some Shure wireless gear use full ACN; most of the industry only ever met it through the sACN root layer, so third-party tooling is thin."
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "network",
      "esta",
      "sdt",
      "ddl"
    ],
    "sources": [
      {
        "title": "ANSI E1.17-2015 (R2025) — Architecture for Control Networks, free download",
        "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
        "publisher": "ESTA Technical Standards Program",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "ANSI E1.17-2010 — Architecture for Control Networks (title, scope, revision history)",
        "url": "https://webstore.ansi.org/standards/esta/ansie1172010",
        "publisher": "ESTA / ANSI webstore",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "IANA Service Name and Transport Protocol Port Number Registry (5568, sdt — Session Data Transport Multicast)",
        "url": "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml",
        "publisher": "IANA",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Architecture for Control Networks (SDT, DMP, DDL, EPIs, relationship to E1.31, adoption)",
        "url": "https://en.wikipedia.org/wiki/Architecture_for_Control_Networks",
        "publisher": "Wikipedia",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Dissects the underlying ACN/E1.17 root layer (Root Layer, SDT, wrappers) that sACN rides on."
      }
    ],
    "flow": "control",
    "flow_note": "The architecture sACN was cut down from. What it carries is lighting control."
  },
  {
    "id": "adat",
    "name": "ADAT Lightpipe",
    "aka": [
      "ADAT Optical",
      "Lightpipe",
      "ADAT"
    ],
    "category": "audio-transport",
    "summary": "Eight channels of uncompressed digital audio down one plastic optical fibre, originally for a tape machine and long outliving it. Still the cheapest way to get eight channels between two boxes in a rack.",
    "transport": [
      "fibre"
    ],
    "openness": "proprietary-documented",
    "steward": "Alesis (originating), now a de facto standard",
    "status": "current",
    "typical_use": [
      "Expanding the input count of an audio interface",
      "Linking a stagebox or preamp to a converter",
      "Eight-channel tie-lines inside a rack"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          48,
          96
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 8,
        "encoding": "Linear PCM over optical",
        "note": "Eight channels at 48 kHz. At 96 kHz sample-multiplexing (S/MUX) pairs the channels, so the same cable carries four."
      }
    },
    "gotchas": [
      "The eight-channel count is at 44.1 or 48 kHz. At 88.2/96 kHz S/MUX halves it to four channels, and at 176.4/192 kHz to two. A device set to a high rate silently loses channels rather than reporting a fault.",
      "The connector is the same TOSLINK as optical S/PDIF and carries a completely different format. They plug into each other happily.",
      "Plastic optical fibre is short-run and bend-sensitive. Runs beyond a few metres want glass or a different transport."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "digital",
      "optical",
      "multichannel"
    ],
    "sources": [
      {
        "title": "ADAT Optical Interface Specification",
        "url": "https://www.alesis.com/",
        "publisher": "Alesis",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "aes3",
    "name": "AES3",
    "aka": [
      "AES/EBU",
      "AES-3",
      "IEC 60958 Type I"
    ],
    "category": "audio-transport",
    "summary": "Two channels of uncompressed digital audio down one balanced pair, self-clocking, on the XLR connector everything else on the stage already uses. It is the reason a digital feed can travel a mic line, and the reason people plug digital into analogue inputs by mistake.",
    "transport": [
      "other"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://www.aes.org/publications/standards/",
      "label": "AES Standards catalogue"
    },
    "steward": "AES (Audio Engineering Society), with the EBU",
    "status": "current",
    "first_published": 1985,
    "typical_use": [
      "Two-channel digital feeds between consoles, processors and amplifiers",
      "Digital output from playback machines and broadcast equipment",
      "The transport under many older matrix and distribution systems"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          32,
          44.1,
          48
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 2,
        "encoding": "Linear PCM, biphase mark coded",
        "note": "Two channels in one subframe pair. Later revisions add higher rates, and the consumer variant of the same electrical idea is S/PDIF."
      }
    },
    "gotchas": [
      "The cable is 110 Ω, not the 45–75 Ω of a normal mic line. A standard XLR cable often works over a short run and then fails as the run gets longer, which makes it one of the more misleading intermittent faults on a stage.",
      "It is self-clocking, so the receiver locks to the sender. Two devices that are both trying to be clock master produce dropouts rather than an error.",
      "S/PDIF carries the same data format on 75 Ω coax at a much lower voltage. They interconvert, but not by rewiring a connector.",
      "Plugging AES3 into an analogue input sends a wideband square wave into a preamp. It is loud, it is unpleasant, and on some systems it is expensive."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "digital",
      "aes",
      "xlr"
    ],
    "sources": [
      {
        "title": "AES3 — Serial transmission format for two-channel linearly represented digital audio data",
        "url": "https://www.aes.org/publications/standards/",
        "publisher": "Audio Engineering Society",
        "primary": true
      },
      {
        "title": "Interfacing AES3 and S/PDIF (RaneNote 149)",
        "url": "https://www.ranecommercial.com/legacy/note149.html",
        "publisher": "Rane Corporation"
      },
      {
        "title": "IEC 60958 — Digital audio interface",
        "url": "https://webstore.iec.ch/",
        "publisher": "International Electrotechnical Commission",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "aes50",
    "name": "AES50",
    "aka": [
      "SuperMAC",
      "HRMAI"
    ],
    "category": "audio-transport",
    "summary": "An AES open standard for bidirectional, low-latency multichannel digital audio over Cat5 cable, built into the Behringer/Midas/Klark Teknik console ecosystem (X32, WING, M32, DL/XL series) to link stageboxes, consoles, and processing without an analog snake.",
    "transport": [
      "ethernet-l2"
    ],
    "openness": "open-free-registration",
    "spec_url": {
      "url": "https://www.aes.org/standards/blog/2011/9/new-revision-of-aes50-2011"
    },
    "steward": "Audio Engineering Society (AES)",
    "status": "current",
    "media": {
      "audio": {
        "sample_rates_khz": [
          48,
          96
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 48,
        "encoding": "Linear PCM over Cat5, layer 1 rather than Ethernet",
        "note": "48 channels each direction per link at 48 kHz, dropping to 24 at 96 kHz. The count is per link and bidirectional, which is why a console and a stagebox need one cable rather than two."
      }
    },
    "gotchas": [
      "Runs over Cat5/Cat5e cable and RJ45s but is not standard routable Ethernet - AES50 ports cannot simply be plugged into a network switch.",
      "Point-to-point by design; star/hub topologies require dedicated AES50 routers rather than off-the-shelf Ethernet switches.",
      "Channel count trades off against sample rate: up to 48 channels at 48kHz drops to 24 channels at 96kHz per link."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "New revision of AES50, High-resolution multi-channel audio interconnection (HRMAI) - AES Standards",
        "url": "https://www.aes.org/standards/blog/2011/9/new-revision-of-aes50-2011",
        "primary": true
      },
      {
        "title": "AES50 - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/AES50"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "allen-heath-dlive-s7000",
        "name": "Allen & Heath dLive S7000",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via card, for compatibility with AES50 stage boxes."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-sq-6",
        "name": "Allen & Heath SQ-6",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "SLink port supports AES50-compatible expanders."
      },
      {
        "kind": "hardware",
        "id": "behringer-x32",
        "name": "Behringer X32",
        "vendor": "Behringer",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Two AES50 ports for S16 / S32 stage boxes."
      },
      {
        "kind": "hardware",
        "id": "digico-sd12",
        "name": "DiGiCo SD12",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on fitted option."
      },
      {
        "kind": "hardware",
        "id": "midas-hd96-24",
        "name": "Midas HD96-24",
        "vendor": "Midas",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "AES50 to DL stage boxes, the Midas and Klark Teknik backbone."
      },
      {
        "kind": "hardware",
        "id": "powersoft-x8",
        "name": "Powersoft X8",
        "vendor": "Powersoft",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Not supported; listed here only to prevent confusion."
      }
    ],
    "flow": "media"
  },
  {
    "id": "aes67",
    "name": "AES67",
    "aka": [
      "AES67 audio-over-IP",
      "AES-67"
    ],
    "category": "audio-transport",
    "summary": "An AES interoperability standard for streaming uncompressed audio over IP using RTP and IEEE 1588 PTP. It is the common ground that lets Dante, RAVENNA, Q-LAN, Livewire and Ravenna-derived broadcast gear exchange streams without a hardware bridge.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 5004,
        "transport": "udp",
        "role": "RTP media stream (RTP/AVP default port)",
        "note": "Audinate documents 5004 for AES67 multicast audio from Dante devices. The actual port for any given stream comes from the SDP, so treat 5004 as the common default rather than a fixed rule."
      },
      {
        "number": 9875,
        "transport": "udp",
        "role": "SAP session announcements used for AES67 stream discovery",
        "note": "SAP is one of several discovery mechanisms in use. AES67 does not mandate any of them."
      }
    ],
    "multicast": {
      "used": true,
      "note": "AES67 streams are usually multicast but the standard does not reserve an address range, so the plant owner assigns it. Audinate's Dante devices emit AES67 flows in 239.69.0.0/16. SAP announcements go to 239.255.255.255:9875. AES67 specifies IGMP for managing multicast traffic."
    },
    "openness": "published-paid",
    "spec_url": {
      "url": "https://aes2.org/publications/standards-store/",
      "label": "AES Standards Store (AES67 is free to AES members, otherwise paid)"
    },
    "steward": "Audio Engineering Society (AES)",
    "first_published": 2013,
    "status": "current",
    "typical_use": [
      "Getting audio between two vendors' networks that do not share a native protocol",
      "Broadcast contribution and distribution between studios and OB trucks",
      "Feeding ST 2110-30 audio receivers from a pro audio network",
      "Interop mode on Dante, RAVENNA, Q-LAN and Livewire devices"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          48
        ],
        "bit_depths": [
          16,
          24
        ],
        "encoding": "Linear PCM, L16 and L24",
        "note": "48 kHz is the mandatory interoperability point; other rates may be supported but cannot be assumed between vendors. The same applies to packet time, where 1 ms is required and 125 microseconds is optional."
      }
    },
    "gotchas": [
      "AES67 mandates no discovery method at all. SAP, Bonjour/mDNS and NMOS IS-04 are all in the field. Two fully compliant devices can sit on the same switch and never see each other, and you patch by hand from the SDP.",
      "It standardises the stream and the clock, not the ecosystem. There is no AES67 device control, no level control, no naming, no subscription model, so day to day patching still happens in each vendor's own tool.",
      "AES67 is built on PTPv2 (IEEE 1588-2008). Dante's native clock is PTPv1, so a Dante device switched into AES67 mode changes clock domain and stops clocking with its non-AES67 neighbours.",
      "A 1 ms packet time is the only one every AES67 device must support. 125 us, 250 us, 333.33 us and 4 ms are optional, and broadcast gear often defaults to a short one for latency. A receiver that only does 1 ms just refuses the stream.",
      "An AES67 flow carries no channel names. Channel order in the stream is the only thing that identifies what is where, so document the map or you will be counting pairs at soundcheck."
    ],
    "implementations": [
      {
        "name": "aes67-linux-daemon",
        "url": "https://github.com/bondagit/aes67-linux-daemon",
        "language": "C++",
        "license": "GPL-3.0-or-later",
        "role": "both"
      },
      {
        "name": "ALSA RAVENNA/AES67 driver",
        "url": "https://github.com/bondagit/ravenna-alsa-lkm",
        "language": "C",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "audio-over-ip",
      "interoperability",
      "aes",
      "ptp"
    ],
    "sources": [
      {
        "title": "AES Standards Store (AES67-2023 listing and pricing)",
        "url": "https://aes2.org/publications/standards-store/",
        "publisher": "Audio Engineering Society",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "AES67-2013, Networks, audio-over-IP interoperability (publication announcement)",
        "url": "https://www.aes.org/standards/blog/2013/9/aes67-2013-audio-over-ip-130911",
        "publisher": "AES Standards Committee",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "AES67 FAQ",
        "url": "https://aimsalliance.org/aes67-faq/",
        "publisher": "AIMS Alliance",
        "accessed": "2026-08-16"
      },
      {
        "title": "RAVENNA and AES67 white paper (mandatory 1 ms packet time, optional packet times, L16/L24)",
        "url": "https://ravenna-network.com/wp-content/uploads/2020/02/RAVENNA___AES67_V1.0.pdf",
        "publisher": "ALC NetworX",
        "accessed": "2026-08-16"
      },
      {
        "title": "Which network ports does Dante use? (AES67 RTP and SAP ports)",
        "url": "https://support.getdante.com/hc/en-gb/articles/5508285534239-Which-network-ports-does-Dante-use",
        "publisher": "Audinate",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "dante-controller",
        "name": "Dante Controller",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Configures AES67 mode on capable devices."
      },
      {
        "kind": "software",
        "id": "dante-virtual-soundcard",
        "name": "Dante Virtual Soundcard",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "AES67 mode where the network supports it."
      },
      {
        "kind": "software",
        "id": "qsys-designer",
        "name": "Q-SYS Designer",
        "vendor": "QSC, LLC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Cores stream AES67 as multicast alongside the native Q-LAN transport. QSC's capacity tables count Q-LAN and AES67 network channels together and list no separate AES67 feature licence."
      },
      {
        "kind": "hardware",
        "id": "avid-venue-s6l-32d",
        "name": "Avid VENUE S6L-32D",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through Dante in AES67 mode."
      },
      {
        "kind": "hardware",
        "id": "biamp-tesira-forte",
        "name": "Biamp TesiraFORTÉ",
        "vendor": "Biamp",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "AES67 mode on supported firmware."
      },
      {
        "kind": "hardware",
        "id": "bss-blu-806",
        "name": "BSS Soundweb London BLU-806",
        "vendor": "BSS Audio",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via Dante AES67 mode."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9200",
        "name": "Cisco Catalyst 9200 Series",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, with the same QoS requirements as Dante."
      },
      {
        "kind": "hardware",
        "id": "clear-com-freespeak-ii",
        "name": "Clear-Com FreeSpeak II",
        "vendor": "Clear-Com",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Where enabled."
      },
      {
        "kind": "hardware",
        "id": "db-40d",
        "name": "d&b audiotechnik 40D installation amplifier",
        "vendor": "d&b audiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Where enabled."
      },
      {
        "kind": "hardware",
        "id": "db-ds100",
        "name": "d&b audiotechnik DS100 Signal Engine",
        "vendor": "d&b audiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "AES67 mode."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "unverified",
        "note": "Via DMI Dante card in AES67 mode."
      },
      {
        "kind": "hardware",
        "id": "directout-prodigy-mp",
        "name": "DirectOut PRODIGY.MP",
        "vendor": "DirectOut",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via module."
      },
      {
        "kind": "hardware",
        "id": "ferrofish-a32-dante",
        "name": "Ferrofish A32 Dante",
        "vendor": "Ferrofish",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via Dante AES67 mode."
      },
      {
        "kind": "hardware",
        "id": "focusrite-rednet-a16r-mk2",
        "name": "Focusrite RedNet A16R MkII",
        "vendor": "Focusrite",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "AES67 mode."
      },
      {
        "kind": "hardware",
        "id": "green-go-beltpack",
        "name": "Green-GO Digital Intercom",
        "vendor": "Green-GO (ELC)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on model and firmware."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-la4x",
        "name": "L-Acoustics LA4X",
        "vendor": "L-Acoustics",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "AES67 input on current firmware."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-la7-16i",
        "name": "L-Acoustics LA7.16i",
        "vendor": "L-Acoustics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Where enabled."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-p1",
        "name": "L-Acoustics P1",
        "vendor": "L-Acoustics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Where enabled."
      },
      {
        "kind": "hardware",
        "id": "lab-gruppen-plm-20k44",
        "name": "Lab.gruppen PLM 20K44",
        "vendor": "Lab.gruppen",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via Dante AES67 mode."
      },
      {
        "kind": "hardware",
        "id": "lake-lm44",
        "name": "Lab.gruppen Lake LM44",
        "vendor": "Lab.gruppen",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Where enabled."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-10",
        "name": "Luminex GigaCore 10",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-16xt",
        "name": "Luminex GigaCore 16Xt",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, listed alongside RAVENNA."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-26i",
        "name": "Luminex GigaCore 26i",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported."
      },
      {
        "kind": "hardware",
        "id": "netgear-m4250",
        "name": "NETGEAR M4250 (AV Line)",
        "vendor": "NETGEAR",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, AV profile available."
      },
      {
        "kind": "hardware",
        "id": "powersoft-x8",
        "name": "Powersoft X8",
        "vendor": "Powersoft",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "AES67 input mode."
      },
      {
        "kind": "hardware",
        "id": "qsys-core-510i",
        "name": "Q-SYS Core 510i",
        "vendor": "QSC (Q-SYS)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Software AES67 streams for interop with other AoIP systems."
      },
      {
        "kind": "hardware",
        "id": "riedel-bolero",
        "name": "Riedel Bolero",
        "vendor": "Riedel Communications",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Networked audio."
      },
      {
        "kind": "hardware",
        "id": "rts-adam",
        "name": "RTS ADAM Intercom Matrix",
        "vendor": "RTS (Bosch)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Where enabled."
      },
      {
        "kind": "hardware",
        "id": "symetrix-radius-nx-12x8",
        "name": "Symetrix Radius NX 12x8",
        "vendor": "Symetrix",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Where enabled."
      },
      {
        "kind": "hardware",
        "id": "yamaha-cl5",
        "name": "Yamaha CL5",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via Dante AES67 mode on supported firmware."
      },
      {
        "kind": "hardware",
        "id": "yamaha-dm7",
        "name": "Yamaha DM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through Dante interoperability."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rio3224-d2",
        "name": "Yamaha Rio3224-D2",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through Dante interoperability where enabled."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rivage-pm7",
        "name": "Yamaha RIVAGE PM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via Dante AES67 mode."
      }
    ],
    "flow": "media"
  },
  {
    "id": "aes70-oca",
    "name": "AES70 (Open Control Architecture)",
    "aka": [
      "OCA",
      "Open Control Architecture",
      "AES70"
    ],
    "category": "audio-control",
    "summary": "Open Control Architecture, standardised by the AES as AES70, is an object-oriented model for controlling and monitoring media network devices. It carries gain, mute, routing, presets, sensors and status over TCP, and carries no audio of its own.",
    "transport": [
      "tcp"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://aes2.org/publications/standards-store/",
      "label": "AES Standards Store (free to AES members, otherwise paid)"
    },
    "steward": "Audio Engineering Society (AES), developed by the OCA Alliance",
    "first_published": 2016,
    "status": "current",
    "typical_use": [
      "Amplifier and DSP control from a third party controller or show control system",
      "Monitoring device health, temperature and fault sensors during a run",
      "Recalling presets and scenes across mixed-vendor loudspeaker systems",
      "Vendor control apps that need one model across a whole product range"
    ],
    "gotchas": [
      "There is no universal port. OCP.1 runs over TCP but the port is chosen by the device: the d&b DS100, for example, listens on 50014. Read the specific product manual before writing a firewall rule.",
      "AES70 is control only. It does not move audio, so it always sits alongside AES67, Dante or ST 2110, and a device can be reachable for control while its audio path is dead.",
      "\"AES70 compatible\" says nothing about which objects a device exposes. Two compliant products can share almost no controllable parameters, so check the device's actual class tree, not the badge on the box.",
      "The standard is split into parts (framework, class structure, protocols). Buying one part does not give you a working picture, and the parts are priced separately for non-members of the AES."
    ],
    "implementations": [
      {
        "name": "AES70.js",
        "url": "https://github.com/DeutscheSoft/AES70.js",
        "language": "JavaScript",
        "license": "GPL-2.0-only",
        "role": "both"
      },
      {
        "name": "NanoOcp",
        "url": "https://github.com/ChristianAhrens/NanoOcp",
        "language": "C++",
        "license": "GPL-3.0-or-later",
        "role": "sender"
      }
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "device-control",
      "aes",
      "oca"
    ],
    "sources": [
      {
        "title": "AES70 standards category (latest published edition)",
        "url": "https://aes2.org/standards-category/aes70/",
        "publisher": "Audio Engineering Society",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "AES70 Standards and Specifications",
        "url": "https://ocaalliance.com/resources/standards-specifications/",
        "publisher": "OCA Alliance",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "AES Standards Store (AES70 pricing and access)",
        "url": "https://aes2.org/publications/standards-store/",
        "publisher": "Audio Engineering Society",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Open Control Architecture (history and publication date)",
        "url": "https://en.wikipedia.org/wiki/Open_Control_Architecture",
        "publisher": "Wikipedia",
        "accessed": "2026-08-16"
      },
      {
        "title": "NanoOcp — OCP.1 over TCP, DS100 default port 50014",
        "url": "https://github.com/ChristianAhrens/NanoOcp",
        "publisher": "Christian Ahrens",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "db-40d",
        "name": "d&b audiotechnik 40D installation amplifier",
        "vendor": "d&b audiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control and monitoring."
      },
      {
        "kind": "hardware",
        "id": "db-d80",
        "name": "d&b audiotechnik D80",
        "vendor": "d&b audiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "R1 remote control speaks OCA (AES70) to the amplifier over Ethernet."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-la7-16i",
        "name": "L-Acoustics LA7.16i",
        "vendor": "L-Acoustics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control and monitoring."
      }
    ],
    "flow": "control"
  },
  {
    "id": "art-net",
    "name": "Art-Net",
    "aka": [
      "ArtNet",
      "Art-Net 4"
    ],
    "category": "lighting-control",
    "summary": "Artistic Licence's royalty-free protocol for carrying DMX512 over UDP/IP. It predates sACN, is implemented by almost every lighting product ever made, and is still the default lingua franca when two unfamiliar devices need to talk.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 6454,
        "transport": "udp",
        "role": "All Art-Net traffic (ArtDmx, ArtPoll, ArtPollReply, ArtSync, ...)",
        "note": "6454 is 0x1936 in hex, which is the year Artistic Licence chose as a nod to the first television broadcast."
      }
    ],
    "multicast": {
      "used": false,
      "note": "Art-Net is broadcast or unicast, not multicast. Art-Net 4 added the ability to hand off to sACN for the streaming portion, which is where multicast enters the picture."
    },
    "universe_model": "15-bit Port-Address split into Net (7 bits), Sub-Net (4 bits) and Universe (4 bits), giving 32768 addressable universes of 512 slots.",
    "openness": "open-published",
    "spec_url": {
      "url": "https://art-net.org.uk/downloads/art-net.pdf",
      "label": "Art-Net 4 specification (PDF)"
    },
    "steward": "Artistic Licence Engineering Ltd",
    "first_published": 1998,
    "status": "current",
    "typical_use": [
      "Console or media server to DMX gateway over ethernet",
      "Pixel mapping and LED processing",
      "Small installs and touring racks where sACN multicast config is not worth the trouble",
      "Discovery of nodes on an unknown network via ArtPoll"
    ],
    "gotchas": [
      "Classic Art-Net broadcasts to 2.255.255.255 or 10.255.255.255, which is why the old convention is 2.x.x.x addressing with a /8 mask. Putting Art-Net on a 192.168.x.x network works, but broadcast then hits every device on the subnet.",
      "Net/Sub-Net/Universe versus a flat universe number is the classic patch error. A device showing \"universe 0\" may mean Port-Address 0, which many consoles display as universe 1.",
      "ArtSync exists to avoid tearing on large pixel rigs, but many nodes ignore it. If pixels shear across a fade, check sync support before blaming the switch."
    ],
    "implementations": [
      {
        "name": "OLA (Open Lighting Architecture)",
        "url": "https://github.com/OpenLightingProject/ola",
        "language": "C++",
        "license": "LGPL-2.1-or-later",
        "role": "both"
      },
      {
        "name": "StupidArtnet",
        "url": "https://github.com/cpvalente/stupidArtnet",
        "language": "Python",
        "license": "MIT",
        "role": "sender"
      },
      {
        "name": "artnet (Node.js)",
        "url": "https://github.com/hobbyquaker/artnet",
        "language": "JavaScript",
        "license": "MIT",
        "role": "sender"
      }
    ],
    "confidence": "verified",
    "tags": [
      "lighting",
      "dmx-over-ip",
      "broadcast"
    ],
    "sources": [
      {
        "title": "Art-Net 4 Protocol Release — specification document",
        "url": "https://art-net.org.uk/downloads/art-net.pdf",
        "publisher": "Artistic Licence Engineering Ltd",
        "primary": true
      },
      {
        "title": "Art-Net homepage and licensing terms",
        "url": "https://art-net.org.uk/",
        "publisher": "Artistic Licence Engineering Ltd",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net control from a lighting console."
      },
      {
        "kind": "software",
        "id": "artnet-monitor-pixilab",
        "name": "ArtNet Monitor (PixiLab)",
        "vendor": "PixiLab",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Simple Art-Net DMX-512 monitor with single-universe or omni (multi-universe) modes."
      },
      {
        "kind": "software",
        "id": "artnetominator",
        "name": "The ArtNetominator",
        "vendor": "Lightjams Inc.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Primary function: real-time monitor of Art-Net nets/subnets/universes/nodes."
      },
      {
        "kind": "software",
        "id": "artnetview-haute-technique",
        "name": "ArtNetView",
        "vendor": "Haute Technique",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Standalone Art-Net monitor showing universes, source IPs, and per-channel value history."
      },
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "One of the two network DMX protocols Titan uses to reach nodes and dimmers."
      },
      {
        "kind": "software",
        "id": "capture",
        "name": "Capture",
        "vendor": "Capture Visualisation AB",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "One of the two recommended network DMX inputs."
      },
      {
        "kind": "software",
        "id": "casparcg",
        "name": "CasparCG Server",
        "vendor": "CasparCG project",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "An ArtNet consumer is documented in the shipped casparcg.config."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Art-Net 1, 2, 3 and 4 in broadcast or unicast mode for output; Art-Net is also received for capture into the console or for merging. 64 universes of output are enabled in the free demo mode."
      },
      {
        "kind": "software",
        "id": "chataigne",
        "name": "Chataigne",
        "vendor": "Ben Kuper",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "companion",
        "name": "Bitfocus Companion",
        "vendor": "Bitfocus AS",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Companion can be controlled over Art-Net by setting a universe and start channel in settings."
      },
      {
        "kind": "software",
        "id": "daslight",
        "name": "Daslight",
        "vendor": "Daslight (Nicolaudie)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output."
      },
      {
        "kind": "software",
        "id": "depence",
        "name": "Depence",
        "vendor": "Syncronorm GmbH",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Listed on Syncronorm's system-integration page; used to receive console output for previz, and the separate Control module is marketed as able to drive the real show over the same DMX network protocols."
      },
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "dmx-workshop",
        "name": "DMX-Workshop",
        "vendor": "Singularity (UK) Ltd",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Described as the reference standard tool for Art-Net implementations; sends and receives."
      },
      {
        "kind": "software",
        "id": "dmxcontrol-3",
        "name": "DMXControl 3",
        "vendor": "DMXControl Projects e.V.",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output and input."
      },
      {
        "kind": "software",
        "id": "dot2-onpc",
        "name": "dot2 onPC",
        "vendor": "MA Lighting",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Output broadcast, Art-Net 1, universes 0:0 to 0:7. On onPC the first universe is free (introduced in software v1.2.2.8); beyond that a dot2 Node4 is required."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Disabled by default in Patch. Art-Net universes 0-255."
      },
      {
        "kind": "software",
        "id": "esp-vision",
        "name": "ESP Vision",
        "vendor": "ESP Studios / Zzyzx, Inc. (acquired by Vectorworks, Inc., 2015)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented DMX input protocol in the ESP Vision 2.0 era (2006); not necessarily reflective of every release across the product's life."
      },
      {
        "kind": "software",
        "id": "grandma3-onpc",
        "name": "grandMA3 onPC",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Documented at Art-Net revision 1.4db. Unicast is used until more than five receivers subscribe to a universe."
      },
      {
        "kind": "software",
        "id": "heavym",
        "name": "HeavyM",
        "vendor": "HeavyM",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "External control."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "In: the DMX component takes Art-Net from a lighting desk to control layers, mixes and viewports, with auto-patch tooling. Out: PixelMapper sends Art-Net to LED fixtures."
      },
      {
        "kind": "software",
        "id": "isadora",
        "name": "Isadora",
        "vendor": "TroikaTronix (Mark Coniglio)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Integrated Art-Net send and receive from Isadora 4. In Isadora 2 and 3 Art-Net was a separately downloaded plugin (32-bit for 2, 64-bit for 3)."
      },
      {
        "kind": "software",
        "id": "l8",
        "name": "L8",
        "vendor": "L8 LLC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "DMX input on every edition; the Trace and Unlimited edition pages separately document \"DMX output with Art-Net.\""
      },
      {
        "kind": "software",
        "id": "lightconverse",
        "name": "LightConverse",
        "vendor": "LightConverse",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net input from a console."
      },
      {
        "kind": "software",
        "id": "lightkey",
        "name": "Lightkey",
        "vendor": "Lightkey",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output."
      },
      {
        "kind": "software",
        "id": "ma3d",
        "name": "MA 3D",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Art-Net input where MA-Net is not used."
      },
      {
        "kind": "software",
        "id": "madmapper",
        "name": "MadMapper",
        "vendor": "garageCube",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Documented as Art-Net 4 compliant, up to 4096 DMX universes."
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net for lighting integration."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Art-Net output for Light Plot and LED Mapping; docs cite Artnet V1/V2 with V3/V4 said to be retro-compatible. Art-Net input is not documented."
      },
      {
        "kind": "software",
        "id": "modul8",
        "name": "Modul8",
        "vendor": "GarageCUBE",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "DMX/Art-Net control on supported versions."
      },
      {
        "kind": "software",
        "id": "node-red",
        "name": "Node-RED",
        "vendor": "OpenJS Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via community nodes."
      },
      {
        "kind": "software",
        "id": "notch",
        "name": "Notch",
        "vendor": "Notch (10bit FX Limited)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Vendor features page states Art-Net input and output; the Art-Net docs describe exposing any numerical parameter plus basic transport controls so a lighting desk can drive them."
      },
      {
        "kind": "software",
        "id": "ola",
        "name": "OLA (Open Lighting Architecture)",
        "vendor": "Open Lighting Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net 1, 2 and 3 are listed in the plugin documentation."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Each Art-Net universe can be set to output, input or both. Detected nodes are unicast their assigned universes, with an optional broadcast mode. Art-Net timecode can also be received."
      },
      {
        "kind": "software",
        "id": "openframeworks",
        "name": "openFrameworks",
        "vendor": "openFrameworks community",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through addons."
      },
      {
        "kind": "software",
        "id": "pixera",
        "name": "PIXERA",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control and output."
      },
      {
        "kind": "software",
        "id": "processing",
        "name": "Processing",
        "vendor": "Processing Foundation",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through community libraries."
      },
      {
        "kind": "software",
        "id": "propresenter",
        "name": "ProPresenter",
        "vendor": "Renewed Vision",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "DMX control of ProPresenter on supported versions."
      },
      {
        "kind": "software",
        "id": "protokol",
        "name": "Protokol",
        "vendor": "Hexler",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Listed alongside MIDI and OSC as a monitored protocol."
      },
      {
        "kind": "software",
        "id": "provideoplayer",
        "name": "ProVideoPlayer (PVP)",
        "vendor": "Renewed Vision",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "DMX/Art-Net control on supported versions."
      },
      {
        "kind": "software",
        "id": "qlab",
        "name": "QLab",
        "vendor": "Figure 53",
        "direction": "out",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Lighting cues output over Art-Net; requires a licence tier that includes lighting."
      },
      {
        "kind": "software",
        "id": "qlc-plus",
        "name": "QLC+",
        "vendor": "QLC+ project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net plugin, listed in the project's plugin set."
      },
      {
        "kind": "software",
        "id": "rdm-controller-jese",
        "name": "RDM Controller",
        "vendor": "JESE",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "RDM over Art-Net where supported."
      },
      {
        "kind": "software",
        "id": "realizzer-3d",
        "name": "Realizzer 3D",
        "vendor": "Realizzer",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net input from a console."
      },
      {
        "kind": "software",
        "id": "resolume-arena",
        "name": "Resolume Arena",
        "vendor": "Resolume",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Pixel and fixture output to lights uses Art-Net. Enttec USB DMX devices are not supported from Arena 6 onward."
      },
      {
        "kind": "software",
        "id": "show-cue-system",
        "name": "Show Cue System (SCS)",
        "vendor": "Show Cue Systems",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Art-Net output on supported versions."
      },
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net in for console control and out for fixture control."
      },
      {
        "kind": "software",
        "id": "stage-precision",
        "name": "Stage Precision",
        "vendor": "Stage Precision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net in and out."
      },
      {
        "kind": "software",
        "id": "touchdesigner",
        "name": "TouchDesigner",
        "vendor": "Derivative",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "unity",
        "name": "Unity",
        "vendor": "Unity Technologies",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through community and vendor packages."
      },
      {
        "kind": "software",
        "id": "unreal-engine",
        "name": "Unreal Engine",
        "vendor": "Epic Games",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX in and out through the built-in DMX plugin."
      },
      {
        "kind": "software",
        "id": "vectorworks-vision",
        "name": "Vectorworks Vision",
        "vendor": "Vectorworks, Inc.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented by Vectorworks as a DMX-provider option for its Spotlight-integrated previsualisation line, which shares Vision's DMX engine."
      },
      {
        "kind": "software",
        "id": "ventuz",
        "name": "Ventuz",
        "vendor": "Ventuz Technology",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Art-Net in and out."
      },
      {
        "kind": "software",
        "id": "vvvv",
        "name": "vvvv",
        "vendor": "vvvv group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Widely used for driving and receiving lighting data."
      },
      {
        "kind": "software",
        "id": "watchout",
        "name": "WATCHOUT",
        "vendor": "Dataton",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented as ArtNet Input for external control of WATCHOUT."
      },
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Native artnet dissector present since very early Wireshark releases (display filter fields documented back to version 1.0.0)."
      },
      {
        "kind": "software",
        "id": "wysiwyg",
        "name": "WYSIWYG",
        "vendor": "CAST Group Inc.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented as one of the network options for receiving console DMX (e.g. merged BlackTrax tracking data reaches WYSIWYG this way)."
      },
      {
        "kind": "hardware",
        "id": "7thsense-delta",
        "name": "7thSense Delta Media Server",
        "vendor": "7thSense",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net control in."
      },
      {
        "kind": "hardware",
        "id": "analog-way-picturall-mk2",
        "name": "Analog Way Picturall Mark II",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net control input."
      },
      {
        "kind": "hardware",
        "id": "avolites-ai-q3",
        "name": "Avolites Ai Q3",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control and output."
      },
      {
        "kind": "hardware",
        "id": "avolites-arena",
        "name": "Avolites Arena",
        "vendor": "Avolites",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network output."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output and input."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output and input."
      },
      {
        "kind": "hardware",
        "id": "brompton-tessera-s8",
        "name": "Brompton Tessera S8",
        "vendor": "Brompton Technology",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "brompton-tessera-sx40",
        "name": "Brompton Tessera SX40",
        "vendor": "Brompton Technology",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Art-Net control of processor parameters."
      },
      {
        "kind": "hardware",
        "id": "chamsys-magicq-mq80",
        "name": "ChamSys MagicQ MQ80",
        "vendor": "ChamSys",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Multiple universes over network."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net 4 output, and input for remote or backup desks."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net in for console control, out from Widget Designer."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9200",
        "name": "Cisco Catalyst 9200 Series",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported. Art-Net broadcast on older nodes is what floods a badly configured VLAN."
      },
      {
        "kind": "hardware",
        "id": "city-theatrical-multiverse",
        "name": "City Theatrical Multiverse Transmitter",
        "vendor": "City Theatrical",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network input."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via Designer's DMX device drivers."
      },
      {
        "kind": "hardware",
        "id": "disguise-vx-4",
        "name": "disguise vx 4",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX-over-Ethernet in and out of Designer for lighting integration."
      },
      {
        "kind": "hardware",
        "id": "elc-dmxlan-node8",
        "name": "ELC dmXLAN node8",
        "vendor": "ELC Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Per port."
      },
      {
        "kind": "hardware",
        "id": "enttec-din-ethergate-mk2",
        "name": "ENTTEC DIN Ethergate MK2",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Both ports."
      },
      {
        "kind": "hardware",
        "id": "enttec-ode-mk3",
        "name": "ENTTEC ODE Mk3",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Includes Art-RDM."
      },
      {
        "kind": "hardware",
        "id": "eos-apex-5",
        "name": "Eos Apex 5",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Carries DMX and RDM data and coexists with sACN on the same network."
      },
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network output."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output."
      },
      {
        "kind": "hardware",
        "id": "etc-response-mk2-gateway",
        "name": "ETC Response Mk2 DMX/RDM Gateway",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net supported alongside sACN."
      },
      {
        "kind": "hardware",
        "id": "etc-sensor3-rack",
        "name": "ETC Sensor3 Dimmer Rack",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net input."
      },
      {
        "kind": "hardware",
        "id": "etc-thrupower-rack",
        "name": "ETC ThruPower Rack",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Network control."
      },
      {
        "kind": "hardware",
        "id": "follow-me-3d",
        "name": "Follow-Me 3D",
        "vendor": "Follow-Me",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Fixture control and merge with the console."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net in and out."
      },
      {
        "kind": "hardware",
        "id": "grandma3-full-size",
        "name": "grandMA3 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Art-Net revision 1.4db. Sent as unicast until more than five receivers subscribe to a universe."
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network output."
      },
      {
        "kind": "hardware",
        "id": "green-hippo-karst-plus",
        "name": "Green Hippo Hippotizer Karst+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control and pixel output."
      },
      {
        "kind": "hardware",
        "id": "hippotizer-boreal-plus-mk2",
        "name": "Hippotizer Boreal+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX personality control in, pixel-mapper output out."
      },
      {
        "kind": "hardware",
        "id": "hog-4",
        "name": "Hog 4",
        "vendor": "High End Systems",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Over the dedicated gigabit Ethernet port. Universe count expands with networked DP8000 processors."
      },
      {
        "kind": "hardware",
        "id": "lumenradio-crmx-nova-tx2",
        "name": "LumenRadio CRMX Nova TX2",
        "vendor": "LumenRadio",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Art-Net input on network-equipped models."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-10",
        "name": "Luminex GigaCore 10",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, with protocol-aware handling."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-16xt",
        "name": "Luminex GigaCore 16Xt",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, not originated. The switch is protocol-aware for QoS and multicast handling."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-26i",
        "name": "Luminex GigaCore 26i",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported."
      },
      {
        "kind": "hardware",
        "id": "luminex-luminode-12",
        "name": "Luminex LumiNode 12",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net in and out per port."
      },
      {
        "kind": "hardware",
        "id": "medialon-showmaster-pro",
        "name": "Medialon Showmaster Pro",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network lighting control."
      },
      {
        "kind": "hardware",
        "id": "megapixel-helios",
        "name": "Megapixel HELIOS LED Processing Platform",
        "vendor": "Megapixel VR",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net in for console control, out for fixture and pixel control."
      },
      {
        "kind": "hardware",
        "id": "netgear-m4250",
        "name": "NETGEAR M4250 (AV Line)",
        "vendor": "NETGEAR",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported."
      },
      {
        "kind": "hardware",
        "id": "novastar-mx40-pro",
        "name": "NovaStar MX40 Pro",
        "vendor": "NovaStar",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Art-Net brightness and control on some firmware."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output."
      },
      {
        "kind": "hardware",
        "id": "pathway-pathport-octo",
        "name": "Pathway Connectivity Pathport OCTO",
        "vendor": "Pathway Connectivity",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Per port."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net in for console control."
      },
      {
        "kind": "hardware",
        "id": "wireless-solution-blackbox-f2",
        "name": "Wireless Solution W-DMX BlackBox F-2 G6",
        "vendor": "Wireless Solution",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Art-Net on Ethernet-equipped variants."
      },
      {
        "kind": "hardware",
        "id": "zactrack-pro",
        "name": "zactrack PRO",
        "vendor": "zactrack",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct fixture control output for tracked followspot behaviour."
      },
      {
        "kind": "hardware",
        "id": "zero88-flx-s48",
        "name": "Zero 88 FLX S48",
        "vendor": "Zero 88",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Art-Net output."
      }
    ],
    "flow": "control"
  },
  {
    "id": "avb-milan",
    "name": "AVB / Milan",
    "aka": [
      "AVB",
      "Audio Video Bridging",
      "Milan",
      "TSN for pro audio"
    ],
    "category": "audio-transport",
    "summary": "IEEE 802.1 Audio Video Bridging with the Avnu Milan profile on top: Layer 2 ethernet media streams with bandwidth reserved hop by hop and clocked by gPTP. It is used where the network has to behave like a fixed wiring loom, mostly in touring PA rigs built around Avid, Meyer, d&b and L-Acoustics gear.",
    "transport": [
      "ethernet-l2"
    ],
    "multicast": {
      "used": true,
      "note": "Streams are addressed with Layer 2 multicast MAC addresses allocated by MAAP, not with IP multicast groups. There is no IGMP involved and nothing for an IP-only network tool to show you."
    },
    "openness": "open-free-registration",
    "spec_url": {
      "url": "https://avnu.org/resource/milan-specification/",
      "label": "Milan Specification (free download behind a registration form)"
    },
    "steward": "Avnu Alliance (Milan profile) on top of IEEE 802.1 and IEEE 1722",
    "first_published": 2018,
    "status": "current",
    "typical_use": [
      "Console to amplifier and loudspeaker networks in touring PA",
      "Redundant audio paths where a single cable failure must not be audible",
      "Deterministic low-latency links between stage and front of house",
      "Discovery, connection management and control via AVDECC (IEEE 1722.1)"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          48
        ],
        "bit_depths": [
          24
        ],
        "encoding": "AVTP Audio Format, linear PCM",
        "note": "Milan fixes 48 kHz and 24-bit as the interoperability baseline, which is the point of Milan — AVB itself is more permissive and correspondingly less predictable between vendors."
      }
    },
    "gotchas": [
      "Every switch in the path has to be AVB capable. One ordinary switch, one media converter or one unmanaged patch in the middle and the bandwidth reservation never completes, so the stream simply never establishes.",
      "AVB is Layer 2. It does not route. You cannot carry it across a subnet boundary, a VPN or a WAN link, which rules it out for anything spread across a campus without dedicated fibre.",
      "gPTP (IEEE 802.1AS) is its own PTP profile running over Layer 2. It will not share a grandmaster with the IP-based IEEE 1588 clocks used by AES67, Dante and ST 2110 without a device that deliberately bridges the two.",
      "\"AVB capable\" and \"Milan certified\" are different claims. Milan is a profile over IEEE 1722 and 1722.1 that pins down stream formats, media clocking and redundancy, and generic AVB gear may not meet it.",
      "The Milan document is free after registration, but the IEEE standards it normatively references (802.1AS, 802.1Q, 802.1BA, 1722, 1722.1) are paid. A full implementation is not a zero-cost read.",
      "Connection state lives in the endpoints, managed over AVDECC. Power-cycling a switch is usually survivable, but a device swapped for a spare comes back with no streams until it is reconnected in the controller."
    ],
    "implementations": [
      {
        "name": "OpenAvnu",
        "url": "https://github.com/Avnu/OpenAvnu",
        "language": "C",
        "role": "both"
      },
      {
        "name": "L-Acoustics AVDECC (IEEE 1722.1)",
        "url": "https://github.com/L-Acoustics/avdecc",
        "language": "C++",
        "license": "LGPL-3.0-or-later",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "layer-2",
      "avb",
      "tsn",
      "avnu"
    ],
    "sources": [
      {
        "title": "Milan Specification",
        "url": "https://avnu.org/resource/milan-specification/",
        "publisher": "Avnu Alliance",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Avnu Alliance Specifications",
        "url": "https://avnu.org/specifications/",
        "publisher": "Avnu Alliance",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "OpenAvnu — gPTP, MAAP, mrpd and AVTP pipeline components",
        "url": "https://github.com/Avnu/OpenAvnu",
        "publisher": "Avnu Alliance",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Industry Leaders Join to Launch Milan Network Protocol Based on AVB for Pro AV Interoperability",
        "url": "https://www.prnewswire.com/news-releases/industry-leaders-join-to-launch-milan-network-protocol-based-on-avb-for-pro-av-interoperability-300659833.html",
        "publisher": "Avnu Alliance via PR Newswire",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "l-acoustics-la12x",
        "name": "L-Acoustics LA12X",
        "vendor": "L-Acoustics",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "AVB network audio input; L-Acoustics is a founding Milan proponent."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-la7-16i",
        "name": "L-Acoustics LA7.16i",
        "vendor": "L-Acoustics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Networked audio."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-p1",
        "name": "L-Acoustics P1",
        "vendor": "L-Acoustics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Networked audio."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-10",
        "name": "Luminex GigaCore 10",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "AVB support depending on model and firmware."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-16xt",
        "name": "Luminex GigaCore 16Xt",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "The manual states full AVB and AVB Milan support."
      },
      {
        "kind": "hardware",
        "id": "meyer-galaxy-816",
        "name": "Meyer Sound Galileo GALAXY 816",
        "vendor": "Meyer Sound",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "AVB network audio streams alongside analog and AES3 I/O; Milan-certified firmware exists for GALAXY."
      },
      {
        "kind": "hardware",
        "id": "netgear-m4250",
        "name": "NETGEAR M4250 (AV Line)",
        "vendor": "NETGEAR",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "AVB licence available on M4250, making it one of the few mainstream switches that can carry Milan."
      }
    ],
    "flow": "media"
  },
  {
    "id": "aviom-a-net",
    "name": "Aviom A-Net",
    "category": "audio-transport",
    "openness": "proprietary-closed",
    "status": "current",
    "summary": "Proprietary digital audio distribution for personal monitor mixing: a rack sends a fixed set of channels down Cat5 to personal mixers on stage, where each musician builds their own mix locally.",
    "transport": [
      "ethernet-l2"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          48
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 16,
        "encoding": "Linear PCM over Cat5, layer 1 rather than Ethernet",
        "note": "16 channels is the Pro16 personal-monitor system almost everyone means by A-Net. Pro64 is a separate, incompatible family carrying up to 64 at higher rates; the connectors look identical and the two do not talk."
      }
    },
    "typical_use": [
      "Personal monitor mixing for a band",
      "Houses of worship where musicians mix themselves",
      "Reducing monitor engineer workload on stage"
    ],
    "gotchas": [
      "A-Net runs on Cat5 and is not Ethernet. It must not be patched into a network switch, and the cable run limits are stricter than networking habits suggest.",
      "The channel set is fixed at the source. A musician can only mix what the engineer sent, so the channel allocation is a rehearsal decision, not a soundcheck one.",
      "Pro16 and Pro64 are two different A-Net generations with different capabilities. Mixing them requires a converter, not just a cable."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "monitors",
      "aviom",
      "personal-mixing",
      "proprietary"
    ],
    "sources": [
      {
        "title": "Aviom",
        "url": "https://www.aviom.com/",
        "publisher": "Aviom",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "bacnet",
    "name": "BACnet",
    "category": "device-management",
    "summary": "An ASHRAE/ISO standard protocol for building automation (HVAC, lighting, access control, life-safety) that show-control and integration designers encounter whenever a venue's house systems need to be tied into a production's control network.",
    "transport": [
      "udp",
      "rs485"
    ],
    "default_ports": [
      {
        "number": 47808,
        "transport": "udp",
        "note": "BACnet/IP (Annex J), 0xBAC0"
      }
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://www.ashrae.org/technical-resources/standards-and-guidelines/standards-addenda/standard-135-2016-bacnet-a-data-communication-protocol-for-building-automation-and-control-networks"
    },
    "steward": "ASHRAE / BACnet International",
    "status": "current",
    "gotchas": [
      "BACnet is a family of transports, not just IP - MS/TP variants run over RS-485 serial, so 'BACnet' on a venue drawing may mean a very different physical layer than BACnet/IP.",
      "Default BACnet/IP port 47808 (0xBAC0/UDP) typically relies on broadcast for device discovery (Who-Is/I-Am), which can be noisy or blocked on segmented production networks."
    ],
    "implementations": [
      {
        "name": "bacnet-stack",
        "url": "https://github.com/bacnet-stack/bacnet-stack",
        "language": "C"
      }
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "ANSI/ASHRAE Standard 135-2016: BACnet, A Data Communication Protocol for Building Automation and Control Networks",
        "url": "https://www.ashrae.org/technical-resources/standards-and-guidelines/standards-addenda/standard-135-2016-bacnet-a-data-communication-protocol-for-building-automation-and-control-networks",
        "primary": true
      },
      {
        "title": "BACnet - Wireshark Wiki",
        "url": "https://wiki.wireshark.org/Protocols/bacnet"
      },
      {
        "title": "BACnet - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/BACnet"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "biamp-tesira-forte",
        "name": "Biamp TesiraFORTÉ",
        "vendor": "Biamp",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control integration with building systems."
      },
      {
        "kind": "hardware",
        "id": "bss-blu-806",
        "name": "BSS Soundweb London BLU-806",
        "vendor": "BSS Audio",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Integration with building management systems."
      },
      {
        "kind": "hardware",
        "id": "crestron-cp4n",
        "name": "Crestron CP4N Control System",
        "vendor": "Crestron",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Building systems integration."
      }
    ],
    "flow": "control",
    "flow_note": "Building automation: HVAC and lighting plant, actually commanded rather than monitored."
  },
  {
    "id": "bluetooth-le",
    "name": "Bluetooth LE",
    "aka": [
      "BLE",
      "Bluetooth Low Energy"
    ],
    "category": "device-management",
    "status": "current",
    "openness": "open-free-registration",
    "transport": [
      "wireless-rf"
    ],
    "summary": "Short-range, low-power radio built around small structured attributes rather than a data stream. On a show it is mostly a configuration and sensing channel — a phone setting up a fixture, a beltpack reporting battery, a beacon advertising its presence — rather than anything a cue depends on.",
    "multicast": {
      "used": false,
      "note": "Advertising packets are broadcast, which is how beacons work; connections are point to point."
    },
    "spec_url": {
      "url": "https://www.bluetooth.com/",
      "label": "Bluetooth SIG"
    },
    "steward": "Bluetooth SIG",
    "first_published": 2010,
    "typical_use": [
      "Configuring a device from a phone without a network.",
      "Beacons for proximity and wayfinding in a venue.",
      "Sensor and battery telemetry from worn or portable equipment."
    ],
    "gotchas": [
      "2.4 GHz, in the same band as Wi-Fi and a great many other things, in a room full of phones.",
      "Range is short by design and highly dependent on bodies, which absorb 2.4 GHz well.",
      "Pairing and bonding state lives on both devices and is a common cause of \"it worked yesterday\"."
    ],
    "tags": [
      "bluetooth",
      "wireless",
      "low-power",
      "config"
    ],
    "sources": [
      {
        "title": "Bluetooth Low Energy",
        "url": "https://www.bluetooth.com/",
        "publisher": "Bluetooth SIG",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "control",
    "flow_note": "In this industry it is nearly always a control link — a phone setting a fixture or a speaker."
  },
  {
    "id": "bluetooth-midi",
    "name": "Bluetooth Low Energy MIDI (BLE-MIDI)",
    "aka": [
      "BLE-MIDI",
      "MIDI over Bluetooth Low Energy",
      "RP-052"
    ],
    "category": "audio-control",
    "summary": "A GATT-based transport that packs standard MIDI 1.0 messages, with millisecond timestamps for jitter correction, into Bluetooth Low Energy characteristic writes so a keyboard, pedal or controller can talk MIDI wirelessly to a phone, tablet or computer. It sits behind most modern wireless MIDI foot controllers, keyboards and BLE MIDI interface dongles used in live performance rigs.",
    "transport": [
      "wireless-rf"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://midi.org/midi-over-bluetooth-low-energy-ble-midi",
      "label": "MIDI Association — MIDI over Bluetooth Low Energy (BLE-MIDI)"
    },
    "steward": "MIDI Association (MMA/AMEI)",
    "first_published": 2015,
    "status": "current",
    "typical_use": [
      "Wireless MIDI controllers, foot pedals and keyboards connecting to tablets, phones or computers in performance rigs",
      "iOS/macOS Core MIDI Bluetooth peripheral pairing for stage-side control surfaces",
      "Point-to-point wireless MIDI links replacing a DIN cable run where routing 5-pin MIDI is impractical"
    ],
    "gotchas": [
      "BLE packets are capped at the negotiated MTU minus 3 bytes (typically only 20 bytes by default), so dense note bursts, chords or sysex fragment across multiple BLE writes; both sides need to negotiate a larger MTU to avoid this becoming audible as timing jitter.",
      "The spec's own millisecond timestamp header only claims jitter \"comparable to the USB Class Specification\" and explicitly warns that wireless delivery delays can occur unexpectedly at any time, so BLE-MIDI is not a guaranteed low-latency transport the way a DIN cable or wired USB is.",
      "As of 2026 the official BLE-MIDI 1.0 spec PDF is gated behind a paid MIDI Association SysEx ID ($240 one-time) or Corporate membership rather than a free download on midi.org, even though implementing the protocol itself is royalty-free."
    ],
    "implementations": [
      {
        "name": "Arduino-BLE-MIDI",
        "url": "https://github.com/lathoub/Arduino-BLE-MIDI",
        "language": "C++",
        "license": "MIT",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "midi",
      "bluetooth",
      "wireless",
      "midi-association"
    ],
    "sources": [
      {
        "title": "MIDI over Bluetooth Low Energy (BLE-MIDI) — spec listing, gated behind SysEx ID/Corporate membership",
        "url": "https://midi.org/midi-over-bluetooth-low-energy-ble-midi",
        "publisher": "MIDI Association",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Specification for MIDI over Bluetooth Low Energy (BLE-MIDI) Version 1.0, November 1 2015 (MMA/AMEI RP-052; service/characteristic UUIDs, timestamp encoding, MTU limits)",
        "url": "https://www.hangar42.nl/wp-content/uploads/2017/10/BLE-MIDI-spec.pdf",
        "publisher": "MIDI Manufacturers Association / AMEI",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "MIDI Bluetooth — Core MIDI documentation",
        "url": "https://developer.apple.com/documentation/coremidi/midi-bluetooth",
        "publisher": "Apple Inc.",
        "accessed": "2026-08-17"
      },
      {
        "title": "Membership tiers and pricing (Individual free / SysEx ID $240 / Corporate from $600, spec access levels)",
        "url": "https://midi.org/membership",
        "publisher": "MIDI Association",
        "accessed": "2026-08-17",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-17",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "canopen",
    "name": "CANopen",
    "aka": [
      "CANopen CC",
      "CiA 301"
    ],
    "category": "machinery-motion",
    "summary": "CiA's standardized application layer and communication profile riding on a CAN bus, giving devices a shared object dictionary and PDO/SDO messaging so drives, sensors and I/O from different vendors share one bus. It increasingly turns up in stage automation and rigging motion control, where the CiA 402 drive profile standardizes controller-to-servo-drive messaging.",
    "transport": [
      "other"
    ],
    "openness": "open-free-registration",
    "spec_url": {
      "url": "https://www.can-cia.org/cia-groups/technical-documents",
      "label": "CiA technical documents — CANopen specifications (free download after registration/login)"
    },
    "steward": "CAN in Automation (CiA)",
    "first_published": 1994,
    "status": "current",
    "typical_use": [
      "Servo drive, VFD and motor-controller networking within winches, hoists and automated scenery machines (CiA 402 profile)",
      "Sensor and I/O integration on machine-control buses inside automation racks and control cabinets",
      "General industrial embedded device networking wherever many low-cost nodes need to share one bus"
    ],
    "gotchas": [
      "CANopen CC bit rate is fixed network-wide and trades off against cable length; CiA specifies 10 kbit/s to 1000 kbit/s. Reusing a bit rate chosen for a short rack-to-rack link on a long touring cable run is a classic cause of bus errors that only appear once the cable is stretched out on site.",
      "The 11-bit CAN identifier splits into a 4-bit function code and 7-bit node ID, capping a single CANopen network at 127 nodes (0 reserved for broadcast); large automation systems need multiple buses/gateways well before that limit in practice.",
      "CiA itself warns that \"some vendors implement only a subset of the mandatory functions and parameters, but still claim CiA 402 conformity,\" so two devices that both claim CiA 402 support are not guaranteed to interoperate on motion commands without testing.",
      "The full CiA 301/402 specification text requires a free CiA account and login to download (status \"Public Available Specification\"); it is not a plain public URL, which trips up integrators expecting a direct PDF link."
    ],
    "confidence": "verified",
    "tags": [
      "can-bus",
      "motion-control",
      "cia",
      "industrial"
    ],
    "sources": [
      {
        "title": "CANopen history (first published November 1994 as CiA 301)",
        "url": "https://www.can-cia.org/can-knowledge/canopen-history",
        "publisher": "CAN in Automation (CiA)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "CANopen (bit rates 10 kbit/s-1000 kbit/s, application layer over ISO 11898)",
        "url": "https://www.can-cia.org/can-knowledge/canopen",
        "publisher": "CAN in Automation (CiA)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "CiA 402: CANopen device profile for drives and motion control (conformance caveat quote)",
        "url": "https://www.can-cia.org/can-knowledge/cia-402-series-canopen-device-profile-for-drives-and-motion-control",
        "publisher": "CAN in Automation (CiA)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Technical documents (PAS/Technical Report documents free after registration or CiA membership login)",
        "url": "https://www.can-cia.org/cia-groups/technical-documents",
        "publisher": "CAN in Automation (CiA)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "CANopen (127-node limit from the 7-bit node ID field)",
        "url": "https://en.wikipedia.org/wiki/CANopen",
        "publisher": "Wikipedia",
        "accessed": "2026-08-17"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "codesys",
        "name": "CODESYS",
        "vendor": "CODESYS Group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Standard."
      }
    ],
    "flow": "control"
  },
  {
    "id": "citp",
    "name": "CITP",
    "aka": [
      "Controller Interface Transport Protocol",
      "MSEX",
      "Media Server Extensions"
    ],
    "category": "media-control",
    "summary": "An open protocol for the traffic between consoles, visualisers and media servers that is not the show itself: peer discovery, DMX, fixture data, and through MSEX, media libraries, thumbnails and live preview streams. It is what puts clip thumbnails on a lighting console's encoder wheel.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 4809,
        "transport": "udp",
        "role": "PINF peer discovery and location messages (multicast)",
        "note": "Peers advertise their own TCP listening port inside the PLoc message, so there is no fixed TCP port to open."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "224.0.0.180"
      ],
      "note": "Peer location is multicast to 224.0.0.180 on UDP 4809. Everything heavier, including MSEX thumbnails and streaming frames, runs over the TCP connection a peer advertises in its PLoc message."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://bitbucket.org/lars_wernlund/citp",
      "label": "CITP protocol specification repository"
    },
    "steward": "Lars Wernlund; distributed via Capture Visualisation AB",
    "status": "current",
    "typical_use": [
      "Media server clip libraries and thumbnails appearing on a lighting console",
      "Live preview streams from a media server to a console or visualiser",
      "Console to visualiser DMX feed without needing Art-Net or sACN",
      "Fixture focus and position feedback from a visualiser back to the console"
    ],
    "gotchas": [
      "The old citp-protocol.org domain now redirects somewhere unrelated. The specification lives in a public Bitbucket repository linked from Capture's developer page; bookmark that, not the historic domain.",
      "Discovery multicasts to 224.0.0.180, which sits in the link-local 224.0.0.0/24 block that routers do not forward. Put the console and the media server on different subnets and they will never see each other.",
      "MSEX versions are not interchangeable. MADRIX, for example, implements MSEX 1.0 and 1.1 only, so a console asking for later features gets nothing back and shows an empty library.",
      "MSEX 1.0 and 1.1 cap you at 255 storages and 255 storage places. A media server with a bigger library simply presents a truncated view, and the missing clips look like a failed transfer.",
      "Thumbnail and stream traffic is bulk TCP on the same network as your lighting data. Give it somewhere it cannot starve sACN, or switch streaming preview off before doors.",
      "CITP is meant for pre-production and non-show-critical information. Do not build a cue path or a live effects trigger on top of it."
    ],
    "implementations": [
      {
        "name": "citp (Rust)",
        "url": "https://github.com/nannou-org/citp",
        "language": "Rust",
        "role": "both"
      },
      {
        "name": "citp-lib",
        "url": "https://github.com/jwarwick/citp-lib",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "media-server",
      "visualiser",
      "thumbnails",
      "multicast"
    ],
    "sources": [
      {
        "title": "Capture Developers — CITP is open and free, specification location, supported uses",
        "url": "https://www.capture.se/Support/Developers",
        "publisher": "Capture Visualisation AB",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "CITPDefines.h — CITP_PINF_MULTICAST_IP 224.0.0.180, CITP_PINF_MULTICAST_PORT 4809, per-peer ListeningTCPPort",
        "url": "https://raw.githubusercontent.com/jwarwick/citp-lib/master/Library/CITPDefines.h",
        "publisher": "jwarwick / citp-lib",
        "accessed": "2026-08-16"
      },
      {
        "title": "MADRIX 5 CITP documentation (MSEX 1.0 and 1.1 only, 255 storage limit)",
        "url": "https://help.madrix.com/m5/html/madrix/hidd_citp.html",
        "publisher": "inoage / MADRIX",
        "accessed": "2026-08-16"
      },
      {
        "title": "citp — CITP implementation in Rust (protocol layers PINF, SDMX, FPTC, FSEL, FINF, MSEX, CAEX)",
        "url": "https://github.com/nannou-org/citp",
        "publisher": "nannou",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "CITP/MSEX thumbnails to the console."
      },
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Patch syncs both ways with stand-alone Capture (fixture, position, orientation, legend, user number) and fixture selection follows across. Levels still need Art-Net or sACN enabled on those universes."
      },
      {
        "kind": "software",
        "id": "capture",
        "name": "Capture",
        "vendor": "Capture Visualisation AB",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Adds DMX talkback, selection sync and patch exchange with consoles that implement MSEX."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "CITP with the Capture visualiser carries both lighting control and transfer of the show patch between MagicQ and Capture in either direction."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "CITP component pushes media thumbnails, media names and low-resolution streaming previews to lighting consoles and visualisers; requires the DMX component to be running. Documented as Hippotizer-to-console only."
      },
      {
        "kind": "software",
        "id": "lightconverse",
        "name": "LightConverse",
        "vendor": "LightConverse",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "CITP for media server and console integration."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Media server thumbnails are pushed across the network into ONYX's parameter belts, and patch can be imported from compatible visualisers. Servers on the network are auto-detected."
      },
      {
        "kind": "software",
        "id": "realizzer-3d",
        "name": "Realizzer 3D",
        "vendor": "Realizzer",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "CITP for media server integration."
      },
      {
        "kind": "software",
        "id": "wysiwyg",
        "name": "WYSIWYG",
        "vendor": "CAST Group Inc.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Live media-server preview is a supported feature; CAST's own known-issues list references CITP video-display behaviour after a resolution change."
      },
      {
        "kind": "hardware",
        "id": "avolites-ai-q3",
        "name": "Avolites Ai Q3",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Thumbnails."
      },
      {
        "kind": "hardware",
        "id": "avolites-arena",
        "name": "Avolites Arena",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Media server thumbnails and control."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "CITP/MSEX for media server thumbnails in the pixel mapper."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "CITP/MSEX thumbnails from media servers."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "CITP/MSEX for media server thumbnails and visualiser feeds."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "CITP/MSEX thumbnails to consoles."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "CITP/MSEX for media server thumbnails."
      },
      {
        "kind": "hardware",
        "id": "green-hippo-karst-plus",
        "name": "Green Hippo Hippotizer Karst+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Thumbnails to consoles."
      },
      {
        "kind": "hardware",
        "id": "hippotizer-boreal-plus-mk2",
        "name": "Hippotizer Boreal+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Thumbnail and media exchange with lighting consoles."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "CITP/MSEX for media server integration."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "CITP/MSEX thumbnails to lighting consoles."
      }
    ],
    "flow": "control"
  },
  {
    "id": "cobranet",
    "name": "CobraNet",
    "category": "audio-transport",
    "summary": "An early (1996) Ethernet-based digital audio distribution protocol from Peak Audio, now owned by Cirrus Logic, that predates Dante and AVB and is still found in legacy installed sound systems, amplifiers, and DSP hardware in venues and theme parks.",
    "transport": [
      "ethernet-l2"
    ],
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://www.cirrus.com/products/cobranet/faqs"
    },
    "steward": "Cirrus Logic (formerly Peak Audio)",
    "status": "historical",
    "media": {
      "audio": {
        "sample_rates_khz": [
          48,
          96
        ],
        "bit_depths": [
          16,
          20,
          24
        ],
        "max_channels": 64,
        "encoding": "Linear PCM in eight-channel bundles",
        "note": "64 channels each direction on 100 Mbit, in bundles of eight, which is the unit you route rather than the individual channel. 96 kHz halves the count. 20-bit is the historical default and still what a lot of installed hardware negotiates."
      }
    },
    "gotchas": [
      "Operates at Ethernet layer 2 using registered EtherType 0x8819 - it is not IP-routable and needs a dedicated or carefully VLAN-isolated switched network.",
      "Requires a switched 100Mbit/s+ Ethernet network with one of three fixed latency settings (5.33, 2.67, or 1.33ms) configured correctly, or audio glitches result.",
      "Largely superseded by Dante and AVB/Milan in new installs, so CobraNet is now mostly encountered in older fixed installations."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "CobraNet FAQs - Cirrus Logic",
        "url": "https://www.cirrus.com/products/cobranet/faqs",
        "primary": true
      },
      {
        "title": "CobraNet - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/CobraNet"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "dali",
    "name": "DALI",
    "aka": [
      "Digital Addressable Lighting Interface"
    ],
    "category": "lighting-control",
    "summary": "An IEC-standardized two-wire digital protocol for addressing and dimming individual architectural/house lighting ballasts and LED drivers, relevant wherever building/house lighting (rather than stage rigs) needs to integrate with a show's control system.",
    "transport": [
      "other"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://www.dali-alliance.org/standards/IEC62386.html"
    },
    "steward": "DALI Alliance (DiiA)",
    "status": "current",
    "gotchas": [
      "Only 64 addressable control-gear devices per DALI line, far smaller than DMX512's 512 addresses, so large venues need many lines/gateways.",
      "Slow control-data rate (1200 bit/s, Manchester-encoded) makes DALI unsuitable for fast theatrical chases - it's built for static/architectural dimming, not show cueing.",
      "DALI-2 certification (introduced 2017) is needed for reliable multi-vendor interoperability; pre-DALI-2 gear can behave unpredictably when mixed across brands."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "The international IEC 62386 standard - DALI Alliance",
        "url": "https://www.dali-alliance.org/standards/IEC62386.html",
        "primary": true
      },
      {
        "title": "Digital Addressable Lighting Interface - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/Digital_Addressable_Lighting_Interface"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "dante",
    "name": "Dante",
    "aka": [
      "Dante Audio Networking",
      "Audinate Dante"
    ],
    "category": "audio-transport",
    "summary": "Audinate's proprietary audio-over-IP system carrying uncompressed multichannel audio, clocking and device control over ordinary gigabit ethernet. It is the default audio network on most touring and install jobs, and usually what a desk, a stagebox and an amp rack are talking to each other with.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 4321,
        "transport": "udp",
        "role": "Dante multicast audio (ATP)",
        "note": "Audinate lists this against the 239.255.0.0/16 multicast range."
      },
      {
        "number": 4440,
        "transport": "udp",
        "role": "Dante audio control"
      },
      {
        "number": 4444,
        "transport": "udp",
        "role": "Dante audio control"
      },
      {
        "number": 4455,
        "transport": "udp",
        "role": "Dante audio control"
      },
      {
        "number": 8700,
        "transport": "udp",
        "role": "Multicast control and monitoring",
        "note": "Audinate documents the whole block 8700-8708 on 224.0.0.230-233 for control and monitoring, plus unicast equivalents at 28700-28708 (Via) and 38700-38708 (Dante Virtual Soundcard)."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "239.255.0.0/16 (Dante audio and video flows)",
        "239.69.0.0/16 (AES67 flows from Dante devices)",
        "224.0.0.230-233 (control and monitoring)"
      ],
      "note": "Dante will run entirely unicast for small channel counts and only moves to multicast when a transmitter feeds several receivers. Audinate says IGMP snooping is required on mixed audio/video networks but is not a requirement for audio-only networks with few multicast flows."
    },
    "openness": "proprietary-closed",
    "steward": "Audinate Pty Ltd",
    "status": "current",
    "typical_use": [
      "Console to stagebox, amp rack and processing in touring and install audio",
      "Distributing programme and comms audio around a building on one cable plant",
      "Computer playback and recording via Dante Virtual Soundcard or Dante Via",
      "Feeding AES67 or ST 2110-30 systems from a Dante plant"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          44.1,
          48,
          88.2,
          96,
          176.4,
          192
        ],
        "bit_depths": [
          16,
          24,
          32
        ],
        "encoding": "Linear PCM",
        "note": "Channel count is a property of the device rather than of the protocol. Higher sample rates halve or quarter the channels a given device carries, which is the trade people meet when they switch a rig to 96 kHz."
      }
    },
    "gotchas": [
      "Dante's own clock is PTP version 1 (IEEE 1588-2002). AES67 and ST 2110 use PTPv2. Putting a Dante device into AES67 mode moves it to a different clock domain, and the two do not share a grandmaster without a bridging device.",
      "Energy Efficient Ethernet (IEEE 802.3az, sold as \"green ethernet\") must be disabled on every port carrying Dante. Audinate names it as a cause of clock instability and occasional dropouts, and it is on by default on cheap switches.",
      "QoS has to be strict priority queueing, not weighted. Audinate's scheme is DSCP CS7 for PTP event messages, EF for audio and PTPv2, CS1 for reserved. A switch doing weighted fair queueing will still drop audio under load.",
      "Discovery is mDNS on 224.0.0.251, which is link-local and does not cross a router. Devices on a different subnet will not appear in Dante Controller unless you are running Dante Domain Manager.",
      "Multicast flows need one IGMP querier elected per VLAN. Two queriers, or none, and the flows either flood every port or vanish after the group membership times out.",
      "There is no published wire specification. Anything that speaks Dante does so with a licensed Audinate module, chip or software stack, so \"we will just write a driver\" is not an option on this one."
    ],
    "confidence": "verified",
    "tags": [
      "audio",
      "audio-over-ip",
      "audinate",
      "proprietary",
      "ptp"
    ],
    "sources": [
      {
        "title": "Which network ports does Dante use?",
        "url": "https://support.getdante.com/hc/en-gb/articles/5508285534239-Which-network-ports-does-Dante-use",
        "publisher": "Audinate",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Dante Information for Network Administrators v7.1",
        "url": "https://www.getdante.com/wp-content/uploads/2026/07/Information-for-Network-Admins-v7.1.pdf",
        "publisher": "Audinate",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Dante product and platform overview",
        "url": "https://www.getdante.com/",
        "publisher": "Audinate",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "ardour",
        "name": "Ardour",
        "vendor": "Ardour Community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via Dante Virtual Soundcard or a Dante interface."
      },
      {
        "kind": "software",
        "id": "dante-controller",
        "name": "Dante Controller",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Discovers, routes and configures Dante devices. Does not itself carry audio."
      },
      {
        "kind": "software",
        "id": "dante-domain-manager",
        "name": "Dante Domain Manager",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Manages Dante devices, domains and routing policy."
      },
      {
        "kind": "software",
        "id": "dante-virtual-soundcard",
        "name": "Dante Virtual Soundcard",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Presents Dante channels as an ASIO / Core Audio device."
      },
      {
        "kind": "software",
        "id": "pro-tools",
        "name": "Pro Tools",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via Dante Virtual Soundcard or a Dante interface."
      },
      {
        "kind": "software",
        "id": "qsys-designer",
        "name": "Q-SYS Designer",
        "vendor": "QSC, LLC",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "verified",
        "note": "Dante on a Core is the Software Dante feature licence, sold in channel-count tiers from 8x8 up to 512x512 depending on Core model and QDS version."
      },
      {
        "kind": "software",
        "id": "smaart",
        "name": "Smaart",
        "vendor": "Rational Acoustics",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Measurement input via Dante Virtual Soundcard or a Dante interface."
      },
      {
        "kind": "software",
        "id": "watchout",
        "name": "WATCHOUT",
        "vendor": "Dataton",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "waves-soundgrid-studio",
        "name": "Waves SoundGrid Studio",
        "vendor": "Waves Audio",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via a SoundGrid/Dante interface, not natively."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-avantis",
        "name": "Allen & Heath Avantis",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via option card."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-dlive-s7000",
        "name": "Allen & Heath dLive S7000",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Via I/O card in the MixRack or surface."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-sq-6",
        "name": "Allen & Heath SQ-6",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Via optional SLink / option card."
      },
      {
        "kind": "hardware",
        "id": "avid-venue-s6l-32d",
        "name": "Avid VENUE S6L-32D",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Via optional engine card."
      },
      {
        "kind": "hardware",
        "id": "behringer-x32",
        "name": "Behringer X32",
        "vendor": "Behringer",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Via optional expansion card."
      },
      {
        "kind": "hardware",
        "id": "biamp-tesira-forte",
        "name": "Biamp TesiraFORTÉ",
        "vendor": "Biamp",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Dante on the network-equipped variants."
      },
      {
        "kind": "hardware",
        "id": "bss-blu-806",
        "name": "BSS Soundweb London BLU-806",
        "vendor": "BSS Audio",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Dante card fitted on the 806 variant."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9200",
        "name": "Cisco Catalyst 9200 Series",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported. Requires QoS DSCP trust and correct queue mapping."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9300",
        "name": "Cisco Catalyst 9300",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported when configured correctly."
      },
      {
        "kind": "hardware",
        "id": "clear-com-freespeak-ii",
        "name": "Clear-Com FreeSpeak II",
        "vendor": "Clear-Com",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Networked audio to the base station, depending on configuration."
      },
      {
        "kind": "hardware",
        "id": "db-40d",
        "name": "d&b audiotechnik 40D installation amplifier",
        "vendor": "d&b audiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Digital audio input."
      },
      {
        "kind": "hardware",
        "id": "db-ds100",
        "name": "d&b audiotechnik DS100 Signal Engine",
        "vendor": "d&b audiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "64 in / 64 out over Dante."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Via optional DMI card."
      },
      {
        "kind": "hardware",
        "id": "digico-sd12",
        "name": "DiGiCo SD12",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via optional card."
      },
      {
        "kind": "hardware",
        "id": "directout-prodigy-mp",
        "name": "DirectOut PRODIGY.MP",
        "vendor": "DirectOut",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via module."
      },
      {
        "kind": "hardware",
        "id": "ferrofish-a32-dante",
        "name": "Ferrofish A32 Dante",
        "vendor": "Ferrofish",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "32 channels to and from Dante."
      },
      {
        "kind": "hardware",
        "id": "focusrite-rednet-a16r-mk2",
        "name": "Focusrite RedNet A16R MkII",
        "vendor": "Focusrite",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "16x16 analogue to Dante, primary and secondary ports."
      },
      {
        "kind": "hardware",
        "id": "green-go-beltpack",
        "name": "Green-GO Digital Intercom",
        "vendor": "Green-GO (ELC)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "On specific interface models."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-la4x",
        "name": "L-Acoustics LA4X",
        "vendor": "L-Acoustics",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Not native; AVB and AES67 are the network audio paths."
      },
      {
        "kind": "hardware",
        "id": "lab-gruppen-plm-20k44",
        "name": "Lab.gruppen PLM 20K44",
        "vendor": "Lab.gruppen",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Dante input, primary and secondary."
      },
      {
        "kind": "hardware",
        "id": "lake-lm44",
        "name": "Lab.gruppen Lake LM44",
        "vendor": "Lab.gruppen",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Networked audio."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-10",
        "name": "Luminex GigaCore 10",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-16xt",
        "name": "Luminex GigaCore 16Xt",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported. The manual claims low-jitter handling for Dante traffic."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-26i",
        "name": "Luminex GigaCore 26i",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported."
      },
      {
        "kind": "hardware",
        "id": "midas-hd96-24",
        "name": "Midas HD96-24",
        "vendor": "Midas",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Via expansion card."
      },
      {
        "kind": "hardware",
        "id": "netgear-m4250",
        "name": "NETGEAR M4250 (AV Line)",
        "vendor": "NETGEAR",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, with a shipped AV profile that sets Dante's QoS and multicast handling."
      },
      {
        "kind": "hardware",
        "id": "powersoft-x8",
        "name": "Powersoft X8",
        "vendor": "Powersoft",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Dante audio input with redundancy."
      },
      {
        "kind": "hardware",
        "id": "qsys-core-510i",
        "name": "Q-SYS Core 510i",
        "vendor": "QSC (Q-SYS)",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Via Q-SYS Dante license or CDN64 card options."
      },
      {
        "kind": "hardware",
        "id": "riedel-bolero",
        "name": "Riedel Bolero",
        "vendor": "Riedel Communications",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on configuration."
      },
      {
        "kind": "hardware",
        "id": "rme-digiface-dante",
        "name": "RME Digiface Dante",
        "vendor": "RME",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "64 channels each way at base rates."
      },
      {
        "kind": "hardware",
        "id": "rts-adam",
        "name": "RTS ADAM Intercom Matrix",
        "vendor": "RTS (Bosch)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Networked audio via cards."
      },
      {
        "kind": "hardware",
        "id": "ssl-live-l550",
        "name": "SSL Live L550",
        "vendor": "Solid State Logic",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via option card."
      },
      {
        "kind": "hardware",
        "id": "symetrix-radius-nx-12x8",
        "name": "Symetrix Radius NX 12x8",
        "vendor": "Symetrix",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Networked audio."
      },
      {
        "kind": "hardware",
        "id": "yamaha-cl5",
        "name": "Yamaha CL5",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Dante is native, with primary and secondary ports."
      },
      {
        "kind": "hardware",
        "id": "yamaha-dm7",
        "name": "Yamaha DM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Primary I/O path."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rio3224-d2",
        "name": "Yamaha Rio3224-D2",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Primary transport, with redundancy."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rivage-pm7",
        "name": "Yamaha RIVAGE PM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Dante is native on the RPio boxes and the engine."
      }
    ],
    "flow": "media"
  },
  {
    "id": "ddp",
    "name": "DDP",
    "aka": [
      "Distributed Display Protocol"
    ],
    "category": "lighting-control",
    "summary": "3waylabs' minimal UDP protocol for pushing pixel data at LED controllers, using a ten byte header with an offset and a length so a display larger than one packet can be written in pieces. It is the usual choice when DMX universe boundaries get in the way of a high pixel count.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 4048,
        "transport": "udp",
        "role": "DDP data and control",
        "note": "WLED and other receivers listen here per the protocol's recommendation. The protocol itself is agnostic about UDP versus TCP, but senders in the field use UDP almost exclusively."
      }
    ],
    "multicast": {
      "used": false,
      "note": "Normal practice is unicast to a controller's IP. The protocol does not define a multicast group."
    },
    "universe_model": "No universes. A display is a flat byte array addressed by an offset and a length in the header, so a strip of any size is written directly without splitting into 512-slot blocks.",
    "openness": "open-published",
    "spec_url": {
      "url": "http://www.3waylabs.com/ddp/",
      "label": "DDP Protocol specification (3waylabs)"
    },
    "steward": "3waylabs",
    "status": "current",
    "typical_use": [
      "Driving WLED and similar addressable LED controllers from a pixel mapper",
      "High pixel-count LED walls and strips where universe boundaries are a nuisance",
      "Software-to-software pixel streaming between mapping and effects tools",
      "Retrofitting a media server output onto cheap LED hardware"
    ],
    "gotchas": [
      "The offset is a byte offset, not a pixel index. Feed a pixel number straight into it and your data lands a third of the way along the strip in RGB, a quarter of the way in RGBW.",
      "A frame usually spans several packets and only the final one carries the push flag. A receiver that renders on every packet tears; a sender that never sets push leaves the display frozen on the last frame it did push.",
      "WLED ignores the optional timecode fields in the header, so do not design synchronised multi-controller playback around them. Check per receiver before assuming anyone reads them.",
      "It is UDP with no retransmission and no sequence recovery. On a congested or wireless link you get dropped frames that look exactly like a failing power supply or a bad data injector.",
      "The protocol permits TCP but effectively every device only listens on UDP 4048. If you need a reliable path, prove the receiver actually accepts TCP before designing around it."
    ],
    "implementations": [
      {
        "name": "ddp-rs",
        "url": "https://github.com/coral/ddp-rs",
        "language": "Rust",
        "license": "MIT",
        "role": "sender"
      },
      {
        "name": "WLED",
        "url": "https://github.com/wled/WLED",
        "language": "C++",
        "license": "EUPL-1.2",
        "role": "receiver"
      }
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "pixel",
      "led",
      "udp"
    ],
    "sources": [
      {
        "title": "DDP Protocol specification",
        "url": "http://www.3waylabs.com/ddp/",
        "publisher": "3waylabs",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "DDP protocol — WLED documentation (UDP 4048, timecode fields ignored)",
        "url": "https://kno.wled.ge/interfaces/ddp/",
        "publisher": "WLED Project",
        "accessed": "2026-08-16"
      },
      {
        "title": "ddp-rs — Distributed Display Protocol in Rust (10 byte header, port 4048, transport agnostic)",
        "url": "https://github.com/coral/ddp-rs",
        "publisher": "Jonas Bengtson",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "dect",
    "name": "DECT",
    "aka": [
      "DECT wireless intercom",
      "1.9 GHz"
    ],
    "category": "audio-transport",
    "status": "current",
    "openness": "published-paid",
    "transport": [
      "wireless-rf"
    ],
    "summary": "The radio behind most modern wireless intercom beltpacks. It sits in a band reserved for it in many jurisdictions, which is the main reason it displaced 2.4 GHz systems on show sites: it is not competing with the venue's Wi-Fi. Full duplex, digital, and it roams between antennas as a user walks.",
    "multicast": {
      "used": false
    },
    "spec_url": {
      "url": "https://www.etsi.org/technologies/dect",
      "label": "ETSI DECT"
    },
    "steward": "ETSI",
    "first_published": 1992,
    "typical_use": [
      "Wireless intercom beltpacks on theatre, broadcast and touring shows.",
      "Any wireless comms where the 2.4 GHz band is already full."
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          8,
          16
        ],
        "encoding": "G.726 ADPCM at 32 kbit/s (narrowband); G.722 (wideband); later editions add G.729.1 and LC3plus",
        "note": "Speech band, not programme audio, and that is the point to take away: a beltpack link is built to carry a voice intelligibly, not to carry a mix. EN 300 175-8 names the codecs and each codec fixes its own rate — G.726 samples at 8 kHz, G.722 at 16 kHz for roughly 50 Hz to 7 kHz. Which are mandatory depends on the profile the product implements."
      }
    },
    "gotchas": [
      "Band allocation is national. 1.88–1.90 GHz in Europe and elsewhere; North America uses a different slice, so packs are not always portable between regions.",
      "Antenna coverage is a survey problem, and handover between antennas is where a system reveals whether it was designed or hoped.",
      "Every wireless link adds latency the wired partyline did not have — see the comms explainer for what that does to a conversation."
    ],
    "tags": [
      "intercom",
      "comms",
      "wireless",
      "dect"
    ],
    "sources": [
      {
        "title": "ETSI EN 300 175-8 — DECT Common Interface, Part 8: Speech and audio coding",
        "url": "https://www.etsi.org/deliver/etsi_en/300100_300199/30017508/02.08.05_20/en_30017508v020805a.pdf",
        "publisher": "ETSI",
        "accessed": "2026-10-09",
        "primary": true
      },
      {
        "title": "ETSI DECT",
        "url": "https://www.etsi.org/technologies/dect",
        "publisher": "ETSI",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "clear-com-freespeak-ii",
        "name": "Clear-Com FreeSpeak II",
        "vendor": "Clear-Com",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "The radio link to the beltpacks."
      },
      {
        "kind": "hardware",
        "id": "riedel-bolero",
        "name": "Riedel Bolero",
        "vendor": "Riedel Communications",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Radio link to beltpacks."
      }
    ],
    "flow": "media"
  },
  {
    "id": "dhcp",
    "name": "DHCP",
    "aka": [
      "Dynamic Host Configuration Protocol"
    ],
    "category": "network-transport",
    "summary": "Automatic IP address assignment. Convenient on an office network and a liability on a show network, where a device that comes back with a different address after a power cycle is a device the console can no longer find.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 67,
        "transport": "udp",
        "role": "DHCP server",
        "iana_registered": true
      },
      {
        "number": 68,
        "transport": "udp",
        "role": "DHCP client",
        "iana_registered": true
      }
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://www.rfc-editor.org/rfc/rfc2131",
      "label": "RFC 2131 — DHCP"
    },
    "steward": "IETF",
    "status": "current",
    "typical_use": [
      "Production laptops and phones on a house network",
      "Large fixed installations with reservations rather than a free pool",
      "Anywhere devices outnumber the patience for static addressing"
    ],
    "gotchas": [
      "Two DHCP servers on one network — often a house router and somebody's travel switch — hand out conflicting addresses and are hard to find.",
      "Show-critical devices usually want a static address or a DHCP reservation. A lighting node that moves address between the tech and the show is not a network problem you want to debug during a show.",
      "When no server answers, most devices self-assign in 169.254.0.0/16. That looks like a working network and reaches nothing."
    ],
    "confidence": "reported",
    "tags": [
      "network",
      "addressing",
      "infrastructure"
    ],
    "sources": [
      {
        "title": "RFC 2131 — Dynamic Host Configuration Protocol",
        "url": "https://www.rfc-editor.org/rfc/rfc2131",
        "publisher": "IETF",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "management",
    "flow_note": "Address handout. Nothing that has started working depends on it continuing."
  },
  {
    "id": "dmx512",
    "name": "DMX512",
    "aka": [
      "DMX",
      "DMX512-A",
      "USITT DMX512"
    ],
    "category": "lighting-control",
    "summary": "The unidirectional serial protocol that has controlled stage lighting since 1986. 512 slots of 8-bit data per universe, sent continuously over a differential pair, with no error checking and no acknowledgement.",
    "transport": [
      "rs485"
    ],
    "default_ports": [],
    "multicast": {
      "used": false
    },
    "universe_model": "One universe = 1 start code plus up to 512 slots of 8-bit data, refreshed up to about 44 times per second.",
    "openness": "open-published",
    "spec_url": {
      "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
      "label": "ESTA TSP published documents"
    },
    "standards": [
      "ansi-e1-11"
    ],
    "steward": "ESTA (Entertainment Services and Technology Association)",
    "first_published": 1986,
    "status": "current",
    "typical_use": [
      "Console to dimmer, moving light, LED fixture, hazer, or scenic effect",
      "Last-metre delivery from an ethernet gateway to fixtures on a bar",
      "Triggering non-lighting devices that accept a DMX channel as a go signal"
    ],
    "gotchas": [
      "DMX is RS-485 and wants 120 ohm impedance cable with a terminator at the far end. Microphone cable works until the run is long or the rig is noisy, and then it fails in a way that looks like a fixture fault.",
      "There is no error detection. A corrupted slot is simply acted on. Flicker that follows no logic is usually a data integrity problem, not a fixture.",
      "Star topology is not part of the standard. Daisy chain, or use a real opto-splitter. Passive Y-splits are the source of an enormous amount of unexplained behaviour.",
      "Start code 0x00 is dimmer data. Other start codes exist (0xCC is RDM), and a device that ignores start codes will act on RDM traffic as if it were levels."
    ],
    "implementations": [
      {
        "name": "OLA (Open Lighting Architecture)",
        "url": "https://github.com/OpenLightingProject/ola",
        "language": "C++",
        "license": "LGPL-2.1-or-later",
        "role": "both"
      },
      {
        "name": "DMXSerial (Arduino)",
        "url": "https://github.com/mathertel/DMXSerial",
        "language": "C++",
        "license": "BSD-3-Clause",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "lighting",
      "rs485",
      "foundational"
    ],
    "sources": [
      {
        "title": "ANSI E1.11 — USITT DMX512-A, Asynchronous Serial Digital Data Transmission Standard for Controlling Lighting Equipment and Accessories",
        "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
        "publisher": "ESTA Technical Standards Program",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct DMX in via an interface."
      },
      {
        "kind": "software",
        "id": "artnet-monitor-pixilab",
        "name": "ArtNet Monitor (PixiLab)",
        "vendor": "PixiLab",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Displays per-channel DMX values received via Art-Net."
      },
      {
        "kind": "software",
        "id": "artnetominator",
        "name": "The ArtNetominator",
        "vendor": "Lightjams Inc.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Displays current DMX channel values and channel history as carried inside Art-Net packets."
      },
      {
        "kind": "software",
        "id": "artnetview-haute-technique",
        "name": "ArtNetView",
        "vendor": "Haute Technique",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Displays DMX universe values (including in hex) as carried inside Art-Net."
      },
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Physical DMX512 on console XLR outputs; on a PC, via a T1/T2/T3 interface. DMX In is a separate trigger source on supported consoles."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct DMX via a MagicDMX interface, a MagicQ wing/interface, or console XLR outputs. MagicDMX is one universe, out or in."
      },
      {
        "kind": "software",
        "id": "chataigne",
        "name": "Chataigne",
        "vendor": "Ben Kuper",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "daslight",
        "name": "Daslight",
        "vendor": "Daslight (Nicolaudie)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX via the bundled interface."
      },
      {
        "kind": "software",
        "id": "dmx-workshop",
        "name": "DMX-Workshop",
        "vendor": "Singularity (UK) Ltd",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": null
      },
      {
        "kind": "software",
        "id": "dmxcat",
        "name": "DMXcat",
        "vendor": "City Theatrical, Inc.",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Measures break time, mark-after-break, inter-slot timing, refresh rate, and real-time channel levels."
      },
      {
        "kind": "software",
        "id": "dmxcontrol-3",
        "name": "DMXControl 3",
        "vendor": "DMXControl Projects e.V.",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX out via supported USB interfaces."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Local DMX ports on consoles, or an ETC Gadget/Gadget II USB to DMX-RDM converter on a PC or Mac. Up to four Gadgets per computer."
      },
      {
        "kind": "software",
        "id": "etcdmxtool",
        "name": "ETCDmxTool",
        "vendor": "ETC Labs",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Captures DMX data and can output/control DMX levels via ETC Whip/Gadget hardware."
      },
      {
        "kind": "software",
        "id": "home-assistant",
        "name": "Home Assistant",
        "vendor": "Open Home Foundation",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through integrations, and not a substitute for a lighting control system."
      },
      {
        "kind": "software",
        "id": "isadora",
        "name": "Isadora",
        "vendor": "TroikaTronix (Mark Coniglio)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Video can be pixel-mapped to RGB DMX values and sent out via USB-DMX devices. The lighting page says DMX input and output but only output is described in any detail."
      },
      {
        "kind": "software",
        "id": "lightkey",
        "name": "Lightkey",
        "vendor": "Lightkey",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX out via USB interfaces."
      },
      {
        "kind": "software",
        "id": "madmapper",
        "name": "MadMapper",
        "vendor": "garageCube",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX via interfaces."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Direct USB-DMX output; docs list Enttec DMX USB Pro and Pro Mk2, DMXking ultraDMX Micro and ShowJockey interfaces."
      },
      {
        "kind": "software",
        "id": "ola",
        "name": "OLA (Open Lighting Architecture)",
        "vendor": "Open Lighting Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Through more than twenty supported USB DMX widgets."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "out",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Direct DMX needs Obsidian USB hardware (NX-DMX, NX-Touch, NX-K, NX-P) or an NX console. Onyx USB output appears from the NOVA tier upwards, not in ONYX FREE."
      },
      {
        "kind": "software",
        "id": "qlc-plus",
        "name": "QLC+",
        "vendor": "QLC+ project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via the DMX USB plugin and supported USB widgets."
      },
      {
        "kind": "software",
        "id": "rdm-controller-jese",
        "name": "RDM Controller",
        "vendor": "JESE",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX output and monitoring alongside RDM."
      },
      {
        "kind": "software",
        "id": "show-cue-system",
        "name": "Show Cue System (SCS)",
        "vendor": "Show Cue Systems",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "DMX output via interface."
      },
      {
        "kind": "software",
        "id": "touchdesigner",
        "name": "TouchDesigner",
        "vendor": "Derivative",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "vvvv",
        "name": "vvvv",
        "vendor": "vvvv group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through interfaces."
      },
      {
        "kind": "hardware",
        "id": "avolites-arena",
        "name": "Avolites Arena",
        "vendor": "Avolites",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct outputs."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct DMX out of the rear XLRs."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct DMX from the rear XLR5 outputs."
      },
      {
        "kind": "hardware",
        "id": "chamsys-magicq-mq80",
        "name": "ChamSys MagicQ MQ80",
        "vendor": "ChamSys",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct DMX outputs."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct DMX from the rear XLR5 ports."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX via interfaces."
      },
      {
        "kind": "hardware",
        "id": "city-theatrical-multiverse",
        "name": "City Theatrical Multiverse Transmitter",
        "vendor": "City Theatrical",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Wired input and output."
      },
      {
        "kind": "hardware",
        "id": "elc-dmxlan-node8",
        "name": "ELC dmXLAN node8",
        "vendor": "ELC Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Eight ports."
      },
      {
        "kind": "hardware",
        "id": "enttec-din-ethergate-mk2",
        "name": "ENTTEC DIN Ethergate MK2",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Two universes."
      },
      {
        "kind": "hardware",
        "id": "enttec-dmx-usb-pro",
        "name": "ENTTEC DMX USB Pro",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "One 512-channel universe; the linked input and output ports are used in one direction at a time."
      },
      {
        "kind": "hardware",
        "id": "enttec-ode-mk3",
        "name": "ENTTEC ODE Mk3",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "USITT DMX512-A on two 5-pin XLR ports, each settable as input or output."
      },
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct outputs."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Local DMX out via the rear ports."
      },
      {
        "kind": "hardware",
        "id": "etc-response-mk2-gateway",
        "name": "ETC Response Mk2 DMX/RDM Gateway",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX out and in on the physical ports."
      },
      {
        "kind": "hardware",
        "id": "etc-sensor3-rack",
        "name": "ETC Sensor3 Dimmer Rack",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX input as a backup or primary path."
      },
      {
        "kind": "hardware",
        "id": "etc-thrupower-rack",
        "name": "ETC ThruPower Rack",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct DMX from the rear XLR5 ports."
      },
      {
        "kind": "hardware",
        "id": "grandma3-full-size",
        "name": "grandMA3 full-size",
        "vendor": "MA Lighting",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Six DMX512-A outputs on 5-pin XLR female."
      },
      {
        "kind": "hardware",
        "id": "grandma3-full-size",
        "name": "grandMA3 full-size",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "One DMX512-A input on 5-pin XLR male."
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Direct outputs."
      },
      {
        "kind": "hardware",
        "id": "hog-4",
        "name": "Hog 4",
        "vendor": "High End Systems",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Eight Neutrik XLR-5 outputs, 8,192 output channels onboard."
      },
      {
        "kind": "hardware",
        "id": "lumenradio-crmx-nova-tx2",
        "name": "LumenRadio CRMX Nova TX2",
        "vendor": "LumenRadio",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX in on the XLR, DMX out wirelessly to CRMX receivers."
      },
      {
        "kind": "hardware",
        "id": "luminex-luminode-12",
        "name": "Luminex LumiNode 12",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX out and in on the XLR ports."
      },
      {
        "kind": "hardware",
        "id": "medialon-showmaster-pro",
        "name": "Medialon Showmaster Pro",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Through interfaces."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Four DMX ports on the console itself."
      },
      {
        "kind": "hardware",
        "id": "pathway-pathport-octo",
        "name": "Pathway Connectivity Pathport OCTO",
        "vendor": "Pathway Connectivity",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Eight ports."
      },
      {
        "kind": "hardware",
        "id": "wireless-solution-blackbox-f2",
        "name": "Wireless Solution W-DMX BlackBox F-2 G6",
        "vendor": "Wireless Solution",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "DMX in or out on the XLR ports depending on mode."
      },
      {
        "kind": "hardware",
        "id": "zero88-flx-s48",
        "name": "Zero 88 FLX S48",
        "vendor": "Zero 88",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Two DMX outputs on the rear."
      }
    ],
    "flow": "control"
  },
  {
    "id": "edid",
    "name": "EDID",
    "aka": [
      "Extended Display Identification Data",
      "E-EDID",
      "DDC"
    ],
    "category": "video-control",
    "summary": "The block of data a display hands to a source describing what it can accept — resolutions, refresh rates, colour depths, audio formats. The source picks a format from that list, which makes EDID the thing that decides what your screen is actually being sent.",
    "transport": [
      "other"
    ],
    "openness": "open-free-registration",
    "spec_url": {
      "url": "https://vesa.org/vesa-standards/",
      "label": "VESA standards"
    },
    "steward": "VESA",
    "status": "current",
    "typical_use": [
      "Negotiating the format between any source and any display",
      "Managed or emulated in switchers and scalers to force a known format",
      "Read by test gear to diagnose why a source chose what it chose"
    ],
    "gotchas": [
      "A splitter, switcher, extender or scaler usually presents its own EDID rather than passing the display's through. The source then picks a format the middle box likes and the screen may not.",
      "Testing source-direct-to-screen removes every device that was doing the negotiating, so a working direct test proves less than it appears to.",
      "Managed EDID is a setting. Deciding what it says is part of the design; discovering what it says at 5pm is not.",
      "A distribution amplifier feeding several different displays has to pick one EDID to present. The lowest common capability is usually the right answer and rarely the default."
    ],
    "confidence": "reported",
    "tags": [
      "video",
      "display",
      "negotiation"
    ],
    "sources": [
      {
        "title": "VESA Enhanced EDID Standard",
        "url": "https://vesa.org/vesa-standards/",
        "publisher": "VESA",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": null,
    "flow_note": "A description a display hands over once at connection. Not a stream of anything."
  },
  {
    "id": "ember-plus",
    "name": "Ember+",
    "category": "device-management",
    "openness": "open-published",
    "first_published": 2010,
    "status": "current",
    "summary": "Open control and monitoring protocol from Lawo, widely adopted across broadcast for exposing device parameters as a browsable tree that any controller can read and set.",
    "transport": [
      "tcp"
    ],
    "default_ports": [
      {
        "number": 9000,
        "transport": "tcp",
        "role": "Ember+ provider, common default",
        "iana_registered": false,
        "note": "Configurable per device."
      }
    ],
    "spec_url": {
      "url": "https://github.com/Lawo/ember-plus",
      "label": "Ember+ on GitHub"
    },
    "steward": "Lawo, with an open specification and reference implementation",
    "typical_use": [
      "Controlling and monitoring broadcast infrastructure from a single panel",
      "Exposing a device parameter tree to a facility control system",
      "Third-party integration with audio and video routers"
    ],
    "gotchas": [
      "The parameter tree is vendor-defined. Two Ember+ devices expose completely different structures, so a controller has to be told what to look for.",
      "It is a control protocol with no media path and no notion of show state. Losing Ember+ means losing control, not losing signal, which changes how you plan around it."
    ],
    "implementations": [
      {
        "name": "Lawo/ember-plus",
        "url": "https://github.com/Lawo/ember-plus",
        "language": "C++",
        "license": "BSL-1.0"
      }
    ],
    "confidence": "reported",
    "tags": [
      "ember-plus",
      "broadcast",
      "control",
      "lawo",
      "monitoring"
    ],
    "sources": [
      {
        "title": "Ember+ on GitHub",
        "url": "https://github.com/Lawo/ember-plus",
        "publisher": "Lawo",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [],
    "flow": "control",
    "flow_note": "Broadcast device control. It sets parameters rather than gathering statistics."
  },
  {
    "id": "etcnet3",
    "name": "ETC Net3",
    "aka": [
      "Net3",
      "ETC Net 3"
    ],
    "category": "lighting-control",
    "summary": "ETC's branded network suite for Ion/Eos-era consoles and DMX/RDM gateways: it uses sACN (E1.31) for live DMX levels and full ACN (E1.17)/RDM (E1.20) for device discovery and configuration, plus ETC's own proprietary extensions on top. It is what a Net3 One/Two/Four-Port Gateway, or an Ion/Eos-family rig from that era, is actually running to move DMX and RDM around a building.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 5568,
        "transport": "udp",
        "role": "sACN live DMX data, shared with the ACN SDT root layer Net3 is built on",
        "iana_registered": true,
        "note": "Inherited from the open ANSI E1.31/E1.17 layers Net3 sits on, not a Net3-specific assignment."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "239.255.0.0/16 (sACN universe multicast)"
      ],
      "note": "Live levels ride standard sACN multicast. The parts that are specifically \"Net3\" are the device discovery/configuration layer (full ACN/DMP) and proprietary extensions, which are not documented as a fixed address block."
    },
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://www.etcconnect.com/Products/Legacy/Networking/Gateways/DMX-RDM-Gateways/Features.aspx",
      "label": "ETC Net3 DMX/RDM Gateways — product and protocol overview"
    },
    "steward": "Electronic Theatre Controls (ETC)",
    "status": "current",
    "typical_use": [
      "DMX/RDM distribution from Ion/Eos-family consoles through Net3 One/Two/Four-Port Gateways",
      "Legacy Unison architectural dimming/control installs predating native sACN-only deployments",
      "Device configuration and management via full ACN (E1.17)/DMP where system components support it",
      "Gateways that also accept sACN, Art-Net, ETCNet2 and Strand ShowNet on the same hardware"
    ],
    "gotchas": [
      "ETC staff confirm on ETC's own community forum that sACN per-address priority is \"an ETC extension to the sACN standard\" using a start code outside ANSI E1.31 itself, so non-ETC sACN receivers may simply ignore per-address-priority packets rather than honouring them.",
      "ETC's own Net3 gateway spec sheet describes Net3 as \"a superset of the standard ACN Protocol Suite including additional proprietary communication protocols\" — there is no single published \"Net3 protocol\" document, only the open ACN/sACN/RDM standards underneath plus scattered gateway manuals.",
      "ETC's own website files the Net3 DMX/RDM Gateway product line under a /Products/Legacy/ URL even though the current Eos Family online help says Net3 \"remains the current standard\" and is not deprecated — a \"legacy\" URL does not mean the protocol is dead on a live show.",
      "ETCNet2 (introduced 1997 in the Obsession II) and Net3 are different generations; Eos software v3.2.0 and later dropped ETCNet2 support entirely, so an older ETCNet2-only node will not talk to a modern Net3-only rig without a bridge/gateway in between."
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "dmx-over-ip",
      "etc",
      "acn",
      "sacn"
    ],
    "sources": [
      {
        "title": "Net3 Four-Port Gateway spec sheet (\"superset of the standard ACN Protocol Suite... additional proprietary communication protocols\")",
        "url": "https://www.fullcompass.com/common/files/17041-Net34PortGatewaySpecSheet.pdf",
        "publisher": "Electronic Theatre Controls (ETC)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Eos Family Online Help — Control Protocols (Net3 developed to replace Net2, uses sACN for live control data)",
        "url": "https://www.etcconnect.com/WebDocs/Controls/EosFamilyOnlineHelp/en/Content/03_Eos_System_Requirements_and_Setup/Eos_Networking_Overview/Network_Protocols/Control_Protocols.htm",
        "publisher": "Electronic Theatre Controls (ETC)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "ETCNet2 Products (ETCNet2 introduced 1997 in Obsession II; new development work only on Net3)",
        "url": "https://support.etcconnect.com/ETC/Networking/Net_2_Nodes/ETCNet2_Products",
        "publisher": "Electronic Theatre Controls (ETC)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Net3 protocol specification? (ETC staff confirming per-address priority is an ETC extension to sACN)",
        "url": "https://community.etcconnect.com/networking/f/networking-discussions/34176/net3-protocol-specification",
        "publisher": "Electronic Theatre Controls (ETC) community forum",
        "accessed": "2026-08-17"
      },
      {
        "title": "DMX/RDM Gateways (Net3) product page, filed under /Products/Legacy/",
        "url": "https://www.etcconnect.com/Products/Legacy/Networking/Gateways/DMX-RDM-Gateways/Features.aspx",
        "publisher": "Electronic Theatre Controls (ETC)",
        "accessed": "2026-08-17",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "ETC networking."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "ETCNet3 for ETC gateways, Net3 and Sensor racks."
      },
      {
        "kind": "hardware",
        "id": "etc-response-mk2-gateway",
        "name": "ETC Response Mk2 DMX/RDM Gateway",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Net3 device discovery and configuration."
      },
      {
        "kind": "hardware",
        "id": "etc-sensor3-rack",
        "name": "ETC Sensor3 Dimmer Rack",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Net3 for control, feedback and configuration."
      },
      {
        "kind": "hardware",
        "id": "etc-thrupower-rack",
        "name": "ETC ThruPower Rack",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "ETC networking."
      }
    ],
    "flow": "control"
  },
  {
    "id": "ethercat",
    "name": "EtherCAT",
    "aka": [
      "Ethernet for Control Automation Technology"
    ],
    "category": "machinery-motion",
    "summary": "A real-time industrial Ethernet fieldbus (IEC 61158) offering sub-millisecond, tightly synchronized cyclic control, increasingly used behind the scenes in automated rigging, winch, and scenic-motion systems that need many coordinated servo/VFD axes.",
    "transport": [
      "ethernet-l2"
    ],
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://www.ethercat.org/en/technology.html"
    },
    "steward": "EtherCAT Technology Group (ETG); originated by Beckhoff Automation",
    "status": "current",
    "gotchas": [
      "Uses standard Ethernet frames (Ethertype 0x88A4) processed 'on the fly' by each slave, so ordinary network switches generally cannot sit inline on a segment without breaking real-time behavior.",
      "Requires a master device driving the cycle timing (a PLC or PC-based controller); it is not a peer-to-peer protocol like DMX or OSC."
    ],
    "implementations": [
      {
        "name": "SOEM (Simple Open EtherCAT Master)",
        "url": "https://github.com/OpenEtherCATsociety/SOEM",
        "language": "C"
      }
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "EtherCAT Technology - EtherCAT Technology Group",
        "url": "https://www.ethercat.org/en/technology.html",
        "primary": true
      },
      {
        "title": "EtherCAT - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/EtherCAT"
      },
      {
        "title": "Precision Stage Automation System - 26-Axis EtherCAT-Controlled Rigging Solution - Segev Tech",
        "url": "https://www.segevtech.com/post/precision-stage-automation-system-26-axis-ethercat-controlled-rigging-solution"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "codesys",
        "name": "CODESYS",
        "vendor": "CODESYS Group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Supported as a fieldbus."
      },
      {
        "kind": "software",
        "id": "twincat",
        "name": "TwinCAT",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "The native fieldbus — drives, I/O and sensors on one line, updated every cycle."
      },
      {
        "kind": "hardware",
        "id": "beckhoff-cx5140",
        "name": "Beckhoff CX5140 Embedded PC",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Native fieldbus to drives and I/O."
      }
    ],
    "flow": "control"
  },
  {
    "id": "ethersound",
    "name": "EtherSound",
    "category": "audio-transport",
    "openness": "proprietary-documented",
    "first_published": 2001,
    "status": "deprecated",
    "summary": "Early low-latency audio-over-Ethernet system from Digigram, carrying 64 channels in a daisy-chained ring at fixed very low latency. Largely displaced by Dante and AVB but still found in installs from the 2000s.",
    "transport": [
      "ethernet-l2"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          48,
          96
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 64,
        "encoding": "Linear PCM",
        "note": "64 channels at 48 kHz on 100 Mbit for ES-100, which is what nearly every installed system in the field is. The later ES-Giga carries more on gigabit, but the two are not the same wire."
      }
    },
    "typical_use": [
      "Legacy installed systems from the 2000s",
      "Auvitran and Digigram based infrastructure",
      "Fixed low-latency distribution in older venues"
    ],
    "gotchas": [
      "EtherSound is layer 2 and topology-sensitive: it expects a daisy chain or ring, not an arbitrary switched network. Patching it through a general show switch does not work.",
      "Encountering it now usually means an installed system nearing end of life. Plan the replacement path before a card fails, because spares are getting scarce."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "ethersound",
      "legacy",
      "digigram",
      "install"
    ],
    "sources": [
      {
        "title": "Digigram",
        "url": "https://www.digigram.com/",
        "publisher": "Digigram",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "freed",
    "name": "FreeD",
    "category": "tracking-position",
    "openness": "proprietary-documented",
    "status": "current",
    "summary": "Camera tracking data protocol originally from Vinten, carrying pan, tilt, roll, position, zoom and focus. The de facto interchange format between a tracked camera and a render engine in virtual production and AR graphics.",
    "transport": [
      "udp",
      "rs232"
    ],
    "default_ports": [
      {
        "number": 6000,
        "transport": "udp",
        "role": "Common default; the port is configurable per system",
        "iana_registered": false,
        "note": "No registered port: each vendor picks a default."
      }
    ],
    "typical_use": [
      "Feeding camera position to Unreal Engine in an LED volume",
      "Driving AR graphics from a tracked camera",
      "Virtual set and broadcast graphics"
    ],
    "gotchas": [
      "FreeD carries lens data as encoder counts, not as calibrated focal length. Without a lens calibration file the render engine cannot match the real lens, and the composite will not line up.",
      "Several incompatible variants exist under the same name, differing in packet layout and unit conventions. \"FreeD\" between two vendors is a thing to test, not to assume.",
      "It is a one-way broadcast with no acknowledgement. A dropped packet is a dropped frame of tracking, which is why the network carrying it should be dedicated."
    ],
    "confidence": "reported",
    "tags": [
      "camera-tracking",
      "virtual-production",
      "freed",
      "ar",
      "unreal"
    ],
    "sources": [
      {
        "title": "Vinten camera robotics",
        "url": "https://www.vinten.com/",
        "publisher": "Vinten",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [
      {
        "kind": "software",
        "id": "unreal-engine",
        "name": "Unreal Engine",
        "vendor": "Epic Games",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "FreeD camera tracking input via Live Link, the usual path in an LED volume."
      },
      {
        "kind": "hardware",
        "id": "mo-sys-startracker",
        "name": "Mo-Sys StarTracker",
        "vendor": "Mo-Sys Engineering",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Camera position and lens data."
      },
      {
        "kind": "hardware",
        "id": "stype-redspy",
        "name": "stYpe RedSpy",
        "vendor": "stYpe",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Camera position and lens data."
      }
    ],
    "flow": "control"
  },
  {
    "id": "fsoe",
    "name": "Safety over EtherCAT",
    "aka": [
      "FSoE",
      "FailSafe over EtherCAT"
    ],
    "category": "machinery-motion",
    "status": "current",
    "openness": "published-paid",
    "transport": [
      "ethernet-l2"
    ],
    "summary": "The same black-channel idea on EtherCAT: a safety container travels inside ordinary EtherCAT frames, protected by its own CRC, sequence counting and watchdog, so the fieldbus underneath carries it without being safety-rated. This is what a TwinSAFE emergency stop is actually riding on.",
    "multicast": {
      "used": false,
      "note": "Safety connections are established between a safety master and each safe slave."
    },
    "spec_url": {
      "url": "https://www.ethercat.org/en/safety.html",
      "label": "EtherCAT Technology Group"
    },
    "standards": [
      "iec-61508",
      "iec-62061"
    ],
    "steward": "EtherCAT Technology Group",
    "first_published": 2005,
    "typical_use": [
      "Safe stop, safe position and safe speed on winches, lifts and revolves",
      "Distributed emergency stop across a machine with one cable rather than a parallel loop",
      "Safety I/O sharing the fieldbus with ordinary control I/O"
    ],
    "gotchas": [
      "The watchdog timeout is a design number, not a default. Too short and the machine nuisance-trips; too long and the stopping distance grows.",
      "Safety-rated and standard I/O on one bus is convenient and makes the boundary less visible. Document which is which before somebody assumes.",
      "Losing the safety connection is a stop, by design. A flaky cable therefore reveals itself as an unexplained e-stop rather than as a fault message."
    ],
    "tags": [
      "functional-safety",
      "ethercat",
      "machinery",
      "black-channel"
    ],
    "sources": [
      {
        "title": "Safety over EtherCAT",
        "url": "https://www.ethercat.org/en/safety.html",
        "publisher": "EtherCAT Technology Group",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "genlock",
    "name": "Genlock / Black Burst",
    "aka": [
      "Black Burst",
      "BB",
      "House Sync",
      "Bi-level Sync"
    ],
    "category": "timecode-sync",
    "summary": "An analog composite video reference signal (a 'black' picture with color burst) distributed over coax to lock cameras, switchers, and video servers to a common timing reference; the SD-era precursor to tri-level sync for HD video systems.",
    "transport": [
      "other"
    ],
    "openness": "published-paid",
    "status": "historical",
    "gotchas": [
      "Black burst is an SD-format reference; HD/UHD systems generally use tri-level sync instead, which has different pulse levels and isn't interchangeable on the same distribution amp.",
      "Purely a timing reference with no metadata - it must be paired with LTC/VITC timecode if frame-accurate identity information is also needed."
    ],
    "confidence": "reported",
    "sources": [
      {
        "title": "Black and burst - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/Black_and_burst"
      },
      {
        "title": "Tri-level sync - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/Tri-level_sync"
      },
      {
        "title": "SMPTE ST 274M - Television Timing Reference Sequences - GlobalSpec",
        "url": "https://standards.globalspec.com/std/1095006/smpte-st-274m"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "alcorn-mcbride-binloop-hd",
        "name": "Alcorn McBride A/V Binloop HD",
        "vendor": "Alcorn McBride",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Frame reference."
      },
      {
        "kind": "hardware",
        "id": "analog-way-alta-4k",
        "name": "Analog Way Alta 4K",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Reference input."
      },
      {
        "kind": "hardware",
        "id": "analog-way-aquilon-rs4",
        "name": "Analog Way Aquilon RS4",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Reference input."
      },
      {
        "kind": "hardware",
        "id": "barco-e2",
        "name": "Barco Event Master E2",
        "vendor": "Barco",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Genlock reference input."
      },
      {
        "kind": "hardware",
        "id": "blackmagic-atem-4me-constellation-hd",
        "name": "Blackmagic ATEM 4 M/E Constellation HD",
        "vendor": "Blackmagic Design",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Blackburst / tri-level reference input."
      },
      {
        "kind": "hardware",
        "id": "brompton-tessera-s8",
        "name": "Brompton Tessera S8",
        "vendor": "Brompton Technology",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Frame reference."
      },
      {
        "kind": "hardware",
        "id": "brompton-tessera-sx40",
        "name": "Brompton Tessera SX40",
        "vendor": "Brompton Technology",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Genlock reference input for camera-synchronous operation."
      },
      {
        "kind": "hardware",
        "id": "disguise-vx-4",
        "name": "disguise vx 4",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Reference input for output phase lock."
      },
      {
        "kind": "hardware",
        "id": "evertz-5601msc",
        "name": "Evertz 5601MSC Master Sync and Clock",
        "vendor": "Evertz",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Blackburst and tri-level reference."
      },
      {
        "kind": "hardware",
        "id": "megapixel-helios",
        "name": "Megapixel HELIOS LED Processing Platform",
        "vendor": "Megapixel VR",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Frame reference — the whole point on a camera stage."
      },
      {
        "kind": "hardware",
        "id": "mo-sys-startracker",
        "name": "Mo-Sys StarTracker",
        "vendor": "Mo-Sys Engineering",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Frame reference so tracking data lines up with the picture."
      },
      {
        "kind": "hardware",
        "id": "novastar-mx40-pro",
        "name": "NovaStar MX40 Pro",
        "vendor": "NovaStar",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Genlock reference for camera work."
      },
      {
        "kind": "hardware",
        "id": "rosendahl-nanosyncs-hd",
        "name": "Rosendahl nanosyncs HD",
        "vendor": "Rosendahl Studiotechnik",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Blackburst and tri-level video reference."
      },
      {
        "kind": "hardware",
        "id": "stype-redspy",
        "name": "stYpe RedSpy",
        "vendor": "stYpe",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Frame reference."
      }
    ],
    "flow": "clock"
  },
  {
    "id": "gigaace",
    "name": "gigaACE",
    "category": "audio-transport",
    "openness": "proprietary-closed",
    "status": "current",
    "summary": "Allen & Heath's point-to-point audio and control link, carrying 128 bidirectional channels plus control between a dLive surface and its MixRack over a single Cat5e cable or fibre.",
    "transport": [
      "ethernet-l2"
    ],
    "typical_use": [
      "Linking a dLive surface to its MixRack",
      "Extending a console to a stage rack over fibre",
      "Redundant surface-to-rack connection"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          96
        ],
        "max_channels": 128,
        "note": "128 channels each way at the dLive signal path's native 96 kHz. Transport latency is quoted in samples rather than milliseconds — about five, or 52 µs — which is the honest unit for a link whose delay scales with the clock, and small enough that the converters either end dominate the budget."
      }
    },
    "gotchas": [
      "It uses Ethernet cabling and connectors and is not Ethernet. Patching gigaACE into a network switch does nothing useful and can confuse the switch.",
      "Because all the audio lives in the MixRack, the gigaACE link can drop and the show keeps making sound. That is a genuine design advantage and worth knowing before you panic."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "allen-heath",
      "dlive",
      "point-to-point"
    ],
    "sources": [
      {
        "title": "Allen & Heath",
        "url": "https://www.allen-heath.com/",
        "publisher": "Allen & Heath",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "hdbaset",
    "name": "HDBaseT",
    "aka": [
      "5Play"
    ],
    "category": "video-transport",
    "summary": "Uncompressed ultra-HD video and audio, 100 Mbit/s Ethernet, USB, control and up to 100 W of power over a single category cable — the \"5Play\" set. It is how an HDMI signal gets from a rack to a projector 90 m away without fibre.",
    "transport": [
      "ethernet-l2"
    ],
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://hdbaset.org/hdbaset-technology/",
      "label": "HDBaseT Alliance — technology overview"
    },
    "steward": "HDBaseT Alliance",
    "status": "current",
    "typical_use": [
      "Projector and display feeds over structured cable",
      "Distributing switched video around a venue",
      "Extending control and Ethernet alongside the picture on one cable"
    ],
    "media": {
      "video": {
        "max_resolution": "3840x2160",
        "max_frame_rate": 60,
        "colour_sampling": [
          "4:2:0",
          "4:4:4"
        ],
        "compression": "Uncompressed",
        "note": "Version decides which of those you actually get. HDBaseT 1.0 and 2.0 reach 4K60 only at 4:2:0; 3.0 roughly doubled the downstream rate and carries 4K60 at 4:4:4. Two bandwidth figures circulate for 3.0 and they are not the same thing — 16 Gbit/s is the link rate, not the usable video payload."
      },
      "audio": {
        "note": "HDBaseT fixes no audio format of its own. It transports the HDMI stream, so the audio capability is whatever that HDMI version defines, and a question about channel counts or sample rates is a question about the source and sink rather than about the cable between them."
      }
    },
    "gotchas": [
      "It uses category cable and RJ45 connectors and is not Ethernet. Putting an HDBaseT link through a network switch does not work, and the cable should be a dedicated point-to-point run.",
      "Cat6 is the practical baseline. Cat5e reaches shorter distances, and shielded cable and proper terminations matter far more here than on a data network where retries hide small problems.",
      "Distance figures are quoted for specific formats. The 100 m figure is not the distance for every resolution and colour depth.",
      "Power over the link is not PoE and is not interoperable with it."
    ],
    "confidence": "reported",
    "tags": [
      "video",
      "extender",
      "structured-cable"
    ],
    "sources": [
      {
        "title": "HDBaseT Technology",
        "url": "https://hdbaset.org/hdbaset-technology/",
        "publisher": "HDBaseT Alliance",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "hdcp",
    "name": "HDCP",
    "aka": [
      "High-bandwidth Digital Content Protection"
    ],
    "category": "video-control",
    "summary": "Content protection negotiated between every device in a video path. Each hop authenticates the next, so the chain is only as capable as its weakest link — and when it fails, the symptom is a black screen at the far end rather than an error where the problem is.",
    "transport": [
      "other"
    ],
    "openness": "proprietary-closed",
    "spec_url": {
      "url": "https://www.digital-cp.com/",
      "label": "Digital Content Protection LLC"
    },
    "steward": "Digital Content Protection LLC",
    "status": "current",
    "typical_use": [
      "Any path carrying commercial content from a consumer source",
      "Negotiated automatically by HDMI, DisplayPort and HDBaseT devices"
    ],
    "gotchas": [
      "One non-compliant device anywhere in the path breaks the whole chain, and the failure appears at the display rather than at the offending box.",
      "Version matters. A source insisting on HDCP 2.2 or 2.3 will not fall back to an older sink in every case, and the result is again a black screen.",
      "Repeater counts are limited. Long chains of switchers and splitters can exceed the permitted depth even when every device is compliant.",
      "Content that does not need protection can still fail if a source enables HDCP by default. Turning it off at the source is often the fix."
    ],
    "confidence": "reported",
    "tags": [
      "video",
      "drm",
      "display"
    ],
    "sources": [
      {
        "title": "HDCP Specifications",
        "url": "https://www.digital-cp.com/",
        "publisher": "Digital Content Protection LLC",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": null,
    "flow_note": "An encryption and authentication scheme wrapped around a media link, not a flow beside it."
  },
  {
    "id": "hdmi",
    "name": "HDMI",
    "aka": [
      "High-Definition Multimedia Interface"
    ],
    "category": "video-transport",
    "summary": "Uncompressed video and audio plus control and content protection on one connector, and the default video interface on nearly everything that is not purpose-built for broadcast. Version numbers describe bandwidth, and almost every field problem with it is a negotiation problem rather than a bandwidth one.",
    "transport": [
      "other"
    ],
    "openness": "proprietary-closed",
    "spec_url": {
      "url": "https://www.hdmi.org/spec/index",
      "label": "HDMI Forum specification page"
    },
    "steward": "HDMI Forum",
    "status": "current",
    "first_published": 2002,
    "media": {
      "video": {
        "max_resolution": "10240x4320",
        "max_frame_rate": 120,
        "colour_sampling": [
          "4:4:4",
          "4:2:2",
          "4:2:0"
        ],
        "bit_depths": [
          8,
          10,
          12,
          16
        ],
        "compression": "None, or DSC 1.2a visually lossless where the link cannot carry it raw",
        "note": "These are separate ceilings, not one mode: HDMI 2.1's 48 Gbit/s does 4K120 or 8K60 uncompressed, and reaches 10K only with DSC. The limit is always the version at both ends and the cable category between them, never the connector."
      },
      "audio": {
        "sample_rates_khz": [
          32,
          44.1,
          48,
          88.2,
          96,
          176.4,
          192
        ],
        "bit_depths": [
          16,
          20,
          24
        ],
        "max_channels": 32,
        "encoding": "Linear PCM, or a compressed bitstream passed through untouched",
        "note": "Passing a bitstream through means the sink decodes it, so a display that cannot decode what the source sent produces silence rather than an error."
      }
    },
    "typical_use": [
      "Source to display, source to switcher, switcher to projector",
      "The signal HDBaseT extenders carry over structured cable",
      "Consumer and prosumer playback into a professional chain"
    ],
    "gotchas": [
      "A version number belongs to a device, not to a cable. Cables are certified by bandwidth category — Standard, High Speed, Premium, Ultra High Speed — and a cable cannot be \"HDMI 2.1\".",
      "Locking connectors are not part of the standard. On a show, that matters more than any specification detail on this page.",
      "HDCP is negotiated separately and fails as a black screen. So does an EDID mismatch. So does a hot-plug event. Three different faults, one symptom.",
      "4K60 at 4:4:4 is roughly four times the data rate of 1080p60. A marginal cable or extender that passes the smaller signal will fail on the larger one, intermittently, once things are warm."
    ],
    "confidence": "reported",
    "tags": [
      "video",
      "display",
      "consumer"
    ],
    "sources": [
      {
        "title": "HDMI Specification",
        "url": "https://www.hdmi.org/spec/index",
        "publisher": "HDMI Forum",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "hognet",
    "name": "HogNet",
    "aka": [
      "Hog Net",
      "HES Net"
    ],
    "category": "lighting-control",
    "summary": "High End Systems' proprietary Ethernet network for linking Hog consoles, DPs and nodes, on a dedicated NIC/connector separate from the FixtureNet connection Hog consoles use for outbound Art-Net/sACN to fixtures and gateways. High End Systems (now part of ETC) has confirmed on the record that HogNet is undocumented outside their own equipment.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 6600,
        "transport": "udp",
        "role": "Default show/session identification port; additional shows increment from 6600 (6601, 6602, ...)",
        "iana_registered": false,
        "note": "ETC's own Hog console documentation states the port number for show separation but does not state whether it is UDP or TCP; UDP is inferred here because the same documentation says HogNet \"depends on multi-cast network traffic,\" and multicast requires UDP."
      }
    ],
    "multicast": {
      "used": true,
      "note": "ETC's Hog console documentation states that \"Hog 4 OS depends on multi-cast network traffic for communication to other system devices,\" but does not publish the specific multicast group addresses used."
    },
    "openness": "proprietary-closed",
    "steward": "High End Systems (part of Electronic Theatre Controls)",
    "status": "current",
    "typical_use": [
      "Networking Hog consoles, DPs (Data Processors) and nodes within a single show",
      "Separating multiple independent shows on one physical network via incrementing port numbers from a 6600 base",
      "Kept on a separate NIC/connector from FixtureNet, which carries outbound Art-Net/sACN to fixtures"
    ],
    "gotchas": [
      "Asked directly on ETC's own community forum whether HogNet uses a documented UDP/IP port, ETC staff (Chris Davis) replied only that \"HogNet is a combination of more than one transport protocol... a proprietary mechanism only understood by HES equipment,\" declining to confirm packet-level details.",
      "No open-source HogNet client or listener is known to exist; the Open Lighting Architecture project, which reverse-engineers many proprietary lighting protocols, has no HogNet plugin.",
      "HogNet (console/node networking) and FixtureNet (fixture-facing Art-Net/sACN output) are two separate physical connections on Hog consoles; cross-wiring the fixture network into the HogNet port, or vice versa, is a common on-site mistake."
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "high-end-systems",
      "hog",
      "proprietary"
    ],
    "sources": [
      {
        "title": "Details on HogNet? — ETC staff confirming HogNet is a proprietary mechanism only understood by HES equipment",
        "url": "https://community.etcconnect.com/control_consoles/hog-lighting-controls/f/hog-networking-help/45616/details-on-hognet",
        "publisher": "Electronic Theatre Controls (ETC) community forum",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "3.3 HogNet Network / Setting Up the Console — Hog 4 OS documentation (port 6600 default, multicast dependency)",
        "url": "https://www.etcconnect.com/webdocs/Controls/HOG/HTML/en/sect-setting_up_the_network.htm",
        "publisher": "Electronic Theatre Controls (ETC)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "ETC acquires High End Systems",
        "url": "https://www.etcconnect.com/About/News/ETC-acquires-High-End-Systems.aspx",
        "publisher": "Electronic Theatre Controls (ETC)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Lighting Control Protocols and Standards (HogNet described as a proprietary Ethernet suite, separate FixtureNet connection)",
        "url": "https://jeff.glass/post/lighting-control-protocols-and-standards/",
        "publisher": "Jeff Glass",
        "accessed": "2026-08-17"
      },
      {
        "title": "Open Lighting Architecture — supported protocols (no HogNet entry)",
        "url": "https://wiki.openlighting.org/index.php/Open_Lighting_Architecture",
        "publisher": "Open Lighting Project",
        "accessed": "2026-08-17"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "l8",
        "name": "L8",
        "vendor": "L8 LLC",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "verified",
        "note": "Documented literally as \"Hog 3/4 (bidirectional)\" DMX input/output on the Trace and Unlimited editions."
      }
    ],
    "flow": "control"
  },
  {
    "id": "igmp",
    "name": "IGMP",
    "aka": [
      "Internet Group Management Protocol",
      "IGMP snooping",
      "IGMP querier"
    ],
    "category": "network-transport",
    "summary": "How a host tells the network it wants a multicast group, and how a switch learns which ports to send that group to. On a show network it is the difference between sACN and Dante behaving, and every port on the switch receiving every universe.",
    "transport": [
      "udp"
    ],
    "default_ports": [],
    "openness": "open-published",
    "spec_url": {
      "url": "https://www.rfc-editor.org/rfc/rfc3376",
      "label": "RFC 3376 — IGMPv3"
    },
    "steward": "IETF",
    "status": "current",
    "typical_use": [
      "Any network carrying sACN, Dante, AES67, NDI or ST 2110 multicast",
      "Keeping multicast traffic off ports that did not ask for it"
    ],
    "gotchas": [
      "Snooping without a querier is worse than no snooping. With no querier the switch ages out its group memberships and multicast traffic starts and stops on a timer, which reads as random dropouts.",
      "Exactly one querier per VLAN. Two switches both acting as querier is a common cause of intermittent multicast on a network that looks correct.",
      "Version mismatch matters: an IGMPv2 device on a v3-only network may never join a group at all.",
      "Turning snooping off \"to make it work\" floods every port. It does often make it work, right up to the point where the link fills."
    ],
    "confidence": "reported",
    "tags": [
      "network",
      "multicast",
      "switching"
    ],
    "sources": [
      {
        "title": "RFC 3376 — Internet Group Management Protocol, Version 3",
        "url": "https://www.rfc-editor.org/rfc/rfc3376",
        "publisher": "IETF",
        "primary": true
      },
      {
        "title": "RFC 2236 — Internet Group Management Protocol, Version 2",
        "url": "https://www.rfc-editor.org/rfc/rfc2236",
        "publisher": "IETF",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "management",
    "flow_note": "Housekeeping that decides where multicast media is allowed to go — management traffic with an outsized effect on media."
  },
  {
    "id": "kinet",
    "name": "KiNET",
    "aka": [
      "Color Kinetics Ethernet Protocol",
      "Philips KiNET"
    ],
    "category": "lighting-control",
    "summary": "Color Kinetics' lightweight UDP protocol for sending light data to their power/data supplies and luminaires over ethernet. If a job has Color Kinetics fixtures on PDS supplies, this is usually what is actually on the wire between the controller and the rig.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 6038,
        "transport": "udp",
        "role": "Light data (DMXOUT v1 and PORTOUT v2 packets)",
        "note": "Color Kinetics also document 6039, 6041 and 6045 for non-light-data traffic such as keypad triggering."
      }
    ],
    "multicast": {
      "used": false,
      "note": "Light data is sent to the unicast address of a specific power/data supply. The vendor whitepaper describes DMXOUT as sending one universe to one destination IP."
    },
    "universe_model": "512 slots per packet. v1 DMXOUT sends one universe to a supply, which splits it across ports by stored node counts. v2 PORTOUT adds a port field so each output port gets its own universe.",
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://colorkinetics.helpdocs.io/article/umxjxmoc7a-ki-net-ethernet-protocol-whitepaper",
      "label": "KiNET Ethernet Protocol Whitepaper"
    },
    "steward": "Signify (Philips Color Kinetics)",
    "status": "current",
    "typical_use": [
      "Console or media server driving Color Kinetics power/data supplies",
      "Architectural pixel installations built on Color Kinetics hardware",
      "Converters bridging an sACN or Art-Net show network to a PDS",
      "Keypad and station control alongside light data on the same supply"
    ],
    "gotchas": [
      "v1 DMXOUT relies on node counts stored inside the power/data supply to decide where one universe splits across its ports. Change the fixture count and the split is wrong until the supply is reconfigured, not the console.",
      "v2 PORTOUT addresses each output port directly. A controller sending v1 to a supply set up for v2, or the reverse, gives you either nothing or the right data on the wrong ports.",
      "Light data is unicast to a specific supply IP and there is no discovery a third-party controller can lean on. Every supply address has to be recorded, labelled and kept with the show file.",
      "Port 6038 carries light data only. Keypads and other station traffic use 6039, 6041 and 6045, so a firewall rule that opens 6038 alone passes pixels and breaks wall panels.",
      "This is a vendor protocol on a vendor ecosystem. Third-party support is an add-on written against a whitepaper, so verify against the actual supply firmware on site rather than trusting a feature list."
    ],
    "implementations": [
      {
        "name": "OLA (Open Lighting Architecture)",
        "url": "https://github.com/OpenLightingProject/ola",
        "language": "C++",
        "license": "LGPL-2.1-or-later",
        "role": "sender"
      }
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "pixel",
      "color-kinetics",
      "proprietary"
    ],
    "sources": [
      {
        "title": "KiNET Ethernet Protocol Whitepaper (port 6038, DMXOUT v1 and PORTOUT v2)",
        "url": "https://colorkinetics.helpdocs.io/article/umxjxmoc7a-ki-net-ethernet-protocol-whitepaper",
        "publisher": "Color Kinetics (Signify)",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "KiNET — Open Lighting Project wiki (packet header, UDP 6038)",
        "url": "https://wiki.openlighting.org/index.php/KiNET",
        "publisher": "Open Lighting Project",
        "accessed": "2026-08-16"
      },
      {
        "title": "OLA KiNET plugin source (SendDMX and SendPortOut, 16-port PORTOUT limit)",
        "url": "https://raw.githubusercontent.com/OpenLightingProject/ola/master/plugins/kinet/KiNetNode.h",
        "publisher": "Open Lighting Project",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "KiNET v1 and v2 are listed as DMX device drivers."
      },
      {
        "kind": "software",
        "id": "dmx-workshop",
        "name": "DMX-Workshop",
        "vendor": "Singularity (UK) Ltd",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": null
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "KiNET is one of the PixelMapper output protocols, alongside Art-Net and sACN."
      },
      {
        "kind": "software",
        "id": "ola",
        "name": "OLA (Open Lighting Architecture)",
        "vendor": "Open Lighting Project",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "luminex-luminode-12",
        "name": "Luminex LumiNode 12",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "KiNET output for Color Kinetics fixtures."
      }
    ],
    "flow": "control"
  },
  {
    "id": "knx",
    "name": "KNX",
    "category": "device-management",
    "summary": "An international standard (ISO/IEC 14543-3) for building automation covering lighting, HVAC, blinds, and access control, which show-control integrators encounter when a venue's architectural/house lighting or building systems must interface with production control.",
    "transport": [
      "udp",
      "other"
    ],
    "default_ports": [
      {
        "number": 3671,
        "transport": "udp",
        "note": "KNXnet/IP tunnelling and routing"
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "224.0.23.12 (default KNXnet/IP routing multicast)"
      ]
    },
    "openness": "published-paid",
    "spec_url": {
      "url": "https://www.knx.org"
    },
    "steward": "KNX Association",
    "status": "current",
    "gotchas": [
      "Classic KNX twisted-pair (TP1) runs at only 9600 bit/s - fine for architectural lighting/HVAC but far too slow for anything resembling real-time show cueing.",
      "KNXnet/IP (UDP 3671, multicast 224.0.23.12 by default) bridges KNX onto IP networks, but that multicast traffic should be kept isolated from busy production show networks."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "KNX Association - official site",
        "url": "https://www.knx.org",
        "primary": true
      },
      {
        "title": "KNX - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/KNX"
      },
      {
        "title": "A guide to using KNX over IP - Ivory Egg",
        "url": "https://ivoryegg.co.uk/essential_guides/a-guide-to-using-knx-over-ip"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "home-assistant",
        "name": "Home Assistant",
        "vendor": "Open Home Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Integration available."
      }
    ],
    "flow": "control",
    "flow_note": "Building control. It switches and dims real loads rather than reporting on them."
  },
  {
    "id": "lldp",
    "name": "LLDP",
    "aka": [
      "Link Layer Discovery Protocol",
      "IEEE 802.1AB"
    ],
    "category": "device-management",
    "summary": "Devices announcing themselves to their directly connected neighbours — name, port, capabilities, and often PoE requirements. On a show network it is what turns \"which switch port is this node on\" from a cable-tracing job into a question the switch can answer.",
    "transport": [
      "ethernet-l2"
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://standards.ieee.org/ieee/802.1AB/",
      "label": "IEEE 802.1AB"
    },
    "steward": "IEEE",
    "status": "current",
    "typical_use": [
      "Finding which port a device is plugged into without tracing the cable",
      "PoE power negotiation beyond the basic hardware classes",
      "Documenting an installed network from the switches rather than from memory"
    ],
    "gotchas": [
      "It only sees direct neighbours. An unmanaged switch in the middle of a run makes several devices appear on one port, which is usually the first sign somebody added a switch nobody drew.",
      "Not every device sends it, and some send it only when asked. An absent neighbour is not proof of an absent device.",
      "CDP is Cisco's equivalent and the two do not interoperate. A network with both needs both enabled to see the whole picture."
    ],
    "confidence": "reported",
    "tags": [
      "network",
      "discovery",
      "switching"
    ],
    "sources": [
      {
        "title": "IEEE 802.1AB — Station and Media Access Control Connectivity Discovery",
        "url": "https://standards.ieee.org/ieee/802.1AB/",
        "publisher": "IEEE",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "management",
    "flow_note": "Neighbour discovery, for the benefit of whoever has to draw the diagram later."
  },
  {
    "id": "lorawan",
    "name": "LoRaWAN",
    "aka": [
      "LoRa"
    ],
    "category": "network-transport",
    "status": "current",
    "openness": "open-free-registration",
    "transport": [
      "wireless-rf"
    ],
    "summary": "Kilometres of range on a coin cell, at a trickle of data. LoRa is the radio modulation; LoRaWAN is the network on top of it, in which devices talk to gateways and gateways forward to a network server. Built for sensors that report occasionally over a very large area.",
    "multicast": {
      "used": false,
      "note": "Downlink multicast exists for firmware distribution and is not a general-purpose facility."
    },
    "spec_url": {
      "url": "https://lora-alliance.org/",
      "label": "LoRa Alliance"
    },
    "steward": "LoRa Alliance",
    "first_published": 2015,
    "typical_use": [
      "Site-wide environmental sensing across a festival or a campus.",
      "Crowd counting, gate counts and asset tracking where the update rate is minutes rather than milliseconds.",
      "Anything where running power or a network to the sensor is the actual problem."
    ],
    "gotchas": [
      "The data rate is tiny and duty cycle is legally limited in most regions. It is not a control network and cannot become one.",
      "Sub-GHz band allocations differ by country — 868 MHz in Europe, 915 MHz in much of the Americas, and elsewhere again in Asia.",
      "Latency is seconds at best. Nothing a cue waits on should be on it."
    ],
    "tags": [
      "lora",
      "iot",
      "long-range",
      "low-power",
      "sensors"
    ],
    "sources": [
      {
        "title": "LoRaWAN",
        "url": "https://lora-alliance.org/",
        "publisher": "LoRa Alliance",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "management",
    "flow_note": "Long-range, low-rate sensor telemetry. Nothing on it has a show deadline."
  },
  {
    "id": "ltc",
    "name": "LTC",
    "aka": [
      "Linear Timecode",
      "Longitudinal Timecode",
      "SMPTE timecode",
      "SMPTE"
    ],
    "category": "timecode-sync",
    "summary": "SMPTE time and control code encoded as a biphase-mark audio signal, 80 bits per frame, so it runs down any audio path in the building. It is still the least fragile way to hand one clock to lighting, sound, video and automation at the same time.",
    "transport": [
      "other"
    ],
    "multicast": {
      "used": false
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://pub.smpte.org/pub/st12-1/st0012-1-2014.pdf",
      "label": "SMPTE ST 12-1 — Time and Control Code"
    },
    "steward": "SMPTE (Society of Motion Picture and Television Engineers)",
    "status": "current",
    "typical_use": [
      "Master clock from a timecode generator to lighting, sound and video",
      "Locking playback, automation and pyro to a backing track",
      "Striping a reference clock onto a spare track of a multitrack",
      "Feeding a console's timecode-triggered cue list from front of house"
    ],
    "gotchas": [
      "The 80-bit word carries no frame-rate field. The reader infers the rate from the incoming bit rate, so a 25 fps generator into a 30 fps reader produces numbers that look plausible and quietly drift.",
      "Drop-frame at 29.97 skips frame numbers, not time. Cue sheets written non-drop against a drop-frame master run out by roughly 3.6 seconds an hour, and the error is invisible in the first five minutes of a tech.",
      "ST 12-1 asks for 1 to 2 V peak-to-peak with 40 microsecond rise and fall times. Route LTC through a compressor, a de-esser, a lossy codec or a consumer wireless link and the edges round off until the reader loses lock.",
      "LTC is unreadable at very low transport speeds because there are no transitions to clock from. A paused master stops sending position entirely, so downstream devices either freewheel or drop out.",
      "It is an audio signal, so it bleeds. Keep it off adjacent channels, out of foldback and out of anything that goes to a speaker; a burst of LTC in the PA during a quiet scene is a career moment.",
      "The eight four-bit user groups are free-form and every manufacturer fills them differently. Do not assume date or reel data survives a round trip through a converter or a distribution amp."
    ],
    "implementations": [
      {
        "name": "libltc",
        "url": "https://github.com/x42/libltc",
        "language": "C",
        "license": "LGPL-3.0",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "timecode",
      "smpte",
      "audio",
      "sync"
    ],
    "sources": [
      {
        "title": "SMPTE ST 12-1:2014 — Time and Control Code",
        "url": "https://pub.smpte.org/pub/st12-1/st0012-1-2014.pdf",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Setting the Standards Free — SMPTE opens its full standards library at no cost",
        "url": "https://www.smpte.org/setting-the-standards-free",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "libltc — Linear/Longitudinal Time Code library",
        "url": "https://github.com/x42/libltc",
        "publisher": "Robin Gareus",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "ardour",
        "name": "Ardour",
        "vendor": "Ardour Community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC generate and chase, built in."
      },
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "LTC sync."
      },
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "SMPTE/LTC listed on T2, T3, D3, D3 Core, D7, D9, Arena, Tiger Touch 2 and Sapphire. A T2 plugged into another console adds an audio/LTC input."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "Timecode receive (Art-Net, MIDI, LTC) is an Unlocked-mode feature; demo and Core mode will not chase timecode."
      },
      {
        "kind": "software",
        "id": "depence",
        "name": "Depence",
        "vendor": "Syncronorm GmbH",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Listed as \"SMPTE\" among Depence's supported protocols; matched here to SMPTE/LTC timecode by name."
      },
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "One of the documented timecode sources alongside MTC, MIDI beat clock and system time."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "SMPTE/LTC timecode is receive only and arrives via a Net3 Show Control Gateway."
      },
      {
        "kind": "software",
        "id": "finale-3d",
        "name": "Finale 3D",
        "vendor": "Finale 3D",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Scripts are executed against timecode by the firing system."
      },
      {
        "kind": "software",
        "id": "heavym",
        "name": "HeavyM",
        "vendor": "HeavyM",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode-driven playback, depending on version."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Sync Manager receives LTC from an audio input (left channel), a factory-fitted Alpermann+Velte card, or USB interfaces (Rosendahl Mif4, CB Electronics TC-5, Adrienne Electronics USB-LTC)."
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC generation and chase."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "LTC over an audio input; supported framerates are 24, 25, 29.97 DF and 30. Millumin also ships a free TimecodeClock app that generates LTC, MTC or its own network timecode."
      },
      {
        "kind": "software",
        "id": "mitti",
        "name": "Mitti",
        "vendor": "Imimot",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode sync on supported versions."
      },
      {
        "kind": "software",
        "id": "modul8",
        "name": "Modul8",
        "vendor": "GarageCUBE",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode sync via third-party bridges."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "LTC via the SMPTE IN 3-pin connector on M6+ consoles, or audio LTC via an audio interface. Timecode is only fully enabled from the NOVA+ tier."
      },
      {
        "kind": "software",
        "id": "pixera",
        "name": "PIXERA",
        "vendor": "AV Stumpfl",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "software",
        "id": "pro-tools",
        "name": "Pro Tools",
        "vendor": "Avid",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Chases LTC via a synchroniser or interface."
      },
      {
        "kind": "software",
        "id": "propresenter",
        "name": "ProPresenter",
        "vendor": "Renewed Vision",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode sync on supported versions."
      },
      {
        "kind": "software",
        "id": "qsys-designer",
        "name": "Q-SYS Designer",
        "vendor": "QSC, LLC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Stock schematic components: the SMPTE LTC Reader decodes LTC from an audio input per SMPTE 12M and exposes timecode fields as control pins for Lua; the SMPTE LTC Generator is the encoder counterpart."
      },
      {
        "kind": "software",
        "id": "reaper",
        "name": "REAPER",
        "vendor": "Cockos Incorporated",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "The stock SMPTE LTC/MTC Timecode Generator produces an LTC audio signal at a chosen frame rate and start time. Real-time LTC chase is not part of it."
      },
      {
        "kind": "software",
        "id": "show-cue-system",
        "name": "Show Cue System (SCS)",
        "vendor": "Show Cue Systems",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode chase."
      },
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC for timeline sync."
      },
      {
        "kind": "software",
        "id": "stage-precision",
        "name": "Stage Precision",
        "vendor": "Stage Precision",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode input."
      },
      {
        "kind": "software",
        "id": "unreal-engine",
        "name": "Unreal Engine",
        "vendor": "Epic Games",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode via plugin and hardware."
      },
      {
        "kind": "software",
        "id": "watchout",
        "name": "WATCHOUT",
        "vendor": "Dataton",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Handled by the LTC Bridge component."
      },
      {
        "kind": "hardware",
        "id": "7thsense-delta",
        "name": "7thSense Delta Media Server",
        "vendor": "7thSense",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC for show sync."
      },
      {
        "kind": "hardware",
        "id": "alcorn-mcbride-binloop-hd",
        "name": "Alcorn McBride A/V Binloop HD",
        "vendor": "Alcorn McBride",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode master or slave."
      },
      {
        "kind": "hardware",
        "id": "alcorn-mcbride-v16pro",
        "name": "Alcorn McBride V16Pro",
        "vendor": "Alcorn McBride",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "SMPTE LTC in and out on XLR, 600 ohm balanced, 1-4 V peak to peak. The V16Pro reads and generates; the V4Pro does not."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-dlive-s7000",
        "name": "Allen & Heath dLive S7000",
        "vendor": "Allen & Heath",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "LTC input for scene firing."
      },
      {
        "kind": "hardware",
        "id": "analog-way-picturall-mk2",
        "name": "Analog Way Picturall Mark II",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC sync."
      },
      {
        "kind": "hardware",
        "id": "avid-venue-s6l-32d",
        "name": "Avid VENUE S6L-32D",
        "vendor": "Avid",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "LTC for snapshot automation."
      },
      {
        "kind": "hardware",
        "id": "avolites-ai-q3",
        "name": "Avolites Ai Q3",
        "vendor": "Avolites",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "hardware",
        "id": "avolites-arena",
        "name": "Avolites Arena",
        "vendor": "Avolites",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC input for timecoded cue lists."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC timecode input."
      },
      {
        "kind": "hardware",
        "id": "brainstorm-dxd-8",
        "name": "Brainstorm DXD-8 Distripalyzer",
        "vendor": "Brainstorm Electronics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Reads, analyses, regenerates and distributes LTC."
      },
      {
        "kind": "hardware",
        "id": "chamsys-magicq-mq80",
        "name": "ChamSys MagicQ MQ80",
        "vendor": "ChamSys",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode for playback."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Linear timecode input for timecoded playbacks."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC timeline sync."
      },
      {
        "kind": "hardware",
        "id": "dataton-watchpax-60",
        "name": "Dataton WATCHPAX 60",
        "vendor": "Dataton",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode for synchronised playback."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC for snapshot firing against timecode."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via Designer's timecode sources."
      },
      {
        "kind": "hardware",
        "id": "disguise-vx-4",
        "name": "disguise vx 4",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC timecode input for show sync."
      },
      {
        "kind": "hardware",
        "id": "eos-apex-5",
        "name": "Eos Apex 5",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "SMPTE timecode is receive only and needs a Response show control gateway."
      },
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC timecode in."
      },
      {
        "kind": "hardware",
        "id": "evertz-5601msc",
        "name": "Evertz 5601MSC Master Sync and Clock",
        "vendor": "Evertz",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC input for timecode-driven sequences."
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "hardware",
        "id": "green-hippo-karst-plus",
        "name": "Green Hippo Hippotizer Karst+ MK2",
        "vendor": "Green Hippo",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "hardware",
        "id": "hog-4",
        "name": "Hog 4",
        "vendor": "High End Systems",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Linear timecode input on 3-pin XLR."
      },
      {
        "kind": "hardware",
        "id": "medialon-showmaster-pro",
        "name": "Medialon Showmaster Pro",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode."
      },
      {
        "kind": "hardware",
        "id": "midas-hd96-24",
        "name": "Midas HD96-24",
        "vendor": "Midas",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "LTC input."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC for timeline sync."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC timecode in."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC timeline sync."
      },
      {
        "kind": "hardware",
        "id": "rosendahl-nanosyncs-hd",
        "name": "Rosendahl nanosyncs HD",
        "vendor": "Rosendahl Studiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC generate and read."
      },
      {
        "kind": "hardware",
        "id": "tait-navigator",
        "name": "TAIT Navigator",
        "vendor": "TAIT",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Timecode-driven automation sequences."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rivage-pm7",
        "name": "Yamaha RIVAGE PM7",
        "vendor": "Yamaha",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "LTC input for scene automation."
      },
      {
        "kind": "hardware",
        "id": "zero88-flx-s48",
        "name": "Zero 88 FLX S48",
        "vendor": "Zero 88",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "LTC input for timecode playback."
      }
    ],
    "flow": "clock"
  },
  {
    "id": "ma-net",
    "name": "MA-Net",
    "aka": [
      "MA-Net2",
      "MA-Net3",
      "grandMA network protocol"
    ],
    "category": "lighting-control",
    "summary": "MA Lighting's proprietary session and device-networking protocol linking grandMA2/grandMA3 consoles, onPC stations, NPUs and MA nodes over UDP multicast (plus TCP for large transfers). It is what actually carries console session data, backup/redundancy state and DMX output between everything on the MA network switch, not a separately branded product.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 30020,
        "transport": "udp",
        "role": "MA-Net3 general session communication (session 1)",
        "note": "Documented by MA Lighting for MA-Net3 (grandMA3) only. MA Lighting does not similarly publish MA-Net2 (grandMA2-era) port numbers."
      },
      {
        "number": 30021,
        "transport": "udp",
        "role": "MA-Net3 extended session communication (session 1)"
      },
      {
        "number": 30022,
        "transport": "tcp",
        "role": "MA-Net3 station-to-station high-volume/unicast data transfer",
        "note": "Additional sessions use higher port numbers by a fixed offset per session."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "236.4.1.0-236.4.1.3 (MA-Net3 session 1 groups)",
        "239.4.1.x (alternate base if 236.4.1.x conflicts)"
      ],
      "note": "From MA Lighting's own grandMA3 online manual, for MA-Net3 specifically. Up to 32 sessions are supported by shifting the base address per session. No equivalent public documentation of MA-Net2 multicast ranges was found."
    },
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://help.malighting.com/grandMA3/2.2/HTML/network_design_protocols.html",
      "label": "grandMA3 online manual — Network Design, Protocol Details"
    },
    "steward": "MA Lighting International GmbH",
    "status": "current",
    "typical_use": [
      "Linking grandMA2/grandMA3 consoles, onPC sessions and NPUs into one rig-wide session",
      "Session backup and redundancy between primary and backup consoles/processing units",
      "DMX output distribution to MA 2Port/4Port Nodes",
      "Third-party media servers and pixel-mapping tools joining a console's session for show sync"
    ],
    "gotchas": [
      "MA Lighting publishes network/port configuration for MA-Net3 in the grandMA3 online manual, but not a message-format or packet-structure specification, so there is enough to wire a network but not enough to write an independent interoperable client from official docs alone.",
      "MA-Net2 (grandMA2) and MA-Net3 (grandMA3) are different, non-interoperable protocol generations; a grandMA2-era NPU or node does not simply join a grandMA3 MA-Net3 session.",
      "No open-source MA-Net client is known to exist. Open Lighting Architecture, which reverse-engineers many proprietary lighting protocols (Pathport, KiNET), lists no MA-Net support, so third parties depend on official MA Lighting licensing (ArKaos, MADRIX) rather than reverse engineering."
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "ma-lighting",
      "proprietary",
      "console-networking"
    ],
    "sources": [
      {
        "title": "grandMA3 online manual — Network Design, Protocol Details (MA-Net3 ports and multicast ranges)",
        "url": "https://help.malighting.com/grandMA3/2.2/HTML/network_design_protocols.html",
        "publisher": "MA Lighting International GmbH",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Input, Interoperability, And Remote Control — MA Lighting MA-Net (described as \"a proprietary Ethernet network protocol\")",
        "url": "https://help.madrix.com/m5/html/madrix/hidd_ma_net.html",
        "publisher": "inoage GmbH (MADRIX)",
        "accessed": "2026-08-17"
      },
      {
        "title": "MediaMaster 3.1, GrandMA2 and Ma-Net2 (third-party MA-Net2 integration for show sync)",
        "url": "https://pro.arkaos.com/blog/2012/11/engineering/mediamaster-31-grandma2-and-ma-net2",
        "publisher": "ArKaos",
        "accessed": "2026-08-17"
      },
      {
        "title": "Open Lighting Architecture — supported protocols (no MA-Net entry)",
        "url": "https://wiki.openlighting.org/index.php/Open_Lighting_Architecture",
        "publisher": "Open Lighting Project",
        "accessed": "2026-08-17"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "The DMX component accepts MA-Net alongside Art-Net and sACN, and there is a dedicated MA-Net3 component; 4.9.0 release notes add MA-Net3 networking support."
      },
      {
        "kind": "software",
        "id": "l8",
        "name": "L8",
        "vendor": "L8 LLC",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "MA-Net 2/3 DMX input, documented on the Trace and Unlimited editions only."
      },
      {
        "kind": "software",
        "id": "ma3d",
        "name": "MA 3D",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Driven directly over MA-Net from a grandMA session."
      },
      {
        "kind": "software",
        "id": "vectorworks-vision",
        "name": "Vectorworks Vision",
        "vendor": "Vectorworks, Inc.",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "MA-Net2 input requires a Vision-specific USB dongle; MA-Net3 requires an MA viz-key plus a grandMA3 console or onPC, per Vision's own manual."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MA-Net2 for sessions with other grandMA2 devices and NPUs."
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Session networking between MA devices."
      }
    ],
    "flow": "control"
  },
  {
    "id": "madi",
    "name": "MADI (AES10)",
    "aka": [
      "Multichannel Audio Digital Interface",
      "AES10"
    ],
    "category": "audio-transport",
    "summary": "A long-established AES standard for point-to-point transport of up to 64 channels of digital audio over a single coax (BNC) or fiber link, still widely used for touring FOH/monitor console splits, digital snakes, and broadcast/live-sound interconnects.",
    "transport": [
      "other",
      "fibre"
    ],
    "openness": "open-free-registration",
    "steward": "Audio Engineering Society (AES)",
    "status": "current",
    "media": {
      "audio": {
        "sample_rates_khz": [
          48,
          96
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 64,
        "encoding": "Linear PCM",
        "note": "64 channels at 48 kHz on one coax or fibre, halving to 32 at 96 kHz. The channel count is fixed by the frame structure, so a MADI link is always the same bandwidth whether the channels carry audio or silence."
      }
    },
    "gotchas": [
      "Original AES10-1991 caps out at 56 channels at 48kHz; 64-channel and higher-sample-rate operation needs the AES10-2003/2008 revisions and matching gear.",
      "Point-to-point only, with no built-in routing/addressing - multi-device MADI systems need external routers or matrix switchers.",
      "Coax (75-ohm BNC) and optical (SC) variants are not interchangeable without a converter, and each has different maximum cable runs."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "AES10-2008, Serial Multichannel Audio Digital Interface (MADI) has been published - AES Standards",
        "url": "https://www.aes.org/standards/blog/2009/2/aes10-2008-serial-multichannel-audio",
        "primary": true
      },
      {
        "title": "MADI - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/MADI"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "pro-tools",
        "name": "Pro Tools",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via MADI interface hardware."
      },
      {
        "kind": "software",
        "id": "waves-soundgrid-studio",
        "name": "Waves SoundGrid Studio",
        "vendor": "Waves Audio",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via SoundGrid interface hardware."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-dlive-s7000",
        "name": "Allen & Heath dLive S7000",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via I/O card."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-sq-6",
        "name": "Allen & Heath SQ-6",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via option card."
      },
      {
        "kind": "hardware",
        "id": "avid-venue-s6l-32d",
        "name": "Avid VENUE S6L-32D",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via optional card."
      },
      {
        "kind": "hardware",
        "id": "behringer-x32",
        "name": "Behringer X32",
        "vendor": "Behringer",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via optional expansion card."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Native MADI on the rear, the DiGiCo optical and coax stage-rack backbone."
      },
      {
        "kind": "hardware",
        "id": "digico-sd12",
        "name": "DiGiCo SD12",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Optical and coaxial MADI."
      },
      {
        "kind": "hardware",
        "id": "directout-prodigy-mp",
        "name": "DirectOut PRODIGY.MP",
        "vendor": "DirectOut",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core format."
      },
      {
        "kind": "hardware",
        "id": "ferrofish-a32-dante",
        "name": "Ferrofish A32 Dante",
        "vendor": "Ferrofish",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Optical and coaxial MADI."
      },
      {
        "kind": "hardware",
        "id": "l-acoustics-p1",
        "name": "L-Acoustics P1",
        "vendor": "L-Acoustics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on configuration."
      },
      {
        "kind": "hardware",
        "id": "midas-hd96-24",
        "name": "Midas HD96-24",
        "vendor": "Midas",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via expansion card."
      },
      {
        "kind": "hardware",
        "id": "rts-adam",
        "name": "RTS ADAM Intercom Matrix",
        "vendor": "RTS (Bosch)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via cards."
      },
      {
        "kind": "hardware",
        "id": "ssl-live-l550",
        "name": "SSL Live L550",
        "vendor": "Solid State Logic",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Primary I/O transport."
      },
      {
        "kind": "hardware",
        "id": "yamaha-cl5",
        "name": "Yamaha CL5",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via Mini-YGDAI card."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rivage-pm7",
        "name": "Yamaha RIVAGE PM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via HY card."
      }
    ],
    "flow": "media"
  },
  {
    "id": "matter",
    "name": "Matter",
    "aka": [
      "CHIP",
      "Connected Home over IP"
    ],
    "category": "device-management",
    "status": "current",
    "openness": "open-published",
    "transport": [
      "udp",
      "tcp"
    ],
    "summary": "An application layer that gives connected devices a shared vocabulary: a light is a light, a lock is a lock, and any controller can drive one without a vendor-specific integration. Runs over Thread, Wi-Fi and Ethernet, and is the first serious attempt to make the smart-device world interoperable rather than a set of walled gardens.",
    "multicast": {
      "used": true,
      "note": "Uses IPv6 multicast for discovery via mDNS."
    },
    "spec_url": {
      "url": "https://csa-iot.org/all-solutions/matter/",
      "label": "Connectivity Standards Alliance"
    },
    "steward": "Connectivity Standards Alliance",
    "first_published": 2022,
    "typical_use": [
      "Installed and architectural control where devices come from several vendors.",
      "Anything that must keep working without a vendor cloud.",
      "Bridging consumer devices into a venue control system."
    ],
    "gotchas": [
      "Matter standardises the common device types. The features that made you choose a particular product are usually outside it.",
      "Commissioning a device onto a Matter fabric is its own workflow, and moving it between ecosystems is not always painless.",
      "It is an application layer, not a radio. What it runs over decides the range, latency and power behaviour."
    ],
    "tags": [
      "iot",
      "smart-home",
      "interoperability",
      "install"
    ],
    "sources": [
      {
        "title": "Matter",
        "url": "https://csa-iot.org/all-solutions/matter/",
        "publisher": "Connectivity Standards Alliance",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [
      {
        "kind": "software",
        "id": "home-assistant",
        "name": "Home Assistant",
        "vendor": "Open Home Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Supported."
      }
    ],
    "flow": "control",
    "flow_note": "Smart-home device control, increasingly the layer a venue meets consumer kit through."
  },
  {
    "id": "mdns-dns-sd",
    "name": "mDNS / DNS-SD",
    "aka": [
      "Bonjour",
      "Zeroconf",
      "Avahi"
    ],
    "category": "network-transport",
    "openness": "open-published",
    "first_published": 2013,
    "status": "current",
    "summary": "Multicast DNS and DNS Service Discovery: how devices on a local network announce and find each other with no DNS server and no configuration. Dante, NDI, NMOS, OSC discovery and half the show network depends on it working.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 5353,
        "transport": "udp",
        "role": "mDNS",
        "iana_registered": true
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "224.0.0.251 (IPv4)",
        "ff02::fb (IPv6)"
      ],
      "note": "Link-local scope: mDNS does not cross a router, which is why devices vanish when someone segments the network."
    },
    "spec_url": {
      "url": "https://datatracker.ietf.org/doc/html/rfc6762",
      "label": "RFC 6762 (mDNS)"
    },
    "steward": "IETF",
    "typical_use": [
      "Dante device discovery",
      "NDI source discovery",
      "Finding a console or media server without knowing its IP"
    ],
    "gotchas": [
      "mDNS is link-local by design and does not route. Putting devices on separate VLANs or subnets makes them disappear from each other unless a reflector or repeater is configured.",
      "Many managed switches filter or rate-limit multicast at 224.0.0.251 as a security default, which silently breaks discovery while unicast traffic works perfectly.",
      "Wireless access points frequently block multicast between clients. A laptop on wifi that cannot see a device on the wired network is usually this, not a firewall."
    ],
    "implementations": [
      {
        "name": "Avahi",
        "url": "https://avahi.org/",
        "language": "C",
        "license": "LGPL-2.1-or-later"
      }
    ],
    "confidence": "verified",
    "tags": [
      "mdns",
      "bonjour",
      "discovery",
      "zeroconf",
      "multicast"
    ],
    "sources": [
      {
        "title": "RFC 6762: Multicast DNS",
        "url": "https://datatracker.ietf.org/doc/html/rfc6762",
        "publisher": "IETF",
        "accessed": "2026-08-26",
        "primary": true
      },
      {
        "title": "RFC 6763: DNS-Based Service Discovery",
        "url": "https://datatracker.ietf.org/doc/html/rfc6763",
        "publisher": "IETF",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [
      {
        "kind": "software",
        "id": "dante-controller",
        "name": "Dante Controller",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Dante discovery is mDNS, which is why devices vanish across a routed boundary."
      },
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Decodes mDNS, the fastest way to prove a discovery problem."
      }
    ],
    "flow": "management",
    "flow_note": "Discovery. It is how devices find each other, and it is chatty in a way that matters on a busy VLAN."
  },
  {
    "id": "midi-2",
    "name": "MIDI 2.0 / Universal MIDI Packet (UMP)",
    "aka": [
      "MIDI 2.0",
      "UMP",
      "MIDI-CI"
    ],
    "category": "audio-control",
    "summary": "A 2020 extension to MIDI adding bidirectional device negotiation (MIDI-CI), higher-resolution controllers, and a new Universal MIDI Packet container that carries both MIDI 1.0 and MIDI 2.0 messages over USB, network, and other digital transports.",
    "transport": [
      "usb",
      "other"
    ],
    "openness": "open-free-registration",
    "spec_url": {
      "url": "https://midi.org/universal-midi-packet-ump-and-midi-2-0-protocol-specification"
    },
    "steward": "MIDI Association (MMA/AMEI)",
    "status": "draft",
    "gotchas": [
      "Not wire-compatible with classic 5-pin DIN MIDI 1.0 - UMP is delivered over USB, network, or other digital transports rather than the original DIN connector.",
      "Adoption in touring/theatre gear is still limited; most show-control rigs remain on plain MIDI 1.0 messages even on devices that technically support MIDI 2.0."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "Universal MIDI Packet (UMP) and MIDI 2.0 Protocol Specification - MIDI.org",
        "url": "https://midi.org/universal-midi-packet-ump-and-midi-2-0-protocol-specification",
        "primary": true
      },
      {
        "title": "MIDI 2.0 - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/MIDI_2.0"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "midi-show-control",
    "name": "MIDI Show Control",
    "aka": [
      "MSC",
      "MIDI Show Control 1.1"
    ],
    "category": "show-control",
    "summary": "A universal real-time MIDI system exclusive message set that carries GO, STOP and RESUME together with a cue number, cue list and cue path. It is the oldest reliable way to make one GO button fire lighting, sound and machinery at the same instant.",
    "transport": [
      "midi-din",
      "usb"
    ],
    "multicast": {
      "used": false
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://midi.org/midi-show-control",
      "label": "RP-002/RP-014 MIDI Show Control 1.1.1 specification"
    },
    "steward": "The MIDI Association (MIDI Manufacturers Association)",
    "first_published": 1991,
    "status": "current",
    "typical_use": [
      "One GO button on a stage manager's desk firing several departments at once",
      "Lighting console triggering sound and video playback, or being triggered",
      "Theme park and attraction show controllers sequencing effects",
      "Linking a show controller to a console that has no OSC or network control"
    ],
    "gotchas": [
      "The message is F0 7F <device_id> 02 <command_format> <command> <data> F7. Device ID 127 (0x7F) is all-call, so a receiver left at 127 acts on every message on the line including ones meant for another department.",
      "Command format is a category, not an address. 01 is Lighting (General), 02 Moving Lights, and a receiver only acts on the formats it is set to accept. A format mismatch is the most common cause of \"MSC is doing nothing\".",
      "Cue data is ASCII digits with 0x00 delimiters between cue number, cue list and cue path. Cue 5 and cue 5.0 are different byte strings, so cues can fire on some numbers and be silently ignored on others.",
      "Nothing acknowledges an MSC message. If the receiver was powered down, on a different device ID or on the wrong command format, the sender reports a perfectly successful GO.",
      "A DIN MIDI line runs at 31.25 kbit/s and everything shares it. A continuous MTC quarter-frame stream on the same cable will delay cue messages by a measurable and variable amount.",
      "MSC is one-directional and has no state. A receiver that missed the GO will not catch up, so a device that came back from a reboot mid-act stays where it was until you send it somewhere."
    ],
    "confidence": "reported",
    "tags": [
      "show-control",
      "midi",
      "sysex",
      "cue-triggering"
    ],
    "sources": [
      {
        "title": "MIDI Show Control — RP-002-014 v1.1.1 specification",
        "url": "https://midi.org/midi-show-control",
        "publisher": "The MIDI Association",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "MIDI Show Control — WATCHOUT 7 User's Guide (device IDs, all-call, sysex layout)",
        "url": "https://docs.dataton.com/watchout-7-new/watchout/external-control/midi-show-control.html",
        "publisher": "Dataton",
        "accessed": "2026-08-16"
      },
      {
        "title": "MIDI Show Control and MIDI note (command formats, commands, cue encoding)",
        "url": "https://blog.etcconnect.com/2017/03/midi-show-control-midi-note",
        "publisher": "Electronic Theatre Controls",
        "accessed": "2026-08-16"
      },
      {
        "title": "Cognito Console — MIDI Show Control",
        "url": "https://www.citytheatrical.com/docs/default-source/pathway/pwcog-cognito-console-midi-show-control.pdf",
        "publisher": "Pathway Connectivity / City Theatrical",
        "accessed": "2026-08-16"
      },
      {
        "title": "MIDI Show Control — ratification dates",
        "url": "https://en.wikipedia.org/wiki/MIDI_Show_Control",
        "publisher": "Wikipedia",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "bome-midi-translator",
        "name": "Bome MIDI Translator Pro",
        "vendor": "Bome Software",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MSC messages can be constructed and parsed."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "in",
        "requires_licence": true,
        "confidence": "reported",
        "note": "Listed as Show control alongside MIDI notes and CC in the Unlocked-mode feature list."
      },
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "dot2-onpc",
        "name": "dot2 onPC",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MSC input to control executors, and MSC output to control other devices."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Local MIDI connections on Eos Ti and Gio; Gio @5 and Ion Xe use USB; other consoles need a Net3 Show Control Gateway."
      },
      {
        "kind": "software",
        "id": "isadora",
        "name": "Isadora",
        "vendor": "TroikaTronix (Mark Coniglio)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MSC listed on the specifications page; the show-control page describes triggering cues from external software or hardware over MSC."
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MSC in and out."
      },
      {
        "kind": "software",
        "id": "midi-ox",
        "name": "MIDI-OX",
        "vendor": null,
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Generic real-time MIDI monitor; will show raw MSC SysEx bytes on the wire but has no dedicated MSC command decoder."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MSC GO with no Q-number advances to the next column or plays the timeline; GO with a Q-number launches the Nth column; GO with Q-number plus Q-list selects the board; STOP stops or pauses."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "in",
        "requires_licence": true,
        "confidence": "reported",
        "note": "MSC format and device ID are set in I/O settings. Gated behind the same tier as MIDI and timecode."
      },
      {
        "kind": "software",
        "id": "protokol",
        "name": "Protokol",
        "vendor": "Hexler",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Generic MIDI monitor; would display raw MSC SysEx bytes but is not a dedicated MSC decoder."
      },
      {
        "kind": "software",
        "id": "qlab",
        "name": "QLab",
        "vendor": "Figure 53",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "show-cue-system",
        "name": "Show Cue System (SCS)",
        "vendor": "Show Cue Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MSC in and out."
      },
      {
        "kind": "software",
        "id": "watchout",
        "name": "WATCHOUT",
        "vendor": "Dataton",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "7thsense-delta",
        "name": "7thSense Delta Media Server",
        "vendor": "7thSense",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MSC for show control integration."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MSC in and out."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MSC in and out."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "eos-apex-5",
        "name": "Eos Apex 5",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Available on the console's own MIDI ports or through a Gateway."
      },
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MSC."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MSC in and out."
      },
      {
        "kind": "hardware",
        "id": "hog-4",
        "name": "Hog 4",
        "vendor": "High End Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "medialon-showmaster-pro",
        "name": "Medialon Showmaster Pro",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MSC."
      }
    ],
    "flow": "control"
  },
  {
    "id": "midi",
    "name": "MIDI 1.0",
    "aka": [
      "Musical Instrument Digital Interface"
    ],
    "category": "audio-control",
    "summary": "The original 1983 serial protocol for exchanging musical performance data (notes, control/program changes, sysex) between instruments, controllers, consoles, and show-control gear; the base layer that MIDI Show Control and MIDI Time Code both ride on top of.",
    "transport": [
      "midi-din"
    ],
    "openness": "open-free-registration",
    "spec_url": {
      "url": "https://www.midi.org/specifications/midi1-specifications/m1-v4-2-1-midi-1-0-detailed-specification-96-1-4"
    },
    "steward": "MIDI Association (MMA/AMEI)",
    "status": "current",
    "gotchas": [
      "Classic 5-pin DIN MIDI runs at 31,250 baud (8-N-1 async serial) and is one-way per cable; most modern rigs tunnel MIDI over USB or Bluetooth LE instead of DIN.",
      "MIDI Show Control and MIDI Time Code are message subprofiles of MIDI 1.0, not separate wire protocols, which confuses people troubleshooting compatibility.",
      "Only 16 channels per port/cable, which limits large-scale device addressing without merge/split boxes or additional interfaces."
    ],
    "implementations": [
      {
        "name": "RtMidi",
        "url": "https://github.com/thestk/rtmidi",
        "language": "C++"
      }
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "MIDI 1.0 Detailed Specification - MIDI Association",
        "url": "https://www.midi.org/specifications/midi1-specifications/m1-v4-2-1-midi-1-0-detailed-specification-96-1-4",
        "primary": true
      },
      {
        "title": "MIDI - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/MIDI"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "ableton-live",
        "name": "Ableton Live",
        "vendor": "Ableton AG",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MIDI in and out for control surfaces and instruments. MIDI Clock can be sent to an external sequencer or received to slave Live, set per port with the Sync switch in Link/Tempo/MIDI preferences."
      },
      {
        "kind": "software",
        "id": "ardour",
        "name": "Ardour",
        "vendor": "Ardour Community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control and machine control."
      },
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control."
      },
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MIDI is one of the external trigger types and is not available on every console; USB MIDI devices are supported for triggering and control."
      },
      {
        "kind": "software",
        "id": "bome-midi-translator",
        "name": "Bome MIDI Translator Pro",
        "vendor": "Bome Software",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "MIDI notes and CC from third-party USB or virtual interfaces require Unlocked mode."
      },
      {
        "kind": "software",
        "id": "daslight",
        "name": "Daslight",
        "vendor": "Daslight (Nicolaudie)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI triggering."
      },
      {
        "kind": "software",
        "id": "depence",
        "name": "Depence",
        "vendor": "Syncronorm GmbH",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Listed among Depence's documented show-control integration protocols."
      },
      {
        "kind": "software",
        "id": "dmxcontrol-3",
        "name": "DMXControl 3",
        "vendor": "DMXControl Projects e.V.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI triggering."
      },
      {
        "kind": "software",
        "id": "dot2-onpc",
        "name": "dot2 onPC",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MIDI note remote input, and MIDI note output from cues or the command line. On onPC you must choose the MIDI in and out devices yourself in Tools > MIDI Configuration."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Raw MIDI can be sent and received. MIDI notes are output only, and cannot be received by a Net3 Show Control Gateway."
      },
      {
        "kind": "software",
        "id": "go-button",
        "name": "Go Button",
        "vendor": "Figure 53",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI triggering over a network or interface."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MultiController maps MIDI controllers (and Stream Deck) to Hippotizer pins. Feedback capability is referenced but not documented in detail, so outbound MIDI is unconfirmed."
      },
      {
        "kind": "software",
        "id": "isadora",
        "name": "Isadora",
        "vendor": "TroikaTronix (Mark Coniglio)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MIDI input and output listed on the specifications page."
      },
      {
        "kind": "software",
        "id": "lightkey",
        "name": "Lightkey",
        "vendor": "Lightkey",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI triggering from surfaces."
      },
      {
        "kind": "software",
        "id": "max-msp",
        "name": "Max",
        "vendor": "Cycling '74",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core to Max since the beginning."
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MIDI sources and destinations are enabled individually in the Devices tab; inputs can send feedback back to the controller (e.g. motorised faders)."
      },
      {
        "kind": "software",
        "id": "mitti",
        "name": "Mitti",
        "vendor": "Imimot",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI triggering."
      },
      {
        "kind": "software",
        "id": "mixing-station",
        "name": "Mixing Station",
        "vendor": "David Giga",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI control where the console supports it."
      },
      {
        "kind": "software",
        "id": "modul8",
        "name": "Modul8",
        "vendor": "GarageCUBE",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control from surfaces."
      },
      {
        "kind": "software",
        "id": "multiplay",
        "name": "Multiplay",
        "vendor": "Da-Share",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI triggering."
      },
      {
        "kind": "software",
        "id": "node-red",
        "name": "Node-RED",
        "vendor": "OpenJS Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via community nodes."
      },
      {
        "kind": "software",
        "id": "notch",
        "name": "Notch",
        "vendor": "Notch (10bit FX Limited)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Vendor features page states MIDI input and output."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "MIDI notes and commands trigger Go, Pause, Release, Flash and similar. ONYX does not generate MIDI messages, it only passes them along. Fully enabled from the NOVA+ tier."
      },
      {
        "kind": "software",
        "id": "open-stage-control",
        "name": "Open Stage Control",
        "vendor": "Jean-Emmanuel Doucet",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core."
      },
      {
        "kind": "software",
        "id": "openframeworks",
        "name": "openFrameworks",
        "vendor": "openFrameworks community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core addon."
      },
      {
        "kind": "software",
        "id": "processing",
        "name": "Processing",
        "vendor": "Processing Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Through libraries."
      },
      {
        "kind": "software",
        "id": "propresenter",
        "name": "ProPresenter",
        "vendor": "Renewed Vision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI triggering."
      },
      {
        "kind": "software",
        "id": "provideoplayer",
        "name": "ProVideoPlayer (PVP)",
        "vendor": "Renewed Vision",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI triggering."
      },
      {
        "kind": "software",
        "id": "pure-data",
        "name": "Pure Data",
        "vendor": "Miller Puckette and contributors",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Built in."
      },
      {
        "kind": "software",
        "id": "reaper",
        "name": "REAPER",
        "vendor": "Cockos Incorporated",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI in and out for control surfaces and MIDI learn on parameters; MIDI clock is enabled per output device in Preferences > Audio > MIDI Devices."
      },
      {
        "kind": "software",
        "id": "show-cue-system",
        "name": "Show Cue System (SCS)",
        "vendor": "Show Cue Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI triggering and output."
      },
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control."
      },
      {
        "kind": "software",
        "id": "touchosc",
        "name": "TouchOSC",
        "vendor": "Hexler",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core."
      },
      {
        "kind": "software",
        "id": "ventuz",
        "name": "Ventuz",
        "vendor": "Ventuz Technology",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI control."
      },
      {
        "kind": "software",
        "id": "vvvv",
        "name": "vvvv",
        "vendor": "vvvv group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Standard nodes."
      },
      {
        "kind": "hardware",
        "id": "alcorn-mcbride-binloop-hd",
        "name": "Alcorn McBride A/V Binloop HD",
        "vendor": "Alcorn McBride",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-avantis",
        "name": "Allen & Heath Avantis",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-dlive-s7000",
        "name": "Allen & Heath dLive S7000",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control and scene recall."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-sq-6",
        "name": "Allen & Heath SQ-6",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI over DIN and USB."
      },
      {
        "kind": "hardware",
        "id": "analog-way-picturall-mk2",
        "name": "Analog Way Picturall Mark II",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI control."
      },
      {
        "kind": "hardware",
        "id": "avid-venue-s6l-32d",
        "name": "Avid VENUE S6L-32D",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI for snapshot and external control."
      },
      {
        "kind": "hardware",
        "id": "avolites-arena",
        "name": "Avolites Arena",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Notes and MSC."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI and MIDI timecode over DIN."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI over DIN."
      },
      {
        "kind": "hardware",
        "id": "behringer-x32",
        "name": "Behringer X32",
        "vendor": "Behringer",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI in and out over DIN."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI notes and MSC over the DIN ports."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI in and out."
      },
      {
        "kind": "hardware",
        "id": "crestron-cp4n",
        "name": "Crestron CP4N Control System",
        "vendor": "Crestron",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through modules."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI for snapshot triggering and external control."
      },
      {
        "kind": "hardware",
        "id": "digico-sd12",
        "name": "DiGiCo SD12",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI notes and MSC."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI notes, MIDI timecode and MSC."
      },
      {
        "kind": "hardware",
        "id": "medialon-showmaster-pro",
        "name": "Medialon Showmaster Pro",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "midas-hd96-24",
        "name": "Midas HD96-24",
        "vendor": "Midas",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI and MSC."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control."
      },
      {
        "kind": "hardware",
        "id": "ssl-live-l550",
        "name": "SSL Live L550",
        "vendor": "Solid State Logic",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "yamaha-cl5",
        "name": "Yamaha CL5",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control and scene recall."
      },
      {
        "kind": "hardware",
        "id": "yamaha-dm7",
        "name": "Yamaha DM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rivage-pm7",
        "name": "Yamaha RIVAGE PM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI control and scene recall."
      },
      {
        "kind": "hardware",
        "id": "zero88-flx-s48",
        "name": "Zero 88 FLX S48",
        "vendor": "Zero 88",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI in and out."
      }
    ],
    "flow": "control"
  },
  {
    "id": "modbus-tcp",
    "name": "Modbus TCP",
    "aka": [
      "Modbus TCP/IP",
      "MODBUS/TCP",
      "Modbus over Ethernet"
    ],
    "category": "machinery-motion",
    "summary": "The Modbus application protocol wrapped in a seven byte MBAP header and sent over TCP port 502, a plain register read and write protocol with no session and no security. In entertainment it is how show control talks to stage machinery PLCs, hoists, HVAC, house lights and building systems.",
    "transport": [
      "tcp"
    ],
    "default_ports": [
      {
        "number": 502,
        "transport": "tcp",
        "role": "MODBUS/TCP application data units",
        "iana_registered": true,
        "note": "The implementation guide states that all MODBUS/TCP ADUs are sent to registered port 502."
      }
    ],
    "multicast": {
      "used": false,
      "note": "Modbus TCP is a unicast client/server protocol. There is no discovery, no announcement and no multicast."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://www.modbus.org/file/secure/messagingimplementationguide.pdf",
      "label": "MODBUS Messaging on TCP/IP Implementation Guide V1.0b"
    },
    "steward": "Modbus Organization",
    "status": "current",
    "typical_use": [
      "Show control to stage machinery and winch control PLCs",
      "Reading limit switches, e-stop state and drive faults into a show system",
      "Building integration for HVAC, house lights, motorised drapes and doors",
      "Power and energy monitoring gear in racks and distros"
    ],
    "gotchas": [
      "Register numbering is the classic error. Vendor documentation usually uses 1-based reference numbers like 40001, while the wire protocol uses 0-based addresses, so 40001 on paper is address 0 in the packet.",
      "There is no authentication and no encryption on port 502. Anything that can reach it can command the machine. A TLS variant exists (Modbus/TCP Security, registered on TCP 802) but field devices rarely implement it, so the answer is still a dedicated VLAN with no route off it.",
      "The standard only defines 16-bit registers. Word order for 32-bit floats and integers is entirely up to the vendor, so the same value can appear as nonsense until you swap the two registers.",
      "The unit identifier is typically 0xFF for a native TCP/IP device but is significant when you are talking through a serial gateway. Send 0xFF into a gateway and you are addressing nothing.",
      "Many devices accept only a small number of simultaneous TCP connections. A second polling client, or a reconnect before the old socket has timed out, can lock the first one out with no error message anywhere.",
      "Modbus has no concept of \"the machine is moving\". It is a poll and answer protocol, so safety interlocks must live in the PLC, never in the show control cue that reads the registers."
    ],
    "implementations": [
      {
        "name": "libmodbus",
        "url": "https://github.com/stephane/libmodbus",
        "language": "C",
        "license": "LGPL-2.1-or-later",
        "role": "both"
      },
      {
        "name": "pymodbus",
        "url": "https://github.com/pymodbus-dev/pymodbus",
        "language": "Python",
        "license": "BSD-3-Clause",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "machinery",
      "plc",
      "industrial",
      "building-integration"
    ],
    "sources": [
      {
        "title": "MODBUS Messaging on TCP/IP Implementation Guide V1.0b",
        "url": "https://www.modbus.org/file/secure/messagingimplementationguide.pdf",
        "publisher": "Modbus Organization",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "MODBUS/TCP Security Protocol Specification (TLS on registered port 802)",
        "url": "https://www.modbus.org/file/secure/modbussecurityprotocol.pdf",
        "publisher": "Modbus Organization",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "codesys",
        "name": "CODESYS",
        "vendor": "CODESYS Group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Standard."
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Modbus for building and ride systems."
      },
      {
        "kind": "software",
        "id": "twincat",
        "name": "TwinCAT",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via supplementary functions."
      },
      {
        "kind": "hardware",
        "id": "beckhoff-cx5140",
        "name": "Beckhoff CX5140 Embedded PC",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Supplementary."
      }
    ],
    "flow": "control"
  },
  {
    "id": "mqtt",
    "name": "MQTT",
    "aka": [
      "MQ Telemetry Transport"
    ],
    "category": "device-management",
    "status": "current",
    "openness": "open-published",
    "transport": [
      "tcp",
      "websocket"
    ],
    "summary": "Publish and subscribe messaging designed for unreliable links and small devices. Nothing talks to anything directly: publishers send to a topic on a broker and subscribers ask the broker for topics they care about, which decouples every device from every other. The default plumbing of connected-device work, and increasingly of show integration glue.",
    "default_ports": [
      {
        "number": 1883,
        "transport": "tcp",
        "role": "MQTT, unencrypted",
        "iana_registered": true
      },
      {
        "number": 8883,
        "transport": "tcp",
        "role": "MQTT over TLS",
        "iana_registered": true
      }
    ],
    "multicast": {
      "used": false,
      "note": "Fan-out happens at the broker, not on the network. One publish becomes many unicast deliveries."
    },
    "spec_url": {
      "url": "https://mqtt.org/",
      "label": "MQTT specification"
    },
    "steward": "OASIS",
    "first_published": 1999,
    "typical_use": [
      "Sensors, environmental monitoring and building systems reporting into a show or an installation.",
      "Glue between show control and things that were never designed to be on a show network.",
      "Status and telemetry from devices where a dropped message is survivable."
    ],
    "gotchas": [
      "The broker is a single point of failure and a single point of latency. Run it locally for anything a cue depends on.",
      "Quality-of-service levels 0, 1 and 2 buy delivery guarantees at the cost of round trips. QoS 2 is rarely worth it on a LAN.",
      "Retained messages mean a subscriber can receive a value published hours ago as though it were new. That surprises people exactly once.",
      "Topic naming is a design decision with no standard. Agree the tree before anybody publishes to it."
    ],
    "tags": [
      "iot",
      "messaging",
      "pubsub",
      "integration"
    ],
    "sources": [
      {
        "title": "MQTT",
        "url": "https://mqtt.org/",
        "publisher": "OASIS",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "verified",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [
      {
        "kind": "software",
        "id": "home-assistant",
        "name": "Home Assistant",
        "vendor": "Open Home Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "First-class."
      },
      {
        "kind": "software",
        "id": "node-red",
        "name": "Node-RED",
        "vendor": "OpenJS Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "First-class, and the reason many people install it."
      }
    ],
    "flow": "management",
    "flow_note": "A message broker. In a venue it carries telemetry and status far more often than anything with a deadline."
  },
  {
    "id": "mtc",
    "name": "MIDI Timecode",
    "aka": [
      "MTC",
      "MIDI Time Code"
    ],
    "category": "timecode-sync",
    "summary": "Carries SMPTE-style hours, minutes, seconds and frames over a MIDI connection, as quarter-frame messages while running and a full-frame sysex when locating. It is how a DAW, playback machine or console chases a master clock without giving up an audio channel.",
    "transport": [
      "midi-din",
      "usb"
    ],
    "multicast": {
      "used": false
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://midi.org/midi-time-code",
      "label": "RP-004/RP-008 MIDI Time Code specification v4.2.1"
    },
    "steward": "The MIDI Association (MIDI Manufacturers Association)",
    "status": "current",
    "typical_use": [
      "Locking a DAW or playback rig to a lighting or video master clock",
      "Chasing QLab and a lighting console to one timeline",
      "Distributing position to devices that have MIDI but no audio input",
      "Driving a timecode-triggered cue stack from a backing track machine"
    ],
    "gotchas": [
      "Quarter-frame messages carry one nibble at a time, four per frame, so a complete timecode value takes two frames to arrive. Every MTC reader is inherently one to two frames behind. Compensate in the receiver, do not nudge the master.",
      "The frame rate lives in bits 5-6 of the hours byte and encodes only 24, 25, 30 drop-frame and 30. There is no 23.976, 48, 50 or 60 value, so a 23.98 project has to travel as 24 and be reconciled at the far end.",
      "The full-frame sysex F0 7F cc 01 01 hr mn sc fr F7 only locates the receiver. Nothing actually runs until quarter-frames start arriving, which is why a device can display the correct time and still not be chasing.",
      "A receiver that ignores the frame-rate bits will run 25 fps code as 30 and drift by a fifth. The numbers look sane the whole time, which is what makes it expensive to spot.",
      "Quarter-frames are continuous traffic on a 31.25 kbit/s DIN line. Share that cable with MSC and your cue messages queue behind the clock.",
      "Only the low nibble of each user-bit data byte is used in the user-bits sysex. Converters that repack user bits between LTC and MTC routinely lose or reorder them."
    ],
    "confidence": "reported",
    "tags": [
      "timecode",
      "midi",
      "sync"
    ],
    "sources": [
      {
        "title": "MIDI Time Code — RP-004-008 v4.2.1 specification",
        "url": "https://midi.org/midi-time-code",
        "publisher": "The MIDI Association",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "MIDI Time Code (quarter-frame nibble order, full message, frame-rate bits, user bits)",
        "url": "https://electronics.koncon.nl/wp-content/uploads/2022/04/MIDI-Time-Code.pdf",
        "publisher": "Koninklijk Conservatorium Den Haag (course copy)",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "ableton-live",
        "name": "Ableton Live",
        "vendor": "Ableton AG",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Live slaves to MTC and reads it as an Arrangement position, with MIDI Timecode Frame Rate and Offset settings. Ableton state Live can only act as a MIDI sync device, not a host; MTC carries no tempo and tempo changes cannot be tracked."
      },
      {
        "kind": "software",
        "id": "ardour",
        "name": "Ardour",
        "vendor": "Ardour Community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI timecode in and out."
      },
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "A cue list can read timecode from the system clock, an internal timecode source, MIDI, SMPTE or the Winamp player. Up to 4 separate timecode sources per console."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "MIDI timecode receive is part of the same Unlocked-mode timecode feature set."
      },
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "dot2-onpc",
        "name": "dot2 onPC",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MIDI timecode can run cues automatically. Receiving timecode does not require a network session."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MIDI timecode is receive only, locally or via a Show Control Gateway."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Sync Manager receives MTC via the Rosendahl Mif4 or CB Electronics TC-5 USB interfaces."
      },
      {
        "kind": "software",
        "id": "isadora",
        "name": "Isadora",
        "vendor": "TroikaTronix (Mark Coniglio)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Specifications page states MIDI Timecode support and the show-control page lists MTC for synchronisation; the docs do not state that Isadora also generates MTC."
      },
      {
        "kind": "software",
        "id": "midi-monitor-snoize",
        "name": "MIDI Monitor",
        "vendor": "Snoize",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Generic real-time MIDI monitor; captures MIDI Time Code quarter-frame/real-time messages along with all other MIDI data, but has no dedicated MTC decoder view."
      },
      {
        "kind": "software",
        "id": "midi-ox",
        "name": "MIDI-OX",
        "vendor": null,
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Recommended on ControlBooth (theatre-tech forum) by author John Huntington for displaying MIDI Time Code readouts."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MTC over MIDI, same framerate list as LTC."
      },
      {
        "kind": "software",
        "id": "mitti",
        "name": "Mitti",
        "vendor": "Imimot",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI timecode chase."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "MIDI timecode via MIDI ports or the SMPTE IN connector. Only fully enabled from the NOVA+ tier."
      },
      {
        "kind": "software",
        "id": "pro-tools",
        "name": "Pro Tools",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI timecode in and out."
      },
      {
        "kind": "software",
        "id": "qlab",
        "name": "QLab",
        "vendor": "Figure 53",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Can both generate and chase MIDI timecode."
      },
      {
        "kind": "software",
        "id": "reaper",
        "name": "REAPER",
        "vendor": "Cockos Incorporated",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Chases MTC via the external timecode synchronization settings against an enabled MIDI input; generates MTC from the stock SMPTE LTC/MTC Timecode Generator."
      },
      {
        "kind": "software",
        "id": "timecodedisplay",
        "name": "TimecodeDisplay",
        "vendor": "Figure53",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Listens to and displays incoming MIDI Time Code."
      },
      {
        "kind": "hardware",
        "id": "brainstorm-dxd-8",
        "name": "Brainstorm DXD-8 Distripalyzer",
        "vendor": "Brainstorm Electronics",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI timecode output."
      },
      {
        "kind": "hardware",
        "id": "chamsys-magicq-mq80",
        "name": "ChamSys MagicQ MQ80",
        "vendor": "ChamSys",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI timecode."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI timecode in."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "eos-apex-5",
        "name": "Eos Apex 5",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Receive only, from local MIDI or a Gateway."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI timecode in."
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "MIDI timecode."
      },
      {
        "kind": "hardware",
        "id": "hippotizer-boreal-plus-mk2",
        "name": "Hippotizer Boreal+ MK2",
        "vendor": "Green Hippo",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Timecode-driven playback."
      },
      {
        "kind": "hardware",
        "id": "hog-4",
        "name": "Hog 4",
        "vendor": "High End Systems",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "rosendahl-nanosyncs-hd",
        "name": "Rosendahl nanosyncs HD",
        "vendor": "Rosendahl Studiotechnik",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI timecode output."
      }
    ],
    "flow": "clock"
  },
  {
    "id": "ndi",
    "name": "NDI",
    "aka": [
      "Network Device Interface",
      "NDI HX"
    ],
    "category": "video-transport",
    "summary": "Vizrt's video-over-IP protocol carrying compressed video, audio and metadata between applications and devices on an ordinary ethernet LAN. It is how graphics machines, capture software, PTZ cameras and switchers move pictures around a venue without pulling SDI.",
    "transport": [
      "tcp",
      "udp"
    ],
    "default_ports": [
      {
        "number": 5353,
        "transport": "udp",
        "role": "mDNS discovery",
        "note": "Always used for multicast discovery sending."
      },
      {
        "number": 5959,
        "transport": "tcp",
        "role": "NDI Discovery Server",
        "note": "Optional centralised alternative to mDNS, for when sources must cross subnets."
      },
      {
        "number": 5960,
        "transport": "tcp",
        "role": "Remote source query and enumeration on a machine",
        "note": "NDI 5 and later also use a small number of UDP ports from 5960 up for Reliable UDP."
      },
      {
        "number": 5961,
        "transport": "tcp",
        "role": "Base of the per-stream TCP connections",
        "note": "One port per NDI stream from 5961 upward. Additional ports from 6960 up (multi-TCP or UDP receiving) and 7960 up (multi-TCP, unicast UDP or multicast UDP sending) are used per connection."
      }
    ],
    "multicast": {
      "used": true,
      "note": "NDI is unicast by default. Multicast sending is optional and uses ports from 7960 up, and mDNS discovery on 5353 is multicast regardless. Do not enable multicast NDI on a switch without IGMP snooping and a querier."
    },
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://docs.ndi.video/",
      "label": "NDI documentation and SDK (free, royalty-free proprietary licence)"
    },
    "steward": "Vizrt (NDI AB), originally NewTek",
    "first_published": 2015,
    "status": "current",
    "typical_use": [
      "Playback, graphics and capture software feeding a switcher over the house LAN",
      "PTZ cameras and encoders delivering to production software",
      "Screen and program feeds between control room machines",
      "Monitoring and multiviewer feeds without extra SDI infrastructure"
    ],
    "media": {
      "video": {
        "colour_sampling": [
          "4:2:2",
          "4:2:0"
        ],
        "bit_depths": [
          8,
          10
        ],
        "compression": "Visually lossless (NDI High Bandwidth) or H.264/H.265 (NDI HX)",
        "note": "NDI caps neither resolution nor frame rate; 3840x2160 is where most hardware decoders stop and software goes past it. The two families are very different things sharing one name: High Bandwidth is lightly compressed at 100 to 250 Mbit/s with low latency, HX is long-GOP at a fraction of that and correspondingly more delay."
      },
      "audio": {
        "sample_rates_khz": [
          48
        ],
        "bit_depths": [
          16,
          32
        ],
        "encoding": "Floating point or 16-bit PCM, carried with the video",
        "note": "Audio and video travel together, unlike ST 2110 where they are separate essences."
      }
    },
    "gotchas": [
      "Discovery is mDNS, which is link-local. NDI sources do not appear across a router. If you need cross-subnet sources you must run the NDI Discovery Server on TCP 5959 and point every device at it explicitly.",
      "Opening only 5960 and 5961 in a firewall gets you discovery and no video. Each connection also grabs ports from the 6960 and 7960 blocks, so the rule has to cover those ranges.",
      "NDI HX is a different thing to full NDI. It is hardware H.264 or HEVC, much lower bitrate and noticeably more latency, and it is what most cheap PTZ cameras actually send.",
      "Full-bandwidth NDI is roughly 100 Mbit/s for 1080i per stream. A gigabit uplink shared with anything else runs out faster than people expect, and NDI degrades by dropping frames rather than by failing cleanly.",
      "The SDK is royalty-free but proprietary, and the licence requires visible NDI attribution in your application. There is no published wire format, so every implementation goes through Vizrt's binary SDK."
    ],
    "implementations": [
      {
        "name": "DistroAV (formerly obs-ndi)",
        "url": "https://github.com/DistroAV/DistroAV",
        "language": "C++",
        "license": "GPL-2.0-or-later",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "video",
      "video-over-ip",
      "vizrt",
      "mdns"
    ],
    "sources": [
      {
        "title": "NDI Related Network Ports",
        "url": "https://docs.ndi.video/all/getting-started/white-paper/ndi-related-network-ports",
        "publisher": "Vizrt / NDI",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "NDI SDK Licensing",
        "url": "https://docs.ndi.video/all/developing-with-ndi/sdk/licensing",
        "publisher": "Vizrt / NDI",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Network Device Interface (announcement date, NDI HX, NDI Bridge)",
        "url": "https://en.wikipedia.org/wiki/Network_Device_Interface",
        "publisher": "Wikipedia",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI in and out."
      },
      {
        "kind": "software",
        "id": "casparcg",
        "name": "CasparCG Server",
        "vendor": "CasparCG project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI consumer and producer are both present in the shipped configuration."
      },
      {
        "kind": "software",
        "id": "depence",
        "name": "Depence",
        "vendor": "Syncronorm GmbH",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "NewTek/Vizrt NDI listed as a supported input on Syncronorm's system-integration page."
      },
      {
        "kind": "software",
        "id": "grandma3-onpc",
        "name": "grandMA3 onPC",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "heavym",
        "name": "HeavyM",
        "vendor": "HeavyM",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on version."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "NDI can be received on a layer, and each Mix can send an NDI feed at a configurable resolution and framerate, optionally with alpha. Docs warn NDI sending costs real GPU/CPU load above HD."
      },
      {
        "kind": "software",
        "id": "isadora",
        "name": "Isadora",
        "vendor": "TroikaTronix (Mark Coniglio)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Input via the NDI Watcher actor (integrated from Isadora 4, a downloaded add-on actor before that); output is configured in Stage Setup. Syphon (macOS) and Spout (Windows) cover local texture sharing."
      },
      {
        "kind": "software",
        "id": "l8",
        "name": "L8",
        "vendor": "L8 LLC",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "NDI texture input documented on the Unlimited edition."
      },
      {
        "kind": "software",
        "id": "madmapper",
        "name": "MadMapper",
        "vendor": "garageCube",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": null
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "NDI streams can be used as a layer source, and outputs can be sent as NDI with or without alpha, plus audio."
      },
      {
        "kind": "software",
        "id": "mitti",
        "name": "Mitti",
        "vendor": "Imimot",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI output and input."
      },
      {
        "kind": "software",
        "id": "modul8",
        "name": "Modul8",
        "vendor": "GarageCUBE",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "NDI in and out."
      },
      {
        "kind": "software",
        "id": "obs-studio",
        "name": "OBS Studio",
        "vendor": "OBS Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI send and receive via the NDI plugin, not in the base install."
      },
      {
        "kind": "software",
        "id": "openframeworks",
        "name": "openFrameworks",
        "vendor": "openFrameworks community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through addons."
      },
      {
        "kind": "software",
        "id": "pixera",
        "name": "PIXERA",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Video over IP."
      },
      {
        "kind": "software",
        "id": "propresenter",
        "name": "ProPresenter",
        "vendor": "Renewed Vision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI in and out."
      },
      {
        "kind": "software",
        "id": "provideoplayer",
        "name": "ProVideoPlayer (PVP)",
        "vendor": "Renewed Vision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI in and out."
      },
      {
        "kind": "software",
        "id": "resolume-arena",
        "name": "Resolume Arena",
        "vendor": "Resolume",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI send and receive."
      },
      {
        "kind": "software",
        "id": "stage-precision",
        "name": "Stage Precision",
        "vendor": "Stage Precision",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "NDI input for camera and video sources."
      },
      {
        "kind": "software",
        "id": "touchdesigner",
        "name": "TouchDesigner",
        "vendor": "Derivative",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "unity",
        "name": "Unity",
        "vendor": "Unity Technologies",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Through vendor plug-ins."
      },
      {
        "kind": "software",
        "id": "unreal-engine",
        "name": "Unreal Engine",
        "vendor": "Epic Games",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "NDI via plugin."
      },
      {
        "kind": "software",
        "id": "ventuz",
        "name": "Ventuz",
        "vendor": "Ventuz Technology",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI send and receive."
      },
      {
        "kind": "software",
        "id": "vmix",
        "name": "vMix",
        "vendor": "StudioCoast",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core."
      },
      {
        "kind": "software",
        "id": "watchout",
        "name": "WATCHOUT",
        "vendor": "Dataton",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI sources can be used as video inputs."
      },
      {
        "kind": "hardware",
        "id": "7thsense-delta",
        "name": "7thSense Delta Media Server",
        "vendor": "7thSense",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "NDI output on suitably configured systems."
      },
      {
        "kind": "hardware",
        "id": "analog-way-alta-4k",
        "name": "Analog Way Alta 4K",
        "vendor": "Analog Way",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on option."
      },
      {
        "kind": "hardware",
        "id": "analog-way-picturall-mk2",
        "name": "Analog Way Picturall Mark II",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI input."
      },
      {
        "kind": "hardware",
        "id": "avolites-ai-q3",
        "name": "Avolites Ai Q3",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Video over IP."
      },
      {
        "kind": "hardware",
        "id": "blackmagic-atem-4me-constellation-hd",
        "name": "Blackmagic ATEM 4 M/E Constellation HD",
        "vendor": "Blackmagic Design",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "NDI via separate Blackmagic conversion, not native."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI in and out."
      },
      {
        "kind": "hardware",
        "id": "disguise-vx-4",
        "name": "disguise vx 4",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI capture and output are part of the Designer feature set."
      },
      {
        "kind": "hardware",
        "id": "grandma3-full-size",
        "name": "grandMA3 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "green-hippo-karst-plus",
        "name": "Green Hippo Hippotizer Karst+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Video over IP."
      },
      {
        "kind": "hardware",
        "id": "hippotizer-boreal-plus-mk2",
        "name": "Hippotizer Boreal+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI input and output are part of Hippotizer V4."
      },
      {
        "kind": "hardware",
        "id": "megapixel-helios",
        "name": "Megapixel HELIOS LED Processing Platform",
        "vendor": "Megapixel VR",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Video over IP."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI input and output."
      },
      {
        "kind": "hardware",
        "id": "netgear-m4250",
        "name": "NETGEAR M4250 (AV Line)",
        "vendor": "NETGEAR",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, AV profile available for NDI's bursty streams."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "NDI send and receive."
      }
    ],
    "flow": "media"
  },
  {
    "id": "nmea-0183",
    "name": "NMEA 0183",
    "aka": [
      "NMEA",
      "GPS sentences"
    ],
    "category": "tracking-position",
    "summary": "The plain-text sentence format a GNSS receiver speaks. Lines of comma-separated ASCII beginning with a dollar sign carry position, fix quality, satellite count, speed and — the field that matters most on a show site — UTC time. It is the reason a GNSS antenna is usually feeding a master clock rather than a map.",
    "transport": [
      "rs232",
      "usb",
      "udp"
    ],
    "multicast": {
      "used": false
    },
    "openness": "published-paid",
    "steward": "National Marine Electronics Association",
    "status": "current",
    "typical_use": [
      "A GNSS receiver disciplining a master clock or timecode generator, usually alongside a one-pulse-per-second hardware output.",
      "Position and heading for tracking, survey and outdoor installation work.",
      "Time of day for systems with no network path to an NTP server."
    ],
    "gotchas": [
      "The sentences carry time, but the precise timing comes from the receiver's 1PPS hardware output, not from the serial data. Reading time from the text alone gives you tens of milliseconds of uncertainty at best.",
      "GNSS time and UTC differ by a whole number of leap seconds, and receivers report this differently. Check which one a device is giving you before trusting it.",
      "It needs sky. Indoors, or hemmed in by structures, a receiver either gets no fix or gets one built from reflections — which is worse, because it looks like a fix.",
      "NMEA 2000 is a completely different thing: a CAN-based binary bus, not this."
    ],
    "tags": [
      "gnss",
      "gps",
      "time",
      "position",
      "serial"
    ],
    "sources": [
      {
        "title": "NMEA 0183 Interface Standard",
        "url": "https://www.nmea.org/nmea-0183.html",
        "publisher": "National Marine Electronics Association",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "evertz-5601msc",
        "name": "Evertz 5601MSC Master Sync and Clock",
        "vendor": "Evertz",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "GNSS discipline."
      }
    ],
    "flow": "control"
  },
  {
    "id": "nmos",
    "name": "AMWA NMOS",
    "aka": [
      "IS-04",
      "IS-05",
      "Networked Media Open Specifications"
    ],
    "category": "video-control",
    "openness": "open-published",
    "first_published": 2016,
    "status": "current",
    "summary": "The discovery and connection layer that makes SMPTE ST 2110 usable. IS-04 lets devices register and be found; IS-05 does the actual connection management, telling a receiver which sender to listen to. Without it, a 2110 plant is hand-edited SDP files.",
    "transport": [
      "http",
      "websocket",
      "udp"
    ],
    "default_ports": [
      {
        "number": 80,
        "transport": "tcp",
        "role": "IS-04/IS-05 HTTP APIs on the device (port is deployment-dependent)",
        "iana_registered": false
      }
    ],
    "spec_url": {
      "url": "https://specs.amwa.tv/nmos/",
      "label": "AMWA NMOS specifications"
    },
    "steward": "Advanced Media Workflow Association (AMWA)",
    "standards": [
      "smpte-st-2110-10"
    ],
    "typical_use": [
      "Discovering senders and receivers in an ST 2110 plant",
      "Making a connection from a broadcast controller",
      "Registering device capabilities on a media network"
    ],
    "gotchas": [
      "NMOS is not one thing. IS-04 (discovery), IS-05 (connection), IS-08 (audio channel mapping) and others are separate specifications, and \"NMOS support\" without a list of IS numbers means very little.",
      "Registry-based and peer-to-peer discovery both exist. A device configured for one will not appear to a controller expecting the other.",
      "It carries no media. Every NMOS problem is a control-plane problem, and the ST 2110 essence flows are unaffected by it - which is why a plant can be \"working\" and completely unroutable."
    ],
    "confidence": "reported",
    "tags": [
      "nmos",
      "st2110",
      "broadcast",
      "discovery",
      "ip-video"
    ],
    "sources": [
      {
        "title": "AMWA NMOS specifications",
        "url": "https://specs.amwa.tv/nmos/",
        "publisher": "AMWA",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "ntp",
    "name": "NTP",
    "aka": [
      "Network Time Protocol",
      "NTPv4",
      "SNTP"
    ],
    "category": "timecode-sync",
    "summary": "The protocol that keeps ordinary computers agreeing about the time of day. It corrects for network delay by measuring the round trip and disciplines the local clock gradually rather than jumping it. Milliseconds on a good LAN — nowhere near PTP, and exactly right for its actual job: making logs, licences and scheduled events line up across a rack.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 123,
        "transport": "udp",
        "role": "NTP client and server",
        "iana_registered": true,
        "note": "Symmetric: both ends use 123 in the classic mode. Blocking it outbound is a common cause of machines that slowly drift apart."
      }
    ],
    "multicast": {
      "used": false,
      "note": "Broadcast and multicast NTP modes exist and are rarely the right answer on a show network; unicast to a named server is predictable and debuggable."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://www.rfc-editor.org/rfc/rfc5905",
      "label": "RFC 5905 — NTPv4"
    },
    "standards": [
      "rfc-5905"
    ],
    "steward": "IETF",
    "first_published": 1985,
    "status": "current",
    "typical_use": [
      "Keeping show machines, media servers and consoles on the same wall-clock time so logs can be compared after a fault.",
      "Time-stamping recordings, captures and measurement sessions.",
      "Satisfying licensing and certificate checks that fail silently when a machine believes it is in 1970.",
      "Scheduling in installations — building systems, digital signage, unattended playback."
    ],
    "gotchas": [
      "NTP is not a substitute for PTP, LTC or genlock. It gives a machine the right time of day; it does not lock media clocks and cannot align a frame or a sample.",
      "Two time sources on one network is the classic fault: a show LAN with no internet and a machine still pointed at a public pool will drift away from everything else, or step suddenly when it finally reaches one.",
      "Give an isolated show network its own NTP server — a switch, a router, a master clock or a GNSS receiver — rather than leaving each machine to guess.",
      "Windows domain time and NTP are related but configured differently, and a machine that has joined a domain may quietly ignore the server you set.",
      "A step correction rather than a slew can jump a clock backwards, which breaks anything measuring elapsed time. Prefer a source that lets the daemon discipline gradually."
    ],
    "tags": [
      "time",
      "sync",
      "clock",
      "networking",
      "ntp"
    ],
    "sources": [
      {
        "title": "RFC 5905: Network Time Protocol Version 4",
        "url": "https://www.rfc-editor.org/rfc/rfc5905",
        "publisher": "IETF",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "verified",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "evertz-5601msc",
        "name": "Evertz 5601MSC Master Sync and Clock",
        "vendor": "Evertz",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Time of day for the facility."
      }
    ],
    "flow": "management",
    "flow_note": "Wall-clock agreement to within milliseconds. Useful for log timestamps, nowhere near tight enough to be a show clock — a distinction people lose money on."
  },
  {
    "id": "opc-ua",
    "name": "OPC UA",
    "aka": [
      "OPC Unified Architecture",
      "IEC 62541"
    ],
    "category": "device-management",
    "summary": "The OPC Foundation's platform-independent, service-oriented standard for structured, secured data exchange between industrial and building systems, from simple tag reads to full information models over TCP, UDP, WebSockets or MQTT/AMQP. In venues it is the practical bridge where show control needs to read or write into building management, HVAC or facility-automation systems.",
    "transport": [
      "tcp",
      "udp",
      "websocket",
      "other"
    ],
    "default_ports": [
      {
        "number": 4840,
        "transport": "tcp",
        "role": "OPC UA TCP binary protocol (opc.tcp://) default endpoint/discovery port",
        "iana_registered": true
      }
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://reference.opcfoundation.org/",
      "label": "OPC UA Online Reference (full specification text, free, no login required)"
    },
    "steward": "OPC Foundation",
    "first_published": 2006,
    "status": "current",
    "typical_use": [
      "Bridging show control or venue automation into building management systems (BMS/HVAC) via a shared OPC UA server",
      "Exposing PLC and industrial-machinery data models to higher-level monitoring/dashboarding software",
      "Vendor-neutral integration layer between different automation vendors' equipment in fixed installations"
    ],
    "gotchas": [
      "The specification text is free to read at reference.opcfoundation.org, but the identically-numbered IEC 62541 standard document must be purchased from the IEC Webstore if a compliance paper trail specifically needs the ISO/IEC-badged version.",
      "OPC UA supports both classic client/server (request-response over TCP binary) and newer pub/sub patterns over very different transports (UDP, MQTT, AMQP); two devices that both claim \"OPC UA support\" are not guaranteed to share a transport/pattern without checking which profile each one implements.",
      "Security is optional per-endpoint (None/Sign/SignAndEncrypt policies can all be offered by the same server), so a server discovered and connected without checking its security policy list may be handing data over completely unencrypted even though the standard itself supports strong security."
    ],
    "implementations": [
      {
        "name": "open62541",
        "url": "https://github.com/open62541/open62541",
        "language": "C",
        "license": "MPL-2.0",
        "role": "both"
      },
      {
        "name": "asyncua (formerly python-opcua / FreeOpcUa)",
        "url": "https://github.com/FreeOpcUa/opcua-asyncio",
        "language": "Python",
        "license": "LGPL-3.0-or-later",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "industrial",
      "building-systems",
      "opc-foundation",
      "iec-62541"
    ],
    "sources": [
      {
        "title": "OPC UA TCP well-known address, port 4840 (opc.tcp://localhost:4840/UADiscovery)",
        "url": "https://reference.opcfoundation.org/Core/Part6/v104/docs/7.6",
        "publisher": "OPC Foundation",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Update for IEC 62541 (OPC UA) Published",
        "url": "https://opcfoundation.org/news/opc-foundation-news/update-iec-62541-opc-ua-published/",
        "publisher": "OPC Foundation",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "OPC Unified Architecture (first released 2006, IEC 62541, free specification download, transports)",
        "url": "https://en.wikipedia.org/wiki/OPC_Unified_Architecture",
        "publisher": "Wikipedia",
        "accessed": "2026-08-17"
      },
      {
        "title": "open62541 — open source implementation of OPC UA (IEC 62541), Mozilla Public License v2.0",
        "url": "https://github.com/open62541/open62541",
        "publisher": "open62541 project",
        "accessed": "2026-08-17"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "codesys",
        "name": "CODESYS",
        "vendor": "CODESYS Group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Standard integration for exposing controller state."
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OPC UA for industrial integration."
      },
      {
        "kind": "software",
        "id": "twincat",
        "name": "TwinCAT",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "The usual way state is exposed upward to other systems."
      },
      {
        "kind": "hardware",
        "id": "beckhoff-cx5140",
        "name": "Beckhoff CX5140 Embedded PC",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Exposing state upward to show systems."
      }
    ],
    "flow": "management",
    "flow_note": "Industrial monitoring and configuration. Its safety-rated siblings do the commanding."
  },
  {
    "id": "optocore",
    "name": "Optocore",
    "category": "audio-transport",
    "openness": "proprietary-closed",
    "first_published": 1996,
    "status": "current",
    "summary": "Fibre-optic audio, video and data transport built as a redundant ring, used where very high channel counts have to travel long distances with deterministic latency: stadiums, festivals and broadcast compounds.",
    "transport": [
      "fibre"
    ],
    "typical_use": [
      "Long fibre runs between FOH, stage and broadcast",
      "High channel-count festival distribution",
      "Redundant ring backbone for a large audio system"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          48,
          96,
          192
        ],
        "max_channels": 1024,
        "note": "The 1024 figure counts inputs. Outputs are effectively unlimited because the ring carries every channel past every node, so any device can tap any channel without costing anyone else bandwidth — the architectural difference from a switched network, where each subscriber's copy is real traffic. Channel count and sample rate trade against each other on a given ring speed."
      }
    },
    "gotchas": [
      "The ring is the redundancy. Breaking the ring to add a device mid-show removes the protection that justified the system.",
      "Optocore, MADI and Dante frequently coexist in the same rack through converter cards. Where the clock originates in that mix is the thing to decide deliberately."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "fibre",
      "optocore",
      "redundant-ring",
      "stadium"
    ],
    "sources": [
      {
        "title": "Optocore system overview 10.1",
        "url": "https://optocore.com/wp-content/uploads/2023/03/Optocore_Overview_10-1.pdf",
        "publisher": "Optocore",
        "accessed": "2026-10-09",
        "primary": true
      },
      {
        "title": "Optocore",
        "url": "https://www.optocore.com/",
        "publisher": "Optocore",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "osc-query",
    "name": "OSCQuery",
    "aka": [
      "OSC Query Protocol",
      "OSCQueryProposal"
    ],
    "category": "device-management",
    "summary": "A community specification letting OSC-controlled software advertise itself via mDNS/Zeroconf and publish a browsable JSON description of its OSC address space over HTTP/WebSocket, so control surfaces like TouchOSC or media servers can auto-discover parameters.",
    "transport": [
      "http",
      "websocket"
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://github.com/Vidvox/OSCQueryProposal"
    },
    "steward": "Vidvox (community proposal, multiple implementers)",
    "status": "current",
    "gotchas": [
      "Not a formally ratified standard from an SDO - it's a GitHub-hosted proposal, so implementations (VDMX, TouchDesigner, ossia, VRChat) may support only part of it.",
      "Relies on Bonjour/Zeroconf (_oscjson._tcp) for discovery, which can be blocked or unreliable on locked-down venue networks and VLANs."
    ],
    "implementations": [
      {
        "name": "libossia",
        "url": "https://github.com/ossia/libossia",
        "language": "C++"
      },
      {
        "name": "VVOSCQueryProtocol",
        "url": "https://github.com/Vidvox/VVOSCQueryProtocol",
        "language": "Objective-C"
      }
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "Vidvox/OSCQueryProposal - OSCQuery Protocol specification",
        "url": "https://github.com/Vidvox/OSCQueryProposal",
        "primary": true
      },
      {
        "title": "Introducing OSCQuery Protocol - VDMX",
        "url": "https://vdmx.vidvox.net/blog/oscquery"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [],
    "flow": "management",
    "flow_note": "Introspection: asking a device what it can do, not telling it to do something."
  },
  {
    "id": "osc",
    "name": "OSC",
    "aka": [
      "Open Sound Control",
      "OpenSoundControl"
    ],
    "category": "show-control",
    "summary": "A transport-independent message format carrying named, typed messages such as /cue/5/go with int, float, string and blob arguments, optionally grouped into timestamped bundles. On a show it is the glue between QLab, lighting consoles, control surfaces and anything with a scripting port.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 53000,
        "transport": "udp",
        "role": "QLab default OSC listening port",
        "note": "An application default, not part of OSC. Figure 53 document it as the port QLab listens on, changeable per workspace."
      },
      {
        "number": 3032,
        "transport": "tcp",
        "role": "ETC Eos default OSC TCP port (OSC 1.0 packet-length framing)",
        "note": "An application default, not part of OSC. Bidirectional, so no separate transmit port is needed."
      },
      {
        "number": 3037,
        "transport": "tcp",
        "role": "ETC Eos third-party OSC port using OSC 1.1 SLIP framing",
        "note": "Added in Eos v3.1.0. Separate from 3032 because the two stream framings cannot be auto-detected."
      }
    ],
    "multicast": {
      "used": false,
      "note": "The specification says nothing about addressing. Products send unicast UDP or open a TCP stream; broadcast is occasionally used for discovery."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://opensoundcontrol.stanford.edu/spec-1_0.html",
      "label": "The Open Sound Control 1.0 Specification"
    },
    "steward": "CNMAT, University of California Berkeley",
    "first_published": 2002,
    "status": "current",
    "typical_use": [
      "Cue triggering between QLab and a lighting console, in both directions",
      "Control surfaces, tablets and stream-deck style panels driving playback",
      "Digital audio console fader, mute and snapshot recall from show control",
      "Software-to-software links where neither end speaks a lighting protocol"
    ],
    "gotchas": [
      "OSC defines no port and no transport. Every product picks its own, and the receiver usually needs telling the reply port as well as the listen port, so a link that \"works\" one way often has no return path at all.",
      "Over TCP or serial there are two incompatible framings. OSC 1.0 prefixes each packet with a 32-bit length; OSC 1.1 uses SLIP. ETC put them on separate TCP ports (3032 and 3037) precisely because you cannot detect which is which.",
      "There is no formal 1.1 specification document, only a NIME 2009 paper. When a datasheet claims \"OSC 1.1 support\" it can mean SLIP framing, the new argument types, or almost nothing.",
      "Address patterns support wildcards on the receiving side, so a stray /eos/chan/* reaches far more than one channel. Test pattern messages against a rehearsal state, never against a running show.",
      "Bundle time tags are 64-bit NTP timestamps and assume the two machines agree on time. Many entertainment implementations ignore the tag entirely and execute on arrival, so do not build sample-accurate timing on it.",
      "UDP has no delivery guarantee and OSC adds none. A single lost GO is simply gone with no error anywhere. If the cue matters, use a TCP link where the product offers one."
    ],
    "implementations": [
      {
        "name": "liblo",
        "url": "https://github.com/radarsat1/liblo",
        "language": "C",
        "license": "LGPL-2.1-or-later",
        "role": "both"
      },
      {
        "name": "python-osc",
        "url": "https://github.com/attwad/python-osc",
        "language": "Python",
        "license": "Unlicense",
        "role": "both"
      },
      {
        "name": "oscpack",
        "url": "https://github.com/RossBencina/oscpack",
        "language": "C++",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "show-control",
      "messaging",
      "cnmat",
      "transport-independent"
    ],
    "sources": [
      {
        "title": "The Open Sound Control 1.0 Specification",
        "url": "https://opensoundcontrol.stanford.edu/spec-1_0.html",
        "publisher": "CNMAT / Stanford CCRMA",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "OpenSoundControl.org — history, authorship and versions",
        "url": "https://opensoundcontrol.stanford.edu/index.html",
        "publisher": "CNMAT / Stanford CCRMA",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "OSC 1.1 — there is no 1.1 specification in the style of 1.0",
        "url": "https://opensoundcontrol.stanford.edu/spec-1_1.html",
        "publisher": "CNMAT / Stanford CCRMA",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "TCP port for OSC communication with Eos software",
        "url": "https://support.etcconnect.com/ETC/Consoles/Eos_Family/Software_and_Programming/TCP_port_for_OSC_communication_with_Eos_Software",
        "publisher": "Electronic Theatre Controls",
        "accessed": "2026-08-16"
      },
      {
        "title": "QLab 5 OSC Dictionary",
        "url": "https://qlab.app/docs/v5/scripting/osc-dictionary-v5/",
        "publisher": "Figure 53",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "ableton-live",
        "name": "Ableton Live",
        "vendor": "Ableton AG",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "reported",
        "note": "No native OSC. Reached through Max for Live, included in Suite and sold as an add-on for Standard; Ableton cite OSC as a Max for Live use case."
      },
      {
        "kind": "software",
        "id": "ardour",
        "name": "Ardour",
        "vendor": "Ardour Community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control surface support."
      },
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "capture",
        "name": "Capture",
        "vendor": "Capture Visualisation AB",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented as supporting DMX talkback with ETC Eos consoles."
      },
      {
        "kind": "software",
        "id": "casparcg",
        "name": "CasparCG Server",
        "vendor": "CasparCG project",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Sends per-layer status and playback position. Default port 6250 in casparcg.config."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": true,
        "confidence": "verified",
        "note": "OSC requires Unlocked mode, activated by a MagicQ wing, Connect interface or rack-mount dongle. The manual documents both receiving and sending messages."
      },
      {
        "kind": "software",
        "id": "chataigne",
        "name": "Chataigne",
        "vendor": "Ben Kuper",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Also supports OSCQuery for discovery."
      },
      {
        "kind": "software",
        "id": "companion",
        "name": "Bitfocus Companion",
        "vendor": "Bitfocus AS",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Companion can be controlled over OSC on a configurable listen port, and modules send OSC out."
      },
      {
        "kind": "software",
        "id": "daslight",
        "name": "Daslight",
        "vendor": "Daslight (Nicolaudie)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "dmxcontrol-3",
        "name": "DMXControl 3",
        "vendor": "DMXControl Projects e.V.",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "ETC states all Eos family devices can send and receive OSC when running software v2.3 or higher."
      },
      {
        "kind": "software",
        "id": "go-button",
        "name": "Go Button",
        "vendor": "Figure 53",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "godot",
        "name": "Godot Engine",
        "vendor": "Godot Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through community add-ons."
      },
      {
        "kind": "software",
        "id": "grandma3-onpc",
        "name": "grandMA3 onPC",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "heavym",
        "name": "HeavyM",
        "vendor": "HeavyM",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "External control."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "MultiController maps OSC (and raw TCP) to pins. As with MIDI, outbound OSC feedback is referenced but not documented in detail."
      },
      {
        "kind": "software",
        "id": "isadora",
        "name": "Isadora",
        "vendor": "TroikaTronix (Mark Coniglio)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Specifications page lists input and output of OSC; Isadora 4 adds an OSC Address Listener actor. Commonly used to take cues from lighting consoles and other cue software."
      },
      {
        "kind": "software",
        "id": "l-isa-controller",
        "name": "L-ISA Controller",
        "vendor": "L-Acoustics",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Object positions and control."
      },
      {
        "kind": "software",
        "id": "lightkey",
        "name": "Lightkey",
        "vendor": "Lightkey",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "lightwright",
        "name": "Lightwright",
        "vendor": "Lightwright LLC (John McKernon Software)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Eos Console Link uses OSC over the lighting network, or 127.0.0.1 on a single machine, to trigger cues, turn lights on and off during focus and work calls, and import, label and document cues and groups."
      },
      {
        "kind": "software",
        "id": "madmapper",
        "name": "MadMapper",
        "vendor": "garageCube",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Includes OSC Query support."
      },
      {
        "kind": "software",
        "id": "max-msp",
        "name": "Max",
        "vendor": "Cycling '74",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via widely used objects rather than as a built-in."
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Configurable OSC listeners and senders; an OSC API covers almost every feature. Docs also state Millumin supports OSCQuery, without specifying its server/client role."
      },
      {
        "kind": "software",
        "id": "mitti",
        "name": "Mitti",
        "vendor": "Imimot",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control in and out, commonly driven from QLab or a console."
      },
      {
        "kind": "software",
        "id": "mixing-station",
        "name": "Mixing Station",
        "vendor": "David Giga",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Uses each console's own network control protocol, OSC where the console offers it."
      },
      {
        "kind": "software",
        "id": "modul8",
        "name": "Modul8",
        "vendor": "GarageCUBE",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "node-red",
        "name": "Node-RED",
        "vendor": "OpenJS Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via community nodes."
      },
      {
        "kind": "software",
        "id": "notch",
        "name": "Notch",
        "vendor": "Notch (10bit FX Limited)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Vendor features page states OSC input and output; the node reference lists both an OSC Modifier (receive) and an OSC Output node (send)."
      },
      {
        "kind": "software",
        "id": "ola",
        "name": "OLA (Open Lighting Architecture)",
        "vendor": "Open Lighting Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "in",
        "requires_licence": true,
        "confidence": "verified",
        "note": "Full control of main playbacks, playback buttons, F-keys and command keys. OSC is locked in FREE and NOVA mode; a free trial can be started from the licensing options."
      },
      {
        "kind": "software",
        "id": "open-stage-control",
        "name": "Open Stage Control",
        "vendor": "Jean-Emmanuel Doucet",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core."
      },
      {
        "kind": "software",
        "id": "openframeworks",
        "name": "openFrameworks",
        "vendor": "openFrameworks community",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core addon."
      },
      {
        "kind": "software",
        "id": "pixera",
        "name": "PIXERA",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "software",
        "id": "processing",
        "name": "Processing",
        "vendor": "Processing Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Through the widely used oscP5 library."
      },
      {
        "kind": "software",
        "id": "propresenter",
        "name": "ProPresenter",
        "vendor": "Renewed Vision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Network API control."
      },
      {
        "kind": "software",
        "id": "protokol",
        "name": "Protokol",
        "vendor": "Hexler",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Core supported protocol for monitoring/logging."
      },
      {
        "kind": "software",
        "id": "provideoplayer",
        "name": "ProVideoPlayer (PVP)",
        "vendor": "Renewed Vision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "pure-data",
        "name": "Pure Data",
        "vendor": "Miller Puckette and contributors",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Through standard external objects."
      },
      {
        "kind": "software",
        "id": "qlab",
        "name": "QLab",
        "vendor": "Figure 53",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "QLab exposes a full OSC API for control and feedback, and can send OSC as a cue type."
      },
      {
        "kind": "software",
        "id": "qlc-plus",
        "name": "QLC+",
        "vendor": "QLC+ project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "reaper",
        "name": "REAPER",
        "vendor": "Cockos Incorporated",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Built-in OSC control surface. Cockos state a device can receive messages from REAPER, send messages to it, or both; message mapping lives in .ReaperOSC pattern config files."
      },
      {
        "kind": "software",
        "id": "resolume-arena",
        "name": "Resolume Arena",
        "vendor": "Resolume",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "show-cue-system",
        "name": "Show Cue System (SCS)",
        "vendor": "Show Cue Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control."
      },
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "software",
        "id": "stage-precision",
        "name": "Stage Precision",
        "vendor": "Stage Precision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "software",
        "id": "touchdesigner",
        "name": "TouchDesigner",
        "vendor": "Derivative",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "touchosc",
        "name": "TouchOSC",
        "vendor": "Hexler",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Core."
      },
      {
        "kind": "software",
        "id": "unity",
        "name": "Unity",
        "vendor": "Unity Technologies",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through community packages rather than built in."
      },
      {
        "kind": "software",
        "id": "unreal-engine",
        "name": "Unreal Engine",
        "vendor": "Epic Games",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out via plugins."
      },
      {
        "kind": "software",
        "id": "ventuz",
        "name": "Ventuz",
        "vendor": "Ventuz Technology",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "software",
        "id": "vmix",
        "name": "vMix",
        "vendor": "StudioCoast",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control, depending on version."
      },
      {
        "kind": "software",
        "id": "vvvv",
        "name": "vvvv",
        "vendor": "vvvv group",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Standard nodes."
      },
      {
        "kind": "software",
        "id": "watchout",
        "name": "WATCHOUT",
        "vendor": "Dataton",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Open Sound Control dissector, documented display filter fields since Wireshark 1.12.0."
      },
      {
        "kind": "hardware",
        "id": "7thsense-delta",
        "name": "7thSense Delta Media Server",
        "vendor": "7thSense",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control."
      },
      {
        "kind": "hardware",
        "id": "alcorn-mcbride-binloop-hd",
        "name": "Alcorn McBride A/V Binloop HD",
        "vendor": "Alcorn McBride",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control, depending on model."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-dlive-s7000",
        "name": "Allen & Heath dLive S7000",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Native OSC over TCP, widely used with QLab and show control."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-sq-6",
        "name": "Allen & Heath SQ-6",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "MIDI/TCP control; OSC through third-party bridges."
      },
      {
        "kind": "hardware",
        "id": "analog-way-aquilon-rs4",
        "name": "Analog Way Aquilon RS4",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Third-party control over the network API."
      },
      {
        "kind": "hardware",
        "id": "analog-way-picturall-mk2",
        "name": "Analog Way Picturall Mark II",
        "vendor": "Analog Way",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control."
      },
      {
        "kind": "hardware",
        "id": "avid-venue-s6l-32d",
        "name": "Avid VENUE S6L-32D",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control via Eucon and third-party apps."
      },
      {
        "kind": "hardware",
        "id": "avolites-ai-q3",
        "name": "Avolites Ai Q3",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control in and out."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "hardware",
        "id": "barco-e2",
        "name": "Barco Event Master E2",
        "vendor": "Barco",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control via third-party systems over the network API."
      },
      {
        "kind": "hardware",
        "id": "behringer-x32",
        "name": "Behringer X32",
        "vendor": "Behringer",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Undocumented-but-stable OSC protocol that a whole generation of third-party apps and QLab workflows is built on."
      },
      {
        "kind": "hardware",
        "id": "chamsys-magicq-mq80",
        "name": "ChamSys MagicQ MQ80",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Remote control and feedback."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Two-way OSC for external control surfaces and show control."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out, heavily used via Widget Designer."
      },
      {
        "kind": "hardware",
        "id": "crestron-cp4n",
        "name": "Crestron CP4N Control System",
        "vendor": "Crestron",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through modules."
      },
      {
        "kind": "hardware",
        "id": "dataton-watchpax-60",
        "name": "Dataton WATCHPAX 60",
        "vendor": "Dataton",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "db-ds100",
        "name": "d&b audiotechnik DS100 Signal Engine",
        "vendor": "d&b audiotechnik",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC is the control surface for object positions, used by tracking systems and show control."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control of the desk."
      },
      {
        "kind": "hardware",
        "id": "digico-sd12",
        "name": "DiGiCo SD12",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via the external control protocol."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "disguise-vx-4",
        "name": "disguise vx 4",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC control of Designer cues and parameters."
      },
      {
        "kind": "hardware",
        "id": "eos-apex-5",
        "name": "Eos Apex 5",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Over UDP or TCP. Needs no gateway."
      },
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Remote control and feedback."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out, widely used with QLab."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "hardware",
        "id": "grandma3-full-size",
        "name": "grandMA3 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Remote control."
      },
      {
        "kind": "hardware",
        "id": "green-hippo-karst-plus",
        "name": "Green Hippo Hippotizer Karst+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "hippotizer-boreal-plus-mk2",
        "name": "Hippotizer Boreal+ MK2",
        "vendor": "Green Hippo",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Remote control of engine parameters."
      },
      {
        "kind": "hardware",
        "id": "hog-4",
        "name": "Hog 4",
        "vendor": "High End Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "kinesys-elevation-1-plus",
        "name": "Kinesys Elevation 1+",
        "vendor": "Kinesys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Integration with show control systems."
      },
      {
        "kind": "hardware",
        "id": "medialon-showmaster-pro",
        "name": "Medialon Showmaster Pro",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "midas-hd96-24",
        "name": "Midas HD96-24",
        "vendor": "Midas",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC control."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out for show control."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC in and out."
      },
      {
        "kind": "hardware",
        "id": "qsys-core-510i",
        "name": "Q-SYS Core 510i",
        "vendor": "QSC (Q-SYS)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "External control of named controls in the design."
      },
      {
        "kind": "hardware",
        "id": "tait-navigator",
        "name": "TAIT Navigator",
        "vendor": "TAIT",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Show control integration."
      },
      {
        "kind": "hardware",
        "id": "tta-stagetracker-ii",
        "name": "TTA StageTracker II",
        "vendor": "TTA — Track The Artist",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control and data."
      },
      {
        "kind": "hardware",
        "id": "yamaha-cl5",
        "name": "Yamaha CL5",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Limited OSC via third-party bridges rather than natively."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rivage-pm7",
        "name": "Yamaha RIVAGE PM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "OSC via the console API."
      },
      {
        "kind": "hardware",
        "id": "zactrack-pro",
        "name": "zactrack PRO",
        "vendor": "zactrack",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OSC for integration with audio and show control."
      }
    ],
    "flow": "control"
  },
  {
    "id": "pathport",
    "name": "Pathport",
    "aka": [
      "Pathport Protocol",
      "Pathway Pathport"
    ],
    "category": "lighting-control",
    "summary": "Pathway Connectivity's own DMX-over-ethernet protocol, used by Pathport gateways for data and for the discovery and configuration that Pathscape depends on. Most modern jobs run sACN or Art-Net through the same boxes and only meet Pathport when setting them up.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 3792,
        "transport": "udp",
        "role": "Pathport data, ARP-style node discovery, and configuration",
        "note": "0x0ED0. Taken from the Open Lighting Architecture implementation; Pathway does not publish the protocol."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "239.255.237.1 (data)",
        "239.255.237.2 (configuration)",
        "239.255.237.255 (status)"
      ],
      "note": "Group addresses as implemented by the Open Lighting Architecture Pathport plugin. Nodes are also addressed individually by a 32-bit Pathport device ID, with 0xFFFFFFFF used as a broadcast ID."
    },
    "universe_model": "A flat xDMX channel space rather than numbered universes: channels 0-511 are the first universe, 512-1023 the second. OLA notes the spec says 64 universes while devices appear to support up to 128.",
    "openness": "proprietary-closed",
    "steward": "Pathway Connectivity (Acuity Brands)",
    "status": "current",
    "typical_use": [
      "Pathport gateway data and configuration on Pathway networks",
      "Pathscape discovery and setup of DMX/RDM gateways",
      "Legacy installs that predate widespread sACN deployment",
      "Mixed networks where Pathway boxes sit alongside ETCNet and ShowNet sources"
    ],
    "gotchas": [
      "Pathway does not publish the protocol. The only public description is the Open Lighting Architecture plugin source, so treat any third-party implementation as best effort and test it against the actual firmware.",
      "Addressing is a flat xDMX channel space, not universes. Console universe 2 is xDMX channels 512-1023, so a one-universe offset here shifts an entire rig by 512 slots rather than by one fixture.",
      "Node discovery uses a Pathport ARP request and reply, not IP ARP. A gateway that does not answer is not necessarily offline; it may be on a different multicast group or filtered out by IGMP snooping.",
      "If Pathscape cannot see a gateway that is visibly passing data, look at multicast and IGMP snooping on the switch before assuming a device fault. Data and configuration ride different groups.",
      "Pathport gateways also accept sACN, Art-Net, ETCNet2, ETCNet3 and Strand ShowNet, and will take several at once. It is easy to create an accidental merge that only shows up when the second console is patched."
    ],
    "implementations": [
      {
        "name": "OLA (Open Lighting Architecture)",
        "url": "https://github.com/OpenLightingProject/ola",
        "language": "C++",
        "license": "LGPL-2.1-or-later",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "dmx-over-ip",
      "pathway",
      "proprietary",
      "multicast"
    ],
    "sources": [
      {
        "title": "OLA Pathport plugin — PathportNode.h (PATHPORT_PORT 0xed0, data/config/status multicast groups, broadcast ID)",
        "url": "https://raw.githubusercontent.com/OpenLightingProject/ola/master/plugins/pathport/PathportNode.h",
        "publisher": "Open Lighting Project",
        "accessed": "2026-08-16"
      },
      {
        "title": "OLA Pathport plugin README (xDMX flat channel space, universe mapping)",
        "url": "https://raw.githubusercontent.com/OpenLightingProject/ola/master/plugins/pathport/README.md",
        "publisher": "Open Lighting Project",
        "accessed": "2026-08-16"
      },
      {
        "title": "Pathport DMX Management System Specification, C Series Nodes (protocol list including Pathport Protocol)",
        "url": "https://www.fullcompass.com/common/files/27565-PathwayConnectivityPathportCSeriesSpecifications.pdf",
        "publisher": "Pathway Connectivity",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Pathport DMX Ethernet Gateways product family (Pathscape configuration)",
        "url": "https://pathway.acuitybrands.com/products/family/pathport-dmx-ethernet-gateways",
        "publisher": "Pathway Connectivity / Acuity Brands",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Pathport output, and received for capture or merging. Unusual for a non-Pathway console."
      },
      {
        "kind": "software",
        "id": "ola",
        "name": "OLA (Open Lighting Architecture)",
        "vendor": "Open Lighting Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Listed as the Pathway Pathport plugin."
      },
      {
        "kind": "hardware",
        "id": "pathway-pathport-octo",
        "name": "Pathway Connectivity Pathport OCTO",
        "vendor": "Pathway Connectivity",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Pathway's own protocol."
      }
    ],
    "flow": "control"
  },
  {
    "id": "poe",
    "name": "Power over Ethernet",
    "aka": [
      "PoE",
      "PoE+",
      "PoE++",
      "IEEE 802.3af",
      "IEEE 802.3at",
      "IEEE 802.3bt"
    ],
    "category": "network-transport",
    "summary": "DC power delivered down the same cable as the data, negotiated between the switch and the device before any current flows. It is why a wireless access point, a camera, an intercom panel or a small DMX node needs one cable rather than two.",
    "transport": [
      "ethernet-l2"
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://standards.ieee.org/ieee/802.3/",
      "label": "IEEE 802.3 standards"
    },
    "steward": "IEEE",
    "status": "current",
    "typical_use": [
      "Wireless access points, IP cameras and intercom panels",
      "Small DMX and network nodes at truss height",
      "Anywhere pulling a separate mains feed costs more than the device"
    ],
    "gotchas": [
      "Budget is per switch as well as per port. A 24-port switch rarely delivers the maximum on all 24 at once, and the shortfall shows up as devices rebooting under load rather than refusing to start.",
      "The class negotiation means power is allocated before it is drawn. A device that mis-declares its class can be granted less than it needs.",
      "Passive \"PoE\" injectors that put voltage on the pairs without negotiating are not this standard and can damage equipment that is expecting it.",
      "Power is delivered at the switch and consumed at the far end, so the cable loses some along the way. A long run near the class limit is a marginal run."
    ],
    "confidence": "reported",
    "tags": [
      "network",
      "power",
      "ethernet"
    ],
    "sources": [
      {
        "title": "IEEE 802.3 — Ethernet, including Clauses 33 and 145 (DTE Power via MDI)",
        "url": "https://standards.ieee.org/ieee/802.3/",
        "publisher": "IEEE",
        "primary": true
      },
      {
        "title": "Power over Ethernet standards and compatibility",
        "url": "https://kb.netgear.com/12902/Power-over-Ethernet-PoE-standards-and-compatibility",
        "publisher": "NETGEAR"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": null,
    "flow_note": "Power, not traffic. It shares the cable with a flow rather than being one."
  },
  {
    "id": "profinet",
    "name": "PROFINET",
    "aka": [
      "PROFINET IO",
      "PROFINET CBA"
    ],
    "category": "machinery-motion",
    "summary": "PI's real-time industrial Ethernet standard for connecting PLCs, drives and I/O, spanning acyclic RPC parameter access over UDP/TCP up to sub-millisecond isochronous real-time (IRT) cyclic I/O carried as raw Ethernet frames. In entertainment it shows up where show control hands off to venue or stage-machinery automation, such as fixed-theatre stage-technology installs.",
    "transport": [
      "ethernet-l2",
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 34962,
        "transport": "udp",
        "role": "PROFINET RT unicast (registered alternative to raw-Ethernet RT; rarely used in practice)",
        "iana_registered": true
      },
      {
        "number": 34963,
        "transport": "udp",
        "role": "PROFINET RT multicast (registered, rarely used in practice)",
        "iana_registered": true
      },
      {
        "number": 34964,
        "transport": "udp",
        "role": "RPC Context Manager — acyclic connection setup, parameter/record read-write, diagnostics",
        "iana_registered": true,
        "note": "Connection setup on this port must complete before cyclic I/O starts on Ethertype 0x8892."
      }
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://www.profibus.com/download/profinet-specification",
      "label": "PROFINET Specification downloads (PI membership login required)"
    },
    "steward": "PI (PROFIBUS & PROFINET International)",
    "first_published": 2003,
    "status": "current",
    "typical_use": [
      "Machinery-level integration between venue/stage-automation PLCs and drives",
      "Theme-park and large fixed-venue control architectures run alongside EtherNet/IP on redundant switch infrastructure",
      "General industrial machine and drive networking behind scenic automation, rigging and building-adjacent equipment"
    ],
    "gotchas": [
      "Cyclic real-time I/O (Ethertype 0x8892) runs on raw Ethernet frames with no IP address and does not route, while the RPC Context Manager handshake on UDP 34964 is ordinary routable traffic; a capture from a router or a different VLAN shows the setup but never the actual cyclic data.",
      "IRT (isochronous real-time, sub-1ms cycles used for drive/motion applications) requires PROFINET-aware switches with synchronized scheduling; dropping a standard unmanaged switch into an IRT segment breaks the timing guarantee even though the link still passes traffic.",
      "The full specification set sits behind a paid PI membership (PI North America lists annual dues from roughly $800 for integrators up to $8,000 for larger device manufacturers) or individual purchase of the equivalent IEC 61158/61784 documents from the IEC Webstore — there is no free public PDF."
    ],
    "confidence": "reported",
    "tags": [
      "industrial-ethernet",
      "machinery",
      "pi",
      "fieldbus"
    ],
    "sources": [
      {
        "title": "Which TCP/UDP ports are used by PROFINET? (34962 RT unicast, 34963 RT multicast, 34964 RPC Context Manager)",
        "url": "https://support.hms-networks.com/hc/en-us/articles/6794937733394-Which-TCP-UDP-ports-are-used-by-PROFINET",
        "publisher": "HMS Networks",
        "accessed": "2026-08-17"
      },
      {
        "title": "PROFINET Port Numbers Explained (Ethertype 0x8892 cyclic data vs UDP 34964 acyclic RPC handshake)",
        "url": "https://scadaprotocols.com/profinet-port-numbers-explained",
        "publisher": "SCADA Protocols",
        "accessed": "2026-08-17"
      },
      {
        "title": "PROFINET Specification — Official Downloads (PI member login required)",
        "url": "https://www.profibus.com/download/profinet-specification",
        "publisher": "PI (PROFIBUS & PROFINET International)",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Become a Member — PI North America (membership fees by category)",
        "url": "https://us.profinet.com/membership/become-a-member/",
        "publisher": "PI North America",
        "accessed": "2026-08-17",
        "primary": true
      },
      {
        "title": "Profinet (history and first release circa 2003, real-time classes and cycle times)",
        "url": "https://en.wikipedia.org/wiki/Profinet",
        "publisher": "Wikipedia",
        "accessed": "2026-08-17"
      },
      {
        "title": "Advanced Control System Architecture for Theme Parks (PROFINET named alongside EtherNet/IP on redundant switches)",
        "url": "https://pacificblueengineering.com/advanced-control-system-architecture/",
        "publisher": "Pacific Blue Engineering",
        "accessed": "2026-08-17"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "twincat",
        "name": "TwinCAT",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via supplementary functions."
      },
      {
        "kind": "hardware",
        "id": "beckhoff-cx5140",
        "name": "Beckhoff CX5140 Embedded PC",
        "vendor": "Beckhoff Automation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "With the relevant supplement."
      }
    ],
    "flow": "control"
  },
  {
    "id": "profisafe",
    "name": "PROFIsafe",
    "category": "machinery-motion",
    "status": "current",
    "openness": "published-paid",
    "transport": [
      "ethernet-l2",
      "udp"
    ],
    "summary": "Functional safety carried over an ordinary PROFINET or PROFIBUS network. The trick is the black channel: the safety layer adds its own sequence numbers, timeouts, identifiers and CRC on top of whatever the network does, so the network itself never has to be safety-rated. Corruption, loss, delay, repetition and misdirection of a safety message are all detected by the layer above.",
    "multicast": {
      "used": false,
      "note": "Safety relationships are point to point between a safety controller and a safe device."
    },
    "spec_url": {
      "url": "https://www.profibus.com/technologies/profisafe",
      "label": "PI (PROFIBUS & PROFINET International)"
    },
    "standards": [
      "iec-61508",
      "iec-62061"
    ],
    "steward": "PROFIBUS & PROFINET International",
    "first_published": 1999,
    "typical_use": [
      "Emergency stop, guard monitoring and safe motion on stage machinery",
      "Carrying a safety function across the same cable as ordinary control data",
      "Safe torque off and safely limited speed commands to a drive"
    ],
    "gotchas": [
      "The black channel means the network needs no safety rating — and the watchdog timeout still becomes part of the total stopping time, which becomes millimetres of safety distance.",
      "A safety address is configured per device and a duplicated one is a commissioning fault that has to be found before anybody relies on it.",
      "It carries the safety function. It does not carry the responsibility: the assessment is still ISO 13849-1 or IEC 62061 across the whole chain."
    ],
    "tags": [
      "functional-safety",
      "machinery",
      "profinet",
      "black-channel"
    ],
    "sources": [
      {
        "title": "PROFIsafe",
        "url": "https://www.profibus.com/technologies/profisafe",
        "publisher": "PROFIBUS & PROFINET International",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "psn",
    "name": "PosiStageNet",
    "aka": [
      "PSN",
      "PosiStage",
      "PosiStageNet"
    ],
    "category": "tracking-position",
    "summary": "An open multicast UDP protocol for streaming live 3D position, orientation, speed and acceleration of tracked objects on stage. It is how a tracking system tells lighting consoles, media servers and audio renderers where a performer or a piece of scenery actually is, right now.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 56565,
        "transport": "udp",
        "role": "PSN_INFO and PSN_DATA packets",
        "note": "Default in the specification. Both address and port are configurable at the tracking server."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "236.10.10.10 (IPv4 default group)"
      ],
      "note": "The default group sits in globally scoped multicast space rather than the administratively scoped 239.0.0.0/8 block, so networks with strict multicast policy may drop it. One stream feeds every consumer at once, which is the whole point of using multicast here."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://raw.githubusercontent.com/vyv/psn-cpp/master/doc/PosiStageNetprotocol_v2.03_2019_09_09.pdf",
      "label": "PosiStageNet protocol description v2.03 (PDF)"
    },
    "steward": "VYV Corporation, developed with MA Lighting Technology GmbH",
    "first_published": 2013,
    "status": "current",
    "typical_use": [
      "Automated followspot systems driven from performer tracking",
      "Projection mapping onto moving scenery and performers",
      "Feeding object-based audio renderers with source positions",
      "Sending automation and scenery positions to consoles and media servers",
      "Broadcasting one tracker stream to several consumers at once"
    ],
    "gotchas": [
      "There are two packet types. PSN_INFO carries system and tracker names at a slow rate, PSN_DATA carries the positions. A parser that only reads DATA gets numbers with no idea which tracker they belong to.",
      "Default rate is 60 Hz and it can be pushed to 250 Hz. Every increase multiplies packet load on a network that is often shared with lighting multicast, so raise it deliberately, not by default.",
      "Positions are metres in the tracking system's own coordinate frame. PSN carries no origin, axis convention or handedness, so the venue origin and which way is up have to be agreed and written down before anyone patches.",
      "The protocol is public domain and royalty-free, but the name is not. You can implement it freely; you cannot ship something called PosiStageNet without talking to VYV.",
      "Trackers can drop out and reappear. Consumers that hold the last known position will happily keep pointing a light at a spot the performer left thirty seconds ago, so check what your receiver does on timeout."
    ],
    "implementations": [
      {
        "name": "psn-cpp",
        "url": "https://github.com/vyv/psn-cpp",
        "language": "C++",
        "license": "MIT",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "tracking",
      "position",
      "multicast",
      "followspot",
      "vyv"
    ],
    "sources": [
      {
        "title": "PosiStageNet protocol description v2.02",
        "url": "https://posistage.net/wp-content/uploads/2019/01/PosiStageNetprotocol_v2.02_2016_09_15.pdf",
        "publisher": "VYV Corporation and MA Lighting Technology GmbH",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "PosiStageNet protocol description v2.03 (PDF in the reference implementation)",
        "url": "https://raw.githubusercontent.com/vyv/psn-cpp/master/doc/PosiStageNetprotocol_v2.03_2019_09_09.pdf",
        "publisher": "VYV Corporation",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "PosiStageNet — An Open Protocol for On-Stage, Live 3D Position Data",
        "url": "https://posistage.net/",
        "publisher": "VYV Corporation",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "PosiStageNet protocol description v1.7 (earliest dated release, September 2013)",
        "url": "https://posistage.net/wp-content/uploads/2018/07/PosiStageNetprotocolv1.7.pdf",
        "publisher": "VYV Corporation",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "chataigne",
        "name": "Chataigne",
        "vendor": "Ben Kuper",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "depence",
        "name": "Depence",
        "vendor": "Syncronorm GmbH",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "PosiStageNet listed as a supported tracked-object input on the same page."
      },
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Listed among Designer's position drivers."
      },
      {
        "kind": "software",
        "id": "grandma3-onpc",
        "name": "grandMA3 onPC",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "PosiStageNet controller receives position, velocity and acceleration for multiple tracked objects, with axis interpolation smoothing. Docs say new projects should use the Automation Reader."
      },
      {
        "kind": "software",
        "id": "l-isa-controller",
        "name": "L-ISA Controller",
        "vendor": "L-Acoustics",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Performer position from tracking systems."
      },
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "PosiStageNet input for tracked objects."
      },
      {
        "kind": "software",
        "id": "stage-precision",
        "name": "Stage Precision",
        "vendor": "Stage Precision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "PosiStageNet in and out."
      },
      {
        "kind": "software",
        "id": "unreal-engine",
        "name": "Unreal Engine",
        "vendor": "Epic Games",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "PosiStageNet via plugin."
      },
      {
        "kind": "software",
        "id": "watchout",
        "name": "WATCHOUT",
        "vendor": "Dataton",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "PosiStageNet tracking input."
      },
      {
        "kind": "hardware",
        "id": "db-ds100",
        "name": "d&b audiotechnik DS100 Signal Engine",
        "vendor": "d&b audiotechnik",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "PosiStageNet positions, usually via a bridge."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "disguise-vx-4",
        "name": "disguise vx 4",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "PosiStageNet tracking input for automation-following content."
      },
      {
        "kind": "hardware",
        "id": "follow-me-3d",
        "name": "Follow-Me 3D",
        "vendor": "Follow-Me",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Position exchange."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "PosiStageNet input for tracking-driven follow."
      },
      {
        "kind": "hardware",
        "id": "grandma3-full-size",
        "name": "grandMA3 full-size",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Position data for tracking-driven fixtures."
      },
      {
        "kind": "hardware",
        "id": "kinesys-elevation-1-plus",
        "name": "Kinesys Elevation 1+",
        "vendor": "Kinesys",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "PosiStageNet output of axis positions to lighting and media systems."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "PosiStageNet for tracked objects and moving scenery."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "PosiStageNet input for tracked objects."
      },
      {
        "kind": "hardware",
        "id": "tait-navigator",
        "name": "TAIT Navigator",
        "vendor": "TAIT",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "PosiStageNet output of axis and object positions."
      },
      {
        "kind": "hardware",
        "id": "tta-stagetracker-ii",
        "name": "TTA StageTracker II",
        "vendor": "TTA — Track The Artist",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Position output."
      },
      {
        "kind": "hardware",
        "id": "zactrack-pro",
        "name": "zactrack PRO",
        "vendor": "zactrack",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "PosiStageNet output of tracked positions."
      }
    ],
    "flow": "control"
  },
  {
    "id": "ptp-1588",
    "name": "PTP (IEEE 1588)",
    "aka": [
      "Precision Time Protocol",
      "IEEE 1588",
      "PTPv2",
      "gPTP"
    ],
    "category": "timecode-sync",
    "summary": "IEEE 1588 Precision Time Protocol distributes a common clock across an ethernet network to sub-microsecond accuracy by timestamping messages in both directions. It is the timing foundation under AES67, Dante, RAVENNA, ST 2110 and AVB, and when it is unhappy all of them fail at once.",
    "transport": [
      "udp",
      "ethernet-l2"
    ],
    "default_ports": [
      {
        "number": 319,
        "transport": "udp",
        "role": "PTP event messages (Sync, Delay_Req, Pdelay_Req, Pdelay_Resp)",
        "iana_registered": true,
        "note": "These are the timestamped messages. Anything that delays them asymmetrically becomes a clock offset error."
      },
      {
        "number": 320,
        "transport": "udp",
        "role": "PTP general messages (Announce, Follow_Up, Delay_Resp, management)",
        "iana_registered": true
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "224.0.1.129 (IPv4 PTP primary address)",
        "224.0.0.107 (IPv4 peer delay messages, link-local)",
        "FF0X::181 (IPv6)"
      ],
      "note": "Some profiles also use 224.0.1.130 through 224.0.1.132; Audinate and ALC NetworX both document the 224.0.1.129-132 block plus 224.0.0.107 as the addresses to allow through a switch. PTP can also run unicast or over Layer 2 (gPTP) depending on profile."
    },
    "openness": "published-paid",
    "spec_url": {
      "url": "https://standards.ieee.org/ieee/1588/6825/",
      "label": "IEEE 1588-2019 (paid, or via the IEEE GET Program)"
    },
    "steward": "IEEE",
    "first_published": 2002,
    "status": "current",
    "typical_use": [
      "Master clock for AES67, Dante, RAVENNA and ST 2110 audio and video networks",
      "Genlock replacement in IP broadcast plants (SMPTE ST 2059-2 profile)",
      "gPTP (IEEE 802.1AS) timing for AVB and Milan networks",
      "Timestamping and coordinated motion in industrial and machinery control"
    ],
    "gotchas": [
      "Profiles are the trap. Default profile, the AES67 media profile, SMPTE ST 2059-2 and gPTP (802.1AS) are all IEEE 1588. Devices on different profiles, or on the same profile with different domain numbers, will never lock.",
      "Dante's default clock is PTP version 1 (IEEE 1588-2002), not PTPv2. A Dante plant and an AES67 or ST 2110 plant need something that deliberately bridges the two clock domains, not just a patch cable.",
      "The Best Master Clock Algorithm means the grandmaster can change without anyone touching anything. Plug in a device advertising a better clock class and the whole facility re-locks, usually at the worst moment.",
      "Asymmetry is invisible and fatal. Different fibre lengths in each direction, a one-way shaper, or a switch that is transparent-clock aware in one direction only, all produce a constant offset that no log will flag.",
      "A switch that is not PTP aware still passes PTP, it just adds variable queue delay. It will look fine on a quiet network at setup and drift when the show traffic arrives.",
      "UDP 319 and 320 are frequently blocked by default on firewalls and by multicast filtering. Symptoms are audio that works for a few minutes after boot and then falls apart as the local clock walks away."
    ],
    "implementations": [
      {
        "name": "linuxptp (ptp4l, phc2sys)",
        "url": "https://github.com/richardcochran/linuxptp",
        "language": "C",
        "license": "GPL-2.0-or-later",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "timing",
      "clock",
      "ieee",
      "multicast",
      "ptp"
    ],
    "sources": [
      {
        "title": "RFC 9760 — Enterprise Profile for the Precision Time Protocol (PTP ports 319/320, address 224.0.1.129)",
        "url": "https://www.rfc-editor.org/rfc/rfc9760.html",
        "publisher": "IETF",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "IEEE 1588-2019 — Standard for a Precision Clock Synchronization Protocol",
        "url": "https://standards.ieee.org/ieee/1588/6825/",
        "publisher": "IEEE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "RAVENNA Network Requirements V1.4 (PTP multicast addresses, DSCP, profiles)",
        "url": "https://www.ravenna-network.com/wp-content/uploads/2023/01/RAVENNA-Network-Requirements-V1.4.pdf",
        "publisher": "ALC NetworX",
        "accessed": "2026-08-16"
      },
      {
        "title": "Dante Information for Network Administrators v7.1 (Dante uses PTPv1 by default)",
        "url": "https://www.getdante.com/wp-content/uploads/2026/07/Information-for-Network-Admins-v7.1.pdf",
        "publisher": "Audinate",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "dante-controller",
        "name": "Dante Controller",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Displays PTP clock status, master election and offsets."
      },
      {
        "kind": "software",
        "id": "dante-domain-manager",
        "name": "Dante Domain Manager",
        "vendor": "Audinate",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Clock management across domains."
      },
      {
        "kind": "software",
        "id": "pixera",
        "name": "PIXERA",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "For synchronised multi-machine playback."
      },
      {
        "kind": "software",
        "id": "qsys-designer",
        "name": "Q-SYS Designer",
        "vendor": "QSC, LLC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "PTPv2 (IEEE 1588-2008) on multicast 224.0.1.129, UDP 319-320. It is the clock for Q-LAN and AES67 and is documented as time-sensitive traffic the network must prioritise."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9200",
        "name": "Cisco Catalyst 9200 Series",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Transparent or boundary clock support varies sharply by model and licence."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9300",
        "name": "Cisco Catalyst 9300",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Depending on licence and configuration."
      },
      {
        "kind": "hardware",
        "id": "directout-prodigy-mp",
        "name": "DirectOut PRODIGY.MP",
        "vendor": "DirectOut",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "For AES67 and RAVENNA."
      },
      {
        "kind": "hardware",
        "id": "evertz-5601msc",
        "name": "Evertz 5601MSC Master Sync and Clock",
        "vendor": "Evertz",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "PTP grandmaster, depending on option."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-26i",
        "name": "Luminex GigaCore 26i",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clock distribution."
      }
    ],
    "flow": "clock"
  },
  {
    "id": "q-lan",
    "name": "Q-LAN",
    "aka": [
      "QLAN"
    ],
    "category": "audio-transport",
    "summary": "QSC's gigabit audio and video transport for the Q-SYS ecosystem, carrying low-latency streams between Cores, peripherals and cameras with PTPv2 clocking. It is what a Q-SYS install runs on even when Dante or AES67 cards are also fitted.",
    "transport": [
      "udp"
    ],
    "openness": "proprietary-documented",
    "steward": "QSC (Q-SYS)",
    "status": "current",
    "typical_use": [
      "Q-SYS Core to peripheral audio and video transport in installed systems",
      "Corporate, hospitality and themed-venue AV backbones built on Q-SYS"
    ],
    "media": {
      "audio": {
        "bit_depths": [
          32
        ],
        "encoding": "32-bit floating point linear PCM",
        "note": "QSC documents the word length and the packet layout — 16 samples for each of up to 16 channels per stream packet, 1100 octets including overhead, up to 128 streams per Core — but does not state a sample rate in current documentation. The 48 kHz figure widely quoted for Q-LAN traces back to a 2009 white paper, so it is deliberately not repeated here. Confirm against your Q-SYS release."
      }
    },
    "gotchas": [
      "Q-LAN marks its PTPv2 clock DSCP 46 (EF) and audio DSCP 34, while Dante marks AUDIO as DSCP 46. Shared fabric puts Dante audio in the queue that carries the Q-LAN clock and can starve it: separate by VLAN or remap.",
      "Q-LAN audio moves in fixed 16-channel streams at 48 kHz/32-bit (roughly 33 Mbps each), so channel counts round up to the next stream whether you use the channels or not.",
      "Like every PTP-clocked transport it assumes IGMP snooping with a querier and no Energy Efficient Ethernet on AV ports; QSC's switch requirements are explicit about both."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "networking",
      "qsys"
    ],
    "sources": [
      {
        "title": "Q-LAN Networking, Q-SYS 8.1 help",
        "url": "https://q-syshelp.qsc.com/q-sys_8.1/Content/Networking/01_Q-LAN_Networking.htm",
        "publisher": "QSC",
        "accessed": "2026-10-09",
        "primary": true
      },
      {
        "title": "Quality of Service settings across QLAN, Dante, and AES67",
        "url": "https://support.qsys.com/en_US/awareness/awareness-%7C-quality-of-service-settings-across-qlan-dante-and-aes67",
        "publisher": "Q-SYS (QSC)",
        "accessed": "2026-08-22",
        "primary": true
      },
      {
        "title": "Q-SYS Networked Systems Technical Notes (Q-LAN)",
        "url": "https://q-syshelp.qsc.com/q-sys_7.0/content/Appendix/q_dn_qlan_notes.pdf",
        "publisher": "QSC",
        "accessed": "2026-08-22",
        "primary": true
      },
      {
        "title": "Q-SYS Ethernet switch requirements",
        "url": "https://help.qsys.com/q-sys_8.0/Content/Networking/Ethernet_Switch_Requirements.htm",
        "publisher": "Q-SYS (QSC)",
        "accessed": "2026-08-22",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-22",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "qsys-core-510i",
        "name": "Q-SYS Core 510i",
        "vendor": "QSC (Q-SYS)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Native transport to Q-SYS peripherals, cameras and other Cores."
      }
    ],
    "flow": "media"
  },
  {
    "id": "ravenna",
    "name": "RAVENNA",
    "aka": [
      "RAVENNA/AES67"
    ],
    "category": "audio-transport",
    "summary": "ALC NetworX's audio-over-IP technology built on RTP media streams, PTPv2 clocking, DNS-SD discovery and RTSP connection management. It is common in broadcast infrastructure and Merging Technologies recording systems, and it carries AES67 as a subset.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 8080,
        "transport": "tcp",
        "role": "HTTP configuration interface",
        "note": "Assignable, with 8080 as the documented default. RTP, RTCP and RTSP ports are all assignable too; RTCP is always the RTP port plus one."
      }
    ],
    "multicast": {
      "used": true,
      "note": "RTP streams can be unicast or multicast and the addresses are assigned by the implementation, not reserved by the specification. PTP uses the well-known 224.0.1.129 to 224.0.1.132 and 224.0.0.107 groups."
    },
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://ravenna-network.com/wp-content/uploads/2020/02/RAVENNA_Operating_Principles_-_Draft_1.0_final.pdf",
      "label": "RAVENNA Operating Principles (Draft 1.0)"
    },
    "steward": "ALC NetworX GmbH, merged into Lawo in January 2024",
    "first_published": 2010,
    "status": "current",
    "media": {
      "audio": {
        "sample_rates_khz": [
          44.1,
          48,
          88.2,
          96,
          176.4,
          192,
          352.8,
          384
        ],
        "bit_depths": [
          16,
          24,
          32
        ],
        "encoding": "Linear PCM, L16 and L24, over RTP",
        "note": "The high rates are the point of RAVENNA and the reason it is not interchangeable with AES67. Anything above 48 kHz, or a packet time other than 1 ms, is outside the subset an AES67-only receiver accepts."
      }
    },
    "typical_use": [
      "Broadcast studio and OB truck audio infrastructure",
      "Merging Technologies Pyramix and Horus/Hapi recording systems",
      "High channel count and high sample rate studio links",
      "Feeding and receiving AES67 streams from other vendors' networks"
    ],
    "gotchas": [
      "RAVENNA is a superset of AES67. Two RAVENNA devices can agree on sample rates above 48 kHz or packet times other than 1 ms that an AES67-only receiver cannot accept, so interop needs the stream forced into the subset.",
      "Discovery is DNS-SD, with mDNS only as the fallback where there is no DNS server. A plant running unicast DNS-SD and a device expecting mDNS will not see each other even though both are working correctly.",
      "Connection management is RTSP plus SDP, not SAP. Many AES67 devices only listen for SAP announcements on 9875, which is why converter tools exist to translate between the two.",
      "PTP is IEEE 1588-2008 and RAVENNA supports Default, AES67 and SMPTE ST 2059-2 profiles. Domain number and profile must match across the whole plant, and mismatches present as slow drift rather than as a clean fault.",
      "ALC NetworX recommend static IP addressing and explicitly warn off DHCP. A DHCP lease change mid-show pulls the stream addresses out from under receivers that were told about them in an SDP.",
      "Recommended DSCP is CS6 for PTP event messages and EF or AF41 for RTP, and RAVENNA traffic normally has to outrank VoIP on shared corporate infrastructure. On a default switch config it will not."
    ],
    "implementations": [
      {
        "name": "ALSA RAVENNA/AES67 driver",
        "url": "https://github.com/bondagit/ravenna-alsa-lkm",
        "language": "C",
        "role": "both"
      },
      {
        "name": "aes67-linux-daemon",
        "url": "https://github.com/bondagit/aes67-linux-daemon",
        "language": "C++",
        "license": "GPL-3.0-or-later",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "audio-over-ip",
      "broadcast",
      "aes67",
      "ptp"
    ],
    "sources": [
      {
        "title": "RAVENNA Operating Principles — Draft 1.0",
        "url": "https://ravenna-network.com/wp-content/uploads/2020/02/RAVENNA_Operating_Principles_-_Draft_1.0_final.pdf",
        "publisher": "ALC NetworX",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "RAVENNA Network Requirements V1.4",
        "url": "https://www.ravenna-network.com/wp-content/uploads/2023/01/RAVENNA-Network-Requirements-V1.4.pdf",
        "publisher": "ALC NetworX",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "ALC NetworX (introduced at IBC 2010, merged with Lawo January 2024)",
        "url": "https://www.ravenna-network.com/partners/alc-networx/",
        "publisher": "RAVENNA Network",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "RAVENNA and AES67 white paper",
        "url": "https://ravenna-network.com/wp-content/uploads/2020/02/RAVENNA___AES67_V1.0.pdf",
        "publisher": "ALC NetworX",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "directout-prodigy-mp",
        "name": "DirectOut PRODIGY.MP",
        "vendor": "DirectOut",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via module."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-16xt",
        "name": "Luminex GigaCore 16Xt",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, listed alongside AES67."
      }
    ],
    "flow": "media"
  },
  {
    "id": "rdm",
    "name": "RDM",
    "aka": [
      "Remote Device Management",
      "E1.20",
      "RDM over DMX"
    ],
    "category": "device-management",
    "summary": "Bidirectional device management that shares the same pair as DMX512, using alternate start code 0xCC so level data and management traffic interleave on one line. It is how you read and change a fixture's address, personality and sensors without going up in the truss.",
    "transport": [
      "rs485"
    ],
    "multicast": {
      "used": false
    },
    "universe_model": "Shares the DMX512 slot space. Devices are addressed by a UID built from a 16-bit ESTA manufacturer ID plus a device-specific part, not by DMX address.",
    "openness": "open-published",
    "spec_url": {
      "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
      "label": "ESTA TSP published documents (ANSI E1.20, free download)"
    },
    "steward": "ESTA (Entertainment Services and Technology Association)",
    "first_published": 2006,
    "status": "current",
    "typical_use": [
      "Reading and setting DMX addresses and personalities from front of house",
      "Pulling lamp hours, temperature and error sensors during a preshow check",
      "Identifying which physical fixture sits on which address",
      "Configuring gateways, splitters and dimmer racks on a DMX line"
    ],
    "gotchas": [
      "Every splitter, buffer and opto in the path has to be RDM aware. A one-way splitter passes DMX perfectly and silently swallows every response, so discovery finds nothing and the rig looks dead to the controller.",
      "Fixtures that do not check start codes will act on 0xCC packets as if they were levels. Enabling RDM on a line with old kit on it can produce flicker or jumps that look like a data fault.",
      "RDM traffic occupies slots that would otherwise carry DMX. Heavy discovery or continuous sensor polling measurably drops the refresh rate, so turn the polling down before doors.",
      "Discovery is a binary search over the UID space with collision retries. On a large or marginal line a full discovery takes minutes and can still miss devices; run it twice before believing the count.",
      "The controller owns the line. Two RDM controllers on the same universe talk over each other and responses get attributed to the wrong device, which produces genuinely confusing patch data.",
      "Manufacturer IDs 8000h to FFFFh are reserved for the dynamic UIDs used by E1.33 RDMnet. A device showing one of those is not identifiable by manufacturer from the UID alone.",
      "Response timing is tight and specified. A long line, a bad terminator or a cheap USB dongle that turns the driver around too slowly will produce intermittent discovery with clean-looking DMX."
    ],
    "implementations": [
      {
        "name": "OLA (Open Lighting Architecture)",
        "url": "https://github.com/OpenLightingProject/ola",
        "language": "C++",
        "license": "LGPL-2.1-or-later",
        "role": "both"
      },
      {
        "name": "ETCLabs RDM",
        "url": "https://github.com/ETCLabs/RDM",
        "language": "C",
        "license": "Apache-2.0",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "lighting",
      "rdm",
      "device-management",
      "esta",
      "rs485"
    ],
    "sources": [
      {
        "title": "ANSI E1.20 — Remote Device Management over DMX512 Networks (current edition, free download)",
        "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
        "publisher": "ESTA Technical Standards Program",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "ANSI E1.20-2010 preview — scope, half-duplex operation, DISC_UNIQUE_BRANCH discovery",
        "url": "https://webstore.ansi.org/preview-pages/esta/preview_ansi_e1-20_2010.pdf",
        "publisher": "ESTA / ANSI webstore",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "DMX512 Alternate START Codes registry (0xCC = E1.20 RDM)",
        "url": "https://tsp.esta.org/tsp/working_groups/CP/DMXAlternateCodes.php",
        "publisher": "ESTA Technical Standards Program",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "ESTA Manufacturer IDs (16-bit ID, 8000h-FFFFh reserved for E1.33 dynamic UIDs)",
        "url": "https://tsp.esta.org/tsp/working_groups/CP/mfctrIDs.php",
        "publisher": "ESTA Technical Standards Program",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Patching by RDM requires an RDM-enabled Art-Net node. The console's own XLR connectors do not support RDM."
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM is listed among the features available in demo mode, so it does not need a wing or dongle."
      },
      {
        "kind": "software",
        "id": "dmx-workshop",
        "name": "DMX-Workshop",
        "vendor": "Singularity (UK) Ltd",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "RDM over Art-Net discovery/control."
      },
      {
        "kind": "software",
        "id": "dmxcat",
        "name": "DMXcat",
        "vendor": "City Theatrical, Inc.",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "RDM Controller app performs RDM discovery, listing devices/addresses/attributes, via the DMXcat hardware."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Device discovery from the Patch display. Network RDM requires an ETC Net3 or Response Mk2 gateway with RDM enabled on the DMX ports, running gateway software 5.1 or newer."
      },
      {
        "kind": "software",
        "id": "etcdmxtool",
        "name": "ETCDmxTool",
        "vendor": "ETC Labs",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Acts as an RDM controller and can capture RDM traffic; full feature set requires ETC Gadget II hardware."
      },
      {
        "kind": "software",
        "id": "ola",
        "name": "OLA (Open Lighting Architecture)",
        "vendor": "Open Lighting Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "OLA carries a full RDM responder and controller stack."
      },
      {
        "kind": "software",
        "id": "rdm-controller-jese",
        "name": "RDM Controller",
        "vendor": "JESE",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Full RDM discovery, GET and SET."
      },
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "E1.20 RDM dissector; base fields since Wireshark 1.8.0, extended fields since 3.4.0."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM discovery and patch from Titan."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM from Titan."
      },
      {
        "kind": "hardware",
        "id": "chamsys-magicq-mq80",
        "name": "ChamSys MagicQ MQ80",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Through supported nodes and outputs."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Discovery and parameter setting from the console."
      },
      {
        "kind": "hardware",
        "id": "city-theatrical-multiverse",
        "name": "City Theatrical Multiverse Transmitter",
        "vendor": "City Theatrical",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Wireless RDM."
      },
      {
        "kind": "hardware",
        "id": "elc-dmxlan-node8",
        "name": "ELC dmXLAN node8",
        "vendor": "ELC Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on model and firmware."
      },
      {
        "kind": "hardware",
        "id": "enttec-din-ethergate-mk2",
        "name": "ENTTEC DIN Ethergate MK2",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on firmware."
      },
      {
        "kind": "hardware",
        "id": "enttec-dmx-usb-pro",
        "name": "ENTTEC DMX USB Pro",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Requires the DMX/RDM firmware; ENTTEC also supplies separate DMX-only firmware."
      },
      {
        "kind": "hardware",
        "id": "enttec-ode-mk3",
        "name": "ENTTEC ODE Mk3",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "ANSI E1.20 RDM."
      },
      {
        "kind": "hardware",
        "id": "eos-apex-5",
        "name": "Eos Apex 5",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM data is carried over Art-Net and over ETC Net3."
      },
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Through Net3 gateways."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM through Net3 gateways."
      },
      {
        "kind": "hardware",
        "id": "etc-response-mk2-gateway",
        "name": "ETC Response Mk2 DMX/RDM Gateway",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM proxy for discovery and configuration from the console."
      },
      {
        "kind": "hardware",
        "id": "etc-sensor3-rack",
        "name": "ETC Sensor3 Dimmer Rack",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "RDM for module reporting on supported configurations."
      },
      {
        "kind": "hardware",
        "id": "etc-thrupower-rack",
        "name": "ETC ThruPower Rack",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Configuration and feedback."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM on the local DMX ports."
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Fixture discovery and configuration."
      },
      {
        "kind": "hardware",
        "id": "lumenradio-crmx-nova-tx2",
        "name": "LumenRadio CRMX Nova TX2",
        "vendor": "LumenRadio",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Bidirectional RDM over the wireless link."
      },
      {
        "kind": "hardware",
        "id": "luminex-luminode-12",
        "name": "Luminex LumiNode 12",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM discovery and proxy."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM discovery on the local ports."
      },
      {
        "kind": "hardware",
        "id": "pathway-pathport-octo",
        "name": "Pathway Connectivity Pathport OCTO",
        "vendor": "Pathway Connectivity",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Discovery and configuration."
      },
      {
        "kind": "hardware",
        "id": "wireless-solution-blackbox-f2",
        "name": "Wireless Solution W-DMX BlackBox F-2 G6",
        "vendor": "Wireless Solution",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM over the wireless link."
      },
      {
        "kind": "hardware",
        "id": "zero88-flx-s48",
        "name": "Zero 88 FLX S48",
        "vendor": "Zero 88",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RDM on the local DMX ports."
      }
    ],
    "flow": "management",
    "flow_note": "Discovery, addressing and configuration sharing the DMX pair. It has no show deadline and it competes with traffic that does — which is exactly why it is scheduled between the lighting frames rather than instead of them."
  },
  {
    "id": "rdmnet",
    "name": "RDMnet",
    "aka": [
      "E1.33",
      "RDM over IP"
    ],
    "category": "device-management",
    "summary": "Carries RDM messages over IP, with brokers routing between controllers and devices instead of every controller polling every wire. It also defines LLRP, a multicast side channel for finding and fixing devices whose IP settings are wrong.",
    "transport": [
      "tcp",
      "udp"
    ],
    "default_ports": [
      {
        "number": 5569,
        "transport": "udp",
        "role": "LLRP discovery and configuration (multicast)",
        "iana_registered": true,
        "note": "IANA registers 5569/udp as rdmnet-device and 5569/tcp as rdmnet-ctrl to PLASA for E1.33. Broker connections do not use a fixed port; brokers advertise their listening port over DNS-SD."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "239.255.250.133 (LLRP request, IPv4)",
        "239.255.250.134 (LLRP response, IPv4)",
        "ff18::85:0:0:85 (LLRP request, IPv6)",
        "ff18::85:0:0:86 (LLRP response, IPv6)"
      ],
      "note": "Multicast is used only by LLRP. Normal RPT traffic between controllers, brokers and devices is unicast TCP through a broker. Addresses as defined in the ETC reference implementation of E1.33."
    },
    "openness": "open-published",
    "spec_url": {
      "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
      "label": "ESTA TSP published documents (ANSI E1.33-2019, free download)"
    },
    "steward": "ESTA (Entertainment Services and Technology Association)",
    "first_published": 2019,
    "status": "current",
    "typical_use": [
      "Configuring RDM devices across a whole building from one controller",
      "Recovering nodes that have the wrong IP address, via LLRP",
      "Gateways exposing their downstream DMX/RDM responders to the network",
      "Multi-controller environments where a single DMX line would be a bottleneck"
    ],
    "gotchas": [
      "Nothing works without a broker. With no broker running in the scope, controllers and devices sit there discovered and unable to exchange a single message. Some products embed a broker, most do not.",
      "Discovery is DNS-SD, normally over mDNS, which does not cross a subnet boundary without a reflector or a unicast DNS-SD server. That is the usual reason a device on another VLAN never appears in the list.",
      "Scope is a text string and it defaults to \"default\". A device left on the wrong scope is invisible to the controller even though it is on the right network and answers a ping.",
      "LLRP is the recovery path, not the working path. It is multicast and deliberately limited in what it can do, so never design a routine control workflow around it.",
      "Dynamic UIDs are allocated by the broker in the 8000h-FFFFh manufacturer ID range and are not stable across sessions. Never key a patch, a preset or a show file off one.",
      "A gateway presents its downstream DMX responders as endpoints, but the wire behind it is still RS-485 RDM. A slow or marginal DMX leg gates the whole conversation regardless of how fast the network is.",
      "TCP connections to the broker are health-checked with heartbeats. A network that drops idle flows, or a firewall with a short state timeout, will make devices appear and disappear on a cycle."
    ],
    "implementations": [
      {
        "name": "ETCLabs RDMnet",
        "url": "https://github.com/ETCLabs/RDMnet",
        "language": "C",
        "license": "Apache-2.0",
        "role": "both"
      }
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "rdm",
      "device-management",
      "esta",
      "dns-sd"
    ],
    "sources": [
      {
        "title": "ANSI E1.33-2019 (RDMnet), approved 27 August 2019 — free download",
        "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
        "publisher": "ESTA Technical Standards Program",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "ANSI E1.33-2019 preview — scope, Broker/Controller/Device roles, DNS-SD, LLRP",
        "url": "https://webstore.ansi.org/preview-pages/ESTA/preview_ANSI+E1.33-2019.pdf",
        "publisher": "ESTA / ANSI webstore",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "ETCLabs RDMnet — include/rdmnet/defs.h (LLRP addresses, LLRP_PORT, default scope, DNS-SD service type)",
        "url": "https://raw.githubusercontent.com/ETCLabs/RDMnet/main/include/rdmnet/defs.h",
        "publisher": "Electronic Theatre Controls",
        "accessed": "2026-08-16"
      },
      {
        "title": "IANA Service Name and Transport Protocol Port Number Registry (5569 rdmnet-ctrl / rdmnet-device, PLASA E1.33)",
        "url": "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml",
        "publisher": "IANA",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "RDMnet dissector added in Wireshark 3.4.0 (commit 'Added RDMnet protocol', March 2020)."
      }
    ],
    "flow": "management",
    "flow_note": "The same job over IP, and the same reasoning."
  },
  {
    "id": "rs-232",
    "name": "RS-232",
    "aka": [
      "TIA-232",
      "EIA-232",
      "RS232",
      "Serial"
    ],
    "category": "device-management",
    "summary": "Single-ended point-to-point serial signalling, and still the control input on a large amount of installed projection, switching and audio gear. One driver, one receiver, one cable, no addressing — which is exactly why it keeps working long after the network around it has been replaced.",
    "transport": [
      "rs232"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://tiaonline.org/what-we-do/standards/",
      "label": "TIA standards catalogue"
    },
    "steward": "TIA (Telecommunications Industry Association)",
    "status": "current",
    "typical_use": [
      "Projector and display control",
      "Matrix switchers and older audio processors",
      "Serial passthrough in control systems and HDBaseT extenders"
    ],
    "gotchas": [
      "Single-ended and unbalanced: the signal is referenced to ground, so it has none of the noise rejection of RS-422 or RS-485 and is limited to short runs. It also means a ground difference between the two ends becomes part of the signal.",
      "Straight-through versus null-modem is still the first thing to check. Two devices that both expect to be the DTE need their transmit and receive swapped, and nothing about the connector tells you which is which.",
      "Flow control is often the difference between working and not. A device expecting hardware handshaking on a cable that carries only three wires will accept the first command and then go quiet.",
      "Baud, data bits, parity and stop bits all have to match at both ends, and a mismatch produces plausible-looking garbage rather than silence."
    ],
    "confidence": "reported",
    "tags": [
      "serial",
      "control",
      "legacy"
    ],
    "sources": [
      {
        "title": "TIA-232-F — Interface Between Data Terminal Equipment and Data Circuit-Terminating Equipment Employing Serial Binary Data Interchange",
        "url": "https://tiaonline.org/what-we-do/standards/",
        "publisher": "Telecommunications Industry Association",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": null,
    "flow_note": "An electrical and connector standard. What rides on it decides the flow."
  },
  {
    "id": "rs-422",
    "name": "RS-422",
    "aka": [
      "TIA-422",
      "EIA-422",
      "RS422"
    ],
    "category": "device-management",
    "summary": "Balanced point-to-point serial signalling with one driver and up to ten receivers. It sits between RS-232 and RS-485: the noise immunity of a differential pair, without the multi-drop arbitration, which suits a one-to-many broadcast rather than a bus.",
    "transport": [
      "rs232"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://tiaonline.org/what-we-do/standards/",
      "label": "TIA standards catalogue"
    },
    "steward": "TIA (Telecommunications Industry Association)",
    "status": "current",
    "typical_use": [
      "Machine and deck control in broadcast",
      "Some stage-machinery installations",
      "The physical layer under several proprietary show-control links"
    ],
    "gotchas": [
      "One driver only. RS-422 is not a bus and cannot arbitrate: putting two transmitters on the same pair is an electrical conflict, not a collision that gets retried.",
      "Frequently confused with RS-485 because both are differential pairs at similar voltages. A device wired for one will often part-work with the other, which is worse than not working at all."
    ],
    "confidence": "reported",
    "tags": [
      "serial",
      "differential",
      "control"
    ],
    "sources": [
      {
        "title": "TIA-422-B — Electrical Characteristics of Balanced Voltage Digital Interface Circuits",
        "url": "https://tiaonline.org/what-we-do/standards/",
        "publisher": "Telecommunications Industry Association",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": null,
    "flow_note": "An electrical standard, like RS-232 but balanced. The flow is whatever it carries."
  },
  {
    "id": "rs-485",
    "name": "RS-485",
    "aka": [
      "TIA-485",
      "EIA-485",
      "TIA/EIA-485-A",
      "RS485"
    ],
    "category": "device-management",
    "summary": "The balanced, multi-drop electrical layer that DMX512, many Modbus installations and most machinery buses actually run on. It defines voltages and drive capability, not data — what the bits mean is always somebody else's standard sitting on top.",
    "transport": [
      "rs485"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://tiaonline.org/what-we-do/standards/",
      "label": "TIA standards catalogue"
    },
    "steward": "TIA (Telecommunications Industry Association)",
    "status": "current",
    "typical_use": [
      "Under DMX512 and RDM",
      "Under most Modbus RTU field wiring",
      "Motion and machinery control buses"
    ],
    "gotchas": [
      "RS-485 says nothing about connectors, pinout, baud rate or protocol. Two devices can both be \"RS-485\" and share nothing else. That is a feature of the standard and a recurring surprise on site.",
      "The load limit is stated in unit loads, not devices. One unit load is a 12 kΩ impedance across the pair and a driver must handle 32 of them. A quarter-unit-load receiver puts four devices in one unit load, which is why a modern DMX line can exceed 32 fixtures and an older one cannot.",
      "Termination is 120 Ω at each physical end of the bus and nowhere else. Two terminators give 60 Ω across the pair, which is what the driver expects. A terminator part-way along a run, or a missing one, both show up as intermittent errors rather than a clean failure.",
      "The common-mode range is −7 V to +12 V. A ground potential difference outside that window between two ends of a long run will corrupt data on a pair that measures fine, which is the case for a proper ground reference rather than just two conductors."
    ],
    "confidence": "reported",
    "tags": [
      "serial",
      "differential",
      "multidrop",
      "dmx"
    ],
    "sources": [
      {
        "title": "TIA-485-A — Electrical Characteristics of Generators and Receivers for Use in Balanced Digital Multipoint Systems",
        "url": "https://tiaonline.org/what-we-do/standards/",
        "publisher": "Telecommunications Industry Association",
        "primary": true
      },
      {
        "title": "The RS-485 Design Guide (SLLA272)",
        "url": "https://www.ti.com/lit/pdf/slla272",
        "publisher": "Texas Instruments"
      },
      {
        "title": "Guidelines for Proper Wiring of an RS-485 (TIA/EIA-485-A) Network",
        "url": "https://www.analog.com/en/resources/technical-articles/rs485-cable-specification-guide--maxim-integrated.html",
        "publisher": "Analog Devices"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": null,
    "flow_note": "The electrical layer DMX and many machinery buses sit on. It has no payload of its own."
  },
  {
    "id": "rtmp",
    "name": "RTMP",
    "aka": [
      "Real-Time Messaging Protocol"
    ],
    "category": "video-transport",
    "openness": "open-published",
    "first_published": 2009,
    "status": "current",
    "summary": "Adobe-originated streaming protocol that survives as the ingest format nearly every streaming platform still accepts. Largely replaced downstream by HLS and DASH, but the encoder-to-platform hop is still overwhelmingly RTMP.",
    "transport": [
      "tcp"
    ],
    "default_ports": [
      {
        "number": 1935,
        "transport": "tcp",
        "role": "RTMP ingest",
        "iana_registered": true
      }
    ],
    "spec_url": {
      "url": "https://rtmp.veriskope.com/docs/spec/",
      "label": "RTMP specification"
    },
    "steward": "Adobe (specification published), maintained in practice by platform vendors",
    "media": {
      "video": {
        "compression": "H.264 video with AAC audio, frozen there in practice",
        "note": "RTMP fixes no resolution or frame rate; the encoder decides both and the platform sets what it will accept. What is effectively fixed is the codec pair, so newer codecs need extensions that not every platform takes."
      }
    },
    "typical_use": [
      "Pushing a stream from OBS or a hardware encoder to a platform",
      "Ingest into a CDN for onward HLS delivery",
      "Simple venue-to-cloud streaming"
    ],
    "gotchas": [
      "RTMP is TCP. On a lossy link it stalls and buffers rather than degrading gracefully, which is why SRT exists for contribution over unmanaged networks.",
      "Codec support is frozen in practice at H.264 and AAC. Anything newer needs RTMP extensions the platform may not accept, or a different protocol entirely.",
      "The stream key is a credential. It is routinely pasted into chat and left in show files, and it lets anyone broadcast to that channel."
    ],
    "confidence": "reported",
    "tags": [
      "rtmp",
      "streaming",
      "ingest",
      "obs"
    ],
    "sources": [
      {
        "title": "RTMP specification",
        "url": "https://rtmp.veriskope.com/docs/spec/",
        "publisher": "Veriskope",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [
      {
        "kind": "software",
        "id": "obs-studio",
        "name": "OBS Studio",
        "vendor": "OBS Project",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RTMP output is the default path to almost every streaming platform."
      },
      {
        "kind": "software",
        "id": "vmix",
        "name": "vMix",
        "vendor": "StudioCoast",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Streaming."
      }
    ],
    "flow": "media"
  },
  {
    "id": "rtp",
    "name": "RTP",
    "aka": [
      "Real-time Transport Protocol",
      "RTP/RTCP"
    ],
    "category": "network-transport",
    "summary": "The framing that carries real-time media over UDP — sequence numbers, a timestamp and a payload type on every packet, so a receiver can reorder, detect loss and reconstruct timing. AES67, ST 2110 and most VoIP intercom are RTP underneath.",
    "transport": [
      "udp"
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://www.rfc-editor.org/rfc/rfc3550",
      "label": "RFC 3550 — RTP"
    },
    "steward": "IETF",
    "status": "current",
    "first_published": 1996,
    "typical_use": [
      "The media layer under AES67 and SMPTE ST 2110",
      "VoIP and IP intercom",
      "Streaming contribution feeds alongside RTSP or SIP signalling"
    ],
    "gotchas": [
      "RTP carries no reliability of its own. There are no retransmissions, so a lost packet is a lost packet — which is the correct trade for live media and the wrong one for file transfer.",
      "The timestamp is a media clock, not a wall clock. Aligning several RTP streams to each other needs a shared reference such as PTP.",
      "Port numbers are assigned by the signalling that set the session up, not by RTP itself, which is why a firewall rule for \"RTP\" is rarely a single port."
    ],
    "confidence": "reported",
    "tags": [
      "network",
      "streaming",
      "realtime"
    ],
    "sources": [
      {
        "title": "RFC 3550 — RTP, A Transport Protocol for Real-Time Applications",
        "url": "https://www.rfc-editor.org/rfc/rfc3550",
        "publisher": "IETF",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "media",
    "flow_note": "The transport AES67, RAVENNA and ST 2110 all actually run on."
  },
  {
    "id": "rttrpm",
    "name": "RTTrPM",
    "aka": [
      "Real Time Tracking Protocol Motion",
      "RTTrP Motion",
      "BlackTrax protocol"
    ],
    "category": "tracking-position",
    "summary": "The packet format BlackTrax uses to stream tracked position and orientation to third party systems. It carries centroid and individual point positions, quaternion or Euler orientation, velocity, acceleration and zone collisions for lighting, video and audio consumers.",
    "transport": [
      "udp"
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://rttrp.github.io/RTTrP-Wiki/RTTrPM.html",
      "label": "RTTrPM packet structure and module definitions"
    },
    "steward": "CAST Group (BlackTrax)",
    "status": "current",
    "typical_use": [
      "BlackTrax feeding media servers for projection onto moving objects",
      "Driving moving lights and followspot systems from beacon positions",
      "Positioning sources in object-based audio renderers",
      "Triggering show events from zone collision detection"
    ],
    "gotchas": [
      "The RTTrP header carries both a big-endian signature (0x4154) and a little-endian one (0x5441). Read the signature first and byte-swap the rest of the packet accordingly, or every position you decode looks like noise.",
      "A packet is a header plus a variable list of modules, each with its own type and size. Do not assume fixed offsets. Walk the module list by declared size or you will break on the next firmware release.",
      "Centroid position and tracked point position are separate module types. A beacon taped to a performer's shoulder is not the centroid of the trackable, and consuming the wrong one puts the light in the wrong place.",
      "RTTrPM (motion) and RTTrPL (lighting) share the same header. Motion is a fixed-rate stream, lighting is event-driven, so a receiver that assumes a steady packet rate will time out on the lighting side.",
      "The wiki documents no default port and no default address. Whatever the BlackTrax output configuration says is the truth, so get it from the tracking operator rather than guessing."
    ],
    "implementations": [
      {
        "name": "RTTrP reference stub code (C++ and Python)",
        "url": "https://github.com/RTTrP/RTTrP-v1.8.7.0",
        "language": "C++",
        "license": "MIT",
        "role": "receiver"
      },
      {
        "name": "RTTrPMtoOSC bridge",
        "url": "https://github.com/bastidererste/RTTrPMtoOSC",
        "language": "C++",
        "role": "receiver"
      }
    ],
    "confidence": "reported",
    "tags": [
      "tracking",
      "position",
      "blacktrax",
      "cast"
    ],
    "sources": [
      {
        "title": "Real-Time Tracking Protocol — RTTrPM",
        "url": "https://rttrp.github.io/RTTrP-Wiki/RTTrPM.html",
        "publisher": "CAST Group",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Real-Time Tracking Protocol (RTTrP overview, RTTrPM vs RTTrPL)",
        "url": "https://rttrp.github.io/RTTrP-Wiki/index.html",
        "publisher": "CAST Group",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "BlackTrax developer resources (simulator, UDP player, sample code)",
        "url": "https://blacktrax.cast-soft.com/developers/",
        "publisher": "CAST Group",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Used for BlackTrax tracking data."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "BlackTrax is listed among MultiController automation readers; the manual names the product rather than the RTTrPM protocol version, so the exact wire format is not confirmed in vendor docs."
      },
      {
        "kind": "software",
        "id": "l-isa-controller",
        "name": "L-ISA Controller",
        "vendor": "L-Acoustics",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Performer position from tracking systems."
      },
      {
        "kind": "software",
        "id": "notch",
        "name": "Notch",
        "vendor": "Notch (10bit FX Limited)",
        "direction": "in",
        "requires_licence": true,
        "confidence": "reported",
        "note": "BlackTrax is listed among supported tracking systems, but the docs name the product rather than the RTTrPM protocol version. Tracking support is an RFX-tier feature: Indie and VFX tiers have no tracking systems."
      },
      {
        "kind": "software",
        "id": "stage-precision",
        "name": "Stage Precision",
        "vendor": "Stage Precision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RTTrPM in and out."
      },
      {
        "kind": "hardware",
        "id": "blacktrax-system",
        "name": "BlackTrax",
        "vendor": "CAST Group",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RTTrP is CAST's open real-time tracking protocol, with RTTrPM and RTTrPL variants for third-party systems."
      },
      {
        "kind": "hardware",
        "id": "db-ds100",
        "name": "d&b audiotechnik DS100 Signal Engine",
        "vendor": "d&b audiotechnik",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Positional data from BlackTrax and other RTTrPM sources, usually via a bridge."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "BlackTrax position data."
      },
      {
        "kind": "hardware",
        "id": "hippotizer-boreal-plus-mk2",
        "name": "Hippotizer Boreal+ MK2",
        "vendor": "Green Hippo",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "BlackTrax tracking input via RTTrPM."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "RTTrPM tracking input."
      },
      {
        "kind": "hardware",
        "id": "tta-stagetracker-ii",
        "name": "TTA StageTracker II",
        "vendor": "TTA — Track The Artist",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Position output."
      },
      {
        "kind": "hardware",
        "id": "zactrack-pro",
        "name": "zactrack PRO",
        "vendor": "zactrack",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "RTTrPM output for audio object positions."
      }
    ],
    "flow": "control"
  },
  {
    "id": "sacn",
    "name": "sACN",
    "aka": [
      "Streaming ACN",
      "E1.31",
      "Streaming ACN (E1.31)"
    ],
    "category": "lighting-control",
    "summary": "Carries DMX512 data over standard IP networks as multicast UDP, one multicast group per universe. It is the vendor-neutral way to get lighting data around a building without running a copper DMX line to every position.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 5568,
        "transport": "udp",
        "role": "sACN data and synchronisation packets",
        "iana_registered": true,
        "note": "Registered with IANA as \"sdt\" (Session Data Transport), the ACN transport E1.31 sits on."
      }
    ],
    "multicast": {
      "used": true,
      "ranges": [
        "239.255.0.0/16 (IPv4, universe in low two octets)",
        "FF18::83:00:00:00/104 (IPv6)"
      ],
      "note": "IPv4 group for universe N is 239.255.<high byte of N>.<low byte of N>, so universe 1 is 239.255.0.1. Unicast is also permitted by the standard and is increasingly the safer choice on shared networks."
    },
    "universe_model": "512 slots per universe; universes 1-63999, plus 64214 for E1.31 discovery.",
    "openness": "open-published",
    "spec_url": {
      "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
      "label": "ESTA Technical Standards Program — published documents"
    },
    "standards": [
      "ansi-e1-31",
      "ansi-e1-17"
    ],
    "steward": "ESTA (Entertainment Services and Technology Association)",
    "first_published": 2009,
    "status": "current",
    "typical_use": [
      "Console to lighting network backbone in theatres, arenas and studios",
      "Feeding DMX gateways that break out to local XLR5 lines",
      "Driving pixel controllers and LED processors directly over ethernet",
      "Previsualisation and offline programming links"
    ],
    "gotchas": [
      "Multicast without IGMP snooping configured on the switch turns into a broadcast storm. This is the single most common cause of \"the network died when we patched the second console\".",
      "Priority is per-universe (0-200, default 100) and sources with equal priority get merged by the receiver, not by the sender. Two consoles at default priority will fight.",
      "Universe numbering is 1-based here but many products expose a 0-based index internally. Always confirm against the receiving device, not the console."
    ],
    "implementations": [
      {
        "name": "sACN (Python)",
        "url": "https://github.com/Hundemeier/sacn",
        "language": "Python",
        "license": "MIT",
        "role": "both"
      },
      {
        "name": "OLA (Open Lighting Architecture)",
        "url": "https://github.com/OpenLightingProject/ola",
        "language": "C++",
        "license": "LGPL-2.1-or-later",
        "role": "both"
      },
      {
        "name": "sacn (Rust)",
        "url": "https://github.com/lucasmerlin/sacn",
        "language": "Rust",
        "license": "Apache-2.0",
        "role": "both"
      }
    ],
    "confidence": "verified",
    "tags": [
      "lighting",
      "dmx-over-ip",
      "multicast",
      "esta"
    ],
    "sources": [
      {
        "title": "ANSI E1.31 — Lightweight streaming protocol for transport of DMX512 using ACN",
        "url": "https://tsp.esta.org/tsp/documents/published_docs.php",
        "publisher": "ESTA Technical Standards Program",
        "primary": true
      },
      {
        "title": "Service Name and Transport Protocol Port Number Registry (port 5568, sdt)",
        "url": "https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml",
        "publisher": "IANA",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "arkaos-mediamaster",
        "name": "ArKaos MediaMaster",
        "vendor": "ArKaos",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN control from a lighting console."
      },
      {
        "kind": "software",
        "id": "avolites-titan",
        "name": "Avolites Titan",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "sACN out to nodes, and Streaming ACN In is also available as an external trigger source on supported consoles."
      },
      {
        "kind": "software",
        "id": "capture",
        "name": "Capture",
        "vendor": "Capture Visualisation AB",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": null
      },
      {
        "kind": "software",
        "id": "chamsys-magicq",
        "name": "ChamSys MagicQ",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "sACN out in multicast or unicast, and received for capture or merging."
      },
      {
        "kind": "software",
        "id": "chataigne",
        "name": "Chataigne",
        "vendor": "Ben Kuper",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "daslight",
        "name": "Daslight",
        "vendor": "Daslight (Nicolaudie)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "sACN output."
      },
      {
        "kind": "software",
        "id": "depence",
        "name": "Depence",
        "vendor": "Syncronorm GmbH",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Listed alongside Art-Net on Syncronorm's own system-integration page as a supported DMX-over-network input."
      },
      {
        "kind": "software",
        "id": "disguise-designer",
        "name": "disguise Designer",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "dmx-workshop",
        "name": "DMX-Workshop",
        "vendor": "Singularity (UK) Ltd",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": null
      },
      {
        "kind": "software",
        "id": "dmxcontrol-3",
        "name": "DMXControl 3",
        "vendor": "DMXControl Projects e.V.",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN output."
      },
      {
        "kind": "software",
        "id": "dot2-onpc",
        "name": "dot2 onPC",
        "vendor": "MA Lighting",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Output multicast, universes 1 to 8, sACN priority fixed at 100. On onPC the first universe is free; beyond that a dot2 Node4 is required."
      },
      {
        "kind": "software",
        "id": "eos-family",
        "name": "Eos",
        "vendor": "Electronic Theatre Controls (ETC)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Enabled by default in Patch, universes 1-63,999. Incoming sACN levels can also be used as a show control trigger."
      },
      {
        "kind": "software",
        "id": "grandma3-onpc",
        "name": "grandMA3 onPC",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "One of the two Ethernet DMX protocols grandMA3 supports for sending and receiving."
      },
      {
        "kind": "software",
        "id": "hippotizer",
        "name": "Hippotizer",
        "vendor": "Green Hippo (an ACT Entertainment brand)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Accepted by the DMX component for desk control and available as a PixelMapper output protocol."
      },
      {
        "kind": "software",
        "id": "l8",
        "name": "L8",
        "vendor": "L8 LLC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "DMX input protocol on every edition, e.g. 2 universes on the entry CE edition."
      },
      {
        "kind": "software",
        "id": "lightconverse",
        "name": "LightConverse",
        "vendor": "LightConverse",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN input from a console."
      },
      {
        "kind": "software",
        "id": "lightkey",
        "name": "Lightkey",
        "vendor": "Lightkey",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN output."
      },
      {
        "kind": "software",
        "id": "madmapper",
        "name": "MadMapper",
        "vendor": "garageCube",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "medialon-control-system",
        "name": "Medialon Control System",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "sACN for lighting integration."
      },
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "sACN output alongside Art-Net; the manual warns sACN universe numbering starts at 1 whereas Art-Net starts at 0."
      },
      {
        "kind": "software",
        "id": "ola",
        "name": "OLA (Open Lighting Architecture)",
        "vendor": "Open Lighting Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented as the Streaming ACN (E1.31) plugin."
      },
      {
        "kind": "software",
        "id": "onyx",
        "name": "ONYX",
        "vendor": "Obsidian Control Systems",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Can be set to output, input or both, with a settable sACN priority in the 0-200 range."
      },
      {
        "kind": "software",
        "id": "pixera",
        "name": "PIXERA",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control and output."
      },
      {
        "kind": "software",
        "id": "qlab",
        "name": "QLab",
        "vendor": "Figure 53",
        "direction": "out",
        "requires_licence": true,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "qlc-plus",
        "name": "QLC+",
        "vendor": "QLC+ project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Shipped as the E1.31 plugin."
      },
      {
        "kind": "software",
        "id": "realizzer-3d",
        "name": "Realizzer 3D",
        "vendor": "Realizzer",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN input from a console."
      },
      {
        "kind": "software",
        "id": "sacnview",
        "name": "sACNView",
        "vendor": null,
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Core purpose is monitoring and sending ANSI/ESTA E1.31 (Streaming ACN)."
      },
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN in for console control."
      },
      {
        "kind": "software",
        "id": "stage-precision",
        "name": "Stage Precision",
        "vendor": "Stage Precision",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "sACN in and out."
      },
      {
        "kind": "software",
        "id": "touchdesigner",
        "name": "TouchDesigner",
        "vendor": "Derivative",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": null
      },
      {
        "kind": "software",
        "id": "unreal-engine",
        "name": "Unreal Engine",
        "vendor": "Epic Games",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN through the DMX plugin."
      },
      {
        "kind": "software",
        "id": "vectorworks-vision",
        "name": "Vectorworks Vision",
        "vendor": "Vectorworks, Inc.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented alongside Art-Net as a DMX-provider option for Vectorworks' previsualisation line."
      },
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Dissected via the ACN dissector's 'Streaming DMX' (E1.31) option, which must be enabled in Preferences > Protocols > ACN."
      },
      {
        "kind": "software",
        "id": "wysiwyg",
        "name": "WYSIWYG",
        "vendor": "CAST Group Inc.",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Documented alongside Art-Net as a network DMX input from the console."
      },
      {
        "kind": "hardware",
        "id": "analog-way-picturall-mk2",
        "name": "Analog Way Picturall Mark II",
        "vendor": "Analog Way",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN control input."
      },
      {
        "kind": "hardware",
        "id": "avolites-ai-q3",
        "name": "Avolites Ai Q3",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control and output."
      },
      {
        "kind": "hardware",
        "id": "avolites-arena",
        "name": "Avolites Arena",
        "vendor": "Avolites",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network output."
      },
      {
        "kind": "hardware",
        "id": "avolites-diamond-9",
        "name": "Avolites Diamond 9",
        "vendor": "Avolites",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN output, with priority per universe."
      },
      {
        "kind": "hardware",
        "id": "avolites-tiger-touch-3",
        "name": "Avolites Tiger Touch III",
        "vendor": "Avolites",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN output."
      },
      {
        "kind": "hardware",
        "id": "chamsys-magicq-mq80",
        "name": "ChamSys MagicQ MQ80",
        "vendor": "ChamSys",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Multiple universes over network."
      },
      {
        "kind": "hardware",
        "id": "chamsys-mq500m-stadium",
        "name": "ChamSys MagicQ MQ500M Stadium",
        "vendor": "ChamSys",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Output and input; sACN priority and merging handled in the console patch."
      },
      {
        "kind": "hardware",
        "id": "christie-pandoras-box",
        "name": "Christie Pandoras Box",
        "vendor": "Christie",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN in for console control."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9200",
        "name": "Cisco Catalyst 9200 Series",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported. IGMP snooping and querier configuration are what make sACN behave here."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9300",
        "name": "Cisco Catalyst 9300",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported; IGMP snooping and a querier must be configured."
      },
      {
        "kind": "hardware",
        "id": "city-theatrical-multiverse",
        "name": "City Theatrical Multiverse Transmitter",
        "vendor": "City Theatrical",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network input."
      },
      {
        "kind": "hardware",
        "id": "disguise-gx-3",
        "name": "disguise gx 3",
        "vendor": "disguise",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via Designer's DMX device drivers."
      },
      {
        "kind": "hardware",
        "id": "elc-dmxlan-node8",
        "name": "ELC dmXLAN node8",
        "vendor": "ELC Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Per port."
      },
      {
        "kind": "hardware",
        "id": "enttec-din-ethergate-mk2",
        "name": "ENTTEC DIN Ethergate MK2",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Both ports."
      },
      {
        "kind": "hardware",
        "id": "enttec-ode-mk3",
        "name": "ENTTEC ODE Mk3",
        "vendor": "ENTTEC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": null
      },
      {
        "kind": "hardware",
        "id": "eos-apex-5",
        "name": "Eos Apex 5",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "The primary output protocol for Eos, and also usable as a show control input."
      },
      {
        "kind": "hardware",
        "id": "etc-eos-apex-10",
        "name": "ETC Eos Apex 10",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Primary network output."
      },
      {
        "kind": "hardware",
        "id": "etc-ion-xe-20",
        "name": "ETC Ion Xe 20",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN output, the Eos default."
      },
      {
        "kind": "hardware",
        "id": "etc-response-mk2-gateway",
        "name": "ETC Response Mk2 DMX/RDM Gateway",
        "vendor": "ETC",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN in, DMX out, and DMX in to sACN."
      },
      {
        "kind": "hardware",
        "id": "etc-sensor3-rack",
        "name": "ETC Sensor3 Dimmer Rack",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN input from the console."
      },
      {
        "kind": "hardware",
        "id": "etc-thrupower-rack",
        "name": "ETC ThruPower Rack",
        "vendor": "ETC",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Network control."
      },
      {
        "kind": "hardware",
        "id": "follow-me-3d",
        "name": "Follow-Me 3D",
        "vendor": "Follow-Me",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Fixture control."
      },
      {
        "kind": "hardware",
        "id": "grandma2-full-size",
        "name": "grandMA2 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN in and out."
      },
      {
        "kind": "hardware",
        "id": "grandma3-full-size",
        "name": "grandMA3 full-size",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "One of the two Ethernet DMX protocols grandMA3 supports for sending and receiving."
      },
      {
        "kind": "hardware",
        "id": "grandma3-light",
        "name": "MA Lighting grandMA3 light",
        "vendor": "MA Lighting",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Primary network output."
      },
      {
        "kind": "hardware",
        "id": "green-hippo-karst-plus",
        "name": "Green Hippo Hippotizer Karst+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Control and pixel output."
      },
      {
        "kind": "hardware",
        "id": "hippotizer-boreal-plus-mk2",
        "name": "Hippotizer Boreal+ MK2",
        "vendor": "Green Hippo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Alternative DMX-over-Ethernet path to Art-Net."
      },
      {
        "kind": "hardware",
        "id": "hog-4",
        "name": "Hog 4",
        "vendor": "High End Systems",
        "direction": "out",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Over the dedicated gigabit Ethernet port. Universe count expands with networked DP8000 processors."
      },
      {
        "kind": "hardware",
        "id": "lumenradio-crmx-nova-tx2",
        "name": "LumenRadio CRMX Nova TX2",
        "vendor": "LumenRadio",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "sACN input on network-equipped models."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-10",
        "name": "Luminex GigaCore 10",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported. IGMP snooping is the reason to use it over an unmanaged switch."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-16xt",
        "name": "Luminex GigaCore 16Xt",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, not originated. IGMP snooping is the reason to use a managed switch here."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-26i",
        "name": "Luminex GigaCore 26i",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported, with IGMP snooping."
      },
      {
        "kind": "hardware",
        "id": "luminex-luminode-12",
        "name": "Luminex LumiNode 12",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN in and out per port."
      },
      {
        "kind": "hardware",
        "id": "megapixel-helios",
        "name": "Megapixel HELIOS LED Processing Platform",
        "vendor": "Megapixel VR",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Control."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN in for console control."
      },
      {
        "kind": "hardware",
        "id": "netgear-m4250",
        "name": "NETGEAR M4250 (AV Line)",
        "vendor": "NETGEAR",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Transported; IGMP snooping with querier is the point of using a managed switch here."
      },
      {
        "kind": "hardware",
        "id": "obsidian-nx4",
        "name": "Obsidian Control Systems NX4",
        "vendor": "Obsidian Control Systems",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN output."
      },
      {
        "kind": "hardware",
        "id": "pathway-pathport-octo",
        "name": "Pathway Connectivity Pathport OCTO",
        "vendor": "Pathway Connectivity",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Per port."
      },
      {
        "kind": "hardware",
        "id": "pixera-one",
        "name": "AV Stumpfl PIXERA one",
        "vendor": "AV Stumpfl",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN in for console control."
      },
      {
        "kind": "hardware",
        "id": "wireless-solution-blackbox-f2",
        "name": "Wireless Solution W-DMX BlackBox F-2 G6",
        "vendor": "Wireless Solution",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "sACN on Ethernet-equipped variants."
      },
      {
        "kind": "hardware",
        "id": "zactrack-pro",
        "name": "zactrack PRO",
        "vendor": "zactrack",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "sACN output for tracked fixture control."
      },
      {
        "kind": "hardware",
        "id": "zero88-flx-s48",
        "name": "Zero 88 FLX S48",
        "vendor": "Zero 88",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "sACN output."
      }
    ],
    "flow": "control"
  },
  {
    "id": "sdi-embedded-audio",
    "name": "SDI Embedded Audio",
    "aka": [
      "Embedded audio",
      "SDI audio"
    ],
    "category": "audio-transport",
    "summary": "AES3-derived digital audio mapped into the ancillary data space of an SDI video signal. It carries programme, mix-minus and isolated feeds with the picture instead of on separate audio cables.",
    "transport": [
      "other",
      "fibre"
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://pub.smpte.org/latest/st299-1/st0299-1-2009.pdf",
      "label": "SMPTE ST 299-1:2009 — 24-Bit Digital Audio Format for SMPTE 292"
    },
    "steward": "SMPTE (Society of Motion Picture and Television Engineers)",
    "status": "current",
    "typical_use": [
      "Camera and replay audio carried with video into a production switcher",
      "Programme and mix-minus feeds through SDI routers and distribution amplifiers",
      "Audio extraction at recorders, monitors and streaming encoders"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          32,
          44.1,
          48,
          96
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 16,
        "encoding": "AES3-derived linear PCM or SMPTE ST 337 non-PCM data",
        "note": "ST 299-1 carries four groups of four channels at up to 48 kHz. At 96 kHz, each group carries two channels, reducing the maximum to eight."
      }
    },
    "gotchas": [
      "Channels travel in groups of four. An embedder or de-embedder configured for the wrong group can pass clean video while returning silence on the expected audio pair.",
      "The 16-channel maximum applies at 32, 44.1 or 48 kHz. At 96 kHz ST 299-1 carries eight channels, so raising the sample rate halves the available channel count.",
      "Audio data and audio control packets occupy different ancillary spaces. Equipment that processes or strips ancillary data can preserve the picture while losing embedded audio or its control information."
    ],
    "confidence": "verified",
    "tags": [
      "audio",
      "video",
      "sdi",
      "embedded-audio",
      "smpte"
    ],
    "sources": [
      {
        "title": "SMPTE ST 299-1:2009 — 24-Bit Digital Audio Format for SMPTE 292",
        "url": "https://pub.smpte.org/latest/st299-1/st0299-1-2009.pdf",
        "publisher": "SMPTE",
        "accessed": "2026-09-11",
        "primary": true
      },
      {
        "title": "SMPTE 299-0:2010 — Roadmap for the 299 Document Suite",
        "url": "https://pub.smpte.org/doc/ov299-0/20100721-pub/ov0299-0-2010.pdf",
        "publisher": "SMPTE",
        "accessed": "2026-09-11",
        "primary": true
      }
    ],
    "contributed_by": [
      "iibaranov-IG"
    ],
    "updated": "2026-09-11",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "sdi",
    "name": "SDI (Serial Digital Interface)",
    "aka": [
      "SDI",
      "HD-SDI",
      "3G-SDI",
      "6G-SDI",
      "12G-SDI",
      "SMPTE 259M",
      "SMPTE 292"
    ],
    "category": "video-transport",
    "summary": "SMPTE's uncompressed baseband digital video interface, carried on 75 ohm coax and BNC from 270 Mb/s standard definition up to 11.88 Gb/s 12G. It is still the backbone of most live video: point to point, no negotiation, no network, and it either locks or it does not.",
    "transport": [
      "other",
      "fibre"
    ],
    "openness": "open-published",
    "spec_url": {
      "url": "https://pub.smpte.org/pub/st292-1/st292-1-2018.pdf",
      "label": "SMPTE ST 292-1:2018 — 1.5 Gb/s Signal/Data Serial Interface (free PDF)"
    },
    "steward": "SMPTE (Society of Motion Picture and Television Engineers)",
    "status": "current",
    "typical_use": [
      "Camera to switcher and switcher to projector or LED processor",
      "Distribution amplifiers and routers in a control room or OB truck",
      "Feeding media servers, recorders and multiviewers",
      "Long runs on fibre via SDI to fibre converters (SMPTE ST 297)"
    ],
    "media": {
      "video": {
        "max_resolution": "3840x2160",
        "max_frame_rate": 60,
        "colour_sampling": [
          "4:2:2",
          "4:4:4"
        ],
        "bit_depths": [
          10,
          12
        ],
        "compression": "None — uncompressed",
        "note": "3840x2160 needs 12G-SDI on a single link; above that you are on two or four. The rate tiers are SD 270 Mbit/s, HD 1.485, 3G 2.97, 6G 5.94 and 12G 11.88. Cable reach falls as the rate rises, because coax loss goes with the square root of frequency and the frequency that matters is half the bit rate."
      },
      "audio": {
        "sample_rates_khz": [
          48
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 16,
        "encoding": "Embedded AES3 in the ancillary data space",
        "note": "Sixteen channels in four groups, riding in the horizontal blanking."
      }
    },
    "gotchas": [
      "The bit rate is fixed by the standard, not by the picture. ST 259 is 143/270/360 Mb/s, ST 292-1 is 1.485 Gb/s (or 1.485/1.001), ST 2082-1 is 11.88 Gb/s. A \"12G\" run is really an 11.88 Gb/s run.",
      "The connector is 75 ohm BNC per IEC 61169-8. 50 ohm BNCs are mechanically identical, will fit, will pass SD happily, and will then fail at 3G and 12G in a way that looks like a bad cable everywhere else in the chain.",
      "Cable loss is specified at half the clock frequency, around 20 dB for ST 292-1. The same drum of cable that carries HD across a stadium will not carry 12G, so re-derate every existing run when you upgrade rate.",
      "There is no negotiation, no handshake and no error correction. A marginal link produces sparkles or black frames, and the receiver reports lock rather than quality, so \"it says it is locked\" proves very little.",
      "Audio, timecode and captions ride as ancillary data in the blanking intervals. Some converters, re-clockers and scalers pass video cleanly and drop ANC, so timecode and captions vanish with no error anywhere.",
      "Return loss is specified at 15 dB and rise time at 270 ps for HD, 45 ps for 12G. Cheap patch panels and barrel connectors are the usual reason a 12G path that works on the bench fails in the rack."
    ],
    "confidence": "verified",
    "tags": [
      "video",
      "baseband",
      "coax",
      "smpte",
      "bnc"
    ],
    "sources": [
      {
        "title": "SMPTE ST 292-1:2018 — 1.5 Gb/s Signal/Data Serial Interface",
        "url": "https://pub.smpte.org/pub/st292-1/st292-1-2018.pdf",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "SMPTE ST 259:2008 — SDTV Digital Signal/Data, Serial Digital Interface",
        "url": "https://pub.smpte.org/pub/st259/st0259-2008.pdf",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "SMPTE ST 2082-1:2023 — 12 Gb/s Signal/Data Serial Interface",
        "url": "https://pub.smpte.org/doc/st2082-1/20231115-pub/st2082-1-2023.pdf",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "SMPTE EG 2111-1:2021 — SD-SDI and HD-SDI Standards Roadmap",
        "url": "https://pub.smpte.org/latest/eg2111-1/eg2111-1-2021.pdf",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "millumin",
        "name": "Millumin",
        "vendor": "Anomes (Philippe Chaurand)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "verified",
        "note": "Via Blackmagic (Intensity, UltraStudio, DeckLink) and AJA cards, used both for capture and as outputs; Epiphan, Magewell, Inogeni and GigE cameras are also listed for capture."
      },
      {
        "kind": "software",
        "id": "ventuz",
        "name": "Ventuz",
        "vendor": "Ventuz Technology",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "SDI in and out with suitable capture hardware."
      },
      {
        "kind": "hardware",
        "id": "analog-way-aquilon-rs4",
        "name": "Analog Way Aquilon RS4",
        "vendor": "Analog Way",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "12G and 3G-SDI on the input and output cards."
      },
      {
        "kind": "hardware",
        "id": "barco-e2",
        "name": "Barco Event Master E2",
        "vendor": "Barco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "3G-SDI inputs and outputs on the standard cards."
      },
      {
        "kind": "hardware",
        "id": "blackmagic-atem-4me-constellation-hd",
        "name": "Blackmagic ATEM 4 M/E Constellation HD",
        "vendor": "Blackmagic Design",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "3G-SDI in and out across all ports."
      },
      {
        "kind": "hardware",
        "id": "blackmagic-smart-videohub-40x40",
        "name": "Blackmagic Smart Videohub 40x40",
        "vendor": "Blackmagic Design",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "12G-SDI routing across all ports."
      },
      {
        "kind": "hardware",
        "id": "brompton-tessera-sx40",
        "name": "Brompton Tessera SX40",
        "vendor": "Brompton Technology",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "12G / quad 3G-SDI input depending on configuration."
      },
      {
        "kind": "hardware",
        "id": "novastar-mx40-pro",
        "name": "NovaStar MX40 Pro",
        "vendor": "NovaStar",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "3G-SDI input."
      }
    ],
    "flow": "media"
  },
  {
    "id": "smpte-st-2110",
    "name": "SMPTE ST 2110",
    "aka": [
      "ST 2110",
      "2110",
      "SMPTE 2110"
    ],
    "category": "video-transport",
    "summary": "A suite of SMPTE standards for carrying uncompressed video, audio and ancillary data as separate RTP streams over a managed IP network, all locked to PTP. It is the broadcast plant replacement for an SDI router, used in OB trucks, studios and large arena control rooms.",
    "transport": [
      "udp"
    ],
    "multicast": {
      "used": true,
      "note": "Streams are normally multicast, but the suite does not reserve an address range. Addresses are assigned by the facility and handed to receivers in the SDP, usually via a broadcast controller rather than typed in by hand."
    },
    "openness": "published-paid",
    "spec_url": {
      "url": "https://www.smpte.org/standards/st2110",
      "label": "SMPTE ST 2110 suite of standards"
    },
    "steward": "SMPTE (Society of Motion Picture and Television Engineers)",
    "first_published": 2017,
    "status": "current",
    "typical_use": [
      "IP video routing in broadcast facilities and OB trucks",
      "Arena and stadium control rooms replacing large SDI routers",
      "Carrying camera, replay and graphics feeds on shared network infrastructure",
      "Audio (ST 2110-30) alongside video on the same physical network"
    ],
    "media": {
      "video": {
        "colour_sampling": [
          "4:2:2",
          "4:4:4"
        ],
        "bit_depths": [
          8,
          10,
          12,
          16
        ],
        "compression": "None — uncompressed essence",
        "note": "ST 2110-20 is resolution and frame-rate agnostic by design; what limits you is the link. Uncompressed HD is around 1.5 Gbit/s and UHD around 12 Gbit/s, so the practical ceiling is the network rather than the standard. Audio travels separately in ST 2110-30 as AES67."
      },
      "audio": {
        "sample_rates_khz": [
          48
        ],
        "bit_depths": [
          16,
          24
        ],
        "encoding": "ST 2110-30, which is AES67",
        "note": "Essence streams are separate, so audio and video are independently routable — which is the whole point of 2110 and the reason lip sync becomes something you have to manage rather than something you get."
      }
    },
    "gotchas": [
      "Video, audio and ancillary data are separate streams with separate multicast addresses. Losing one leaves the others running, so \"no audio\" or \"no timecode\" can present as a perfectly healthy video path.",
      "Everything hangs off PTP. ST 2110-10 defines the system timing model, so a grandmaster that steps, or two grandmasters fighting, takes the whole plant out at once rather than degrading gracefully.",
      "ST 2110-20 video is genuinely uncompressed. Bandwidth is set by raster and frame rate, not by an average bitrate, so plan link capacity from the video format and leave headroom before you commit to a switch.",
      "ST 2110-21 defines sender traffic shaping types. A sender and a receiver with mismatched shaping expectations gives intermittent picture breakup under load, not a clean failure you can point at.",
      "ST 2110-30 audio is closely related to AES67 but the two do not automatically interoperate. Packet time and channel count profiles have to match on both ends before anything passes.",
      "The suite is a dozen separate documents (ST 2110-10, -20, -21, -22, -30, -31, -40, -41, -43, plus RPs) and they are priced individually. Budget for the whole set, not one part number."
    ],
    "implementations": [
      {
        "name": "EBU LIST (pi-list)",
        "url": "https://github.com/ebu/pi-list",
        "language": "C++",
        "license": "GPL-3.0-or-later",
        "role": "analyser"
      }
    ],
    "confidence": "reported",
    "tags": [
      "video",
      "video-over-ip",
      "broadcast",
      "smpte",
      "ptp"
    ],
    "sources": [
      {
        "title": "ST 2110 Suite of Standards",
        "url": "https://www.smpte.org/standards/st2110",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "SMPTE ST 2110 FAQ",
        "url": "https://www.smpte.org/smpte-st-2110-faq",
        "publisher": "SMPTE",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "SMPTE Publishes ST 2110 Standards for Professional Media Over Managed IP Networks",
        "url": "https://www.tvtechnology.com/the-wire-blog/9354-509354",
        "publisher": "TV Tech",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "software",
        "id": "smode",
        "name": "Smode",
        "vendor": "Smode Tech",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "ST 2110 on suitably equipped systems."
      },
      {
        "kind": "software",
        "id": "vmix",
        "name": "vMix",
        "vendor": "StudioCoast",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "On higher tiers with suitable hardware."
      },
      {
        "kind": "hardware",
        "id": "analog-way-alta-4k",
        "name": "Analog Way Alta 4K",
        "vendor": "Analog Way",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Depending on option."
      },
      {
        "kind": "hardware",
        "id": "brompton-tessera-s8",
        "name": "Brompton Tessera S8",
        "vendor": "Brompton Technology",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "IP video with the relevant option."
      },
      {
        "kind": "hardware",
        "id": "brompton-tessera-sx40",
        "name": "Brompton Tessera SX40",
        "vendor": "Brompton Technology",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "ST 2110 input on suitably licensed systems."
      },
      {
        "kind": "hardware",
        "id": "megapixel-helios",
        "name": "Megapixel HELIOS LED Processing Platform",
        "vendor": "Megapixel VR",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "IP video input."
      },
      {
        "kind": "hardware",
        "id": "modulo-kinetic",
        "name": "Modulo Kinetic",
        "vendor": "Modulo Pi",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "ST 2110 on suitably equipped nodes."
      }
    ],
    "flow": "media"
  },
  {
    "id": "snmp",
    "name": "SNMP",
    "aka": [
      "Simple Network Management Protocol"
    ],
    "category": "device-management",
    "openness": "open-published",
    "first_published": 1988,
    "status": "current",
    "summary": "The long-standing network device monitoring protocol. In live entertainment it is how switches, UPSs, projectors and increasingly amplifiers and processors report status into a monitoring dashboard.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 161,
        "transport": "udp",
        "role": "SNMP agent",
        "iana_registered": true
      },
      {
        "number": 162,
        "transport": "udp",
        "role": "SNMP trap receiver",
        "iana_registered": true
      }
    ],
    "spec_url": {
      "url": "https://datatracker.ietf.org/doc/html/rfc3411",
      "label": "RFC 3411 (SNMPv3 framework)"
    },
    "steward": "IETF",
    "typical_use": [
      "Monitoring switch port status and errors on a show network",
      "Alerting when a UPS goes to battery",
      "Projector lamp hours and status in an installation"
    ],
    "gotchas": [
      "SNMPv1 and v2c send the community string in clear text and are effectively unauthenticated. On a venue network reachable from anywhere, that is a real exposure; v3 exists for a reason.",
      "Traps are fire-and-forget UDP. A trap that never arrives looks exactly like nothing having gone wrong.",
      "Vendor MIBs are what make the data meaningful. Without the MIB you get numbered OIDs and no idea which one is the temperature."
    ],
    "confidence": "verified",
    "tags": [
      "snmp",
      "monitoring",
      "network",
      "management"
    ],
    "sources": [
      {
        "title": "RFC 3411: SNMP management frameworks",
        "url": "https://datatracker.ietf.org/doc/html/rfc3411",
        "publisher": "IETF",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Decodes SNMP."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9200",
        "name": "Cisco Catalyst 9200 Series",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "SNMP agent and traps, the usual way a venue monitors its switches."
      },
      {
        "kind": "hardware",
        "id": "cisco-catalyst-9300",
        "name": "Cisco Catalyst 9300",
        "vendor": "Cisco",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Monitoring."
      },
      {
        "kind": "hardware",
        "id": "crestron-cp4n",
        "name": "Crestron CP4N Control System",
        "vendor": "Crestron",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Monitoring."
      },
      {
        "kind": "hardware",
        "id": "evertz-5601msc",
        "name": "Evertz 5601MSC Master Sync and Clock",
        "vendor": "Evertz",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Monitoring."
      },
      {
        "kind": "hardware",
        "id": "kinesys-libra",
        "name": "Kinesys Libra",
        "vendor": "Kinesys",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Monitoring, depending on configuration."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-16xt",
        "name": "Luminex GigaCore 16Xt",
        "vendor": "Luminex Network Intelligence",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "SNMP monitoring of switch state."
      },
      {
        "kind": "hardware",
        "id": "luminex-gigacore-26i",
        "name": "Luminex GigaCore 26i",
        "vendor": "Luminex Network Intelligence",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Monitoring."
      },
      {
        "kind": "hardware",
        "id": "medialon-showmaster-pro",
        "name": "Medialon Showmaster Pro",
        "vendor": "Medialon (Barco)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Monitoring."
      },
      {
        "kind": "hardware",
        "id": "netgear-m4250",
        "name": "NETGEAR M4250 (AV Line)",
        "vendor": "NETGEAR",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "SNMP monitoring."
      },
      {
        "kind": "hardware",
        "id": "rts-adam",
        "name": "RTS ADAM Intercom Matrix",
        "vendor": "RTS (Bosch)",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Monitoring."
      },
      {
        "kind": "hardware",
        "id": "symetrix-radius-nx-12x8",
        "name": "Symetrix Radius NX 12x8",
        "vendor": "Symetrix",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Monitoring."
      }
    ],
    "flow": "management",
    "flow_note": "Monitoring. The definitive no-deadline protocol."
  },
  {
    "id": "soundgrid",
    "name": "SoundGrid",
    "category": "audio-transport",
    "openness": "proprietary-closed",
    "status": "current",
    "summary": "Waves' networked audio and processing protocol, carrying audio between interfaces, consoles and a dedicated DSP server over standard gigabit Ethernet at low latency.",
    "transport": [
      "ethernet-l2"
    ],
    "typical_use": [
      "Running plug-in racks on a live console",
      "Multitrack recording and virtual soundcheck",
      "Offloading processing from a mixing surface"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          44.1,
          48,
          96
        ],
        "note": "Channel capacity halves as the rate doubles: an interface rated 128 channels at 48 kHz carries 64 at 96 kHz. Bandwidth is also counted per receiving device, so 64 channels sent to four destinations spends 256 channels of it. Bit depth is a property of the interface rather than the transport, and several console cards are held to their host console's rates, so check both ends."
      }
    },
    "gotchas": [
      "SoundGrid wants its own dedicated network interface and its own switch. Sharing the NIC with a show network or the internet is the standard cause of dropouts.",
      "It is a layer 2 protocol on ordinary gigabit hardware, which makes the switch choice matter more than people expect: energy-saving features and cheap switches both cause problems."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "waves",
      "soundgrid",
      "plugins",
      "network-audio"
    ],
    "sources": [
      {
        "title": "Waves Live — common questions answered",
        "url": "https://www.waves.com/support/waves-live-common-questions-answered",
        "publisher": "Waves Audio",
        "accessed": "2026-10-09",
        "primary": true
      },
      {
        "title": "Waves SoundGrid",
        "url": "https://www.waves.com/",
        "publisher": "Waves Audio",
        "accessed": "2026-08-26",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "allen-heath-avantis",
        "name": "Allen & Heath Avantis",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via option card."
      },
      {
        "kind": "hardware",
        "id": "directout-prodigy-mp",
        "name": "DirectOut PRODIGY.MP",
        "vendor": "DirectOut",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Via module."
      }
    ],
    "flow": "media"
  },
  {
    "id": "spdif",
    "name": "S/PDIF",
    "aka": [
      "Sony/Philips Digital Interface",
      "IEC 60958 Type II",
      "SPDIF"
    ],
    "category": "audio-transport",
    "summary": "The consumer form of AES3: the same two-channel data format at a much lower voltage, on 75 Ω coax with an RCA connector or on TOSLINK optical fibre. Same bits, different electrical world.",
    "transport": [
      "other"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://webstore.iec.ch/",
      "label": "IEC Webstore"
    },
    "steward": "IEC",
    "status": "current",
    "typical_use": [
      "Consumer and semi-pro playback sources into a system",
      "Optical feeds where galvanic isolation is wanted",
      "Interfacing a laptop or media player to a professional chain"
    ],
    "media": {
      "audio": {
        "sample_rates_khz": [
          32,
          44.1,
          48
        ],
        "bit_depths": [
          24
        ],
        "max_channels": 2,
        "encoding": "Linear PCM, or a compressed bitstream carried transparently",
        "note": "The consumer form of AES3. It also carries compressed multichannel bitstreams unchanged, which is why a receiver can be handed something it cannot decode and simply produce nothing."
      }
    },
    "gotchas": [
      "Nominal 0.5 V peak-to-peak on 75 Ω, against AES3's several volts on 110 Ω. The data survives a converter; it does not survive a soldered adaptor.",
      "Practical coax runs are short — around 10 m is the usual working figure. TOSLINK is shorter still and intolerant of tight bends.",
      "Consumer channel-status bits carry copy-protection flags that some professional receivers act on and others ignore."
    ],
    "confidence": "reported",
    "tags": [
      "audio",
      "digital",
      "consumer"
    ],
    "sources": [
      {
        "title": "IEC 60958-3 — Digital audio interface, Part 3 Consumer applications",
        "url": "https://webstore.iec.ch/",
        "publisher": "International Electrotechnical Commission",
        "primary": true
      },
      {
        "title": "Interfacing AES3 and S/PDIF (RaneNote 149)",
        "url": "https://www.ranecommercial.com/legacy/note149.html",
        "publisher": "Rane Corporation"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "media"
  },
  {
    "id": "srt",
    "name": "SRT (Secure Reliable Transport)",
    "category": "video-transport",
    "openness": "open-published",
    "first_published": 2017,
    "status": "current",
    "summary": "Open-source low-latency video transport designed to carry contribution-quality streams over unmanaged networks, recovering lost packets with ARQ inside a configurable latency budget. The standard way a live feed leaves a venue over the public internet.",
    "transport": [
      "udp"
    ],
    "default_ports": [
      {
        "number": 9000,
        "transport": "udp",
        "role": "Common default, but SRT has no fixed port: it is set per stream",
        "iana_registered": false,
        "note": "Deployment chooses the port; 9000 and 1935 are conventions, not assignments."
      }
    ],
    "spec_url": {
      "url": "https://www.srtalliance.org/",
      "label": "SRT Alliance"
    },
    "steward": "SRT Alliance / Haivision",
    "typical_use": [
      "Sending a show feed to a remote broadcaster or streaming platform",
      "Site-to-site contribution over the public internet",
      "Remote production where a dedicated circuit is not available"
    ],
    "media": {
      "video": {
        "compression": "Whatever the payload carries",
        "note": "SRT does not define a video format at all. It carries an MPEG transport stream, so resolution, frame rate and codec are decided by the encoder feeding it. What SRT contributes is retransmission and a configurable latency buffer over a link you do not control."
      }
    },
    "gotchas": [
      "Latency is a setting, and it is a trade against packet recovery. A latency budget set too low on a lossy link produces exactly the artefacts SRT is meant to prevent.",
      "Caller, listener and rendezvous modes decide who initiates. Two ends both configured as caller will never connect, and it is the most common first-time failure.",
      "Encryption is optional and off by default in many implementations. \"Secure\" is in the name, not necessarily in the configuration."
    ],
    "implementations": [
      {
        "name": "srt",
        "url": "https://github.com/Haivision/srt",
        "language": "C++",
        "license": "MPL-2.0"
      },
      {
        "name": "FFmpeg (SRT protocol support)",
        "url": "https://ffmpeg.org/",
        "language": "C",
        "license": "LGPL-2.1-or-later"
      }
    ],
    "confidence": "reported",
    "tags": [
      "srt",
      "streaming",
      "contribution",
      "low-latency",
      "open-source"
    ],
    "sources": [
      {
        "title": "SRT Alliance",
        "url": "https://www.srtalliance.org/",
        "publisher": "SRT Alliance",
        "accessed": "2026-08-26",
        "primary": true
      },
      {
        "title": "Haivision/srt on GitHub",
        "url": "https://github.com/Haivision/srt",
        "publisher": "GitHub",
        "accessed": "2026-08-26"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-26",
    "spoken_by": [
      {
        "kind": "software",
        "id": "obs-studio",
        "name": "OBS Studio",
        "vendor": "OBS Project",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "SRT output and input, for contribution over an unmanaged network."
      },
      {
        "kind": "software",
        "id": "vmix",
        "name": "vMix",
        "vendor": "StudioCoast",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Contribution and distribution."
      },
      {
        "kind": "software",
        "id": "wireshark",
        "name": "Wireshark",
        "vendor": "Wireshark Foundation",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "SRT dissector in current builds."
      }
    ],
    "flow": "media"
  },
  {
    "id": "thread",
    "name": "Thread",
    "category": "network-transport",
    "status": "current",
    "openness": "open-free-registration",
    "transport": [
      "wireless-rf"
    ],
    "summary": "A low-power IPv6 mesh network on 802.15.4 radio. Every device gets a real IP address and routes to its neighbours, so there is no translating hub in the middle and the mesh heals around a node that dies. The transport Matter was designed for.",
    "multicast": {
      "used": true,
      "note": "IPv6 multicast across the mesh."
    },
    "spec_url": {
      "url": "https://www.threadgroup.org/",
      "label": "Thread Group"
    },
    "steward": "Thread Group",
    "first_published": 2014,
    "typical_use": [
      "Battery sensors and controls across an installation, with no mains at the device.",
      "Anything that must survive a single node failing."
    ],
    "gotchas": [
      "Mesh is resilient and not quick — every hop adds latency and jitter. Fine for a sensor, wrong for a cue.",
      "It needs a border router to reach the rest of the network, and that border router is the thing that fails.",
      "Shares the 2.4 GHz band with Wi-Fi and everything else. See the RF map before assuming it is quiet."
    ],
    "tags": [
      "iot",
      "mesh",
      "ipv6",
      "low-power"
    ],
    "sources": [
      {
        "title": "Thread",
        "url": "https://www.threadgroup.org/",
        "publisher": "Thread Group",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [
      {
        "kind": "software",
        "id": "home-assistant",
        "name": "Home Assistant",
        "vendor": "Open Home Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via a border router."
      }
    ],
    "flow": "control",
    "flow_note": "A low-power mesh, and in a venue what crosses it is device control."
  },
  {
    "id": "tpm2net",
    "name": "TPM2.net",
    "aka": [
      "TPM2",
      "tpm2net",
      "TPM2 Net"
    ],
    "category": "lighting-control",
    "summary": "A minimal LED matrix protocol from the ledstyles.de community: a start byte, a block type, a 16-bit frame size and raw pixel bytes, sent over UDP. It turns up whenever Jinx! or cheap ESP-based matrix hardware meets a real show and something has to feed it.",
    "transport": [
      "udp",
      "rs232"
    ],
    "default_ports": [
      {
        "number": 65506,
        "transport": "udp",
        "role": "TPM2.net data frames",
        "note": "0xFFE2. This is the port WLED and other receivers listen on."
      },
      {
        "number": 65442,
        "transport": "udp",
        "role": "Receiver responses back to the sender",
        "note": "0xFFA2. Many receivers never answer at all, so do not depend on it."
      }
    ],
    "multicast": {
      "used": false,
      "note": "Sent unicast or broadcast. The protocol description assumes a small flat network with no routers and expects packets to arrive in the order they were sent."
    },
    "universe_model": "No universes. A frame is raw pixel bytes split across numbered packets, with a one-based packet number and total packet count from 1 to 255 telling the receiver where each chunk belongs.",
    "openness": "open-published",
    "spec_url": {
      "url": "https://gist.github.com/jblang/89e24e2655be6c463c56",
      "label": "TPM2 and TPM2.net protocol description (English translation of the original)"
    },
    "steward": "ledstyles.de community; no formal standards body",
    "status": "current",
    "typical_use": [
      "Jinx! and similar matrix software driving DIY LED controllers",
      "ESP8266 and ESP32 LED controllers taking a live pixel feed",
      "Small scenic LED panels where a full DMX-over-IP stack is overkill",
      "Bench testing pixel hardware without a lighting console in the room"
    ],
    "gotchas": [
      "The serial and network variants use different start bytes: 0xC9 for TPM2 over serial, 0x9C for TPM2.net. A parser written for one silently rejects the other and you get a dead matrix with clean traffic on the wire.",
      "Packet number and total packet count are one-based, 1 to 255. A mapper that counts panels from zero puts the first chunk of every frame in the wrong place, which looks like a wiring fault.",
      "There is no acknowledgement, no sequence recovery and no discovery. The protocol assumes a small flat switch, so the first wifi hop or router in the path turns it into a slideshow.",
      "Nothing in the header describes colour order. RGB versus GRB is a receiver setting, so a matrix with the wrong colours is almost never the sender's fault.",
      "Frame size is a 16-bit field, so one packet cannot carry an arbitrarily large matrix. Big panels have to be split and reassembled in order by the receiver, with no help if a packet goes missing.",
      "The specification is a forum post, originally in German, with no conformance test. Implementations differ in small ways, so budget time for a packet capture against any receiver you have not used before."
    ],
    "implementations": [
      {
        "name": "tpm2net (ESP8266)",
        "url": "https://github.com/rehrbar/tpm2net",
        "language": "C++",
        "license": "MIT",
        "role": "receiver"
      },
      {
        "name": "WLED",
        "url": "https://github.com/wled/WLED",
        "language": "C++",
        "license": "EUPL-1.2",
        "role": "receiver"
      }
    ],
    "confidence": "reported",
    "tags": [
      "lighting",
      "pixel",
      "led",
      "diy",
      "udp"
    ],
    "sources": [
      {
        "title": "TPM2 Protocol Description (English translation; serial 0xC9 vs net 0x9C, ports 65506 and 65442, packet numbering)",
        "url": "https://gist.github.com/jblang/89e24e2655be6c463c56",
        "publisher": "jblang, translating the original ledstyles.de thread",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "UDP Realtime / tpm2.net — WLED documentation (listen port 65506)",
        "url": "https://kno.wled.ge/interfaces/udp-realtime/",
        "publisher": "WLED Project",
        "accessed": "2026-08-16"
      },
      {
        "title": "tpm2net — ESP8266 receiver implementation",
        "url": "https://github.com/rehrbar/tpm2net",
        "publisher": "rehrbar",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "tri-level-sync",
    "name": "Tri-level sync",
    "aka": [
      "Tri-level",
      "HD genlock reference"
    ],
    "category": "timecode-sync",
    "summary": "The high-definition genlock reference, replacing black burst for HD and above. A bipolar pulse whose zero crossing marks the frame start, distributed to every device that has to begin its frame at the same instant.",
    "transport": [
      "other"
    ],
    "openness": "published-paid",
    "spec_url": {
      "url": "https://www.smpte.org/standards",
      "label": "SMPTE standards"
    },
    "steward": "SMPTE",
    "status": "current",
    "typical_use": [
      "Locking cameras, switchers and servers to a common frame start",
      "Any multi-projector or multi-panel surface where a seam is visible",
      "Plants where a shared reference predates or sits alongside PTP"
    ],
    "gotchas": [
      "Genlock fixes when a frame starts. It does not fix latency: two devices can be perfectly locked and still be several frames apart if one is doing more processing.",
      "The reference rate has to suit the format. Feeding a 25 Hz reference to a device running 29.97 does not part-work, it fails.",
      "Reference distribution is a chain of its own, with its own terminations and its own single point of failure. It is worth drawing.",
      "Black burst is the standard-definition equivalent and is not interchangeable with tri-level for HD formats."
    ],
    "confidence": "reported",
    "tags": [
      "video",
      "sync",
      "genlock",
      "broadcast"
    ],
    "sources": [
      {
        "title": "SMPTE ST 274 and related HD sync reference standards",
        "url": "https://www.smpte.org/standards",
        "publisher": "SMPTE",
        "primary": true
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "clock"
  },
  {
    "id": "uwb",
    "name": "UWB",
    "aka": [
      "Ultra-wideband",
      "IEEE 802.15.4z"
    ],
    "category": "tracking-position",
    "status": "current",
    "openness": "published-paid",
    "transport": [
      "wireless-rf"
    ],
    "summary": "A radio that is poor at carrying data and superb at measuring distance. Very short pulses across a wide band give a precise time of arrival, and time of arrival is range — which makes it the basis of most centimetre-class performer and object tracking.",
    "multicast": {
      "used": false
    },
    "spec_url": {
      "url": "https://standards.ieee.org/",
      "label": "IEEE 802.15.4z"
    },
    "steward": "IEEE",
    "first_published": 2020,
    "typical_use": [
      "Performer and prop tracking feeding lighting and object audio, usually output as PSN or RTTrPM.",
      "Precise indoor positioning where GNSS cannot reach."
    ],
    "gotchas": [
      "Anchors have to be surveyed, and the tracking is only as correct as that survey.",
      "Metal and dense structure produce reflections; a position built from a reflected path looks like a valid position.",
      "A tag behind a body loses line of sight, which is why systems fuse it with an inertial sensor."
    ],
    "tags": [
      "tracking",
      "positioning",
      "uwb",
      "rtls"
    ],
    "sources": [
      {
        "title": "IEEE 802.15.4z",
        "url": "https://standards.ieee.org/",
        "publisher": "IEEE",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "visca-over-ip",
    "name": "VISCA over IP",
    "aka": [
      "VISCA/IP",
      "Sony VISCA over IP",
      "VISCA"
    ],
    "category": "video-control",
    "summary": "Sony's VISCA camera control commands wrapped in an eight byte header and sent over UDP. It is the usual way to drive PTZ cameras (pan, tilt, zoom, focus, iris, presets) from a controller, a switcher or a show control system.",
    "transport": [
      "udp",
      "tcp"
    ],
    "default_ports": [
      {
        "number": 52381,
        "transport": "udp",
        "role": "Sony VISCA over IP commands, inquiries and replies",
        "note": "This is Sony's documented port. Many third party cameras instead expose raw serial VISCA on a TCP socket at a vendor-chosen port with no header at all, which is a different protocol wearing the same name."
      },
      {
        "number": 52380,
        "transport": "udp",
        "role": "Network setup commands (IP configuration and discovery)",
        "note": "Documented on Sony's ILME-FR7. Not present on every camera that speaks VISCA over IP."
      }
    ],
    "openness": "proprietary-documented",
    "spec_url": {
      "url": "https://pro.sony/s3/cms-static-content/uploadfile/59/1237493025759.pdf",
      "label": "Sony HD Color Video Camera Command List (BRC-H900), VISCA over IP section"
    },
    "steward": "Sony",
    "status": "current",
    "typical_use": [
      "PTZ camera control from a hardware joystick controller over the house network",
      "Preset recall driven from cues in a show control or streaming system",
      "Multi-camera control from a single operator position",
      "Camera control travelling on the same network as the video feed"
    ],
    "gotchas": [
      "The header carries a sequence number that the camera echoes back. Restart the controller or power-cycle the camera and the two disagree, so you get error replies until a reset control command re-syncs the counter.",
      "Sony state plainly that UDP delivery is not guaranteed and that retransmission is the application's job. A dropped preset recall does not error, it simply does not happen.",
      "Two controllers on one camera fight over the sequence number stream. Give each camera one owner, or put a proxy in front of it, before you add a second control surface.",
      "\"VISCA over IP\" on a non-Sony camera often means raw VISCA bytes on a TCP socket with no eight byte header and no sequence number. Find out which one the camera wants before blaming the network.",
      "Payload type distinguishes command (0x0100) from inquiry (0x0110). Sending an inquiry with a command payload type gets you a silent no-op on some cameras and an error on others."
    ],
    "implementations": [
      {
        "name": "libvisca-ip",
        "url": "https://github.com/norihiro/libvisca-ip",
        "language": "C",
        "license": "LGPL-2.1-or-later",
        "role": "sender"
      }
    ],
    "confidence": "verified",
    "tags": [
      "camera",
      "ptz",
      "control",
      "sony"
    ],
    "sources": [
      {
        "title": "Sony HD Color Video Camera Command List Version 2.20 (BRC-H900) — VISCA over IP, port 52381",
        "url": "https://pro.sony/s3/cms-static-content/uploadfile/59/1237493025759.pdf",
        "publisher": "Sony Corporation",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "Sony Interchangeable Lens Digital Camera VISCA Command List v2.00 (ILME-FR7, ports 52381 and 52380)",
        "url": "https://pro.sony/s3/2022/09/14131603/VISCA-Command-List-Version-2.00.pdf",
        "publisher": "Sony Corporation",
        "accessed": "2026-08-16",
        "primary": true
      },
      {
        "title": "libvisca-ip — libvisca with TCP and UDP connection",
        "url": "https://github.com/norihiro/libvisca-ip",
        "publisher": "Norihiro Kamae",
        "accessed": "2026-08-16"
      }
    ],
    "contributed_by": [],
    "updated": "2026-08-16",
    "spoken_by": [
      {
        "kind": "hardware",
        "id": "crestron-cp4n",
        "name": "Crestron CP4N Control System",
        "vendor": "Crestron",
        "direction": "out",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Camera control."
      }
    ],
    "flow": "control"
  },
  {
    "id": "w-dmx",
    "name": "W-DMX",
    "aka": [
      "Wireless DMX"
    ],
    "category": "lighting-control",
    "summary": "Proprietary radio system for carrying DMX512 and supported RDM traffic between lighting controllers, transmitters, receivers and fixtures without a DMX cable.",
    "transport": [
      "wireless-rf"
    ],
    "universe_model": "One or more 512-channel DMX universes, with capacity determined by the transmitter and radio mode.",
    "openness": "proprietary-closed",
    "steward": "Wireless Solution / LumenRadio",
    "status": "current",
    "typical_use": [
      "Sending DMX to fixtures where running a data cable is impractical",
      "Temporary stage and event lighting links",
      "Built-in wireless control of moving lights and battery fixtures",
      "Bidirectional RDM discovery and configuration on supported products"
    ],
    "gotchas": [
      "W-DMX generations and radio modes are compatibility settings, not cosmetic labels. Changing the transmitter control mode requires receivers to be linked again.",
      "Frequency-band support depends on the hardware. G3 uses 2.4 GHz; later G4S and G5 equipment may also offer 5.2 or 5.8 GHz, but not every receiver supports them.",
      "A transmitter and receiver must be linked before DMX passes. A receiver remembered from another rig can appear healthy while ignoring the transmitter on this show.",
      "RDM support depends on the product and selected mode. Verify the whole chain before relying on remote fixture discovery or configuration during a live setup."
    ],
    "confidence": "verified",
    "tags": [
      "dmx",
      "rdm",
      "wireless",
      "lighting",
      "rf"
    ],
    "sources": [
      {
        "title": "W-DMX G5 user manual",
        "url": "https://lumenradio.com/wp-content/uploads/2023/06/W-DMX-G5-User-Manual-2017_October.pdf",
        "publisher": "Wireless Solution",
        "accessed": "2026-09-10",
        "primary": true
      },
      {
        "title": "W-DMX OEM implementation guide, revision 4",
        "url": "https://lumenradio.com/wp-content/uploads/2023/06/Implementation-Guide-2021_revision_4.pdf",
        "publisher": "Wireless Solution",
        "accessed": "2026-09-10",
        "primary": true
      },
      {
        "title": "LumenRadio upgrades CRMX with W-DMX support",
        "url": "https://lumenradio.com/stories/lumenradio-upgrades-the-crmx-protocol-to-add-support-for-multiple-universes-and-the-w-dmx-protocol/",
        "publisher": "LumenRadio",
        "accessed": "2026-09-10",
        "primary": true
      }
    ],
    "contributed_by": [
      "iibaranov-IG"
    ],
    "updated": "2026-09-10",
    "spoken_by": [],
    "flow": "control"
  },
  {
    "id": "word-clock",
    "name": "Word Clock / AES11",
    "aka": [
      "Digital Audio Reference Signal",
      "DARS"
    ],
    "category": "timecode-sync",
    "summary": "A dedicated square-wave timing signal (or the AES11-standardized Digital Audio Reference Signal carried over AES3) distributed by coax/BNC to keep multiple digital audio devices sample-locked, still essential wherever non-networked digital audio gear must share a clock.",
    "transport": [
      "other"
    ],
    "openness": "open-free-registration",
    "spec_url": {
      "url": "https://www.aes.org/publications/standards/search.cfm?docID=18"
    },
    "steward": "Audio Engineering Society (AES)",
    "status": "current",
    "gotchas": [
      "Word clock cabling needs correct 75-ohm termination and respects cable length limits - mis-terminated runs are a common cause of clicks/dropouts in digital audio systems.",
      "Networked audio protocols (Dante, AES67, AVB) generally replace word clock with PTP-based sync, but word clock remains common for interfacing older digital audio hardware."
    ],
    "confidence": "verified",
    "sources": [
      {
        "title": "AES11-2020: Synchronization of digital audio equipment - AES Standards",
        "url": "https://www.aes.org/publications/standards/search.cfm?docID=18",
        "primary": true
      },
      {
        "title": "AES11 - Wikipedia",
        "url": "https://en.wikipedia.org/wiki/AES11"
      }
    ],
    "updated": "2026-08-17",
    "spoken_by": [
      {
        "kind": "software",
        "id": "ardour",
        "name": "Ardour",
        "vendor": "Ardour Community",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Clocks to the audio interface."
      },
      {
        "kind": "software",
        "id": "pro-tools",
        "name": "Pro Tools",
        "vendor": "Avid",
        "direction": "in",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clocks to an external word clock via the interface."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-avantis",
        "name": "Allen & Heath Avantis",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Clock."
      },
      {
        "kind": "hardware",
        "id": "allen-heath-dlive-s7000",
        "name": "Allen & Heath dLive S7000",
        "vendor": "Allen & Heath",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out."
      },
      {
        "kind": "hardware",
        "id": "avid-venue-s6l-32d",
        "name": "Avid VENUE S6L-32D",
        "vendor": "Avid",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out."
      },
      {
        "kind": "hardware",
        "id": "behringer-x32",
        "name": "Behringer X32",
        "vendor": "Behringer",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Word clock input."
      },
      {
        "kind": "hardware",
        "id": "digico-quantum-338",
        "name": "DiGiCo Quantum 338",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out for the digital rack."
      },
      {
        "kind": "hardware",
        "id": "digico-sd12",
        "name": "DiGiCo SD12",
        "vendor": "DiGiCo",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clock in and out."
      },
      {
        "kind": "hardware",
        "id": "directout-prodigy-mp",
        "name": "DirectOut PRODIGY.MP",
        "vendor": "DirectOut",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clock."
      },
      {
        "kind": "hardware",
        "id": "evertz-5601msc",
        "name": "Evertz 5601MSC Master Sync and Clock",
        "vendor": "Evertz",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Audio reference."
      },
      {
        "kind": "hardware",
        "id": "ferrofish-a32-dante",
        "name": "Ferrofish A32 Dante",
        "vendor": "Ferrofish",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out."
      },
      {
        "kind": "hardware",
        "id": "focusrite-rednet-a16r-mk2",
        "name": "Focusrite RedNet A16R MkII",
        "vendor": "Focusrite",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out."
      },
      {
        "kind": "hardware",
        "id": "lab-gruppen-plm-20k44",
        "name": "Lab.gruppen PLM 20K44",
        "vendor": "Lab.gruppen",
        "direction": "in",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Clock follows the Dante or AES3 source."
      },
      {
        "kind": "hardware",
        "id": "lake-lm44",
        "name": "Lab.gruppen Lake LM44",
        "vendor": "Lab.gruppen",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "unverified",
        "note": "Clock."
      },
      {
        "kind": "hardware",
        "id": "midas-hd96-24",
        "name": "Midas HD96-24",
        "vendor": "Midas",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out."
      },
      {
        "kind": "hardware",
        "id": "rme-digiface-dante",
        "name": "RME Digiface Dante",
        "vendor": "RME",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clock."
      },
      {
        "kind": "hardware",
        "id": "rosendahl-nanosyncs-hd",
        "name": "Rosendahl nanosyncs HD",
        "vendor": "Rosendahl Studiotechnik",
        "direction": "out",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock distribution outputs."
      },
      {
        "kind": "hardware",
        "id": "ssl-live-l550",
        "name": "SSL Live L550",
        "vendor": "Solid State Logic",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clock."
      },
      {
        "kind": "hardware",
        "id": "yamaha-cl5",
        "name": "Yamaha CL5",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out."
      },
      {
        "kind": "hardware",
        "id": "yamaha-dm7",
        "name": "Yamaha DM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clock in and out."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rio3224-d2",
        "name": "Yamaha Rio3224-D2",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Clock."
      },
      {
        "kind": "hardware",
        "id": "yamaha-rivage-pm7",
        "name": "Yamaha RIVAGE PM7",
        "vendor": "Yamaha",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Word clock in and out."
      }
    ],
    "flow": "clock"
  },
  {
    "id": "zigbee",
    "name": "Zigbee",
    "category": "network-transport",
    "status": "current",
    "openness": "open-free-registration",
    "transport": [
      "wireless-rf"
    ],
    "summary": "Low-power mesh networking on the same 802.15.4 radio as Thread, with its own application layer and its own addressing rather than IP. Long established in building automation and consumer devices; a hub translates it into whatever the rest of the system speaks.",
    "multicast": {
      "used": true,
      "note": "Group addressing within the Zigbee network, not IP multicast."
    },
    "spec_url": {
      "url": "https://csa-iot.org/all-solutions/zigbee/",
      "label": "Connectivity Standards Alliance"
    },
    "steward": "Connectivity Standards Alliance",
    "first_published": 2004,
    "typical_use": [
      "Installed sensor and control networks, often already present in a building.",
      "Consumer devices being brought into a venue system through a hub."
    ],
    "gotchas": [
      "No IP, so a hub is not optional — it is the translator, and it is a single point of failure.",
      "Profile compatibility between vendors has historically been imperfect. Test the specific pairing.",
      "2.4 GHz, alongside Wi-Fi and everything else on site."
    ],
    "tags": [
      "iot",
      "mesh",
      "low-power",
      "building"
    ],
    "sources": [
      {
        "title": "Zigbee",
        "url": "https://csa-iot.org/all-solutions/zigbee/",
        "publisher": "Connectivity Standards Alliance",
        "accessed": "2026-08-29",
        "primary": true
      }
    ],
    "confidence": "reported",
    "contributed_by": [],
    "updated": "2026-08-29",
    "spoken_by": [
      {
        "kind": "software",
        "id": "home-assistant",
        "name": "Home Assistant",
        "vendor": "Open Home Foundation",
        "direction": "bidirectional",
        "requires_licence": false,
        "confidence": "reported",
        "note": "Via a coordinator."
      }
    ],
    "flow": "control",
    "flow_note": "Same: a mesh whose payload is control, usually lighting and sensors."
  }
]