My Windows VM isn’t booting anymore if I’m passing through my audio controller after I installed the latest updates on Sunday which included libvirt, qemu and various others. It only works if I don’t passthrough the audio controller for some reason. I already downgraded libvirt, qemu and some other packages that I thought had a correlation and installed other kernels without success.
So what happens is I click “play” in virt-manager, I see that the audio controller and everything else I passthrough is being removed from my host (becomes unusable, which is intended), but nothing happens afterwards. The VM just appears as “shutoff”.
I can’t find any error message in journalctl or the libvirtd service that seems to be correlated. Also virt-manager isn’t responding anymore after I started the VM and virsh list --all for example gives no output. I seems like something crashed.
I’m pretty desperate and exhausted after three days of troubleshooting and I don’t really understand why even the downgrades didn’t work
Yes I know that pulseaudio or scream exist, but they’re not really a option in my situation. I already had my pulseaudio journey…
I hope you guys have some ideas. I’d just be happy for an error message or something to work with.
Ok, so it looks like I’ve finally found the reason. An application with the name of pipewire or pipewire-media-session interferes with libvirt. As soon as I stop the service the VM boots up without a problem. It must have been installed in the last update.
Does anyone have information if pipewire is necessary to have and if yes, is there a way to prevent this in the future without me having to stop the service every time?
If you’re a musician and compose / mix / … music on Linux: pipewire is definitely a need-to-have
if you pass-through your audio card into your Windows VM because your music programs are in there and want best audio performance for your Windows VM: Meh, forget about pipewire!
yup:
systemctl --user disable pipewire.service
P.S. Please do me a favour and accept your answer as the solution like this:
so that the next person that has the exact same problem you just had will benefit from your post as well.
That doesn’t work for some reason . I disabled and stopped pipewire.service and pipewire.socket (as --user), rebooted, and when I check the status it’s still active and running:
systemctl --user status pipewire.service
● pipewire.service - Multimedia Service
Loaded: loaded (/usr/lib/systemd/user/pipewire.service; disabled; vendor preset: enabled)
Active: active (running) since Fri 2020-08-21 12:09:08 CEST; 45s ago
TriggeredBy: ● pipewire.socket
Main PID: 8938 (pipewire)
CGroup: /user.slice/user-1000.slice/user@1000.service/pipewire.service
├─8938 /usr/bin/pipewire
└─8940 /usr/bin/pipewire-media-session
systemctl --user status pipewire.socket
● pipewire.socket - Multimedia System
Loaded: loaded (/usr/lib/systemd/user/pipewire.socket; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-08-21 12:09:05 CEST; 52s ago
Triggers: ● pipewire.service
Listen: /run/user/1000/pipewire-0 (Stream)
CGroup: /user.slice/user-1000.slice/user@1000.service/pipewire.socket
Edit: Nvm, it worked with systemctl --user mask pipewire.socket
And could you edit the mask into your solution so that someone stumbling over this doesn’t have to read this entire conversation but has everything in one post? I.E.: your solution!