Setting up an audio VM

I’ve been trying to write a debian minimal sys-audio for a few days and ran into the issue where no matter what I did, pulseadio on the sys-audio qube wouldn’t recognize my audio device.

So I decided to try this instead, even though it would end up on (now) Fedora-36. I followed the instructions in post 24, which I’ll quote (and annotate) here. I’m going to delete steps that were moot (no need to re-download Fedora-36, for instance.

  1. In dom0:
    sudo qubes-dom0-update qubes-audio-dom0
    In the TemplateVM for sys-audio (fedora-34-xfce):
    sudo dnf install qubes-audio-daemon qubes-core-admin-client
    This is necessary to get the qvm-start-daemon command in the sys-audio VM.
  1. [Not needed]
  2. Run the salt script to create the sys-audio VM
    sudo qubesctl state.sls qvm.sys-audio

[4a I added these lines to the 50 policy file that (apparently) the salt script created.]

admin.vm.feature.CheckWithTemplate  +audio-model   sys-audio     @tag:audiovm-sys-audio  allow   target=dom0
admin.vm.property.Get               +keyboard_layout sys-audio     @tag:audiovm-sys-audio  allow   target=dom0
admin.vm.property.GetAll * sys-audio	sys-audio	allow	target=dom0
admin.vm.property.GetAll * sys-audio	@adminvm	allow	target=dom0
admin.vm.property.GetAll * sys-audio	@tag:audiovm-sys-audio	allow	target=dom0
  1. In sys-audio settings, open Services tab and add the audiovm service (a custom service). [Already done.]
  2. In dom0, run the commands to assign sys-audio as its audiovm.
    qvm-prefs <targetVM> audiovm sys-audio
    One can also use this one to set sys-audio as audiovm for all other vms:
    qubes-prefs default_audiovm sys-audio
  3. Run sys-audio VM and create the files inside ~/.config/autostart folder
 ~/.config/autostart/pulseaudio.desktop
[Desktop Entry]
Name=Pulseaudio
Comment=Starts Pulseaudio
Icon=qubes
Exec=pulseaudio
Terminal=False
Type=Application
NotShowIn=KDE;

 ~/.config/autostart/qvm-start-daemon.desktop
[Desktop Entry]
Name=Qubes Guid/Pacat
Comment=Starts GUI/AUDIO daemon for Qubes VMs
Icon=qubes
Exec=qvm-start-daemon --all --watch
Terminal=False
Type=Application
NotShowIn=KDE;

OK, between steps 6 and 7, if I ran pulse audio volume control, my “output devices” tab showed:

Qubes VCHAN sink with port “Qubes Vchan Output (plugged in)”

It would not show my source qube (Clementine) in the playback list, until I restarted sys-audio.

When I added the files in 7 and restarted, the output device was replaced by Dummy Output.

I verified, my audio device is attached to sys-audio (and it’s an “Intel Tiger Lake-LP Smart Sound Technology Audio Controller” on 00:1f.3)

Like hamenarin, I can see the audio level jumping in the playback for my Clementine AudioVM. I infer that the ONLY thing wrong with my setup is that sys-audio won’t do anything with the sound card. (And this is where I got with my home-grown deb11 minimal setup, too.)

The only missing step I didn’t perform was his step 8:

In dom0, I created a file /etc/modprobe.d/50-alsa.conf and audio started working after rebooting:

options snd_hda_intel enable=1 index=0 power_save=0

which I will do as soon as I post this (I just saw it requires a reboot, and I don’t want to lose what I’ve written thus far). During my prior attempt at this (this is my second try with the salt recipe), this step had no effect.

EDIT TO ADD: Audio works well when I’m not trying to use sys-audio. So dom0 apparently still has something this sys-audio does not.

ALSO EDIT TO ADD: the file in dom0 had no effect.

1 Like