| Message ID | 20260916160547.1287287-3-p-bhagat@ti.com |
|---|---|
| State | New |
| Headers | show |
| Series | Add PipeWire audio stack | expand |
Hi Paresh, On 21:35-20260916, Paresh Bhagat wrote: > Extend the PipeWire recipe to add platform-specific ALSA configuration > and service file. Service file added to start PipeWire as a system > service with proper socket dependency. > > Add sink and source configuration for 8-channel audio playback and > capture on the AM62D2EVM as the default configuration is 2-channel. > > Signed-off-by: Paresh Bhagat <p-bhagat@ti.com> > --- > .../pipewire/pipewire-arago.inc | 28 +++++++++++++++++++ > .../am62dxx-evm/90-pipewire-sink.conf | 17 +++++++++++ > .../am62dxx-evm/91-pipewire-source.conf | 17 +++++++++++ > .../pipewire/pipewire/pipewire.service | 26 +++++++++++++++++ > .../pipewire/pipewire_%.bbappend | 4 +++ > 5 files changed, 92 insertions(+) > create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc > create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf > create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf > create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service > create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend > > diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc > new file mode 100644 > index 00000000..6545c364 > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc > @@ -0,0 +1,28 @@ > +PR:append = ".arago1" > + > +FILESEXTRAPATHS:prepend := "${THISDIR}/pipewire:" > +SRC_URI:append = " file://pipewire.service" > + > +# AM62D-specific config files > +SRC_URI:append:am62dxx-evm = " \ > + file://90-pipewire-sink.conf \ > + file://91-pipewire-source.conf \ > +" > + > +do_install:append() { > + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then > + install -d ${D}${systemd_system_unitdir} > + install -m 0644 ${UNPACKDIR}/pipewire.service ${D}${systemd_system_unitdir}/ > + fi > +} > + > +do_install:append:am62dxx-evm() { > + install -d ${D}${sysconfdir}/pipewire/pipewire.conf.d > + install -m 0644 ${UNPACKDIR}/90-pipewire-sink.conf ${D}${sysconfdir}/pipewire/pipewire.conf.d/ > + install -m 0644 ${UNPACKDIR}/91-pipewire-source.conf ${D}${sysconfdir}/pipewire/pipewire.conf.d/ > +} > + > +FILES:${PN} += " ${sysconfdir}" Adding the whole ${sysconfdir} folder is not recommended, list individual files instead. Also limit this for only am62dxx-evm. > + > +PACKAGECONFIG:append = " pipewire-jack" > +PACKAGECONFIG:remove = "jack" > diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf > new file mode 100644 > index 00000000..f22ed291 > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf > @@ -0,0 +1,17 @@ > +# PipeWire source configuration for AM62D. Nit: Typo source -> sink > + > +context.objects = [ > + { > + factory = adapter > + args = { > + factory.name = api.alsa.pcm.sink > + node.name = "alsa_audio_sink" > + node.description = "Audio Output" > + media.class = "Audio/Sink" > + api.alsa.path = "hw:AM62D2EVM,0" > + audio.rate = 48000 > + audio.channels = 8 > + audio.position = [ FL FR FC LFE RL RR SL SR ] > + } > + } > +] > diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf > new file mode 100644 > index 00000000..ac7635de > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf > @@ -0,0 +1,17 @@ > +# PipeWire source configuration for AM62D. > + > +context.objects = [ > + { > + factory = adapter > + args = { > + factory.name = api.alsa.pcm.source > + node.name = "alsa_audio_source" > + node.description = "Audio Input" > + media.class = "Audio/Source" > + api.alsa.path = "hw:AM62D2EVM,0" > + audio.rate = 48000 > + audio.channels = 8 > + audio.position = [ FL FR FC LFE RL RR SL SR ] > + } > + } > +] > diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service > new file mode 100644 > index 00000000..c26bf93f > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service > @@ -0,0 +1,26 @@ > +[Unit] > +Description=PipeWire Multimedia Service > +# Ensure kernel modules are loaded and udev has finished device processing > +After=systemd-modules-load.service systemd-udev-settle.service systemd-udev-settle.service is not recommended [0]. Use appropriate `.device` dependency. > + > +Requires=pipewire.socket > + > +[Service] > +LockPersonality=yes > +MemoryDenyWriteExecute=yes > +NoNewPrivileges=yes > +SystemCallArchitectures=native > +SystemCallFilter=@system-service > +Type=simple > +AmbientCapabilities=CAP_SYS_NICE > +ExecStart=/usr/bin/pipewire > +Restart=on-failure > +RestartSec=2 > +RuntimeDirectory=pipewire > +RuntimeDirectoryPreserve=yes > +User=pipewire > +Environment=PIPEWIRE_RUNTIME_DIR=%t/pipewire > + > +[Install] > +Also=pipewire.socket pipewire-manager.socket > +WantedBy=default.target > \ No newline at end of file > diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend b/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend > new file mode 100644 > index 00000000..dc32422b > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend > @@ -0,0 +1,4 @@ > +PIPEWIRE_ARAGO = "" > +PIPEWIRE_ARAGO:arago = "pipewire-arago.inc" > + > +require ${PIPEWIRE_ARAGO} [0]: https://www.freedesktop.org/software/systemd/man/latest/systemd-udev-settle.service.html?__goaway_challenge=meta-refresh&__goaway_id=2f5c485c56371e4d518938d3bebe4b33&__goaway_referer=https%3A%2F%2Fwww.google.com%2F -- Yogesh
On Wed, Sep 16, 2026 at 09:37 PM, Paresh Bhagat wrote: > > Extend the PipeWire recipe to add platform-specific ALSA configuration > and service file. Service file added to start PipeWire as a system > service with proper socket dependency. > > Add sink and source configuration for 8-channel audio playback and > capture on the AM62D2EVM as the default configuration is 2-channel. > > Signed-off-by: Paresh Bhagat <p-bhagat@ti.com> > --- > .../pipewire/pipewire-arago.inc | 28 +++++++++++++++++++ > .../am62dxx-evm/90-pipewire-sink.conf | 17 +++++++++++ > .../am62dxx-evm/91-pipewire-source.conf | 17 +++++++++++ > .../pipewire/pipewire/pipewire.service | 26 +++++++++++++++++ > .../pipewire/pipewire_%.bbappend | 4 +++ > 5 files changed, 92 insertions(+) > create mode 100644 > meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc > create mode 100644 > meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf > create mode 100644 > meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf > create mode 100644 > meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service > create mode 100644 > meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend > > diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc > b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc > new file mode 100644 > index 00000000..6545c364 > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc > @@ -0,0 +1,28 @@ > +PR:append = ".arago1" > + > +FILESEXTRAPATHS:prepend := "${THISDIR}/pipewire:" > +SRC_URI:append = " file://pipewire.service" > + > +# AM62D-specific config files > +SRC_URI:append:am62dxx-evm = " \ > + file://90-pipewire-sink.conf \ > + file://91-pipewire-source.conf \ > +" Is it okay to have AM62D-specific PipeWire and WirePlumber configuration files, scripts, and services in meta-arago or set somewhere else? Ryan/Denys any thoughts? My recommendation would be to have a more generic/runtime-detectable configs that is device agnostic. > + > +do_install:append() { > + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', > d)}; then > + install -d ${D}${systemd_system_unitdir} > + install -m 0644 ${UNPACKDIR}/pipewire.service > ${D}${systemd_system_unitdir}/ > + fi > +} > + > +do_install:append:am62dxx-evm() { > + install -d ${D}${sysconfdir}/pipewire/pipewire.conf.d > + install -m 0644 ${UNPACKDIR}/90-pipewire-sink.conf > ${D}${sysconfdir}/pipewire/pipewire.conf.d/ > + install -m 0644 ${UNPACKDIR}/91-pipewire-source.conf > ${D}${sysconfdir}/pipewire/pipewire.conf.d/ > +} > + > +FILES:${PN} += " ${sysconfdir}" > + > +PACKAGECONFIG:append = " pipewire-jack" > +PACKAGECONFIG:remove = "jack" > diff --git > b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf > new file mode 100644 > index 00000000..f22ed291 > --- /dev/null > +++ > b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf > @@ -0,0 +1,17 @@ > +# PipeWire source configuration for AM62D. > + > +context.objects = [ > + { > + factory = adapter > + args = { > + factory.name = api.alsa.pcm.sink > + node.name = "alsa_audio_sink" > + node.description = "Audio Output" > + media.class = "Audio/Sink" > + api.alsa.path = "hw:AM62D2EVM,0" > + audio.rate = 48000 > + audio.channels = 8 > + audio.position = [ FL FR FC LFE RL RR SL SR ] > + } > + } > +] > diff --git > b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf > new file mode 100644 > index 00000000..ac7635de > --- /dev/null > +++ > b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf > @@ -0,0 +1,17 @@ > +# PipeWire source configuration for AM62D. > + > +context.objects = [ > + { > + factory = adapter > + args = { > + factory.name = api.alsa.pcm.source > + node.name = "alsa_audio_source" > + node.description = "Audio Input" > + media.class = "Audio/Source" > + api.alsa.path = "hw:AM62D2EVM,0" > + audio.rate = 48000 > + audio.channels = 8 > + audio.position = [ FL FR FC LFE RL RR SL SR ] > + } > + } > +] > diff --git > a/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service > b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service > new file mode 100644 > index 00000000..c26bf93f > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service > @@ -0,0 +1,26 @@ > +[Unit] > +Description=PipeWire Multimedia Service > +# Ensure kernel modules are loaded and udev has finished device processing > +After=systemd-modules-load.service systemd-udev-settle.service > + > +Requires=pipewire.socket > + > +[Service] > +LockPersonality=yes > +MemoryDenyWriteExecute=yes > +NoNewPrivileges=yes > +SystemCallArchitectures=native > +SystemCallFilter=@system-service > +Type=simple > +AmbientCapabilities=CAP_SYS_NICE > +ExecStart=/usr/bin/pipewire > +Restart=on-failure > +RestartSec=2 > +RuntimeDirectory=pipewire > +RuntimeDirectoryPreserve=yes > +User=pipewire > +Environment=PIPEWIRE_RUNTIME_DIR=%t/pipewire > + > +[Install] > +Also=pipewire.socket pipewire-manager.socket > +WantedBy=default.target > \ No newline at end of file > diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend > b/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend > new file mode 100644 > index 00000000..dc32422b > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend > @@ -0,0 +1,4 @@ > +PIPEWIRE_ARAGO = "" > +PIPEWIRE_ARAGO:arago = "pipewire-arago.inc" > + > +require ${PIPEWIRE_ARAGO} > -- > 2.34.1 > >
On 9/17/2026 7:16 AM, Jeevan via lists.yoctoproject.org wrote: > On Wed, Sep 16, 2026 at 09:37 PM, Paresh Bhagat wrote: > >> >> Extend the PipeWire recipe to add platform-specific ALSA configuration >> and service file. Service file added to start PipeWire as a system >> service with proper socket dependency. >> >> Add sink and source configuration for 8-channel audio playback and >> capture on the AM62D2EVM as the default configuration is 2-channel. >> >> Signed-off-by: Paresh Bhagat <p-bhagat@ti.com> >> --- >> .../pipewire/pipewire-arago.inc | 28 +++++++++++++++++++ >> .../am62dxx-evm/90-pipewire-sink.conf | 17 +++++++++++ >> .../am62dxx-evm/91-pipewire-source.conf | 17 +++++++++++ >> .../pipewire/pipewire/pipewire.service | 26 +++++++++++++++++ >> .../pipewire/pipewire_%.bbappend | 4 +++ >> 5 files changed, 92 insertions(+) >> create mode 100644 >> meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc >> create mode 100644 >> meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf >> create mode 100644 >> meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf >> create mode 100644 >> meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service >> create mode 100644 >> meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend >> >> diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc >> b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc >> new file mode 100644 >> index 00000000..6545c364 >> --- /dev/null >> +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc >> @@ -0,0 +1,28 @@ >> +PR:append = ".arago1" >> + >> +FILESEXTRAPATHS:prepend := "${THISDIR}/pipewire:" >> +SRC_URI:append = " file://pipewire.service" >> + >> +# AM62D-specific config files >> +SRC_URI:append:am62dxx-evm = " \ >> + file://90-pipewire-sink.conf \ >> + file://91-pipewire-source.conf \ >> +" > > Is it okay to have AM62D-specific PipeWire and WirePlumber configuration files, scripts, and services > in meta-arago or set somewhere else? Ryan/Denys any thoughts? > My recommendation would be to have a more generic/runtime-detectable configs that is device agnostic. That's why I keep asking why we have something specific for am62d in here. If there are other ways of doing it to make it more generic then I am all for it. Generally speaking, if this is required then it is ok. The other way of doing this would be to have the distro add in pipewire support and then move this specific change over to meta-ti-extras as a bbappend so that the platform specific tweaks are in the BSP repo. That way if someone wanted to use poky with pipewire then we would add in the needed tweaks. Denys? Thoughts?
diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc new file mode 100644 index 00000000..6545c364 --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc @@ -0,0 +1,28 @@ +PR:append = ".arago1" + +FILESEXTRAPATHS:prepend := "${THISDIR}/pipewire:" +SRC_URI:append = " file://pipewire.service" + +# AM62D-specific config files +SRC_URI:append:am62dxx-evm = " \ + file://90-pipewire-sink.conf \ + file://91-pipewire-source.conf \ +" + +do_install:append() { + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${UNPACKDIR}/pipewire.service ${D}${systemd_system_unitdir}/ + fi +} + +do_install:append:am62dxx-evm() { + install -d ${D}${sysconfdir}/pipewire/pipewire.conf.d + install -m 0644 ${UNPACKDIR}/90-pipewire-sink.conf ${D}${sysconfdir}/pipewire/pipewire.conf.d/ + install -m 0644 ${UNPACKDIR}/91-pipewire-source.conf ${D}${sysconfdir}/pipewire/pipewire.conf.d/ +} + +FILES:${PN} += " ${sysconfdir}" + +PACKAGECONFIG:append = " pipewire-jack" +PACKAGECONFIG:remove = "jack" diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf new file mode 100644 index 00000000..f22ed291 --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf @@ -0,0 +1,17 @@ +# PipeWire source configuration for AM62D. + +context.objects = [ + { + factory = adapter + args = { + factory.name = api.alsa.pcm.sink + node.name = "alsa_audio_sink" + node.description = "Audio Output" + media.class = "Audio/Sink" + api.alsa.path = "hw:AM62D2EVM,0" + audio.rate = 48000 + audio.channels = 8 + audio.position = [ FL FR FC LFE RL RR SL SR ] + } + } +] diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf new file mode 100644 index 00000000..ac7635de --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf @@ -0,0 +1,17 @@ +# PipeWire source configuration for AM62D. + +context.objects = [ + { + factory = adapter + args = { + factory.name = api.alsa.pcm.source + node.name = "alsa_audio_source" + node.description = "Audio Input" + media.class = "Audio/Source" + api.alsa.path = "hw:AM62D2EVM,0" + audio.rate = 48000 + audio.channels = 8 + audio.position = [ FL FR FC LFE RL RR SL SR ] + } + } +] diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service new file mode 100644 index 00000000..c26bf93f --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service @@ -0,0 +1,26 @@ +[Unit] +Description=PipeWire Multimedia Service +# Ensure kernel modules are loaded and udev has finished device processing +After=systemd-modules-load.service systemd-udev-settle.service + +Requires=pipewire.socket + +[Service] +LockPersonality=yes +MemoryDenyWriteExecute=yes +NoNewPrivileges=yes +SystemCallArchitectures=native +SystemCallFilter=@system-service +Type=simple +AmbientCapabilities=CAP_SYS_NICE +ExecStart=/usr/bin/pipewire +Restart=on-failure +RestartSec=2 +RuntimeDirectory=pipewire +RuntimeDirectoryPreserve=yes +User=pipewire +Environment=PIPEWIRE_RUNTIME_DIR=%t/pipewire + +[Install] +Also=pipewire.socket pipewire-manager.socket +WantedBy=default.target \ No newline at end of file diff --git a/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend b/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend new file mode 100644 index 00000000..dc32422b --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend @@ -0,0 +1,4 @@ +PIPEWIRE_ARAGO = "" +PIPEWIRE_ARAGO:arago = "pipewire-arago.inc" + +require ${PIPEWIRE_ARAGO}
Extend the PipeWire recipe to add platform-specific ALSA configuration and service file. Service file added to start PipeWire as a system service with proper socket dependency. Add sink and source configuration for 8-channel audio playback and capture on the AM62D2EVM as the default configuration is 2-channel. Signed-off-by: Paresh Bhagat <p-bhagat@ti.com> --- .../pipewire/pipewire-arago.inc | 28 +++++++++++++++++++ .../am62dxx-evm/90-pipewire-sink.conf | 17 +++++++++++ .../am62dxx-evm/91-pipewire-source.conf | 17 +++++++++++ .../pipewire/pipewire/pipewire.service | 26 +++++++++++++++++ .../pipewire/pipewire_%.bbappend | 4 +++ 5 files changed, 92 insertions(+) create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire-arago.inc create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/90-pipewire-sink.conf create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire/am62dxx-evm/91-pipewire-source.conf create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire/pipewire.service create mode 100644 meta-arago-distro/recipes-multimedia/pipewire/pipewire_%.bbappend