← Back to Tools
Prototype and Technical Specification

AV-over-IP Network Inspector Prototype

A prototype diagnostic tool for networks that carry audio, video and control together. It checks four areas of the network – device discovery, clock timing, media transport and QoS, and the switch infrastructure – across Dante, AES67, Q-SYS, NDI, SMPTE ST 2110, Extron NAV and wireless RF systems. It can also add a temporary IP address to reach a device stuck on its factory subnet, and removes it safely afterwards.

Python, Scapy and BPF PTPv1/v2 BMCA DSCP QoS Inspection LLDP-MED and RSTP Dante and AES67 NDI and SMPTE ST 2110
Diagnostic Architecture 4-Plane Correlation Engine
IP Aliasing Safety 1 Hz Heartbeat and 15-Minute Lease
Media Plane Telemetry RFC 3550 RTP, DSCP and 9000B MTU
Hardware Presets 25 AV Vendor Profiles
AV Network Inspector – Interactive 4-Plane Workbench Simulator
Assigned IP and Subnet 192.168.1.100/24
LLDP/CDP Switch Neighbour Cisco C9300-24P • Gi1/0/14 (VLAN 20)
PTP Clock Plane (v1/v2) PTPv1 + v2 Dom 0 • PDV: 14 µs
QoS/DSCP Trust Boundary CS7 (56) / EF (46) / AF41 (34)
IGMP Snooping and RSTP Querier: 192.168.1.1 (v2) • RSTP OK
Path MTU and RTP Health 9000B Jumbo • 0 Seq Drops
Secondary NIC Alias None (Clean Interface)
BPF Capture Engine 1,420 pps • VLAN-Aware L2/L3 + Active RTP Join
Endpoints: 10
Device and Hardware Identity IPv4/Subnet Status Plane and Discovery Protocols Switch Port and VLAN (LLDP) QoS (DSCP) and Stream Health Actions

Evidence-Based Diagnostic Engine (4-Plane Correlation)

AV Hardware Factory Defaults Catalogue

Default IP addresses, logins and reset steps for 25 broadcast and AV manufacturers. Checked against manufacturers' documentation in November 2026; defaults can change with firmware, so confirm in the manual before relying on them.

Technical Architecture and Systems Engineering Specification

A diagnostic tool for live production has to work with what the network actually lets it see, without putting the show at risk. A laptop plugged into one switch port cannot see every VLAN or every unicast stream, so the tool combines what it observes across four network planes. Any change it makes to the laptop's own network settings must be safe and fully reversible.

Plane 1: Discovery and Session Control

Protocols: Dante ConMon, mDNS, AES67 SAP, QDP, NMOS, WS-Discovery, ACN/SSC.
Handles multi-protocol endpoint enumeration across Layer 2 and routed boundaries, ingesting UDP 8700–8708, _netaudio-arc, _ndi._tcp, IS-04/IS-05 and RF telemetry streams.

Plane 2: Timing and Clock Synchronisation

Standards: PTPv1 (IEEE 1588-2002), PTPv2 (IEEE 1588-2008), SMPTE ST 2059-2.
Parses clock domains for classic Dante, AES67 and DDM. Evaluates Best Master Clock Algorithm (BMCA) parameters and measures Sync packet delay variation (PDV) jitter.

Plane 3: Media Transport and QoS Data Plane

Telemetry: DiffServ DSCP (CS7/EF/AF41), RFC 3550 RTP, 9000B Jumbo MTU.
Validates IPv4 QoS markings – checking that PTP events carry CS7 (56), audio carries EF (46) and video carries AF41 (34) – while tracking RTP sequence gaps and DF Path MTU sweeps.

Plane 4: Switch and L2 Infrastructure

Plumbing: LLDP-MED (0x88CC), Cisco CDP, IGMPv2/v3 Querier, 802.1w RSTP.
Decodes switch port identity, VLAN assignment and PoE+ draw. Monitors Spanning Tree Topology Change Notifications (TCNs) and IGMP Querier intervals to prevent flooding.

Capture Filter and Temporary IP Address Workflow

The app is written in Python for macOS and uses Scapy to capture packets. A kernel-level BPF filter keeps only the protocols the inspector needs, including 802.1Q-tagged frames on trunk ports, so a busy show network cannot overwhelm it. A later stage will add a temporary IP address for reaching devices stuck on a factory subnet, without touching the Mac's internet routing:

# 1. Capture filter (avni/capture.py): Python and Scapy on macOS
#    Runs in the kernel. Keeps discovery, timing and switch protocols, skips
#    bulk media, and repeats the match inside "vlan and (...)" for tagged frames.
AV_CONTROL_TERMS = [
    "arp",
    "ether proto 0x88cc",               # LLDP
    "ether dst 01:00:0c:cc:cc:cc",      # CDP
    "ether dst 01:80:c2:00:00:00",      # Spanning Tree BPDUs
    "ether proto 0x88f7",               # PTP over Ethernet
    "igmp",
    "udp port 319 or udp port 320",     # PTP over UDP
    "udp port 5353",                    # mDNS (Dante, NDI, Sennheiser SSC)
    "udp port 9875",                    # SAP (AES67, ST 2110)
    "udp portrange 8700-8708",          # Dante ConMon
    "udp port 2467",                    # Q-SYS QDP
    "udp port 3702",                    # WS-Discovery (ONVIF cameras)
    "udp port 427 or udp port 8427",    # SLP (Shure)
    "udp port 67 or udp port 68",       # DHCP
    "udp port 5568",                    # sACN
    "udp port 6454",                    # Art-Net
    "tcp port 5959",                    # NDI Discovery Server
]
inner = " or ".join(f"({t})" for t in AV_CONTROL_TERMS)
AV_CONTROL_FILTER = f"({inner}) or (vlan and ({inner}))"

sock = conf.L2listen(iface="en5", filter=AV_CONTROL_FILTER, promisc=True)

# 2. Temporary secondary IP on macOS (planned for a later stage)
# 1. Detect: a device is seen outside the Mac's subnet,
#    for example a Shure AD4Q at 169.254.88.12/16.
# 2. Choose and check: pick a free address in that subnet (169.254.88.249)
#    and send three ARP probes first. Stop if any device answers.
# 3. Snapshot: record the routing table and the default route (netstat -rn).
# 4. Add, only after the user confirms (needs administrator rights):
#      ifconfig en5 alias 169.254.88.249 netmask 255.255.0.0
#    An alias sets no gateway, so internet and VPN traffic are unaffected.
# 5. Lease: the alias lasts 15 minutes and can be extended. The app checks
#    every second that its window is still open.
# 6. Remove on request, when the lease expires or when the app quits:
#      ifconfig en5 -alias 169.254.88.249
#    Then compare the routing table with the snapshot. If the app stopped
#    unexpectedly, it removes any alias it left behind the next time it starts.

4-Plane Broadcast Protocol Discovery and Diagnostic Matrix

Protocol/Standard Plane and Domain Transport, Ports and Multicast Expected QoS/MTU Fault Signatures Monitored
Audinate Dante (Native) Plane 1 and 3 (Audio) UDP 8700–8708 (ConMon), UDP 4440/4455, mDNS _netaudio-arc._udp DSCP 56 (CS7) Clock / DSCP 46 (EF) Audio • 1500B APIPA 169.254.x.x fallback, QoS remarking to BE (00), Unicast/Multicast RTP drops, DDM subnet isolation
AES67 / SMPTE ST 2110-30 Plane 1 and 3 (Audio) UDP 9875 (SAP on 239.255.255.255), RTP UDP 5004 DSCP 46 (EF) • 1500B SAP SDP payload mismatch, PTPv1/v2 boundary clock drift, RFC 3550 sequence gaps and packet time jitter
Q-SYS (Q-LAN) Plane 1 and 3 (Audio/DSP) UDP 2467 / 6504 (QDP on 224.0.23.175) DSCP 46 (EF) / CS6 (48) • 1500B Core/Peripheral discovery timeout across VLANs, PTPv2 priority clash with Dante Brooklyn II modules
NewTek NDI 5 / 6 Plane 1 and 3 (Video) mDNS _ndi._tcp.local (224.0.0.251:5353), Discovery Server TCP 5960, Media 5961+ DSCP 34 (AF41) • 1500B Unpruned multicast flooding, keyframe microburst buffer starvation, Discovery Server TCP unreachability
SMPTE ST 2110 and NMOS Plane 1 and 3 (Broadcast Video) NMOS IS-04/IS-05 (HTTP REST), ST 2110-20/30/40 RTP Multicast DSCP 34 (AF41) / EF (46) • 9000B Jumbo Jumbo Frame (MTU 9000) blackhole on 1500B switch trunks, narrow-sender pacing violations
Extron NAV and SIS Control Plane 1 and 3 (Video/Matrix) PURE3 RTP (239.252.x.x:5004), Extron SIS over SSH (TCP 22023) DSCP 34 (AF41) • 1500B / 9000B Factory static subnet isolation (192.168.254.254), HDCP/EDID handshake drops, MTU fragmentation
ONVIF (Profile S / G / T) Plane 1 and 3 (IP Video) UDP 3702 WS-Discovery (239.255.255.250), RTSP TCP/UDP 554, VISCA UDP 52381 DSCP 34 (AF41) • 1500B Stranded factory static IPs (.100.100 / .0.10), RTSP stream teardown, default credential exposure
Shure ACN and Sennheiser SSC Plane 1 (RF and Control) Shure SLP/ACN (239.255.254.253:2202/8427), Sennheiser _ssc._udp DSCP 32 (CS4) / BE • 1500B Missing PortFast causing DHCP timeout into APIPA, control/Dante NIC subnet overlap
sACN (E1.31) and Art-Net Plane 1 and 3 (Stage Lighting) sACN Multicast 239.255.x.x:5568, Art-Net Broadcast/Unicast UDP 6454 DSCP 32 (CS4) • 1500B Legacy Art-Net Limited Broadcast storms (255.255.255.255) saturating 100 Mbps embedded AV control NICs
PTPv1 and PTPv2 (IEEE 1588) Plane 2 (Timing and Sync) UDP 319 (Event) and 320 (General) on 224.0.1.129, gPTP Layer 2 0x88F7 DSCP 56 (CS7) / 48 (CS6) Same-domain split-brain Grandmasters, PTPv1/v2 boundary instability, Sync PDV jitter (>50 µs, missing Transparent Clock)
IGMPv2/v3, LLDP-MED and RSTP Plane 4 (Infrastructure) IGMP 224.0.0.1 (IP Proto 2), LLDP 0x88CC, CDP, RSTP BPDU 01:80:C2:00:00:00 Link-Local L2 Control Missing IGMP Querier (>255 s timeout causing port flooding), RSTP Topology Change Notification (TCN) table flushes, PoE+ budget exhaustion