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.
Development of Milan-AVB support in PipeWire is tracked in the upstream PipeWire project: AVB: Integrate Milan
| 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 |
Milan-AVB requires hardware capable of deterministic low-latency packet scheduling and precise time synchronization.
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)
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
Officially supported distribution:
- Arch Linux (tested regularly)
- Fedora 44
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:
- LinuxPTP: LinuxPTP Guide
- PipeWire from this repository: PipeWire Installation 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
Changes to PipeWire core infrastructure and generic functionality should be submitted upstream to the PipeWire project:
Changes related to:
- setup and startup scripts
- Milan configuration
- deployment tooling
- system integration
can be contributed directly to this repository.
For background information about AVB, Milan, gPTP, SRP, and related technologies, visit the AVB Academy.