To preface this, Volumio does not have official support for virtualization. As such, the project’s developers have no obligation to help you if you run into issues and are very unlikely to do so. This is because virtualization introduces factors that do not exist on standard Raspberry Pi or x86 installations. Remember, this is an extremely niche use case for an already fairly niche embedded OS
I am writing this guide as while I could find threads asking about the process and common issues with running Volumio this way on the forum, very few had any useful information and none gave instructions for the full process, particularly with one extremely crucial step that I only found while looking into other music streaming options. With that out of the way, here’s the guide.
Before doing anything else, ensure that you have IOMMU enabled in your systems BIOS. This is part of the crucial step mentioned above, as without it you will experience clipping in the audio.
Once that’s enabled and Proxmox is booted, navigate to the web UI and enter the instance’s shell to run the following commands:
apt install unzip
wget [insert link to latest version of the Volumio x86 image from the download page]
unzip Volumio-[insert version here]-x86_amd64.zip
qemu-img resize -f raw Volumio-[insert version here]-x86_amd64.img 16G
Once you have done this, create a VM. For the most part, the default settings are good, but you need to make a few changes:
- Under OS tick “Do not use any media”
- Under Disks delete the default scsi0 drive
- Under CPU set the type to “Host”
- If you intend to use any hardware intensive plugins such as FusionDSP or LMS you may increase the number of CPU cores, otherwise it’s fine to keep it at 1 and increase the count later if necessary.
- Finalize the VM, but do not start it just yet
Make note of the VM ID and the name of the storage pool used for VM disks (local-lvm by default) and return to the instance’s shell to run the following command:
qm importdisk [VM ID] Volumio-[insert version here]-x86_amd64.img [storage pool]
Then navigate to the hardware tab under the Volumio VM to do the following:
- Click “Unused Disk 0” in the hardware list, then click Edit at the top
- Set Bus/Device to “SATA” and 0, then click Add
- Click Add at the top, then select “PCI Device”
- Select “Raw Device,” under Device select your USB controller, then click Add
** This can vary from motherboard to motherboard, but on my own system the CPU’s USB controller is used for the back panel USB ports while the chipset’s USB controller is used for the front panel USB ports.
** If you have USB devices passed through to other VMs, make sure to have your DAC connected to a separate USB controller, as everything connected to the controller you select here will get passed through to Volumio instead.
** We do not pass through the DAC as a USB device here because Proxmox’s standard method for passing through USB devices causes clipping. This is also why we enable IOMMU at the start.
Navigate to the options tab under the Volumio VM to do the following:
- Click “Boot Order” in the list, then click Edit at the top.
- Enable “sata0,” drag it to the top of the list, then disable all other options before clicking OK
- If you’d like for the VM to start when Proxmox boots up, click “Start on Boot” in the list, click edit at the top, then check the box and click OK.
At this point you may start the VM, the set up process is the same as on a standard Raspberry Pi or x86 installation from this point forward. If your USB DAC doesn’t show up in the device list, change the USB controller that you have passed through to the VM under the hardware tab, then restart the VM.