USB audio passthrough with no sound

richiewu

New Member
Jul 21, 2021
27
1
3
41
Just pass through USB device and Windows 10 guest os can see it but with no sound
Another HDMI audio works well

usb.png

pci.png

lspci output
Code:
02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller (rev 01) (prog-if 30 [XHCI])
        Subsystem: ASMedia Technology Inc. 400 Series Chipset USB 3.1 XHCI Controller
        Flags: bus master, fast devsel, latency 0, IRQ 46, IOMMU group 8
        Memory at fc8a0000 (64-bit, non-prefetchable) [size=32K]
        Capabilities: [50] MSI: Enable+ Count=1/8 Maskable- 64bit+
        Capabilities: [78] Power Management version 3
        Capabilities: [80] Express Legacy Endpoint, MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [200] Secondary PCI Express
        Capabilities: [300] Latency Tolerance Reporting
        Capabilities: [400] L1 PM Substates
        Kernel driver in use: xhci_hcd
        Kernel modules: xhci_pci

0a:00.3 USB controller: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1 (prog-if 30 [XHCI])
        Subsystem: ASRock Incorporation Raven USB 3.1
        Flags: bus master, fast devsel, latency 0, IRQ 49, IOMMU group 9
        Memory at fc300000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: [48] Vendor Specific Information: Len=08 <?>
        Capabilities: [50] Power Management version 3
        Capabilities: [64] Express Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable- Count=1/8 Maskable- 64bit+
        Capabilities: [c0] MSI-X: Enable+ Count=8 Masked-
        Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Kernel driver in use: vfio-pci
        Kernel modules: xhci_pci

0a:00.4 USB controller: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1 (prog-if 30 [XHCI])
        Subsystem: ASRock Incorporation Raven USB 3.1
        Flags: bus master, fast devsel, latency 0, IRQ 50, IOMMU group 9
        Memory at fc200000 (64-bit, non-prefetchable) [size=1M]
        Capabilities: [48] Vendor Specific Information: Len=08 <?>
        Capabilities: [50] Power Management version 3
        Capabilities: [64] Express Endpoint, MSI 00
        Capabilities: [a0] MSI: Enable- Count=1/8 Maskable- 64bit+
        Capabilities: [c0] MSI-X: Enable+ Count=8 Masked-
        Capabilities: [100] Vendor Specific Information: ID=0001 Rev=1 Len=010 <?>
        Kernel driver in use: vfio-pci
        Kernel modules: xhci_pci

I tried pass through to volumio but with lot of noise like this https://forum.proxmox.com/threads/noise-with-usb-audio-dac-in-windows-vm.24000/
 
Another HDMI audio works well
Via a PCI passed through GPU?

Alternatively, you could try to pass through the whole USB controller as PCI device if it is possible. USB pass through to the VM is likely to introduce too much of latency which you would avoid by passing through the whole USB controller.
 
Via a PCI passed through GPU?

Alternatively, you could try to pass through the whole USB controller as PCI device if it is possible. USB pass through to the VM is likely to introduce too much of latency which you would avoid by passing through the whole USB controller.
Yes, I just noticed that
one USB with ethernet, another one with iGPU for the same IOMMU group,
is that possible to find which PCI device used for the USB audio?

The only possible is pass the USB with ethernet, because I tried pass iGPU but PVE hang up.
 
lsusb or lsusb -t will give you a list/tree view of the USB devices and to which USB Controller they are connected to.

Running lsusb -v will give you a lot of information. Look out for iSerial lines, those should tell you the PCI address needed for the passthrough.
 
lsusb or lsusb -t will give you a list/tree view of the USB devices and to which USB Controller they are connected to.

Running lsusb -v will give you a lot of information. Look out for iSerial lines, those should tell you the PCI address needed for the passthrough.

Bus 001 Device 002: ID 20b1:0008 XMOS Ltd HIFI DSD
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x20b1 XMOS Ltd
idProduct 0x0008
bcdDevice 6.c5
iManufacturer 1 XMOS
iProduct 3 HIFI DSD
iSerial 0
bNumConfigurations 2

How to understand this, there is no PCI address
 
How to understand this, there is no PCI address
Well, if the iSerial is shown as 0, you are looking at a USB device but not the USB controller which would be connected to the PCI bus.

With lsusb -t you can trace back to which root hub your device is connected to then look for it in the lsusb -v output.

Remember, if you try to pass through the full usb hub, all devices connected to it will end up in the VM.

If I run lsusb -v I get the following output with the iSerial line showing the PCI address of the controller.
Code:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass            9 Hub
  bDeviceSubClass         0
  bDeviceProtocol         1 Single TT
  bMaxPacketSize0        64
  idVendor           0x1d6b Linux Foundation
  idProduct          0x0002 2.0 root hub
  bcdDevice            5.11
  iManufacturer           3 Linux 5.11.22-3-pve xhci-hcd
  iProduct                2 xHCI Host Controller
  iSerial                 1 0000:06:00.1
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                                 ^^^^^^^
  [...]

There would be a lot more for this one controller, but I cut it short.
 
Just find 02:00.0 is the pci address

Code:
02:00.0 USB controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller (rev 01)
02:00.1 SATA controller: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller (rev 01)
02:00.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge (rev 01)

I just tried pass 02:00.0 to VM but PVE got hang up, so that means its impossible?
Seems another pci device SATA controller and ethernet interface with the same iommou group 8 also passed caused this problem.
 
Last edited:
If there are other USB devices connected to that hub, and/or it is not in its own IOMMU group, it will pretty much be not possible to pass it through. An extra USB controller that you plug into one PCI port might work, depending on the motherboard and BIOS.
 
02:00.0 is in the motherboard chipset group together with your network, WiFi and drive controllers. You cannot share devices in the same IOMMU group between VMs and/or the Proxmox host. Therefore, the host lost all those devices which it was actively using and froze.
You can check your IOMMU groups with this command: for d in /sys/kernel/iommu_groups/*/devices/*; do n=${d#*/iommu_groups/*}; n=${n%%/*}; printf 'IOMMU group %s ' "$n"; lspci -nns "${d##*/}"; done.
Maybe there is another USB controller in a isolated group? Or upgrade the motherboard BIOS (or downgrade sometimes helps as some BIOS versions have better groups or support for PCI passthrough)?
Can you tell us what motherboard you have (and the IOMMU groups)? I fear that maybe your motherboard does not have PCIe slots that would provide a isolated IOMMU group to a USB controller add-in card.
 
I'm using AsRock B450 itx gaming and updated to latest BIOS version
There is only one PCI-E slot and one m.2 slot, I use GT1030 for passthrough because the iGPU of 200GE not support passthrough
 
Here are iommu groups

Code:
IOMMU group 0 00:01.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge [1022:1452]
IOMMU group 1 00:01.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0] [1022:15d3]
IOMMU group 2 00:01.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0] [1022:15d3]
IOMMU group 3 00:08.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge [1022:1452]
IOMMU group 4 00:08.1 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Internal PCIe GPP Bridge 0 to Bus A [1022:15db]
IOMMU group 5 00:14.0 SMBus [0c05]: Advanced Micro Devices, Inc. [AMD] FCH SMBus Controller [1022:790b] (rev 61)
IOMMU group 5 00:14.3 ISA bridge [0601]: Advanced Micro Devices, Inc. [AMD] FCH LPC Bridge [1022:790e] (rev 51)
IOMMU group 6 00:18.0 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 0 [1022:15e8]
IOMMU group 6 00:18.1 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 1 [1022:15e9]
IOMMU group 6 00:18.2 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 2 [1022:15ea]
IOMMU group 6 00:18.3 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 3 [1022:15eb]
IOMMU group 6 00:18.4 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 4 [1022:15ec]
IOMMU group 6 00:18.5 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 5 [1022:15ed]
IOMMU group 6 00:18.6 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 6 [1022:15ee]
IOMMU group 6 00:18.7 Host bridge [0600]: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Device 24: Function 7 [1022:15ef]
IOMMU group 7 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GP108 [GeForce GT 1030] [10de:1d01] (rev a1)
IOMMU group 7 01:00.1 Audio device [0403]: NVIDIA Corporation GP108 High Definition Audio Controller [10de:0fb8] (rev a1)
IOMMU group 8 02:00.0 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset USB 3.1 XHCI Controller [1022:43d5] (rev 01)
IOMMU group 8 02:00.1 SATA controller [0106]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset SATA Controller [1022:43c8] (rev 01)
IOMMU group 8 02:00.2 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Bridge [1022:43c6] (rev 01)
IOMMU group 8 03:00.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
IOMMU group 8 03:01.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
IOMMU group 8 03:04.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
IOMMU group 8 03:05.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
IOMMU group 8 03:06.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
IOMMU group 8 03:07.0 PCI bridge [0604]: Advanced Micro Devices, Inc. [AMD] 400 Series Chipset PCIe Port [1022:43c7] (rev 01)
IOMMU group 8 08:00.0 Network controller [0280]: Intel Corporation Dual Band Wireless-AC 3168NGW [Stone Peak] [8086:24fb] (rev 10)
IOMMU group 8 09:00.0 Ethernet controller [0200]: Intel Corporation I211 Gigabit Network Connection [8086:1539] (rev 03)
IOMMU group 9 0a:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Raven Ridge [Radeon Vega Series / Radeon Vega Mobile Series] [1002:15dd] (rev cb)
IOMMU group 9 0a:00.1 Audio device [0403]: Advanced Micro Devices, Inc. [AMD/ATI] Raven/Raven2/Fenghuang HDMI/DP Audio Controller [1002:15de]
IOMMU group 9 0a:00.2 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) Platform Security Processor [1022:15df]
IOMMU group 9 0a:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1 [1022:15e0]
IOMMU group 9 0a:00.4 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Raven USB 3.1 [1022:15e1]
IOMMU group 9 0a:00.6 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 10h-1fh) HD Audio Controller [1022:15e3]

Only group 8 and 9 has USB controller, but both of them with other devices.

Anyway, I found another music player Mopidy that can run on PVE's debian dist, so no need to pass USB audio do VM now.
 
Last edited:
I hope it does come as a surprise that your choice of form factor and chipset is not the most flexible for PIC passthrough, sorry.
The groups depend on the motherboard and BIOS. With AMD newer or older BIOS version sometimes give better IOMMU groups. But flashing the wrong version can also brick you motherboard and there is no guarantee that there is any version with good groups.
You can install a whole desktop environment on Proxmox because of its Debian base. Or the other way around: install Proxmox on a Debian desktop of your choice. This makes Proxmox more like VirtualBox or VMWare Workstation on Linux. You can use SPICE to get audio from a VM to your viewer.
You can pass USB ports to VMs, which for this motherboard is the main way to extend functionality. There are (simple) USB sound devices that work with Linux.

EDIT: I did not intend to imply that Intel was better. Just ATX is better than mITX and X570, X470 are better than B450 chipsets for passthrough.
 
Last edited:
I hope it does come as a surprise that your choice of form factor and chipset is not the most flexible for PIC passthrough, sorry.
The groups depend on the motherboard and BIOS. With AMD newer or older BIOS version sometimes give better IOMMU groups. But flashing the wrong version can also brick you motherboard and there is no guarantee that there is any version with good groups.
You can install a whole desktop environment on Proxmox because of its Debian base. Or the other way around: install Proxmox on a Debian desktop of your choice. This makes Proxmox more like VirtualBox or VMWare Workstation on Linux. You can use SPICE to get audio from a VM to your viewer.
You can pass USB ports to VMs, which for this motherboard is the main way to extend functionality. There are (simple) USB sound devices that work with Linux.
Yes, I just know Intel platform is better for passthrough.

Anyway, I can use music player daemon on PVE that works well for me, which is a better choice that I can use app to control it.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!