| Message ID | 20260916160547.1287287-4-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 wireplumber recipe to enable the session manager on all > plaorms and provide AM62D2 EVM specific audio initialization. > A set-audio-defaults.sh script is packaged to configure default audio > sinks and sources at runtime, managed by a dedicated systemd service > that runs after wireplumber starts. > > Signed-off-by: Paresh Bhagat <p-bhagat@ti.com> > --- > .../wireplumber/wireplumber-arago.inc | 25 +++++++++++++++ > .../wireplumber/set-audio-defaults.service | 21 ++++++++++++ > .../wireplumber/set-audio-defaults.sh | 32 +++++++++++++++++++ > .../wireplumber/wireplumber_%.bbappend | 4 +++ > 4 files changed, 82 insertions(+) > create mode 100644 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc > create mode 100644 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service > create mode 100755 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh > create mode 100644 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend > > diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc > new file mode 100644 > index 00000000..c90107b4 > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc > @@ -0,0 +1,25 @@ > +PR:append = ".arago1" > + > +FILESEXTRAPATHS:prepend:am62dxx-evm := "${THISDIR}/wireplumber:" > + > +SRC_URI:append:am62dxx-evm = " \ > + file://set-audio-defaults.sh \ > + file://set-audio-defaults.service \ > +" > + > +do_install:append:am62dxx-evm() { > + install -d ${D}${bindir} > + install -m 0755 ${UNPACKDIR}/set-audio-defaults.sh ${D}${bindir}/ > + > + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then > + install -d ${D}${systemd_system_unitdir} > + install -m 0644 ${UNPACKDIR}/set-audio-defaults.service ${D}${systemd_system_unitdir}/ > + fi > +} > + > +SYSTEMD_SERVICE:${PN}:append = " wireplumber.service" > +SYSTEMD_SERVICE:${PN}:append:am62dxx-evm = " set-audio-defaults.service" > + > +FILES:${PN} += " \ > + ${bindir} \ > +" Adding the whole ${bindir} folder to the package is not the standard, use ${bindir}/set-audio-defaults.sh and limit it to only am62dxx-evm. > diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service > new file mode 100644 > index 00000000..191b89f5 > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service > @@ -0,0 +1,21 @@ > +[Unit] > +Description=Set PipeWire Default Audio Devices > +# Wait for pipewire and wireplumber services to be started > +After=pipewire.service wireplumber.service > +# Ensure udev has settled so audio devices are available > +After=systemd-udev-settle.service Using systemd-udev-settle.service is not recommended [0]. Please use appropriate `.device` dependency. > +Wants=pipewire.service wireplumber.service > + > +[Service] > +Type=oneshot > +ExecStart=/usr/bin/set-audio-defaults.sh > +StandardOutput=append:/var/log/set-audio-defaults-output.log > +StandardError=append:/var/log/set-audio-defaults-error.log > +RemainAfterExit=yes > +TimeoutStartSec=90 > +# Restart on failure with delay > +Restart=on-failure > +RestartSec=5 > + > +[Install] > +WantedBy=multi-user.target > diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh > new file mode 100755 > index 00000000..49be177e > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh > @@ -0,0 +1,32 @@ > +#!/bin/sh > + > +# Wait for WirePlumber to be ready > +i=1 > +while [ "$i" -le 30 ]; do > + wpctl status >/dev/null 2>&1 && break > + sleep 1 > + i=$((i + 1)) > +done > + > +# Additional delay for nodes to appear > +sleep 2 > + > +# Find audio sink ID > +SINK_ID=$(pw-cli info alsa_audio_sink 2>/dev/null | head -n 1 | awk '{print $2}') > +if [ -n "$SINK_ID" ]; then > + wpctl set-default "$SINK_ID" > + echo "Set default sink to ID: $SINK_ID (alsa_audio_sink)" > +else > + echo "Could not find alsa_audio_sink" > +fi > + > +# Find audio source ID > +SOURCE_ID=$(pw-cli info alsa_audio_source 2>/dev/null | head -n 1 | awk '{print $2}') > +if [ -n "$SOURCE_ID" ]; then > + wpctl set-default "$SOURCE_ID" > + echo "Set default source to ID: $SOURCE_ID (alsa_audio_source)" > +else > + echo "Could not find alsa_audio_source" > +fi > + > +echo "Done" > diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend > new file mode 100644 > index 00000000..541b2963 > --- /dev/null > +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend > @@ -0,0 +1,4 @@ > +WIREPLUMBER_ARAGO = "" > +WIREPLUMBER_ARAGO:arago = "wireplumber-arago.inc" > + > +require ${WIREPLUMBER_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
diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc new file mode 100644 index 00000000..c90107b4 --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc @@ -0,0 +1,25 @@ +PR:append = ".arago1" + +FILESEXTRAPATHS:prepend:am62dxx-evm := "${THISDIR}/wireplumber:" + +SRC_URI:append:am62dxx-evm = " \ + file://set-audio-defaults.sh \ + file://set-audio-defaults.service \ +" + +do_install:append:am62dxx-evm() { + install -d ${D}${bindir} + install -m 0755 ${UNPACKDIR}/set-audio-defaults.sh ${D}${bindir}/ + + if ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'true', 'false', d)}; then + install -d ${D}${systemd_system_unitdir} + install -m 0644 ${UNPACKDIR}/set-audio-defaults.service ${D}${systemd_system_unitdir}/ + fi +} + +SYSTEMD_SERVICE:${PN}:append = " wireplumber.service" +SYSTEMD_SERVICE:${PN}:append:am62dxx-evm = " set-audio-defaults.service" + +FILES:${PN} += " \ + ${bindir} \ +" diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service new file mode 100644 index 00000000..191b89f5 --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service @@ -0,0 +1,21 @@ +[Unit] +Description=Set PipeWire Default Audio Devices +# Wait for pipewire and wireplumber services to be started +After=pipewire.service wireplumber.service +# Ensure udev has settled so audio devices are available +After=systemd-udev-settle.service +Wants=pipewire.service wireplumber.service + +[Service] +Type=oneshot +ExecStart=/usr/bin/set-audio-defaults.sh +StandardOutput=append:/var/log/set-audio-defaults-output.log +StandardError=append:/var/log/set-audio-defaults-error.log +RemainAfterExit=yes +TimeoutStartSec=90 +# Restart on failure with delay +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh new file mode 100755 index 00000000..49be177e --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +# Wait for WirePlumber to be ready +i=1 +while [ "$i" -le 30 ]; do + wpctl status >/dev/null 2>&1 && break + sleep 1 + i=$((i + 1)) +done + +# Additional delay for nodes to appear +sleep 2 + +# Find audio sink ID +SINK_ID=$(pw-cli info alsa_audio_sink 2>/dev/null | head -n 1 | awk '{print $2}') +if [ -n "$SINK_ID" ]; then + wpctl set-default "$SINK_ID" + echo "Set default sink to ID: $SINK_ID (alsa_audio_sink)" +else + echo "Could not find alsa_audio_sink" +fi + +# Find audio source ID +SOURCE_ID=$(pw-cli info alsa_audio_source 2>/dev/null | head -n 1 | awk '{print $2}') +if [ -n "$SOURCE_ID" ]; then + wpctl set-default "$SOURCE_ID" + echo "Set default source to ID: $SOURCE_ID (alsa_audio_source)" +else + echo "Could not find alsa_audio_source" +fi + +echo "Done" diff --git a/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend new file mode 100644 index 00000000..541b2963 --- /dev/null +++ b/meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend @@ -0,0 +1,4 @@ +WIREPLUMBER_ARAGO = "" +WIREPLUMBER_ARAGO:arago = "wireplumber-arago.inc" + +require ${WIREPLUMBER_ARAGO}
Extend the wireplumber recipe to enable the session manager on all plaorms and provide AM62D2 EVM specific audio initialization. A set-audio-defaults.sh script is packaged to configure default audio sinks and sources at runtime, managed by a dedicated systemd service that runs after wireplumber starts. Signed-off-by: Paresh Bhagat <p-bhagat@ti.com> --- .../wireplumber/wireplumber-arago.inc | 25 +++++++++++++++ .../wireplumber/set-audio-defaults.service | 21 ++++++++++++ .../wireplumber/set-audio-defaults.sh | 32 +++++++++++++++++++ .../wireplumber/wireplumber_%.bbappend | 4 +++ 4 files changed, 82 insertions(+) create mode 100644 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber-arago.inc create mode 100644 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.service create mode 100755 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber/set-audio-defaults.sh create mode 100644 meta-arago-distro/recipes-multimedia/wireplumber/wireplumber_%.bbappend