From 9535b6d69fc3c321acacb6ba290ba93669489059 Mon Sep 17 00:00:00 2001 From: Kyle Gospodnetich Date: Thu, 18 Apr 2024 23:36:15 -0700 Subject: [PATCH] chore: Update steamdeck-dsp --- Containerfile | 4 +- spec_files/steamdeck-dsp/bazzite.patch | 91 +++++++++++++++++-- spec_files/steamdeck-dsp/fedora.patch | 70 ++++++++------ spec_files/steamdeck-dsp/steamdeck-dsp.spec | 13 ++- .../system/pipewire-workaround.service | 17 ++++ 5 files changed, 154 insertions(+), 41 deletions(-) create mode 100644 system_files/deck/shared/usr/lib/systemd/system/pipewire-workaround.service diff --git a/Containerfile b/Containerfile index 8ae9c8c1..1bfb08d7 100644 --- a/Containerfile +++ b/Containerfile @@ -731,9 +731,11 @@ RUN curl -Lo /tmp/image-info.sh https://raw.githubusercontent.com/ublue-os/bazzi systemctl disable gdm.service && \ systemctl enable sddm.service \ ; fi && \ - systemctl enable wireplumber-workaround.service && \ systemctl enable bazzite-autologin.service && \ + systemctl enable wireplumber-workaround.service && \ systemctl enable wireplumber-sysconf.service && \ + systemctl enable pipewire-workaround.service && \ + systemctl enable pipewire-sysconf.service && \ systemctl enable btrfs-dedup@run-media-mmcblk0p1.timer && \ systemctl enable ds-inhibit.service && \ systemctl enable cec-onboot.service && \ diff --git a/spec_files/steamdeck-dsp/bazzite.patch b/spec_files/steamdeck-dsp/bazzite.patch index be71df44..cc431891 100644 --- a/spec_files/steamdeck-dsp/bazzite.patch +++ b/spec_files/steamdeck-dsp/bazzite.patch @@ -1,13 +1,77 @@ +diff --git a/pipewire-confs/hardware-profiles/pipewire-hwconfig b/pipewire-confs/hardware-profiles/pipewire-hwconfig +index ac7adb6..d46bb14 100755 +--- a/pipewire-confs/hardware-profiles/pipewire-hwconfig ++++ b/pipewire-confs/hardware-profiles/pipewire-hwconfig +@@ -51,40 +51,24 @@ dmi_info () + install_hwprofile () + { + local -r prpath="$1" +- local -r runconf=/run/pipewire ++ local -r confdir=/usr/share/pipewire + local confd + local cffile + +- echo "Installing pipewire hardware profile from '$prpath' in $runconf" +- +- rm -rf $runconf ++ echo "Installing pipewire hardware profile from '$prpath' in $confdir" + + for confd in "${confdirs[@]}" + do + if [ -d "$prpath"/"$confd" ] + then +- mkdir -p $runconf/"$confd" ++ mkdir -p $confdir/"$confd" + + for cffile in "$prpath"/"$confd"/*.conf + do +- [ -f "$cffile" ] && cp -av "$cffile" $runconf/"$confd" ++ [ -f "$cffile" ] && /usr/bin/cp -avf "$cffile" $confdir/"$confd" + done + fi + done +- +- cat - < $runconf/README +-This configuration was: +- +- - installed in $runconf +- - by $0 +- - from $prpath +- +-It will be regenerated every time the system restarts. +- +-To alter it permanently either: +- - edit $prpath +- - override in \$XDG_CONFIG_HOME/pipewire/ +-EOF + } + + unidentified () +diff --git a/pipewire-confs/systemd/system/pipewire-sysconf.service b/pipewire-confs/systemd/system/pipewire-sysconf.service +index abc1f5d..6678964 100644 +--- a/pipewire-confs/systemd/system/pipewire-sysconf.service ++++ b/pipewire-confs/systemd/system/pipewire-sysconf.service +@@ -11,7 +11,7 @@ + Description=Hardware Specific Pipewire Configuration + After=multi-user.target + Requisite=multi-user.target +-ConditionPathIsDirectory=/run ++Requires=pipewire-workaround.service + Before=shutdown.target + + [Service] +diff --git a/wireplumber/hardware-profiles/wireplumber-hwconfig b/wireplumber/hardware-profiles/wireplumber-hwconfig +index 3f03354..1e43489 100755 --- a/wireplumber/hardware-profiles/wireplumber-hwconfig +++ b/wireplumber/hardware-profiles/wireplumber-hwconfig -@@ -45,39 +45,23 @@ +@@ -46,49 +46,33 @@ dmi_info () install_hwprofile () { local -r prpath="$1" - local -r runconf=/run/wireplumber + local -r confdir=/usr/share/wireplumber local confd - local conffile + local cffile - echo "Installing wireplumber hardware profile from '$prpath' in $runconf" - @@ -20,11 +84,22 @@ then - mkdir -p $runconf/"$confd" + mkdir -p $confdir/"$confd" - for conffile in "$prpath"/"$confd"/*.lua - do -- cp -av $conffile $runconf/"$confd" -+ /usr/bin/cp -avf $conffile $confdir/"$confd" - done + case $confd in + *.lua.d) + for cffile in "$prpath"/"$confd"/*.lua + do +- [ -f "$cffile" ] && cp -av "$cffile" $runconf/"$confd" ++ [ -f "$cffile" ] && /usr/bin/cp -avf "$cffile" $confdir/"$confd" + done + ;; + *.conf.d) + for cffile in "$prpath"/"$confd"/*.conf + do +- [ -f "$cffile" ] && cp -av "$cffile" $runconf/"$confd" ++ [ -f "$cffile" ] && /usr/bin/cp -avf "$cffile" $confdir/"$confd" + done + ;; + esac fi done - @@ -44,6 +119,8 @@ } unidentified () +diff --git a/wireplumber/systemd/system/wireplumber-sysconf.service b/wireplumber/systemd/system/wireplumber-sysconf.service +index 0e3f481..63595c3 100644 --- a/wireplumber/systemd/system/wireplumber-sysconf.service +++ b/wireplumber/systemd/system/wireplumber-sysconf.service @@ -11,7 +11,7 @@ diff --git a/spec_files/steamdeck-dsp/fedora.patch b/spec_files/steamdeck-dsp/fedora.patch index 25742b7c..480a303d 100644 --- a/spec_files/steamdeck-dsp/fedora.patch +++ b/spec_files/steamdeck-dsp/fedora.patch @@ -1,7 +1,30 @@ -diff --git a/pipewire-confs/filter-chain-mic.conf b/pipewire-confs/filter-chain-mic.conf -index 0b9fcac..0859402 100644 ---- a/pipewire-confs/filter-chain-mic.conf -+++ b/pipewire-confs/filter-chain-mic.conf +diff --git a/pipewire-confs/hardware-profiles/pipewire-hwconfig b/pipewire-confs/hardware-profiles/pipewire-hwconfig +index 11c8bd2..ac7adb6 100755 +--- a/pipewire-confs/hardware-profiles/pipewire-hwconfig ++++ b/pipewire-confs/hardware-profiles/pipewire-hwconfig +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/bin/bash + + set -eu + +diff --git a/pipewire-confs/hardware-profiles/valve-galileo/pipewire.conf.d/filter-chain.conf b/pipewire-confs/hardware-profiles/valve-galileo/pipewire.conf.d/filter-chain.conf +index 9246254..51cc545 100644 +--- a/pipewire-confs/hardware-profiles/valve-galileo/pipewire.conf.d/filter-chain.conf ++++ b/pipewire-confs/hardware-profiles/valve-galileo/pipewire.conf.d/filter-chain.conf +@@ -14,7 +14,7 @@ context.modules = [ + { + type = ladspa + name = rnnoise +- plugin = /usr/lib/ladspa/librnnoise_ladspa.so ++ plugin = /usr/lib64/ladspa/librnnoise_ladspa.so + label = noise_suppressor_stereo + control = { + "VAD Threshold (%)" = 23.0 +diff --git a/pipewire-confs/hardware-profiles/valve-jupiter/pipewire.conf.d/filter-chain.conf b/pipewire-confs/hardware-profiles/valve-jupiter/pipewire.conf.d/filter-chain.conf +index b64aa42..c9b611d 100644 +--- a/pipewire-confs/hardware-profiles/valve-jupiter/pipewire.conf.d/filter-chain.conf ++++ b/pipewire-confs/hardware-profiles/valve-jupiter/pipewire.conf.d/filter-chain.conf @@ -14,7 +14,7 @@ context.modules = [ { type = ladspa @@ -31,37 +54,26 @@ index 591514a..6678045 100755 +cp -r bin/lv2/g++/valve_deck_microphone.lv2 $LIB_DIR/lv2/valve_deck_microphone.dsp +cp -r bin/svg $LIB_DIR/lv2/svg +cp version.txt $LIB_DIR/lv2/valve_audio_dsp_version.txt -diff --git a/ucm2/conf.d/sof-nau8821-max/HiFi.conf b/ucm2/conf.d/sof-nau8821-max/HiFi.conf -index 48412ee..f0c5b82 100644 ---- a/ucm2/conf.d/sof-nau8821-max/HiFi.conf -+++ b/ucm2/conf.d/sof-nau8821-max/HiFi.conf -@@ -32,7 +32,7 @@ SectionDevice."Headphones".0 { - Value { - PlaybackPriority 200 - PlaybackPCM "hw:${CardId},0" -- JackControl "Headset Jack" -+ JackControl "Headphone Jack" - } - ConflictingDevice [ - ] -@@ -89,7 +89,7 @@ SectionDevice."Headset" { - Value { - CapturePriority 300 - CapturePCM "hw:${CardId},0" -- JackControl "Headset Jack" -+ JackControl "Headset Mic Jack" - } - ConflictingDevice [ - ] -diff -Naur a/wireplumber/systemd/system/wireplumber-sysconf.service b/wireplumber/systemd/system/wireplumber-sysconf.service +diff --git a/wireplumber/hardware-profiles/wireplumber-hwconfig b/wireplumber/hardware-profiles/wireplumber-hwconfig +index 842edb2..3f03354 100755 +--- a/wireplumber/hardware-profiles/wireplumber-hwconfig ++++ b/wireplumber/hardware-profiles/wireplumber-hwconfig +@@ -1,4 +1,4 @@ +-#!/bin/bash ++#!/usr/bin/bash + + set -eu + +diff --git a/wireplumber/systemd/system/wireplumber-sysconf.service b/wireplumber/systemd/system/wireplumber-sysconf.service +index 4ba3ad6..0e3f481 100644 --- a/wireplumber/systemd/system/wireplumber-sysconf.service +++ b/wireplumber/systemd/system/wireplumber-sysconf.service -@@ -17,7 +17,7 @@ +@@ -17,7 +17,7 @@ Before=shutdown.target [Service] Type=oneshot RemainAfterExit=yes -ExecStart=/usr/share/wireplumber/hardware-profiles/wireplumber-hwconfig -+ExecStart=/usr/libexec/wireplumber-hwconfig ++ExecStart=/usr/libexec/hwsupport/wireplumber-hwconfig [Install] WantedBy=multi-user.target diff --git a/spec_files/steamdeck-dsp/steamdeck-dsp.spec b/spec_files/steamdeck-dsp/steamdeck-dsp.spec index 2fccf73e..3a84ac8d 100644 --- a/spec_files/steamdeck-dsp/steamdeck-dsp.spec +++ b/spec_files/steamdeck-dsp/steamdeck-dsp.spec @@ -43,24 +43,29 @@ xz --check=crc32 %{buildroot}%{_prefix}/lib/firmware/amd/sof/* xz --check=crc32 %{buildroot}%{_prefix}/lib/firmware/amd/sof-tplg/* rm -f %{buildroot}%{_unitdir}/multi-user.target.wants/wireplumber-sysconf.service rm -f %{buildroot}%{_sysconfdir}/wireplumber -mkdir -p %{buildroot}%{_libexecdir} -mv %{buildroot}%{_datadir}/wireplumber/hardware-profiles/wireplumber-hwconfig %{buildroot}%{_libexecdir}/wireplumber-hwconfig +rm -f %{buildroot}%{_unitdir}/multi-user.target.wants/pipewire-sysconf.service +rm -f %{buildroot}%{_sysconfdir}/pipewire +mkdir -p %{buildroot}%{_libexecdir}/hwsupport +mv %{buildroot}%{_datadir}/wireplumber/hardware-profiles/wireplumber-hwconfig %{buildroot}%{_libexecdir}/hwsupport/wireplumber-hwconfig +mv %{buildroot}%{_datadir}/pipewire/hardware-profiles/pipewire-hwconfig %{buildroot}%{_libexecdir}/hwsupport/pipewire-hwconfig # This lists all the files that are included in the rpm package and that # are going to be installed into target system where the rpm is installed. %files %license LICENSE %{_prefix}/lib/firmware/amd/* -%{_libexecdir}/wireplumber-hwconfig +%{_libexecdir}/hwsupport/wireplumber-hwconfig +%{_libexecdir}/hwsupport/pipewire-hwconfig %{_libdir}/lv2/svg/valve_deck_* %{_libdir}/lv2/valve_* %{_datadir}/alsa/ucm2/conf.d/acp5x/*.conf %{_datadir}/alsa/ucm2/conf.d/sof-nau8821-max/*.conf -%{_datadir}/pipewire/pipewire.conf.d/*.conf %{_datadir}/wireplumber/hardware-profiles/* %{_datadir}/wireplumber/main.lua.d/*.lua %{_datadir}/wireplumber/scripts/*.lua %{_unitdir}/wireplumber-sysconf.service +%{_datadir}/pipewire/hardware-profiles/* +%{_unitdir}/pipewire-sysconf.service %post %systemd_post wireplumber-sysconf.service diff --git a/system_files/deck/shared/usr/lib/systemd/system/pipewire-workaround.service b/system_files/deck/shared/usr/lib/systemd/system/pipewire-workaround.service new file mode 100644 index 00000000..01b74e33 --- /dev/null +++ b/system_files/deck/shared/usr/lib/systemd/system/pipewire-workaround.service @@ -0,0 +1,17 @@ +[Unit] +Description=Workaround pipewire needing to be written into by steamdeck-dsp +ConditionPathExists=/usr/share/pipewire +After=local-fs.target + +[Service] +Type=oneshot +# Copy if it doesn't exist +ExecStartPre=/usr/bin/bash -c "[ -d /usr/local/share/.pipewire ] || /usr/bin/cp -r /usr/share/pipewire /usr/local/share/.pipewire" +ExecStart=/usr/bin/mount --bind /usr/local/share/.pipewire /usr/share/pipewire +# Clean-up after ourselves +ExecStop=/usr/bin/umount /usr/share/pipewire +ExecStop=/usr/bin/rm -r /usr/local/share/.pipewire +RemainAfterExit=yes + +[Install] +WantedBy=multi-user.target