Skip to content

Repository files navigation

PipeWire Milan-AVB

Caution

Milan-AVB support is currently experimental. The implementation is still under development and does not yet fully comply with all IEEE AVB and Milan-AVB specification requirements. Interoperability with certified Milan devices is not guaranteed.

This repository provides an integration and deployment framework for Milan-AVB on Linux using PipeWire.

The repository contains:

  • setup and deployment scripts
  • Milan-specific configuration
  • system integration helpers
  • a pinned upstream PipeWire submodule

The actual PipeWire source code is included as a Git submodule to maintain a clear dependency on a known upstream version while keeping Milan integration scripts separate from PipeWire development itself.

A brief overview of the history of this project can be found in the History Channel.

Current status

Development of Milan-AVB support in PipeWire is tracked in the upstream PipeWire project: AVB: Integrate Milan

Repository layout

Path Purpose
configs/ Milan-AVB and gPTP configuration files
doc History, installation and runtime documentation
pipewire-upstream/ Upstream PipeWire submodule
build-and-install.sh Build helper
bring-up.sh One-shot bring-up: realtime check, NIC shaping + VLAN, gPTP, then PipeWire
check-polkit.sh Verify the realtime privilege stack (polkit, rtkit, rlimits) PipeWire depends on
prepare-traffic-shaper.sh Traffic shaping and hardware TX/RX queue configuration
ptp-start.sh LinuxPTP startup helper
setup-vlan.sh VLAN configuration
start_pipewire.sh PipeWire startup helper

Hardware Requirements

Milan-AVB requires hardware capable of deterministic low-latency packet scheduling and precise time synchronization.

Network interfaces

Important

The network interface must support:

  • IEEE 1588 hardware timestamping
  • multiple hardware TX/RX queues
  • traffic prioritization for AVB Stream Reservation classes
  • Intel i210 (validated)
  • Intel i226 (validated)
  • Marvell AQC107 (expected to work, but no CBS HW offloading)

Hardware platform

Recommended minimum system configuration:

  • Modern x86_64 CPU with multiple physical cores
  • SMT/Hyper-Threading supported and enabled
  • 8 GB RAM minimum
  • 60 GB available SSD storage

Operating system

Officially supported distribution:

  • Arch Linux (tested regularly)
  • Fedora 44

Installation guide

Note

The following instructions are written for Arch Linux.

  • For setting up a dedicated Arch Linux machine, follow the steps in the Arch Linux Guide

  • If you already have a running system, build and install the Milan-AVB enabled PipeWire environment. The following components are required:

    1. LinuxPTP: LinuxPTP Guide
    2. PipeWire from this repository: PipeWire Installation Guide

Runtime guide

Once the installation and configuration of the system has been done. PipeWire with the Milan-AVB functionality can be started as described in the Runtime Guide

Contributions

PipeWire core functionality

Changes to PipeWire core infrastructure and generic functionality should be submitted upstream to the PipeWire project:

Milan integration framework

Changes related to:

  • setup and startup scripts
  • Milan configuration
  • deployment tooling
  • system integration

can be contributed directly to this repository.

Introduction to AVB and Milan-AVB

For background information about AVB, Milan, gPTP, SRP, and related technologies, visit the AVB Academy.

About

Dedicated to run Milan-AVB with PipeWire

Resources

Code of conduct

Stars

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages