From: Demi Marie Obenour <demiobenour@gmail.com>
To: Spectrum OS Development <devel@spectrum-os.org>
Cc: Demi Marie Obenour <demiobenour@gmail.com>, Alyssa Ross <hi@alyssa.is>
Subject: [PATCH v9 0/2] Sound support in Spectrum VMs
Date: Mon, 28 Jul 2025 20:32:59 -0400 [thread overview]
Message-ID: <cover.1753748336.git.demiobenour@gmail.com> (raw)
In-Reply-To: <20250728231303.2416-1-demiobenour@gmail.com>
Patch 1 creates directories that PipeWire, WirePlumber, and applications
need early in boot to avoid ordering problems. Patch 2 adds working
(and tested) support for audio in the VM via PipeWire. This only works
when running in a VM, as Spectrum OS has no sound on the host yet.
---
Changes since v8:
- Add longer explanation for the priority.driver and priority.session
values.
- Give credit to George Kiagiadakis.
- Fix spelling errors in comments.
Changes since v7:
- Give the capture node a higher priority.session than the playback
node, so WirePlumber links recording applications to the capture node
instead of the monitor of the playback node.
- Give the capture node a higher priority.driver than the playback node,
so PipeWire has the capture node drive the graph. This is better
because capture xruns lead to permanently corrupted data, whereas
playback xruns do not.
- Re-enable monitor node creation in WirePlumber.
Changes since v6:
- Add missing S-o-b to directory creation patch.
- Add comments explaining why each directory needs to be created.
- Fix spelling errors in commit messages.
- Sort lines in Makefile.
- Don't disable support.settings as a comment in wireplumber.conf says
to not do that. Instead, tell WirePlumber to not create monitor
nodes. This is a workaround for WirePlumber bug 829.
- Don't remove "-cpu host" from make run-qemu's QEMU command line. This
was needed for local testing with KVM disabled but should not have
been submitted upstream. Hardware with KVM support should be used
instead.
Changes since v5:
- Move changes to startup scripts into a single patch.
- Remove "directories" service in favor of creating the directories from
rc.init.
- Use VM_DIRS to create /run/user and /run/wait.
- Create /run/user and /run/wait on the host as well, using the same
mechanism as for the VM (though with a different variable name in the
makefile).
- Use a drop-in configuration file for WirePlumber instead of overriding
wireplumber.conf. This should be more robust to future WirePlumber
changes.
Demi Marie Obenour (2):
img/app: Create needed directories in early boot
img/app: Run PipeWire and WirePlumber in the VMs
img/app/Makefile | 16 +-
img/app/default.nix | 3 +
img/app/etc/mdev.conf | 1 +
img/app/etc/pipewire/pipewire.conf | 229 ++++++++++++++++++
img/app/etc/s6-linux-init/scripts/rc.init | 13 +
.../etc/s6-rc/app/dependencies.d/wireplumber | 0
.../etc/s6-rc/pipewire/dependencies.d/dbus | 0
img/app/etc/s6-rc/pipewire/notification-fd | 1 +
.../s6-rc/pipewire/notification-fd.license | 2 +
img/app/etc/s6-rc/pipewire/run | 23 ++
img/app/etc/s6-rc/pipewire/type | 1 +
img/app/etc/s6-rc/pipewire/type.license | 2 +
img/app/etc/s6-rc/wayland-proxy-virtwl/run | 10 -
.../etc/s6-rc/wireplumber/dependencies.d/dbus | 0
.../s6-rc/wireplumber/dependencies.d/pipewire | 0
img/app/etc/s6-rc/wireplumber/run | 4 +
img/app/etc/s6-rc/wireplumber/type | 1 +
img/app/etc/s6-rc/wireplumber/type.license | 2 +
.../wireplumber.conf.d/99_spectrum.conf | 42 ++++
19 files changed, 338 insertions(+), 12 deletions(-)
create mode 100644 img/app/etc/pipewire/pipewire.conf
create mode 100644 img/app/etc/s6-rc/app/dependencies.d/wireplumber
create mode 100644 img/app/etc/s6-rc/pipewire/dependencies.d/dbus
create mode 100644 img/app/etc/s6-rc/pipewire/notification-fd
create mode 100644 img/app/etc/s6-rc/pipewire/notification-fd.license
create mode 100644 img/app/etc/s6-rc/pipewire/run
create mode 100644 img/app/etc/s6-rc/pipewire/type
create mode 100644 img/app/etc/s6-rc/pipewire/type.license
create mode 100644 img/app/etc/s6-rc/wireplumber/dependencies.d/dbus
create mode 100644 img/app/etc/s6-rc/wireplumber/dependencies.d/pipewire
create mode 100644 img/app/etc/s6-rc/wireplumber/run
create mode 100644 img/app/etc/s6-rc/wireplumber/type
create mode 100644 img/app/etc/s6-rc/wireplumber/type.license
create mode 100644 img/app/etc/wireplumber/wireplumber.conf.d/99_spectrum.conf
base-commit: 560fd878ba1bbd8df0fe28488e72948f28940948
--
Sincerely,
Demi Marie Obenour (she/her/hers)
next prev parent reply other threads:[~2025-07-29 0:33 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-11 2:44 [PATCH v3] Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-14 14:54 ` Alyssa Ross
2025-07-15 20:22 ` Demi Marie Obenour
2025-07-16 10:26 ` Alyssa Ross
2025-07-16 21:16 ` Demi Marie Obenour
2025-07-16 21:27 ` Demi Marie Obenour
2025-07-18 12:16 ` Alyssa Ross
2025-07-17 5:53 ` Demi Marie Obenour
2025-07-18 10:02 ` Alyssa Ross
2025-07-18 10:19 ` Alyssa Ross
2025-07-18 2:07 ` [PATCH v4 0/3] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-18 2:13 ` [PATCH v4 1/3] Rebuild the root filesystem when the makefile changes Demi Marie Obenour
2025-07-18 11:14 ` Alyssa Ross
2025-07-18 2:13 ` [PATCH v4 2/3] Fix permissions on /tmp Demi Marie Obenour
2025-07-18 11:51 ` Alyssa Ross
2025-07-18 11:51 ` Alyssa Ross
2025-07-18 11:53 ` Alyssa Ross
2025-07-18 2:14 ` [PATCH v4 3/3] Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-18 11:27 ` Alyssa Ross
2025-07-18 17:59 ` Demi Marie Obenour
2025-07-19 9:22 ` Alyssa Ross
2025-07-19 20:05 ` Demi Marie Obenour
2025-07-19 8:06 ` Alyssa Ross
2025-07-19 20:03 ` Demi Marie Obenour
2025-07-19 20:07 ` Demi Marie Obenour
2025-07-20 7:50 ` Alyssa Ross
2025-07-20 17:58 ` [PATCH v5 0/8] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-20 18:02 ` [PATCH v5 1/8] Revert "img/app: fix permissions on /tmp" Demi Marie Obenour
2025-07-21 9:34 ` Alyssa Ross
2025-07-20 18:03 ` [PATCH v5 2/8] img/app: Use separate service to create directories Demi Marie Obenour
2025-07-21 9:21 ` Alyssa Ross
2025-07-22 23:48 ` Demi Marie Obenour
2025-07-20 18:04 ` [PATCH v5 3/8] img/app: Fix permissions of /tmp/.X11-unix Demi Marie Obenour
2025-07-20 18:05 ` [PATCH v5 4/8] img/app: Create other X11 directories Demi Marie Obenour
2025-07-21 9:23 ` Alyssa Ross
2025-07-21 19:03 ` Demi Marie Obenour
2025-07-20 18:06 ` [PATCH v5 5/8] img/app: Be explicit about directory modes Demi Marie Obenour
2025-07-20 18:08 ` [PATCH v5 6/8] img/app: create /run/user and /run/wait very early in boot Demi Marie Obenour
2025-07-21 9:23 ` Alyssa Ross
2025-07-20 18:10 ` [PATCH v5 7/8] host/rootfs: " Demi Marie Obenour
2025-07-20 18:11 ` [PATCH v5 8/8] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-21 9:42 ` Alyssa Ross
2025-07-21 19:09 ` Demi Marie Obenour
2025-07-26 10:11 ` Alyssa Ross
2025-07-21 19:10 ` Demi Marie Obenour
2025-07-24 22:15 ` [PATCH v6 0/5] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-24 22:30 ` [PATCH v6 1/5] host/rootfs: Create /run/user and /run/wait via run-image Demi Marie Obenour
2025-07-26 10:46 ` Alyssa Ross
2025-07-24 22:32 ` [PATCH v6 2/5] img/app: " Demi Marie Obenour
2025-07-24 22:33 ` [PATCH v6 3/5] img/app: tell mount(8) to create directories Demi Marie Obenour
2025-07-26 11:20 ` Alyssa Ross
2025-07-26 11:26 ` Alyssa Ross
2025-07-24 22:35 ` [PATCH v6 4/5] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-26 10:24 ` Alyssa Ross
2025-07-27 20:13 ` Demi Marie Obenour
2025-07-24 22:36 ` [PATCH v6 5/5] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-26 11:29 ` Alyssa Ross
2025-07-26 10:57 ` [PATCH v6 0/5] Sound support in Spectrum VMs Alyssa Ross
2025-07-28 5:57 ` [PATCH v7 0/2] " Demi Marie Obenour
2025-07-28 6:01 ` [PATCH v7 1/2] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-28 6:03 ` [PATCH v7 2/2] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-28 6:18 ` Demi Marie Obenour
2025-07-28 23:13 ` [PATCH v8 0/2] Sound support in Spectrum VMs Demi Marie Obenour
2025-07-29 0:32 ` Demi Marie Obenour [this message]
2025-07-29 0:33 ` [PATCH v9 1/2] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-29 12:44 ` Alyssa Ross
2025-07-29 0:33 ` [PATCH v9 2/2] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-29 13:08 ` Alyssa Ross
2025-07-29 21:17 ` Demi Marie Obenour
2025-07-30 8:10 ` Alyssa Ross
2025-07-30 9:59 ` [PATCH v10] " Demi Marie Obenour
2025-07-31 9:12 ` Alyssa Ross
2025-07-31 9:40 ` Alyssa Ross
2025-07-31 17:06 ` [PATCH v11] " Demi Marie Obenour
2025-08-01 17:53 ` Alyssa Ross
2025-08-02 7:54 ` Alyssa Ross
2025-07-28 23:13 ` [PATCH v8 1/2] img/app: Create needed directories in early boot Demi Marie Obenour
2025-07-28 23:19 ` Demi Marie Obenour
2025-07-28 23:13 ` [PATCH v8 2/2] img/app: Run PipeWire and WirePlumber in the VMs Demi Marie Obenour
2025-07-29 12:41 ` [PATCH v7 0/2] Sound support in Spectrum VMs Alyssa Ross
2025-07-24 22:23 ` [PATCH v6 1/5] host/rootfs: Create /run/user and /run/wait via run-image Demi Marie Obenour
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cover.1753748336.git.demiobenour@gmail.com \
--to=demiobenour@gmail.com \
--cc=devel@spectrum-os.org \
--cc=hi@alyssa.is \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://spectrum-os.org/git/crosvm
https://spectrum-os.org/git/doc
https://spectrum-os.org/git/mktuntap
https://spectrum-os.org/git/nixpkgs
https://spectrum-os.org/git/spectrum
https://spectrum-os.org/git/ucspi-vsock
https://spectrum-os.org/git/www
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).