FINALLY figured it out! FINALLY getting some good quality audio on Qubes! It was indeed this bug that broke pulseaudio configuration on Qubes, so I dunno how y’all are getting your audio to work without patching? Anyway, as I use debian for services, I needed to patch /usr/lib/python3/dist-packages/qubesadmin/tools/qvm_start_daemon.py and then it all works even with sys-audio’s audiovm set to none.
So here’s my guide for sys-usb-audio:
-
In
debian-minimaltemplate install the following packages:qubes-audio-daemonqubes-core-admin-clientqubes-usb-proxyalsa-utilspavucontrolpasystray
-
In
dom0create/etc/qubes/policy.d/40-sys-audio.policyfile with the following content:
admin.Events * sys-audio @adminvm allow target=dom0
admin.Events +domain-stopped sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.Events +domain-shutdown sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.Events +domain-start sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.Events +connection-established sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.vm.CurrentState * sys-audio @adminvm allow target=dom0
admin.vm.CurrentState * sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.vm.List * sys-audio @adminvm allow target=dom0
admin.vm.List * sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.vm.property.Get +audiovm sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.vm.property.Get +xid sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.vm.feature.CheckWithTemplate +audio sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.vm.feature.CheckWithTemplate +audio-model sys-audio @tag:audiovm-sys-audio allow target=dom0
admin.vm.property.Get +stubdom_xid sys-audio @tag:audiovm-sys-audio allow target=dom0
- Patch
/usr/lib/python3/dist-packages/qubesadmin/tools/qvm_start_daemon.pyin the template as described in the link above. - Make a
sys-usb-audioqube based on adebian-minimaltemplate and addaudiovmservice in its services tab. - Change
sys-usb-audioaudiovm property tononeby running a commandqvm-prefs sys-usb-audio audiovm noneindom0, so that you could restart it when needed. - Change the default audiovm to
sys-usb-audioby running a commandqvm-prefs default_audiovm sys-usb-audioindom0. - Start
sys-usb-audioand check that pavucontol is connected to pulseaudio and displays client audio streams even after restart of client vms, and redirects the output to dummy output (as we don’t have a connected audio device yet). - Congratulations, your qubes pulseaudio configuration works as expected! Attach a usb audio card to your
sys-usb-audioand the output should get redirected to it on the fly!
Side note: on debian all you really need is pipewire-pulse for audio to work.
Also, I have a question: how come policy file references @tag:audiovm-sys-audio even though qvm-tags doesn’t list this tag for my sys-usb-audio? Is this some hidden system tag that gets set automatically for each vm?