***GUIDE*** How to passthrough Intel chipset audio


Recommended Posts

On 4/9/2019 at 1:08 PM, matthope said:

 

Try adding it manually. Paste this code between inside the <devices></devices> bracket.


   <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
      </source>
      <alias name='hostdev1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </hostdev>

 

 

9 minutes ago, Twisted said:

@matthope Would you mind sharing an example of the coded needed in the XML? I would love to get this done and have sound again.

 

It was there all along. You should try to read the whole thread it might help you actually. You might need to change some of the parameters, in order to match your sound card. 

 

 

 

Link to comment
  • 2 weeks later...

When i passthrough my onboard Soundcard to any of my VMs unraid will try to refresh the page and fail, you can however still navigate every other tab (ie: dashboard, tools, settings...) after 30-40 seconds the whole site then goes down. I have to hard crash out my server (Hold the power button) 

The audio controller is in its own IOMMU group so im not quite shure whats going on.

Link to comment
  • 7 months later...

@matthope

I hope you wouldn't mind shedding a bit of your wisdom on this subject.  My target is to passthrough my iGPU HDMI with HDMI audio to a Debian Buster VM.  I can pass through the HDMI - a lspci and alsa testing shows no sound options if only the 00:02 is passed through.  It needs the other piece.

 

Which HDMI output are you using?  My real goal is multichannel/highres HDMI audio for that VM. 

 

I read this whole thread you helped in, and this one - 

Various postings seem to imply I should be successful.  I must be missing something :/

I've tried in UEFI and Legacy.  I'm currently in Legacy.

 

I expected to see the sound portion as a PCI device here:

image.png.0220896b212b60dc72bf96193e28179e.png

but there are none.

 

It does show in the sound card drop down now once the edit was made to the boot config - and it shows that it is on virtio drivers:

image.png.a3174798cdb1e0bff3242dacacb036b5.png

 

Unfortunately - if I try and start it, I'll get something like this (This is a seaBios/i440fx test):

"internal error: qemu unexpectedly closed the monitor: 2020-03-09T01:36:07.629935Z qemu-system-x86_64: -device vfio-pci,host=0000:00:1f.3,id=hostdev1,bus=pci.0,addr=0x5: vfio 0000:00:1f.3: group 14 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver."

 

I followed your instructions and this is my current status:

IOMMU group 3:	[8086:3e9a] 00:02.0 VGA compatible controller: Intel Corporation Device 3e9a (rev 02)

IOMMU group 14:	[8086:a309] 00:1f.0 ISA bridge: Intel Corporation Cannon Point-LP LPC Controller (rev 10)
[8086:a348] 00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
[8086:a323] 00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
[8086:a324] 00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller (rev 10)
[8086:15bb] 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-LM (rev 10)

and

label Unraid OS
  menu default
  kernel /bzimage
  append pcie_acs_override=downstream vfio-pci.ids=8086:a348 modprobe.blacklist=i2c_i801,i2c_smbus isolcpus=5-7,13-15 initrd=/bzroot

and

00:1f.0 ISA bridge: Intel Corporation Cannon Point-LP LPC Controller (rev 10)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
00:1f.3 Audio device: Intel Corporation Cannon Lake PCH cAVS (rev 10)
        DeviceName: Onboard - Sound
        Subsystem: ASUSTeK Computer Inc. Device 8777
        Kernel driver in use: vfio-pci
00:1f.4 SMBus: Intel Corporation Cannon Lake PCH SMBus Controller (rev 10)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
        Kernel modules: i2c_i801
00:1f.5 Serial bus controller [0c80]: Intel Corporation Cannon Lake PCH SPI Controller (rev 10)
        DeviceName: Onboard - Other
        Subsystem: ASUSTeK Computer Inc. Device 8694
00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (7) I219-LM (rev 10)
        DeviceName: Onboard - Ethernet
        Subsystem: ASUSTeK Computer Inc. Ethernet Connection (7) I219-LM
        Kernel driver in use: e1000e
        Kernel modules: e1000e

and 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </hostdev>
    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x00' slot='0x1f' function='0x3'/>
      </source>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </hostdev>

 

Any ideas for what to try next?  :)

Link to comment
  • 2 weeks later...

Hey guys I'm a little bit confused:

 

this is my syslinux

Global Configuration
default menu.c32
menu title Lime Technology, Inc.
prompt 0
timeout 50

Unraid OS
kernel /bzimage
append vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream,multifunction initrd=/bzroot

IOMMU group where the internal soundcard is, I can't separate it using ACS:

 

IOMMU group 12:	[8086:a143] 00:1f.0 ISA bridge: Intel Corporation H110 Chipset LPC/eSPI Controller (rev 31)
	[8086:a121] 00:1f.2 Memory controller: Intel Corporation 100 Series/C230 Series Chipset Family Power Management Controller (rev 31)
	[8086:a170] 00:1f.3 Audio device: Intel Corporation 100 Series/C230 Series Chipset Family HD Audio Controller (rev 31)
	[8086:a123] 00:1f.4 SMBus: Intel Corporation 100 Series/C230 Series Chipset Family SMBus (rev 31)

 

Whats the proper way to pass it through the working windows VM? I already have the gpu soundcard added but adding the internal through the gui gives me errors...

 

thanks

Link to comment
  • 1 year later...

Also having trouble here, below is my IOMMU group (it is confirmed enabled too). Trying to get audio passthrough working on Windows VM without passing through my integrated GPU (which i instead want to be dedicated solely to the plex docker).

 

IOMMU group 10:			 	[8086:0685] 00:1f.0 ISA bridge: Intel Corporation Device 0685
 	[8086:06c8] 00:1f.3 Audio device: Intel Corporation Comet Lake PCH cAVS
 	[8086:06a3] 00:1f.4 SMBus: Intel Corporation Comet Lake PCH SMBus Controller
 	[8086:06a4] 00:1f.5 Serial bus controller [0c80]: Intel Corporation Comet Lake PCH SPI Controller
 	[8086:0d4d] 00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (11) I219-V

 

Link to comment
4 hours ago, Linguafoeda said:

Trying to get audio passthrough working on Windows VM without passing through my integrated GPU

Audio is part of a multifunction device 00:1f.x; if you already used the acs override (downstream or downstream,multifunction ('both')) and unsafe_interrupts=1 arguments and it didn't split, it's not possible.

Edited by ghost82
Link to comment
5 hours ago, ghost82 said:

Audio is part of a multifunction device 00:1f.x; if you already used the acs override (downstream or downstream,multifunction ('both')) and unsafe_interrupts=1 arguments and it didn't split, it's not possible.

 

internal error: qemu unexpectedly closed the monitor: 2021-07-26T12:16:16.872796Z qemu-system-x86_64: -device vfio-pci,host=0000:00:1f.3,id=hostdev0,bus=pci.7,addr=0x1: vfio 0000:00:1f.3: group 10 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver.

 

I receive the following error when trying to enable the soundcard on the VM. Any idea if i need to do something else besides what i changed on the flash sys config (see below)

 

append pcie_acs_override=downstream,multifunction initrd=/bzroot
append vfio-pci.ids=8086:06c8 modprobe.blacklist=i2c_i801,i2c_smbus pcie_acs_override=downstream,multifunction initrd=/bzroot

 

Also - Fix Common Problems gave me the following error. Not sure what this is.

 

vfio-pci.ids or xen-pciback.hide found within syslinux.cfg. For best results on Unraid 6.9+, it is recommended to remove those methods of isolating devices for use within a VM and instead utilize the options within Tools - System Devices. See HERE for more details

 

Edited by Linguafoeda
Link to comment
1 minute ago, Linguafoeda said:

 


internal error: qemu unexpectedly closed the monitor: 2021-07-26T12:16:16.872796Z qemu-system-x86_64: -device vfio-pci,host=0000:00:1f.3,id=hostdev0,bus=pci.7,addr=0x1: vfio 0000:00:1f.3: group 10 is not viable Please ensure all devices within the iommu_group are bound to their vfio bus driver.

 

I receive the following error when trying to enable the soundcard on the VM. Any idea if i need to do something else besides what i changed on the flash sys config (see below)

 


append pcie_acs_override=downstream,multifunction initrd=/bzroot
append vfio-pci.ids=8086:06c8 modprobe.blacklist=i2c_i801,i2c_smbus pcie_acs_override=downstream,multifunction initrd=/bzroot

 

All is written in the message you copied :)

You are trying to passthrough audio at 00:1f.3, which is not the only device in your iommu group (10).

When you passthrough a device, in general you must passthrough all the iommu group, sometimes it's possible, sometimes not.

As I wrote:

5 hours ago, ghost82 said:

if you already used the acs override (downstream or downstream,multifunction ('both')) and unsafe_interrupts=1 arguments and it didn't split, it's not possible.

 

Link to comment
8 hours ago, ghost82 said:

All is written in the message you copied :)

You are trying to passthrough audio at 00:1f.3, which is not the only device in your iommu group (10).

When you passthrough a device, in general you must passthrough all the iommu group, sometimes it's possible, sometimes not.

As I wrote:

 

 

so is there no way at all for me to get audio out of a Windows VM absent buying a physical sound card? I don't have any extra PCI slots so that is out of the question. Do any of these options work; been trying to google around and see what i can find since this IOMMU group issue looks incompatible with my system due to the grouping issue you mentioned :(

  • some sort of virtual emulated sound card driver (like this VB Cable?)
  • Editing XML file with some sort of addition like "AC97" I saw in another thread (<sound model='ich6'/> right before </devices>.  You can try other things for "model" than ich6:  'es1370', 'sb16', 'ac97', 'ich6' and 'usb')
  • USB audio card (like this one?)
  • Does a dummy HDMI plug being plugged into either HDMI ports of my motherboard change anything? Mentioned in ServerBuild's forum when setting up Parsec as a remote gaming client)
Link to comment
  • 2 weeks later...
On 7/26/2021 at 5:03 PM, Linguafoeda said:

 

so is there no way at all for me to get audio out of a Windows VM absent buying a physical sound card? I don't have any extra PCI slots so that is out of the question. Do any of these options work; been trying to google around and see what i can find since this IOMMU group issue looks incompatible with my system due to the grouping issue you mentioned :(

  • some sort of virtual emulated sound card driver (like this VB Cable?)
  • Editing XML file with some sort of addition like "AC97" I saw in another thread (<sound model='ich6'/> right before </devices>.  You can try other things for "model" than ich6:  'es1370', 'sb16', 'ac97', 'ich6' and 'usb')
  • USB audio card (like this one?)
  • Does a dummy HDMI plug being plugged into either HDMI ports of my motherboard change anything? Mentioned in ServerBuild's forum when setting up Parsec as a remote gaming client)

 

Bumping this for anyone that cares, I fixed my audio issues by installing VB-Cable. I was reading through ServerBuild's Gaming VM Guide and they recommended Virtual Audio Cable but it wasn't free so i just used VB-Cable instead.

  • Like 1
Link to comment

@Linguafoeda  is it working well no issues?

 

im having trouble myself with AMD audio on the Asus X570  windows VM  pops and pauses  passing the audio

running a Volumio VM not a problem..  as soon as i do it for a windows VM 

it cant pass through right.. not sure if the intel boards have the same issue..

i can get a usb graphics card to work .but getting the audio doesnt

even running this MSI  program didnt help

 

 

Link to comment
  • 5 months later...
On 2/4/2022 at 7:37 AM, HHUBS said:

Anyone can help me please? I follow the instructions. When I play the video, it has the sound like in the image below BUT  I can't hear anything? What's wrong?

 

image.png.bc9263e23aca6545dbb643f6e9381ecd.png

 

If windows is recongnizing an audio device, it's already a good sign. I'm guessing you are not using the optical out? If you are using the standard jack connector you must select the speaker output instead. If you're not sure how to do that, search "windows change sound output" on google and you should find something to help you out. 

Link to comment
On 8/7/2021 at 6:36 PM, Linguafoeda said:

Try out VB-Cable, it's working for me

I cant seem to get VB-Cable to work.
I have the same issues that I can't split my MB sound output IOMMU group, and I really want to use my Sennheiser headset with the jack output and mic on my Windows 10 VM.
Anyone have any tips on how to set it up? VB-Cable installed, and all kinds of sound settings tried, with setting various default devices etc. 
I don't see how the audio jacks on the MB can output sound in my VM if it is not passed through?

My monitor has a jack output I could use and get audio from GPU, but then I lack the mic, and we all know people with no mic in PUBG is the worst kind :)

Edited by Dreeas
Link to comment
5 hours ago, Dreeas said:

I cant seem to get VB-Cable to work.
I have the same issues that I can't split my MB sound output IOMMU group, and I really want to use my Sennheiser headset with the jack output and mic on my Windows 10 VM.
Anyone have any tips on how to set it up? VB-Cable installed, and all kinds of sound settings tried, with setting various default devices etc. 
I don't see how the audio jacks on the MB can output sound in my VM if it is not passed through?

My monitor has a jack output I could use and get audio from GPU, but then I lack the mic, and we all know people with no mic in PUBG is the worst kind :)

 

I think that @Linguafoeda posts are a little bit misleading. It seems to be specific to a particular application, i.e Parsec. He seems to have resolved is issue using the GPU sound output and piping it through VB-Cable.

 

However, his issues doesn't seem to be related to passing through the chipset audio. In your case VB-Cable won't work at all. At least I don't see anyways how it's gonna help you. Correct me if i'm wrong, but you are trying to use the physical audio output of your motherboard, right? 

 

If that is the case and you're not able to break the iommu group, you can still try to passthrough the device with the method i've described in this thread, either in the VM XML or with the VM form view. It's probable that you will be obligated to edit the XML as the device should't be available in the audio device selection tab. 

 

Passing through the internal audio is quite fiddly an weird at time. So best of luck and have fun !

 

Link to comment
14 hours ago, matthope said:

 

I think that @Linguafoeda posts are a little bit misleading. It seems to be specific to a particular application, i.e Parsec. He seems to have resolved is issue using the GPU sound output and piping it through VB-Cable.

 

However, his issues doesn't seem to be related to passing through the chipset audio. In your case VB-Cable won't work at all. At least I don't see anyways how it's gonna help you. Correct me if i'm wrong, but you are trying to use the physical audio output of your motherboard, right? 

 

If that is the case and you're not able to break the iommu group, you can still try to passthrough the device with the method i've described in this thread, either in the VM XML or with the VM form view. It's probable that you will be obligated to edit the XML as the device should't be available in the audio device selection tab. 

 

Passing through the internal audio is quite fiddly an weird at time. So best of luck and have fun !

 

I got fed up yesterday and went and bought an external USB sound amp/DAC for my headset, that also made my headset sound even better as well.

Thanks for the answer.

  • Haha 1
Link to comment
  • 1 year later...

okay so i figured it out it was way easier than i though it would be. in the app section download the Virt-manager go to the VM you want to add your audio go to add hardware -> PCIE find the audio you wanna add mine was weird it was "amd hd audio something" yours might be different click on add and thats it you should see a audio in your VM. the best part you dont need to restart your vm  in the virt manager . DONT add it in the unraid vm manager because you will GPU passthrough wont work so you have to use virt manager

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.