Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

***GUIDE*** Passthrough Entire PCI USB Controller

Featured Replies

I've tried both methods of USB hub pass-through and neither will work with my keyboard and mouse but weirdly it will with a portable hard drive.

 

Do you happen to have a different USB keyboard and mouse you could try? If the portable hard drive works then technically it is working, so the issue is most likely that keyboard and mouse. Does your keyboard/mouse manufacture have any additional software you can install? For example Logitech has their Setpoint software which I have found to be helpful with my devices.

 

 

Turns out I was mis interpretating the problem, I managed to pass through 2 other hubs fine it seems just one hub powers down when passed through and I cant under stand way.

  • Replies 509
  • Views 446.7k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • Baltostar
    Baltostar

    I automated steps 1-9 of this guide.   The output shows USB bus #, PCI Address, and IOMMU group #   Bus 1 PCI 0000:00:1a.0 IOMMU 20     Intel Corp.     Linux Foundation 2.0 root hub Bus 2

  • I believe users with this specific card (Startech PEXUSB3S44V) have no issues passing them to the machine, but have issues once passed to the machine inside the VM. Mine throws a Code 10 error on the

  • Not if you use the xen-pciback.hide= method. You use the PCI number instead of id. So yours will look like below for the last two.  xen-pciback.hide=(0d:00.3)(43:00.3)    

Posted Images

Man I thought I was set to finally go ahead and do this and stop messing with hostdev bus/id which I have to use since I have 3 flircs.

 

I have 8 USB ports on 8 separate controllers:

 

00:1a.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:1a.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5
00:1a.2 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
00:1a.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
00:1d.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
00:1d.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
00:1d.2 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
00:1d.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1

 

../../../devices/pci0000:00/0000:00:1a.7/usb1
../../../devices/pci0000:00/0000:00:1d.7/usb2
../../../devices/pci0000:00/0000:00:1a.0/usb3
../../../devices/pci0000:00/0000:00:1a.1/usb4
../../../devices/pci0000:00/0000:00:1a.2/usb5
../../../devices/pci0000:00/0000:00:1d.0/usb6
../../../devices/pci0000:00/0000:00:1d.1/usb7
../../../devices/pci0000:00/0000:00:1d.2/usb8

 

Looks awesome until I looked at my iommu groups:

 

/sys/kernel/iommu_groups/9/devices/0000:00:1a.0

/sys/kernel/iommu_groups/9/devices/0000:00:1a.1

/sys/kernel/iommu_groups/9/devices/0000:00:1a.2

/sys/kernel/iommu_groups/9/devices/0000:00:1a.7

/sys/kernel/iommu_groups/10/devices/0000:00:1d.0

/sys/kernel/iommu_groups/10/devices/0000:00:1d.1

/sys/kernel/iommu_groups/10/devices/0000:00:1d.2

/sys/kernel/iommu_groups/10/devices/0000:00:1d.7

 

Sigh...

 

John

Man I thought I was set to finally go ahead and do this and stop messing with hostdev bus/id which I have to use since I have 3 flircs.

 

I have 8 USB ports on 8 separate controllers:

 

00:1a.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
00:1a.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #5
00:1a.2 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #6
00:1a.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #2
00:1d.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #1
00:1d.1 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #2
00:1d.2 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #3
00:1d.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1

 

../../../devices/pci0000:00/0000:00:1a.7/usb1
../../../devices/pci0000:00/0000:00:1d.7/usb2
../../../devices/pci0000:00/0000:00:1a.0/usb3
../../../devices/pci0000:00/0000:00:1a.1/usb4
../../../devices/pci0000:00/0000:00:1a.2/usb5
../../../devices/pci0000:00/0000:00:1d.0/usb6
../../../devices/pci0000:00/0000:00:1d.1/usb7
../../../devices/pci0000:00/0000:00:1d.2/usb8

 

Looks awesome until I looked at my iommu groups:

 

/sys/kernel/iommu_groups/9/devices/0000:00:1a.0

/sys/kernel/iommu_groups/9/devices/0000:00:1a.1

/sys/kernel/iommu_groups/9/devices/0000:00:1a.2

/sys/kernel/iommu_groups/9/devices/0000:00:1a.7

/sys/kernel/iommu_groups/10/devices/0000:00:1d.0

/sys/kernel/iommu_groups/10/devices/0000:00:1d.1

/sys/kernel/iommu_groups/10/devices/0000:00:1d.2

/sys/kernel/iommu_groups/10/devices/0000:00:1d.7

 

Sigh...

 

John

And you enabled the ACS override?

And you enabled the ACS override?

 

I have not.

 

I was under the impression that was a bad thing to enable unless you absolutely have to.  Please tell me that enabling that would put each of these controllers into their own iommu group.

 

John

And you enabled the ACS override?

 

I have not.

 

I was under the impression that was a bad thing to enable unless you absolutely have to.  Please tell me that enabling that would put each of these controllers into their own iommu group.

 

John

I haven't heard anyone having any problems related to the ACS override. It can happen in some cases, but it's very rare. In your case it's only the usb controllers and not a graphics card and disk controller in the same group, so I think you are safe to go  :D

If they will end up in the same group or not you just have to enable it and see  ;)

Tried PCIe ACS Override but it did not change the groups for those devices.  Oh well.

 

/sys/kernel/iommu_groups/9/devices/0000:00:1a.0
/sys/kernel/iommu_groups/9/devices/0000:00:1a.1
/sys/kernel/iommu_groups/9/devices/0000:00:1a.2
/sys/kernel/iommu_groups/9/devices/0000:00:1a.7
/sys/kernel/iommu_groups/10/devices/0000:00:1d.0
/sys/kernel/iommu_groups/10/devices/0000:00:1d.1
/sys/kernel/iommu_groups/10/devices/0000:00:1d.2
/sys/kernel/iommu_groups/10/devices/0000:00:1d.7

  • Author

Hmm, I guess your options are mess around with the bios settings or get an add on card.

Hmm, I guess your options are mess around with the bios settings or get an add on card.

 

Everything works right now so not a big deal.  But I think I will take a peak in the BIOS and see what I can do.

Hmm, I guess your options are mess around with the bios settings or get an add on card.

 

Everything works right now so not a big deal.  But I think I will take a peak in the BIOS and see what I can do.

I'm not sure if that will help. My guess is that you need an add on card, unfortunately  :(

Hmm, I guess your options are mess around with the bios settings or get an add on card.

 

Everything works right now so not a big deal.  But I think I will take a peak in the BIOS and see what I can do.

I'm not sure if that will help. My guess is that you need an add on card, unfortunately  :(

 

I have a silly question...

 

Do they make USB addon cards that have multiple controllers on it?  Or is the controller always going to be on the PCI bus?

 

John

Hmm, I guess your options are mess around with the bios settings or get an add on card.

 

Everything works right now so not a big deal.  But I think I will take a peak in the BIOS and see what I can do.

I'm not sure if that will help. My guess is that you need an add on card, unfortunately  :(

 

I have a silly question...

 

Do they make USB addon cards that have multiple controllers on it?  Or is the controller always going to be on the PCI bus?

 

John

 

May have answered my own question:  http://www.newegg.com/Product/Product.aspx?Item=N82E16816115104

 

 

  • Author

Hmm, I guess your options are mess around with the bios settings or get an add on card.

 

Everything works right now so not a big deal.  But I think I will take a peak in the BIOS and see what I can do.

I'm not sure if that will help. My guess is that you need an add on card, unfortunately  :(

 

I have a silly question...

 

Do they make USB addon cards that have multiple controllers on it?  Or is the controller always going to be on the PCI bus?

 

John

 

Not 100% sure but I would highly suspect that it will would be limited to the PCIe slot. Even if the card had multiple controllers you probably wouldn't be able to pass through them to different VM's. I could be completely wrong though...

So I am just starting this and this is the USB output from Putty for my system.

 

Linux 4.1.13-unRAID.

root@Backup:~# lspci | grep USB

00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B xHCI Host Controller (rev 04)

00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B Enhanced Host Controller #2 (rev 04)

00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B Enhanced Host Controller #1 (rev 04)

 

root@Backup:~# lsusb

Bus 004 Device 003: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard

Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 005: ID 2109:0810

Bus 003 Device 004: ID 05dc:a205 Lexar Media, Inc.

Bus 003 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 003: ID 2109:0810

Bus 002 Device 002: ID 2109:0810

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

The Lexar on Bus 03 is the USB flash drive I use to boot UnRaid, so I am assuming I don't want to pass trhough Bus 003 at all, correct? Or do I to plug a flash drive into to different ports still and run this command to see what ports are on Bus 003?

  • Author

So I am just starting this and this is the USB output from Putty for my system.

 

Linux 4.1.13-unRAID.

root@Backup:~# lspci | grep USB

00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B xHCI Host Controller (rev 04)

00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B Enhanced Host Controller #2 (rev 04)

00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B Enhanced Host Controller #1 (rev 04)

 

root@Backup:~# lsusb

Bus 004 Device 003: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard

Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 003 Device 005: ID 2109:0810

Bus 003 Device 004: ID 05dc:a205 Lexar Media, Inc.

Bus 003 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub

Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 002 Device 003: ID 2109:0810

Bus 002 Device 002: ID 2109:0810

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

The Lexar on Bus 03 is the USB flash drive I use to boot UnRaid, so I am assuming I don't want to pass trhough Bus 003 at all, correct? Or do I to plug a flash drive into to different ports still and run this command to see what ports are on Bus 003?

 

Correct, you will never pass through Bus 003 but it would still be good to figure out which USB slots belong to Bus 003 for future reference.

So I am just starting this and this is the USB output from Putty for my system.

 

Linux 4.1.13-unRAID.
root@Backup:~# lspci | grep USB
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B xHCI Host Controller (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B Enhanced Host Controller #2 (rev 04)
00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family US                              B Enhanced Host Controller #1 (rev 04)

root@Backup:~# lsusb
Bus 004 Device 003: ID 413c:2105 Dell Computer Corp. Model L100 Keyboard
Bus 004 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 004 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 005: ID 2109:0810
Bus 003 Device 004: ID 05dc:a205 Lexar Media, Inc.
Bus 003 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
Bus 003 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 2109:0810
Bus 002 Device 002: ID 2109:0810
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

The Lexar on Bus 03 is the USB flash drive I use to boot UnRaid, so I am assuming I don't want to pass trhough Bus 003 at all, correct? Or do I to plug a flash drive into to different ports still and run this command to see what ports are on Bus 003?

 

I mapped all my USB ports and drew a diagram so I know exactly what is what.  I think it's worth doing just to stop confusion down the line.....

 

And Ash, please wrap the code in code tags....  ;D

 

Now no more help until you learn how to wrap the code on the forum....  ;D

 

Here's how....

 

DytTCuf.jpg

 

 

Correct, you will never pass through Bus 003 but it would still be good to figure out which USB slots belong to Bus 003 for future reference.

 

Its all the ports on the rear of my motherboard, I know because I plugged a USB flash drive into the empty slots and ran the command, as well I can see whats plugged into those slots corresponds with bus 003. So I am just going to pass through bus 004 then.

 

Hey all, I am trying to follow this, but I am getting an unusual result. When I do the readlink thing on usb1 (the usb bus I want to pass to the vm), I get this:

 

root@Bernard:~# readlink /sys/bus/usb/devices/usb1
../../../devices/pci0000:00/0000:00:03.0/0000:04:00.0/usb1

 

if I do the same on usb2 (which is another port on the same card) I get the same result

 

root@Bernard:~# readlink /sys/bus/usb/devices/usb2
../../../devices/pci0000:00/0000:00:03.0/0000:04:00.0/usb2

 

It looks like the PCI card has two bus addresses. Is that correct? This is a rosewill USB 3 card with 4 ports on it.

 

Ideally, I want to pass all of the ports on this card to the VM using the hostdev mode. What PCI addresses should I be using?

 

Thanks,

 

Richard

 

 

 

 

 

Hey all, I am trying to follow this, but I am getting an unusual result. When I do the readlink thing on usb1 (the usb bus I want to pass to the vm), I get this:

 

root@Bernard:~# readlink /sys/bus/usb/devices/usb1
../../../devices/pci0000:00/0000:00:03.0/0000:04:00.0/usb1

 

if I do the same on usb2 (which is another port on the same card) I get the same result

 

root@Bernard:~# readlink /sys/bus/usb/devices/usb2
../../../devices/pci0000:00/0000:00:03.0/0000:04:00.0/usb2

 

It looks like the PCI card has two bus addresses. Is that correct? This is a rosewill USB 3 card with 4 ports on it.

 

Ideally, I want to pass all of the ports on this card to the VM using the hostdev mode. What PCI addresses should I be using?

 

Thanks,

 

Richard

The first bus address is the PCI bridge, so you should use the second one.

This you will also find if you check your device list in the webgui under Tools --> System Devices.

 

Post it here if you are unsure.

Okay, so in tools/system devices, I see...

 

04:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)
05:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)

 

So that means that my new entry in the XML for this VM should be this, yes:

 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x04' function='0x0'/>
      </source>
    </hostdev>

Okay, so in tools/system devices, I see...

 

04:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)
05:00.0 USB controller: Renesas Technology Corp. uPD720201 USB 3.0 Host Controller (rev 03)

 

So that means that my new entry in the XML for this VM should be this, yes:

 

    <hostdev mode='subsystem' type='pci' managed='yes'>
      <driver name='vfio'/>
      <source>
        <address domain='0x0000' bus='0x01' slot='0x04' function='0x0'/>
      </source>
    </hostdev>

 

That is wrong. This is how it's supposed to look if you want to pass through only one of the controllers:

 

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

 

You will find a guide how to interpret the bus address and add it to the correct places in the tag in the first post of this thread.

 

Ah, got my buses and slots confused. That seems to work: the devices connected to that controller are now being passed through. Yay.  ;D

I am trying to figure out how to pass a USB keyboard and mouse through to a VM I have setup. In the log I just noticed this:

 

Jan 17 19:23:32 Tower kernel: input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.6/4-1.6:1.0/0003:413C:2105.0007/input/input11

 

Jan 17 19:23:34 Tower kernel: input: Logitech Lenovo USB Optical Mouse as /devices/pci0000:00/0000:00:1d.0/usb4/4-1/4-1.7/4-1.7:1.0/0003:17EF:6019.0008/input/input12

 

If I want to pass the entire controller through would that translate into:

 

hostdev mode='subsystem' type='pci' managed='yes'>

      <driver name='vfio'/>

      <source>

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

      </source>

    </hostdev>

For whatever reason, it doesn't work for me.

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...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.