Help with DVB card passthrough to VM


JimBE

Recommended Posts

Hello unRAID community,

 

First of all, thanks everyone for such a great forum. I have managed to find all answers I was looking for, except one :-)

I hope you will be able to provide me with some more information about VM passthrough. I read lots of threads in the forum but there seems to be deprecated methods (go script, etc.), besides none worked anyway.

 

As both the TVHeadend plugin and docker caused troubles with "continuity counter" error messages, I'm trying to achieve an alternate method using a VM (and different drivers/tvheadend version).

I'm not wanting to go into details here about this specific tvheadend issue (cards are working fine in another computer) as this thread is about VM and passthrough.

Here is what I'm trying to achieve :

- motherboard : SuperMicro X8SIA-F

- PCI-e to PCI bridge in a PCI-e 1x slot

- Technotrend 1501 DVB-C PCI card into this PCI-e -> PCI adapter

The goal is to be able to use this DVB card (passthrough) to an unraid 6.1.3 VM.

 

Here are the two lines from lspci that seem to match the bridge + DVB card :

09:00.0 PCI bridge: ASMedia Technology Inc. ASM1083/1085 PCIe to PCI Bridge (rev 04)

0a:00.0 Multimedia controller: Philips Semiconductors SAA7146 (rev 01)

 

then lspci -n :

09:00.0 0604: 1b21:1080 (rev 04)

0a:00.0 0480: 1131:7146 (rev 01)

 

The two devices seem to be within the same IOMMU group :

 

/sys/kernel/iommu_groups/19/devices/0000:08:00.0

/sys/kernel/iommu_groups/20/devices/0000:09:00.0

/sys/kernel/iommu_groups/20/devices/0000:0a:00.0

/sys/kernel/iommu_groups/21/devices/0000:ff:00.0

 

- I tried with both PCIe ACS Override on or off with no luck

- I tried "pci-stub.ids=1131:7146,1b21:1080" in syslinux.cfg with no luck

- I tried adding "intel_iommu=on vfio_iommu_type1.allow_unsafe_interrupts=1 pcie_acs_override=downstream" in syslinux.cfg with no luck

- I tried i440fx and Q35 vm type with no luck

... and experienced different error messages (Failed to setup INTx fd: Device or resource busy, ...) but the current situation is as follow:

 

I'm using the following in the VM config :

    <hostdev mode='subsystem' type='pci' managed='no'>

      <source>

        <address domain='0x0000' bus='0x0a' slot='0x00' function='0x0'/>

      </source>

      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>

    </hostdev>

 

Error message when starting VM : Path '/dev/vfio/20' is not accessible: No such file or directory

 

When looking in the unraid /dev/vfio directory :

/dev/vfio# ls -la

drwxr-xr-x  2 root root      60 Dec  1 18:04 ./

drwxr-xr-x 15 root root    4520 Dec  1 18:05 ../

crw-rw-rw-  1 root root 10, 196 Dec  1 18:04 vfio

 

Any idea or hint that could help me in my passthrough quest ?

(Dockers are very easy to use, but VM documentation is lacking some clear guidance IMHO.)

 

Thanks a lot for your help !

 

Jim

Link to comment

Thanks for the pointer John. But I actually read that topic many times.

 

The thing is I already tried the Media Build (openelec one) with the tvheadend docker (and the tvheadend plugin too), but both implementations gave me tvheadend continuity counter error messages.

 

So my idea was to use a VM with a passthrough of the DVB cards in order to easily try different DVB drivers and TVheadend versions (I could clone my working tvheadend rig and use it in a VM as well). But for that, I need to be able to pass through the cards.

 

Do I need the media build for unraid even if I just want to pass through the DVB cards ? I was wondering I only needed to pass the raw bus, then use the VM (ubuntu) with an appropriate driver.

 

Any guidance ? Thanks again.

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.