patches and low-level development discussion
 help / color / mirror / code / Atom feed
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)

  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).