[README] step by step
This commit is contained in:
parent
579fcb9281
commit
8d66d0bfc6
1 changed files with 39 additions and 17 deletions
56
README.md
56
README.md
|
@ -1,23 +1,45 @@
|
|||
# Objective
|
||||
|
||||
This gide aims at outputing aes67 audio streams from the raspbery pi, using pipewire. Our hope is to get the [score sequencer](ossia.io) running on the pi and streaming to aes67 compatible hardware. Tested on the respbery pi 5 runing arch linux, and streaming to innosonix LP2 amps.
|
||||
This Gide aims at outputting aes67 audio streams from the Raspberry Pi, using pipewire. Our hope is to get the [score](https://ossia.io) sequencer running on the pi and streaming to aes67 compatible hardware. \
|
||||
Tested on the Raspberry Pi 5 running Arch Linux, and streaming to Innosonix LP2 amps.
|
||||
|
||||
# File system
|
||||
# Tree
|
||||
|
||||
```md
|
||||
├──/etc
|
||||
│ ├── /linuxptp
|
||||
│ │ └── /ptp4l.conf
|
||||
│ ├── /netctl
|
||||
│ │ └── /ethernet-static
|
||||
│ ├── /systemd
|
||||
│ │ ├── /system
|
||||
│ │ │ ├── /aes67-proxy@.service
|
||||
│ │ │ └── /linuxptp.ptp4l@.service
|
||||
│ │ └── /user
|
||||
│ │ └── /pipewire-aes67.service
|
||||
├──/home
|
||||
│ └──/<user>
|
||||
│ └── /.config/
|
||||
│ └── pipewire-aes67.conf
|
||||
/etc
|
||||
├── /linuxptp
|
||||
│ └── /ptp4l.conf
|
||||
├── /netctl
|
||||
│ └── /ethernet-static
|
||||
├── /systemd
|
||||
│ ├── /system
|
||||
│ │ ├── /aes67-proxy@.service
|
||||
│ │ └── /linuxptp.ptp4l@.service
|
||||
│ └── /user
|
||||
│ └── /pipewire-aes67.service
|
||||
/home
|
||||
└──/<user>
|
||||
└── /.config/
|
||||
└── pipewire-aes67.conf
|
||||
```
|
||||
|
||||
# Arch arm
|
||||
|
||||
The Raspberry Pi 5 does not support Arch Linux installation out of the box at the moment. [Sven Kiljan blog post](https://kiljan.org/2023/11/24/arch-linux-arm-on-a-raspberry-pi-5-model-b/) explains the necessary workaround.
|
||||
|
||||
# Network
|
||||
|
||||
Connecting the pi and the amp to an unmanaged switch is currently our preferred approach. Without DHCP, all IP addresses were set statically in 169.254.14.0/16 range. The gateway being the IP address of the unmanaged switch. . \
|
||||
Netctl is used to set the static Ethernet connection. The ```ForceConnect=yes``` had to be set, but this could have been an issue while running concurrently with a DHCP connection. More tests needed.
|
||||
|
||||
# PTP
|
||||
|
||||
In our setup, the amp will be used as the PTP clock grand master. An Ethernet connection is first required, so the linuxptp.ptp4l@.sevice is set to start after the network-online.target. \
|
||||
@jcelerier suggested the ptp4l invocation. \
|
||||
the ptp4l.conf file is required, as well as this [udev rule](https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/78642cc53bd84c2ad529f2175cc50a658d1e52c0/src/daemon/90-pipewire-aes67-ptp.rules)
|
||||
|
||||
# Pipewire-aees67
|
||||
|
||||
As pipewire does not like to run as root, the pipewire-aes67.service will be enabled as with the --user flag. To that effect, The chosen user needs to be set to linger: ```loginctl enable-linger <user>```\
|
||||
Unfortunately, user side services can not depend on system-wide services. For pipewire-aes67 to work, we require a network connection, and therefore, require starting this user service after the system network service. The aes67-proxy@.service is used to circumvent this issue, so that a user service can be started on boot.\
|
||||
To make audio connections, we use qpwgraph, as it gives us graphical feedback useful for debugging. If the system work as desired, we may revert to simply using pw-link. Since qpwgraph is written with the qt framework, it can be invoked with ```QT_QPA_PLATFORM=vnc```, which makes its UI available from a VNC client. This is useful for our purposes, running the Raspberry Pi "headless" (without any peripherals).
|
||||
|
|
Loading…
Add table
Reference in a new issue