The OpenAvnu project is sponsored by the Avnu Alliance.
The intent is to provide components for building AVB/TSN systems. The repository contains primarily network building block components - drivers, libraries, example applications and daemon source code - required to build an AVB/TSN system. It is planned to eventually include the various packet encapsulation types, protocol discovery daemons, libraries to convert media clocks to AVB clocks and vice versa), and drivers.
This repository does not include all components required to build a full production AVB/TSN system (e.g. a turnkey solution to stream stored or live audio or video content). Some simple example applications are provided which illustrate the flow - but a professional Audio/Video system requires a full media stack - including audio and video inputs and outputs, media processing elements, and various graphical user interfaces. Various companies provide such integrated solutions.
For more information about AVB/TSN, see also the Avnu Alliance webpage at www.avnu.org.
Intel created the OpenAvnu repository to encourage collaborative source code development for AVB/TSN technology enabling. By publishing the source code, our intent is to encourage standardization, stability and inter-operability between multiple vendors. This repository - created by the Intel LAN Access Division - is open for contributions from other vendors.
To the extent possible, content is licensed under BSD licensing terms. Linux kernel mode components are provided under a GPLv2 license. The specific license information is included in the various directories to eliminate confusion. We encourage you to review the ‘LICENSE’ file included in the head of the various subdirectories for details.
Third party submissions are welcomed. Our intent for third party content contributions is to enable derivative products with minimal licensing entanglements. Practically speaking, this means we would enforce (a) an original-source attestation for any contributed content, and (b) rejecting patches with GPL content into existing “BSD” licensed components. Third party copyrights can be included provided they do not narrow the licensing terms of an existing component.
Prior to accepting a commit, Intel may perform scans using third-party tools to identify suspected hits of GPL code. Intel may also perform vulnerability scans of patches in an attempt to find various coding errors such as memory leaks, buffer overflows and usage of uninitialized variables. The submitter will be asked to correct any detected issues prior to a commit. Owners of submitted third-party content are free to apply changes without supervision by Intel.
The OpenAvnu project has a development mailing list. To subscribe, visit https://lists.sourceforge.net/lists/listinfo/open-avb-devel to sign up.
A github based website for OpenAvnu can be found here.
After checking out the OpenAvnu git repository submodules should be configured by going:
git submodule init git submodule update
cmake is a cross-platform build system generator. cmake build files are currently available to build mrpd in Windows and linux and CppUTest unit tests for mrpd. The recommended usage for cmake is to create an out-of-tree directory for cmake output of generated makefiles or MSVC project files.
Starting from the OpenAvnu dir, one would go:
mkdir tmp cd tmp cmake .. -G "Unix Makefiles" make
to build in OpenAvnu/tmp
Jeff Koftinoff maintains a repository of AVDECC example open source code. AVDECC is a management layer, similar to SNMP MIB formats, which enables remote devices to detect, enumerate and configure AVB/TSN-related devices based on their standardized management properties.
AudioScience has created a 1722.1 C++ controller library which builds on jdkadvecc-c.
XMOS is a semiconductor company providing a reference design for AVB/TSN endpoints in pro audio and automotive. XMOS endpoint source code is open source and available on Github - https://github.com/xcore/sw_avb
Support for the Apple Vendor PTP Profile can be found on this fork of the OpenAvnu code within the branch ArtAndLogic-aPTP-changes.
These changes allow interaction with Apple proprietary PTP clocks. This implementation has been tested with the Apple AirPlay SDK on a Raspberry Pi 3 running within a group of devices playing the same music stream.