Hello,
I've been trying to create a VM for audio editing/production and so I've been trying to passthrough my Focusrite Scarlett 2i2 audio interface to it. Since I've been passing through GPUs and other devices without any apparent issues, I thought this would be an easy job. However, when I passthrough the USB device (be it via ID or Port), audio is terrible, laggy, glitchy and generally unusable.
The VM is Win 10 x64 with installed Focusrite drivers. When VNC-ing into VMs (like what I'm doing to write this), the VNC client passes audio to any connected device without problems. Of course, that signal is compressed and has latency so I can't do audio work with it. After some Googling around, I found a thread which says it's best to passthrough the entire controller via PCI passthrough. Now I have a problem - I can't find which PCI device is the hub for this particular USB port. I've tried lsusb with -t and -v arguments and I know which Bus and Port the device is on but I have no idea how to discern the PCI device related to it.
Is it even possible to do this without buying an additional PCI USB controller?
This is the output from usb-devices:
T: Bus=01 Lev=02 Prnt=04 Port=03 Cnt=03 Dev#= 37 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 2
P: Vendor=1235 ProdID=8016 Rev=01.ec
S: Manufacturer=Focusrite
S: Product=Scarlett 2i2 USB
C: #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
I: If#=0x1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
I: If#=0x2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
I: If#=0x3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
I only pasted the part with the audio interface. I have no idea what most of this info means.
This is what lsusb -t produces:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/9p, 20000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 6: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 9: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 3: Dev 30, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 37, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 37, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 37, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 37, If 3, Class=Application Specific Interface, Driver=, 480M
|__ Port 10: Dev 28, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 10: Dev 28, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 10: Dev 28, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 11: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 12M
Output of lspci:
00:00.0 Host bridge: Intel Corporation Device 4668 (rev 02)
00:01.0 PCI bridge: Intel Corporation Device 460d (rev 02)
00:02.0 VGA compatible controller: Intel Corporation AlderLake-S GT1 (rev 0c)
00:06.0 PCI bridge: Intel Corporation Device 464d (rev 02)
00:0a.0 Signal processing controller: Intel Corporation Device 467d (rev 01)
00:14.0 USB controller: Intel Corporation Device 7ae0 (rev 11)
00:14.2 RAM memory: Intel Corporation Device 7aa7 (rev 11)
00:15.0 Serial bus controller [0c80]: Intel Corporation Device 7acc (rev 11)
00:15.1 Serial bus controller [0c80]: Intel Corporation Device 7acd (rev 11)
00:15.2 Serial bus controller [0c80]: Intel Corporation Device 7ace (rev 11)
00:15.3 Serial bus controller [0c80]: Intel Corporation Device 7acf (rev 11)
00:16.0 Communication controller: Intel Corporation Device 7ae8 (rev 11)
00:17.0 SATA controller: Intel Corporation Device 7ae2 (rev 11)
00:19.0 Serial bus controller [0c80]: Intel Corporation Device 7afc (rev 11)
00:19.1 Serial bus controller [0c80]: Intel Corporation Device 7afd (rev 11)
00:1c.0 PCI bridge: Intel Corporation Device 7ab8 (rev 11)
00:1c.2 PCI bridge: Intel Corporation Device 7aba (rev 11)
00:1f.0 ISA bridge: Intel Corporation Device 7a84 (rev 11)
00:1f.3 Audio device: Intel Corporation Device 7ad0 (rev 11)
00:1f.4 SMBus: Intel Corporation Device 7aa3 (rev 11)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device 7aa4 (rev 11)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii PRO [Radeon R9 290/390]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X]
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a809
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
Any help would be greatly appreciated.
My specs just in case:
CPU: I7 12700
RAM: 4x32 GB DDR4
MB: Gigabyte Z690 UD DDR4 (firmware 7a)
Additional GPU: Sapphire radeon R9 290 4GB
NVME: Samsung EVO 970+ 250 GB
HDD: 4x 8 TB WD GOLD
Thanks in advance!
I've been trying to create a VM for audio editing/production and so I've been trying to passthrough my Focusrite Scarlett 2i2 audio interface to it. Since I've been passing through GPUs and other devices without any apparent issues, I thought this would be an easy job. However, when I passthrough the USB device (be it via ID or Port), audio is terrible, laggy, glitchy and generally unusable.
The VM is Win 10 x64 with installed Focusrite drivers. When VNC-ing into VMs (like what I'm doing to write this), the VNC client passes audio to any connected device without problems. Of course, that signal is compressed and has latency so I can't do audio work with it. After some Googling around, I found a thread which says it's best to passthrough the entire controller via PCI passthrough. Now I have a problem - I can't find which PCI device is the hub for this particular USB port. I've tried lsusb with -t and -v arguments and I know which Bus and Port the device is on but I have no idea how to discern the PCI device related to it.
Is it even possible to do this without buying an additional PCI USB controller?
This is the output from usb-devices:
T: Bus=01 Lev=02 Prnt=04 Port=03 Cnt=03 Dev#= 37 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 2
P: Vendor=1235 ProdID=8016 Rev=01.ec
S: Manufacturer=Focusrite
S: Product=Scarlett 2i2 USB
C: #Ifs= 4 Cfg#= 1 Atr=80 MxPwr=500mA
I: If#=0x0 Alt= 0 #EPs= 1 Cls=01(audio) Sub=01 Prot=20 Driver=snd-usb-audio
I: If#=0x1 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
I: If#=0x2 Alt= 0 #EPs= 0 Cls=01(audio) Sub=02 Prot=20 Driver=snd-usb-audio
I: If#=0x3 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=01 Driver=(none)
I only pasted the part with the audio interface. I have no idea what most of this info means.
This is what lsusb -t produces:
/: Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/9p, 20000M
/: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
|__ Port 6: Dev 3, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 9: Dev 4, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 1: Dev 6, If 0, Class=Mass Storage, Driver=usb-storage, 480M
|__ Port 3: Dev 30, If 0, Class=Hub, Driver=hub/4p, 480M
|__ Port 4: Dev 37, If 0, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 37, If 1, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 37, If 2, Class=Audio, Driver=snd-usb-audio, 480M
|__ Port 4: Dev 37, If 3, Class=Application Specific Interface, Driver=, 480M
|__ Port 10: Dev 28, If 2, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 10: Dev 28, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 10: Dev 28, If 1, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 11: Dev 7, If 0, Class=Human Interface Device, Driver=usbhid, 12M
Output of lspci:
00:00.0 Host bridge: Intel Corporation Device 4668 (rev 02)
00:01.0 PCI bridge: Intel Corporation Device 460d (rev 02)
00:02.0 VGA compatible controller: Intel Corporation AlderLake-S GT1 (rev 0c)
00:06.0 PCI bridge: Intel Corporation Device 464d (rev 02)
00:0a.0 Signal processing controller: Intel Corporation Device 467d (rev 01)
00:14.0 USB controller: Intel Corporation Device 7ae0 (rev 11)
00:14.2 RAM memory: Intel Corporation Device 7aa7 (rev 11)
00:15.0 Serial bus controller [0c80]: Intel Corporation Device 7acc (rev 11)
00:15.1 Serial bus controller [0c80]: Intel Corporation Device 7acd (rev 11)
00:15.2 Serial bus controller [0c80]: Intel Corporation Device 7ace (rev 11)
00:15.3 Serial bus controller [0c80]: Intel Corporation Device 7acf (rev 11)
00:16.0 Communication controller: Intel Corporation Device 7ae8 (rev 11)
00:17.0 SATA controller: Intel Corporation Device 7ae2 (rev 11)
00:19.0 Serial bus controller [0c80]: Intel Corporation Device 7afc (rev 11)
00:19.1 Serial bus controller [0c80]: Intel Corporation Device 7afd (rev 11)
00:1c.0 PCI bridge: Intel Corporation Device 7ab8 (rev 11)
00:1c.2 PCI bridge: Intel Corporation Device 7aba (rev 11)
00:1f.0 ISA bridge: Intel Corporation Device 7a84 (rev 11)
00:1f.3 Audio device: Intel Corporation Device 7ad0 (rev 11)
00:1f.4 SMBus: Intel Corporation Device 7aa3 (rev 11)
00:1f.5 Serial bus controller [0c80]: Intel Corporation Device 7aa4 (rev 11)
01:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii PRO [Radeon R9 290/390]
01:00.1 Audio device: Advanced Micro Devices, Inc. [AMD/ATI] Hawaii HDMI Audio [Radeon R9 290/290X / 390/390X]
02:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd Device a809
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
Any help would be greatly appreciated.
My specs just in case:
CPU: I7 12700
RAM: 4x32 GB DDR4
MB: Gigabyte Z690 UD DDR4 (firmware 7a)
Additional GPU: Sapphire radeon R9 290 4GB
NVME: Samsung EVO 970+ 250 GB
HDD: 4x 8 TB WD GOLD
Thanks in advance!