Existing standards

Among the existing, well-established standards, AVB/TSN and Ravenna are open standards. AVB/TSN has a better hardware and software support with MacOS incorporating AVB natively and several audio hardware companies developing AVB-enabled products (MOTU, Presonus, RME, d&b, L-Acoustics, etc.)

AVB/TSN

Links:

Available AVB audio interfaces:

Available compact AVB-ready switches:

AVB audio support for our project

We currently see a few different options for supported AVB network audio

Linux AVB ALSA driver

At Fachhochschule Kiel, master projects have developed a prototypical AVB audio driver for specific linux kernel versions (on the Beaglebone platform). We have updated it and made it available as the linux-avb-driver github project. The status of this development should be assessed and further developed. Checks need to be made whether all our requirements are met (channel count, clock selection, etc.).

Automotive static AVB streaming

The ALSA plugin project features AAF plugins. A tutorial how to implement this in linux is given with the TSN Documentation Project. This follows an automotive approach by statically streaming audio with fixed streaming parameters (IDs, sample rate, channel counts, etc.). In order to integrate into a standard-conforming AVB system, an ATDECC controller with minimal capabilities would have to be added.

The Automotive-AVB wiki page provides a guideline.

NXP GenAVB

For NXP i.MX processor based SBCs (such as Debix Model A or Seeed NPI i.MX6ULL), the NXP GenAVB_TSN implementation based on their real-time-edge linux kernel (with modifications for their ethernet drivers) could be used.

The Debix Model A has the problem that the available ethernet port is not the one supported by the driver modifications. A secondary ethernet port would have to be implemented.

JOYNED AVB dongle

As another alternative to this development, a functioning XMOS-based AVB hardware module from the company Joyned is readily available. It is capable of translating AVB to ADAT or I2S/TDM.

We would prefer the software-based approaches because the SBCs involved could not only perform the audio networking but also node-based audio rendering.

AES67 audio support for our project

It is beneficial to also have AES67 support, because of its connectivity to Dante. The AES67 linux wiki page describes steps of making it work under Linux and connecting it to other devices.

We have also worked out a use case of AES67/Dante interoperability on MacOS.

Dante

Audinate Dante is a proprietory product that has swamped the market. The Dante controller software(available for Mac and Windows) is needed to configure devices and route streams.

It is also perfectly possible to send and receive AES67 streams with Dante hardware, although this is a little more involved than with native Dante connections.

There is an API to control parameters. Unfortunately at this point, AES67 routing is not supported.

Timing

Keeping a precise system time over all participants of an AVB system is key. The PTP (IEEE 1588 or 802.1AS) standard standard is used for that purpose.

Under linux, the linuxptp package is available as an implementation. The linuxptp wiki page describes a possible setup.

Reliability

Data on ethernet traffic has different priorities. Typically, audio data has higher timing demands (and therefore priority) then video data. Different measures pertaining to the Quality of Service (QoS) guarantee that audio packets can meet strict timing requirements The QoS wiki page describes how this can be configured.

Timing/reliability assessment of network audio system

The system must be given reality checks with available hard and software. This involves reliability assessment over power cycles, connection/disconnection of devices and network audio streams, handling with ATDECC software like hive, and compatibility with other AVB/AES67 devices (RME digiface, etc.). Stress tests should be made with CPU and networking load. Lowest reliably possible audio latency should be determined.

Server

The ELAK SPL system needs a couple of services on a server machine sharing the TSN network with the ELAK SPL clients.

  • NTP server for correct system time (accomplished by use of the elak-spl.master.target service)
  • A http proxy so that the clients can update their distributions and fetch ELAK-SPL debian packages without direct connection to the internet (e.g. squid)

Material/Links

Introduction:

Synchronized real time audio streaming over ethernet:

Media IP Streaming on Embedded Systems:

Implementation and Performance Analysis of Precision Time Protocol on Linux based System-On-Chip Platform:

Adaptive resampling: