AES67 VAD to Dante USB audio interface

Setup

We have the following AES67-capable devices on MacOS 13.6.4:

Our first goal is to create AES67 audio streams from (A) to (B), to be captured by USB, and send back via USB from (B) to (A).

We use the Thunderbolt Ethernet interface (USB-C to Thunderbolt adapter to Ethernet adapter) with hardware timestamping, in our case interface en14.

Side remark: The Audinate Dante Virtual Soundcard (Version 4.3.1.1) is NOT AES67 capable.

Configuration

For (B), with the Dante controller app, we enable AES67 mode in the AES67 configuration tab. The set IP prefix is 239.69.xxx.xxx which we don't change.

Dante controller AES67 settings

In the network configuration tab, the IP address is manually set to 10.10.10.10 (also shown in the Fireface USB settings), netmask 255.255.255.0.

Dante controller network settings

Fireface USB settings

In the device configuration tab, we set the sample encoding to PCM24 and latency to 2 msec as preferred by AES67.

Dante controller device settings

For the en14 ethernet interface, we must be in the same subnet. Let's manually assign the IP 10.10.10.11 and subnet mask 255.255.255.0 if the TCP/IP network settings.

TCP/IP network settings

For (A) in AES67 mode, the latency must be set to 1ms, 48 samples in the MacOS system settings Merging RAVENNA/AES67 tab. The network adapter must be set to Thunderbolt Ethernet (also works with Auto). We select 8 inputs and 8 outputs. We achieve PTP locking!

Merging AES67 VAD settings

Sending AES67 from Merging VAD to RME Digiface Dante

Browsing to http://10.10.10.11:9090 brings up the configuration interface of (A).

We open the Session sources tab of the interface. Left below the menu, there is a small Create session button, seen by a flyover hint. In our case the configuration name is CoreAudio (on d2022-013)_3, with 8 audio channels in L24 encoding. For the address, we need to match the IP prefix of the Dante controller – let's set this to 239.69.10.11. Merging AES67 source configuration

This name appears in the Dante controller Receive tab on the right under Available channels. Folding out the channels, we can drag those to the left receive channels. Dante receive configuration

The Merging system panel reflects the successful connection. Merging AES67 connection OK

We should now be able to monitor the audio stream through headphones using the RME Totalmix or capture it via USB.

Sending AES67 from RME Digiface Dante to Merging VAD

In the Dante controller, we Create a Multi Flow via the respective button or the menu item in the Devices menu. Dante send configuration

We see this RTP Multicast stream in the Send tab. Dante send stream

Browsing to http://10.10.10.11:9090 brings up the configuration interface of (A).

We open the Session sinks tab of the interface. Left below the menu, there is a small Create session sink button, seen by a flyover hint. A configuration is created. We will need to select the source, e.g. sap://AVZ-ELAK-Digiface-02 : 32 and a Delay setting. In my case the default setting of 96 samples resulted in a muted RTP status (at the right).

Merging AES67 sink muted

Reliable operation seems to require a setting of 240 samples or so.

Merging AES67 sink success

We should now be able to capture audio from the Merging RA coreaudio device.

Debugging

In case of doubt whether AES67 data are sent, we can inspect network traffic using Wireshark.

With a ptp filter setting, we can inspect the PTP clock, or with a udp.port==5004 filter, we can expect AES67 data packets on the respective network interface.

Wireshark AES67 sending