Asus Tuf Gamming X570 MB / Proxmox / AMD IOMMU pass thru / Vfio usb Audio devices

Using Asus x570 MB / OS=Proxmox Hypervisor / must pass thru Usb audio devices
Tested current usb audio devices in a running stand alone PC / Linux Mint. All running aok on the pc ( good to go with the devices ) I loaded splice onto Proxmox Hypervisor / it works but its not suitable as the audio come thru garbled. Super easy to do but not what I needed.

Looking to find correct hardware / build hardware for Hypervisor with an additional PCI-E USB adapter then pass the adapter / usb devices / thru to one VM Linux Mint VM. Maybe Win11 if possible but I think this may be a challenge.

I am a older linux user; but no expert so my skill are limited with the command line syntax. And understanding the lingo. So Most of all Thanks for the support. This is a paradigme shift for me as we are moving our Audio studio to complete Linux. Although I did manage to pass thru my ssd devices so far. My main concerns are: Finding the right adapter that USB & VFIO resets properly, then finding the correct modification or steps to configure Proxmox so we pass thru; Sent Asus Tech support email asking about IOMMU for my MB pointing them to this design too. No response yet.

Passthrough of the entire USB controller instead of single devices or USB ports can be a gamechanger. If you need other USB ports for other things, then that’s difficult. And the board must support this.

Just select the USB controller and hit the checkbox for “all functions”. That’s the best for most devices, incl. SAS, SATA or network controller.

root@Prox:~# lspci
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Root Complex
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Starship/Matisse IOMMU
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:02.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:03.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse GPP Bridge
00:04.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:05.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:07.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:07.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
00:08.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Host Bridge
00:08.1 PCI bridge: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Internal PCIe GPP Bridge 0 to bus[E:B]
00:14.0 SMBus: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller (rev 61)
00:14.3 ISA bridge: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge (rev 51)
00:18.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 0
00:18.1 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 1
00:18.2 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 2
00:18.3 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 3
00:18.4 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 4
00:18.5 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 5
00:18.6 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 6
00:18.7 Host bridge: Advanced Micro Devices, Inc. [AMD] Matisse/Vermeer Data Fabric: Device 18h; Function 7
01:00.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse Switch Upstream
02:04.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:05.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:06.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:08.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:09.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
02:0a.0 PCI bridge: Advanced Micro Devices, Inc. [AMD] Matisse PCIe GPP Bridge
03:00.0 Network controller: Intel Corporation Wireless-AC 9260 (rev 29)
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller (rev 26)
05:00.0 Serial controller: MosChip Semiconductor Technology Ltd. MCS9922 PCIe Multi-I/O Controller
06:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
06:00.1 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
06:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
07:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
08:00.0 SATA controller: Advanced Micro Devices, Inc. [AMD] FCH SATA Controller [AHCI mode] (rev 51)
09:00.0 VGA compatible controller: NVIDIA Corporation GK107 [GeForce GTX 650] (rev a1)
09:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
0a:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse PCIe Dummy Function
0b:00.0 Non-Essential Instrumentation [1300]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Reserved SPP
0b:00.1 Encryption controller: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP
0b:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller
0b:00.4 Audio device: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller
root@Prox:~#

That’s the one we are looking for. I’d try using passthrough on 06:00.1 and/or 06:00:3 first. I’m not sure what the root device is…but I would try 06:00.0 after that.

And that’s native USB hardware and should be appreciated by the guest OS.

That looks like front USB header on first sight.

At Proxmox hypervisor Gui / Mint VM/ hardware/ added USB device (usb0).
Edit USB device: choices: Splice port, Use Usb Vendor Device ID or Use Usb port, both configure to the audio device correctly but audio is distorted. See “Use mapped Device” but not sure how to config that one?

going to give 06:00.1 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller or 06:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controllerit , a riffle…be back later, thanks

This is what I just did (Focusrite is the audio device) 103 is the VM id
( now inside Proxmox gui under 103vm the usb device= 0 the host is assigned )
( rebooted server and Vm ) Audio is still garbled…So passing thur usb on MB is not just like splice)
(Next Plan install a PCI-e adapter usb card and test audio)

This is what I did
root@Prox:~# lsusb
Bus 006 Device 003: ID 0bda:0306 Realtek Semiconductor Corp. USB3.0 Card Reader
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 003: ID 1235:8215 Focusrite-Novation Scarlett 18i20 3rd Gen
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 003: ID 0b05:18f3 ASUSTek Computer, Inc. AURA LED Controller
Bus 003 Device 002: ID 8087:0025 Intel Corp. Wireless-AC 9260 Bluetooth Adapter
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 058f:9360 Alcor Micro Corp. 8-in-1 Media Card Reader
Bus 001 Device 003: ID 0c45:7505 Microdia USB DEVICE
Bus 001 Device 002: ID 046d:c51b Logitech, Inc. V220 Cordless Optical Mouse for Notebooks
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
root@Prox:~# qm monitor 103
Entering QEMU Monitor for VM 103 - type ‘help’ for help
qm> info usbhost
Bus 5, Addr 3, Port 1, Speed 480 Mb/s
Class ef: USB device 1235:8215, Scarlett 18i20 USB
Bus 6, Addr 3, Port 4, Speed 5000 Mb/s
Class 00: USB device 0bda:0306, USB3.0 Card Reader
Bus 3, Addr 3, Port 6, Speed 12 Mb/s
Class 00: USB device 0b05:18f3, AURA LED Controller
Bus 3, Addr 2, Port 5, Speed 12 Mb/s
Class e0: USB device 8087:0025
Bus 1, Addr 4, Port 6, Speed 12 Mb/s
Class 00: USB device 058f:9360, USB Reader
Bus 1, Addr 3, Port 2, Speed 12 Mb/s
Class 00: USB device 0c45:7505, USB DEVICE
Bus 1, Addr 2, Port 1, Speed 1.5 Mb/s
Class 00: USB device 046d:c51b, USB Receiver
qm> quit
root@Prox:~# qm set 103 -usb0 host=1235:8215
update VM 103: -usb0 host=1235:8215
root@Prox:~#

Installed the USB adapter card, rebooted proxmox and the ethernet capability failed.
Starting over Installed a new M.2 and reinstalled proxmox back in business with new card

root@pve2:~# qm monitor 100
Entering QEMU Monitor for VM 100 - type ‘help’ for help
qm> info usbhost
Bus 8, Addr 2, Port 4, Speed 5000 Mb/s
Class 00: USB device 0781:5581, SanDisk 3.2Gen1
Bus 7, Addr 3, Port 2.1, Speed 12 Mb/s
Class 00: USB device 413c:2010, Dell USB Keyboard
Bus 5, Addr 3, Port 6, Speed 12 Mb/s
Class 00: USB device 0b05:18f3, AURA LED Controller
Bus 5, Addr 2, Port 5, Speed 12 Mb/s
Class e0: USB device 8087:0025
Bus 3, Addr 3, Port 6, Speed 12 Mb/s
Class 00: USB device 058f:9360, USB Reader
Bus 3, Addr 2, Port 2, Speed 1.5 Mb/s
Class 00: USB device 046d:c51b, USB Receiver
Bus 1, Addr 2, Port 1, Speed 480 Mb/s
Class ef: USB device 1235:8215, Scarlett 18i20 USB
qm> ^C
root@pve2:~# ^C

Yahoo…what I found is the Prox GUI gave you the abilty to pass thru the PCI card.
The card was: 0000:04:00
Go to hardware tab of VM add :PCI Device: check raw device: then find the item in the list
Bingo…

No need to use scrips as Proxmox gives you the ability to use the Gui to accomlish this

  1. open VM (not running) and go to hardware, add a pci device, Find the PCI -e adapter card
  2. Use Raw device find the PCI-e card, select it and select all functions.
  3. Attach audio device to usb card
  4. Should be good to go

I hope this help others

This is the answer:

  1. Before you install Proxmox make sure you have your PCI-e Usb card in a slot that is IOMMU capable. After installation

use this command dmesg | grep -e DMAR -e IOMMU

If you see one of the following lines:

  • AMD-Vi: Interrupt remapping enabled
  • DMAR-IR: Enabled IRQ remapping in x2apic mode (‘x2apic’ can be different on old CPUs, but should still work) then remapping is supported.
  1. pvesh get /nodes/{nodename}/hardware/pci --pci-class-blacklist “”

to view possible pci devices

  1. Go to proxmox virtual enviroment highlight the VM you plan to use for usb audio
  2. Under hardware / add a PCI device, select Raw Device, look for device in pull down, select it and check all functions then ok
  3. Install the USB Audio device into usb port
  4. Start Vm
  5. Setup DAW to point to the device using ALSA then choose the input device that is connected to the usb port.

If the audio is still distorted, you might want to check the audio settings within your Mint VM as well. Ensure that the correct audio device is selected and that the audio drivers are properly installed. Additionally, you may need to experiment with different USB ports on the host to see if that makes a difference.