Development Development Documentation on protocols and programming custom solutions Protocols Protocols This is a general list of protocols, some of which have Wiki page entries. General Protocols List 2110 (SMPTE Standard) AES67 (Audio Engineering Society 67) ASI (Asynchronous Serial Interface) Dante (Audinate) RTP (Real-time Transport Protocol) RTP-MIDI / AppleMIDI (Apple) NDI (see also, VizRT/NDI). Quartz (Evertz) REAC (Rolland) RossTalk (Ross) Ravenna (Audio over IP) HLS (HTTP Live Streaming) DASH (Dynamic Adaptive Streaming over HTTP) RTMP (Adobe) PTP (Precision Time Protocol) Mpeg-TS (MPEG Transport Stream) MADI (Multichannel Audio Digital Interface) SCP (Yamaha) SRT (Haivision/SRT Alliance) TSL / TSL-UMD WebRTC / WHIP (https://www.ietf.org/archive/id/draft-ietf-wish-whip-01.html) Protocols NDI Newtek NDI NDI stands for Network Device Interface. https://en.wikipedia.org/wiki/Network_Device_Interface Also see NDI page https://videng.wiki/en/software/VizRT/NDI Ports Port number Type Use 5353 UDP This is the standard port used for mDNS communication and is always used for multicast sending of the current sources onto the network. 5959 TCP NDI Discovery Server is an optional method to have NDI devices perform discovery. This can be beneficial in large configurations, when you need to connect NDI devices between subnets or if mDNS is blocked. 5960 TCP This is a TCP port used for remote sources to query this machine and discover all of the sources running on it. This is used for instance when a machine is added by an IP address in the access manager so that from an IP address alone all of the sources currently running on that machine can be discovered automatically. 5961 and up TCP These are the base TCP connections used for each NDI stream. For each current connection, at least one port number will be used in this range. 5960 and up UDP In version 5 and above, when using reliable UDP connections it will use a very small number of ports in the range of 5960 for UDP. These port numbers are shared with the TCP connections. Because connection sharing is used in this mode, the number of ports required is very limited and only one port is needed per NDI process running and not one port per NDI connection. 6960 and up TCP/UDP When using multi-TCP or UDP receiving, at least one port number in this range will be used for each connection. 7960 and up TCP/UDP When using multi-TCP, unicast UDP, or multicast UDP sending, at least one port number in this range will be used for each connection. Ephemeral TCP Legacy to NDI v1 - The current versions (4.6 and later) no longer use any ports in the ephemeral port range. Audinate Dante Dante Dante is a combination of software, hardware, and network protocols that delivers uncompressed, multi-channel, low-latency digital audio (and now video) over a standard Ethernet network. Dante is an acronym for Digital Audio Network Through Ethernet. https://en.wikipedia.org/wiki/Dante_(networking) FAQ What is the minimum requirement for switches in a Dante network? While Gigabit switches are recommended, 100Mbps switches may be used in limited scenarios. For low channel count (<32) applications, a 100Mbps switch may be used as long as it supports proper QoS, and QoS is active. The use of 100Mbps switches without QoS is not recommended or supported. For higher channel counts, Gigabit switches are essential. QoS is recommended for Gigabit switches on networks that share data with services other than Dante. Network Configuration IGMP Snooping IGMP v2 / v3 on macOS IGMP is specified in two commonly used versions: v2 and v3. This difference is most easily seen on current macOS computers that use IGMP v3 on built-in Ethernet ports; these may fail when connected to IGMP v2 switches. An easy workaround is to use an Ethernet adapter, all of which use IGMP v2. https://www.audinate.com/blog/post/well-intentioned-mishaps-with-igmp-snooping Alternately (at the switch level) you can ‘Forward All’ multicast traffic to the Mac. In effect, that disables IGMP snooping for that port. However, assuming the Mac has a Gigabit port, you should be fine. Link-Local For Link-Local networks, Dante expects primary interfaces to use the 169.254.x.x range, and secondary interfaces to use the 172.31.x.x range. {.is-info} The primary and secondary interfaces should not share a subnet or IP space. If a Dante device resets to factory default settings it may revert to "Daisy-Chain" mode – meaning it is now bridging your primary and secondary networks instead of offering redudancy - causing multiple interfaces to use the same IP address. {.is-warning} IP addresses for each network interface must be unique. Dante Primary and Secondary networks must never be physically linked. Dante Primary and Secondary addresses must be in different subnets. Dante Primary will use the 169.254.x.x subnet when set to auto-configure. This is standard IPv4 protocol and therefore the same behaviour as the Connectivity network. Dante Secondary will use the 172.31.x.x subnet when set to auto-configure. This is still a private address within IPv4, and is not reserved exclusively for auto-configuration, making its use for secondary auto-configuration unique to Dante. In addition to being configured in different subnets, Dante Primary, Dante Secondary and Connectivity should typically be treated as three physically separate networks, with their own network hardware. Troubleshooting Using Wireshark to Troubleshoot Dante Issues Filters Filter Multicast (eth.dst[0] & 1) Filter to Port udp.port == 4440 Reverse Engineering Some details on this page are derrived from packet inspection or other reverse-engineering techniques and are not officially released from Audinate. {.is-warning} Ports 8700 (UDP) Sample rate Level control Preferred Encoding Device Identification (Flash Port Light) 4440 Get/set subscriptions Device latency Set/reset channel name Rename device 5353 (MDNS) Read device encoding Read device sample rate Read device latency Enumerate channel count Device discovery Device model MAC address Device manufacturer Device version 5353 (244.0.0.251 Multicast)