kingfetty Posted July 20, 2015 Share Posted July 20, 2015 If you have multiple USB devices with the same Vendor and Product then the passthrough does not work as the UI currently builds the XML file with USB based on the Vendor / Product and not the Address Bus= Device= syntax. Since this is the case if you attempt to passthrough any usb devices that have duplicate Vendor/Product you will not be able to start your VM. The workaround is to manually edit the xml to the Address syntax. Examples: Bus 011 Device 003: ID 08bb:2704 Texas Instruments Audio Codec Bus 011 Device 002: ID 08bb:2704 Texas Instruments Audio Codec Current Syntax: <hostdev mode='subsystem' type='usb' managed='yes'> <source > <vendor id='0x08bb'/> <product id='0x2704'/> </source> </hostdev> This will result in a non booting VM Fixed Syntax: <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='11' device='2'/> </source> </hostdev> 3 2 Quote Link to comment
RichardU Posted September 4, 2015 Share Posted September 4, 2015 Thanks for posting this. For anyone else following this, you can get the Bus and Device numbers from Tools / System Devices. Quote Link to comment
NotYetRated Posted September 4, 2015 Share Posted September 4, 2015 Bookmarking this, as I will probably run in to it soon when my second FLIRC and Media Center Keyboards come in. Thanks much! Quote Link to comment
jonp Posted September 4, 2015 Share Posted September 4, 2015 If you have multiple USB devices with the same Vendor and Product then the passthrough does not work as the UI currently builds the XML file with USB based on the Vendor / Product and not the Address Bus= Device= syntax. Since this is the case if you attempt to passthrough any usb devices that have duplicate Vendor/Product you will not be able to start your VM. The workaround is to manually edit the xml to the Address syntax. Examples: Bus 011 Device 003: ID 08bb:2704 Texas Instruments Audio Codec Bus 011 Device 002: ID 08bb:2704 Texas Instruments Audio Codec Current Syntax: <hostdev mode='subsystem' type='usb' managed='yes'> <source > <vendor id='0x08bb'/> <product id='0x2704'/> </source> </hostdev> This will result in a non booting VM Fixed Syntax: <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='11' device='2'/> </source> </hostdev> As this isn't really a defect report, but rather, a workaround to solving a current limitation, I'm going to move this thread to the KVM Hypervisor forum (and maybe sticky thread it) so folks see it there. This isn't really a bulletproof solution either, as reboots can cause the bus/device addresses to change sometimes. 1 Quote Link to comment
RichardU Posted September 8, 2015 Share Posted September 8, 2015 This isn't really a bulletproof solution either, as reboots can cause the bus/device addresses to change sometimes. You are correct, as I have learned the hard way. In my case I am using a USB to serial adapter. So how do I add a second one? Any thoughts? Quote Link to comment
jonp Posted September 8, 2015 Share Posted September 8, 2015 This isn't really a bulletproof solution either, as reboots can cause the bus/device addresses to change sometimes. You are correct, as I have learned the hard way. In my case I am using a USB to serial adapter. So how do I add a second one? Any thoughts? Use a different vendor / brand for the second one. The issue here is that it's an unsolvable problem due to the fact that USB devices (in general) are not required to contain a GUID (globally unique identifier). The physical ports on the system do not map to a specific number for bus/address either, so race conditions ultimately end up deciding which bus/address each device gets assigned upon rebooting the system. Sometimes you'll get lucky and the same bus/address gets mapped every time, but other times, this just won't happen. For devices that do contain a GUID (such as some flash storage devices), we could (in the future) find a way to seek for that identifier and use it to identify the bus/address for a device and map that to a specific VM each time the system is booted, but other than for storage devices, I haven't yet found one that has a GUID (although admittedly I've only had a handful of devices to test with). Generally speaking, I don't see this as a huge issue. Is it annoying that you can't use multiple of the same devices? Sure. Is it the end of the world to have to purchase an alternative? Not by a long shot. 1 Quote Link to comment
claira Posted September 10, 2015 Share Posted September 10, 2015 I am trying to get 2 xbox one controllers on the VM but as they have the same vendor/product ID i tried this: <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='1' device='9'/> </source> <alias name='hostdev1'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='1' device='8'/> </source> <alias name='hostdev2'/> </hostdev> However the second device shows up in windows as an unknown device. Quote Link to comment
NotYetRated Posted September 11, 2015 Share Posted September 11, 2015 I am trying to get 2 xbox one controllers on the VM but as they have the same vendor/product ID i tried this: <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='1' device='9'/> </source> <alias name='hostdev1'/> </hostdev> <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='1' device='8'/> </source> <alias name='hostdev2'/> </hostdev> However the second device shows up in windows as an unknown device. Ohh crap, I have not had the need to plug in and assign my second Xbox one controller, had not thought of that issue.... Perhaps will HAVE to just pass an entire PCIe USB card through Quote Link to comment
claira Posted September 11, 2015 Share Posted September 11, 2015 Passed through whole usb controller and both controllers show up in device manager. Quote Link to comment
rabbe Posted May 28, 2016 Share Posted May 28, 2016 I cant get this walkaround to work. My USB Devices: Bus 002 Device 009: ID 0951:1666 Kingston Technology DataTraveler G4 Bus 002 Device 005: ID 05e3:0610 Genesys Logic, Inc. 4-port hub Bus 002 Device 008: ID 04b3:3025 IBM Corp. NetVista Full Width Keyboard Bus 002 Device 029: ID 17ef:6019 Lenovo Bus 002 Device 003: ID 05e3:0610 Genesys Logic, Inc. 4-port hub Bus 002 Device 006: ID 04b3:3025 IBM Corp. NetVista Full Width Keyboard Bus 002 Device 028: ID 17ef:6019 Lenovo Bus 002 Device 002: ID 05e3:0610 Genesys Logic, Inc. 4-port hub Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub My modifyed XML: <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='2' device='29'/> </source> </hostdev> <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='2' device='8'/> </source> </hostdev> Then i get this error: internal error: Did not find USB device bus:2 device:29 Edit: I use UNRAID 6.1.9 64bit Please help! Thanks Quote Link to comment
rabbe Posted May 28, 2016 Share Posted May 28, 2016 I found out why i get the error, but i have no qlue how to walk around this. My keyboards stays at the same device number. But my lenovo mouse's gets a new device number every 1-2minute... why? I have 1 usb hub for each setup. 1 hub with mouse and keyboard and another hub with a mouse and keyboard. I thought maby the mouse got a new device number because it might disconnect and reconnect. But the keyboard are on the same usb hub and they dont get new device number. please help, thanks Quote Link to comment
Baltostar Posted June 5, 2016 Share Posted June 5, 2016 I'm working on a script for dynamic assigning of USB devices to running VMs for my post https://lime-technology.com/forum/index.php?topic=49580.0 Quote Link to comment
NeoID Posted June 15, 2016 Share Posted June 15, 2016 As far as I can see, editing the VM through the UI will "undo" the changes to the XML file. Wouldn't USB assignment on a port level be a better choice than the current one? I just assume that this is an issue most people will face eventually. If you for example add two Logitech unifying receivers or Xbox360 adapters they will obviously have the same name. I assume most people would rather use specific ports for VMs instead of having to worry about this issue? Edit: Some sort of setting on the VM page that toggles the format vendor/product or address would be awesome. Quote Link to comment
Bytales Posted September 27, 2018 Share Posted September 27, 2018 I think this might be the reason my VM wont start. Well it starts from the WEB console, but i get no Image on the Monitor that would boot the Windows 10 iso. I have to roccat nyths mouse, one black one White, but i think they might have similar ids, and two Keyboards, Asus Rog Horus, and Asus Rog Horus RGB. The Keyboards, are the same, but one has rgb, so ids might be different. The keboards have also each 2 usb ports, and These two ports might also be hubs. I also have a PCI express 4 port usb 3.0 Card, and each port has ist own Fresco Chipset, so its not a Hub. However this is not assignable to the VM I wanted to know, is there a way to verify if the USB devices have a GUID, and if they indeed have one, could we bind the devices by GUID to the specific VMs ? Quote Link to comment
craptec Posted June 27, 2019 Share Posted June 27, 2019 On 9/8/2015 at 6:09 AM, jonp said: Use a different vendor / brand for the second one. The issue here is that it's an unsolvable problem due to the fact that USB devices (in general) are not required to contain a GUID (globally unique identifier). The physical ports on the system do not map to a specific number for bus/address either, so race conditions ultimately end up deciding which bus/address each device gets assigned upon rebooting the system. Sometimes you'll get lucky and the same bus/address gets mapped every time, but other times, this just won't happen. For devices that do contain a GUID (such as some flash storage devices), we could (in the future) find a way to seek for that identifier and use it to identify the bus/address for a device and map that to a specific VM each time the system is booted, but other than for storage devices, I haven't yet found one that has a GUID (although admittedly I've only had a handful of devices to test with). Generally speaking, I don't see this as a huge issue. Is it annoying that you can't use multiple of the same devices? Sure. Is it the end of the world to have to purchase an alternative? Not by a long shot. Well I am afraid I have to contradict. We are using unRaid's hypervisor funtions to run multiple VMs as testrigs. Unfortunately some software we are using requires hardware licenses (usb dongles , WIBU CodeMeter-Stick). Obviously we are not able to purchase alternatives. The only option left for us is using the address to assign these dongles individually which comes with the flaws mentioned before. However each dongle offers an individual identification in the form of WIBU_-_CodeMeter-Stick_00000******* (the stars represent individual numbers for each dongle). This name shows in the Main-Tab only. In the properties of each VM one can only see "WIBU-Systems AG CmStick (MSD, article no. 1001-xx-xxx) (064f:03e9)" for each dongle. I have seen that this topic originates in 2015. We are running unRaid 6.7.0 and still have this issue. Is there anything in the roadmap that will address this issue in any way? Cheers Max Quote Link to comment
testdasi Posted June 27, 2019 Share Posted June 27, 2019 38 minutes ago, craptec said: Well I am afraid I have to contradict. We are using unRaid's hypervisor funtions to run multiple VMs as testrigs. Unfortunately some software we are using requires hardware licenses (usb dongles , WIBU CodeMeter-Stick). Obviously we are not able to purchase alternatives. The only option left for us is using the address to assign these dongles individually which comes with the flaws mentioned before. However each dongle offers an individual identification in the form of WIBU_-_CodeMeter-Stick_00000******* (the stars represent individual numbers for each dongle). This name shows in the Main-Tab only. In the properties of each VM one can only see "WIBU-Systems AG CmStick (MSD, article no. 1001-xx-xxx) (064f:03e9)" for each dongle. I have seen that this topic originates in 2015. We are running unRaid 6.7.0 and still have this issue. Is there anything in the roadmap that will address this issue in any way? Cheers Max Hi Max. I suggest you post a request in the feature request forum. Not saying that LT will implement that but there's a better chance than posting in this old topic. Quote Link to comment
jonp Posted June 27, 2019 Share Posted June 27, 2019 2 hours ago, craptec said: Well I am afraid I have to contradict. We are using unRaid's hypervisor funtions to run multiple VMs as testrigs. Unfortunately some software we are using requires hardware licenses (usb dongles , WIBU CodeMeter-Stick). Obviously we are not able to purchase alternatives. The only option left for us is using the address to assign these dongles individually which comes with the flaws mentioned before. However each dongle offers an individual identification in the form of WIBU_-_CodeMeter-Stick_00000******* (the stars represent individual numbers for each dongle). This name shows in the Main-Tab only. In the properties of each VM one can only see "WIBU-Systems AG CmStick (MSD, article no. 1001-xx-xxx) (064f:03e9)" for each dongle. I have seen that this topic originates in 2015. We are running unRaid 6.7.0 and still have this issue. Is there anything in the roadmap that will address this issue in any way? Cheers Max I would definitely create a post in the feature request forum. This isn't really something we would directly develop ourselves, but if we could find a way to "script" around this, I could see us devoting some time to doing that. As of right now, it's not a development priority because there just aren't enough users out there complaining about it. There are plenty of things we want to see improved and this is one of them, but we have to tackle things in the order of what's going to bring the most value to the most people first, and this definitely slides down the task list as a result. Quote Link to comment
PhiPhi Posted August 16, 2019 Share Posted August 16, 2019 I have the same problem with 2 x 4TB WD USB 3 external drives: Bus 1 --> 0000:00:14.0 (IOMMU group 3) Bus 001 Device 004: ID 046d:c248 Logitech, Inc. G105 Gaming Keyboard Bus 001 Device 003: ID 8087:0a2b Intel Corp. Bus 001 Device 002: ID 0781:5581 SanDisk Corp. Ultra Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 2 --> 0000:00:14.0 (IOMMU group 3) Bus 002 Device 006: ID 1058:25e2 Western Digital Technologies, Inc. My Passport (WD40NMZW) Bus 002 Device 005: ID 1058:25e2 Western Digital Technologies, Inc. My Passport (WD40NMZW) Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub I don't have any other USB controllers so cannot pass through the entire controller (micro ATX MB). Unfortunately I don't have the Linux chops to be able to make a coherent feature request. If I did it would be something along the lines of querying the usb device for unique Id parameters i.e.: Quote *-scsi:1 physical id: 2 bus info: usb@2:5 logical name: scsi9 capabilities: emulated *-disk description: SCSI Disk product: My Passport 25E2 vendor: WD physical id: 0.0.0 bus info: scsi@9:0.0.0 logical name: /dev/sdj version: 4005 serial: WXT1EC79M81F size: 3725GiB (4TB) capabilities: gpt-1.00 partitioned partitioned:gpt configuration: ansiversion=6 guid=8f717fa2-263c-4d2d-a89e-ddaf98ceba1c logicalsectorsize=512 sectorsize=4096 Then allowing selection of a unique identifying parameter like "serial" to make a selection, I don't really have another $125 to spend on a different model/brand drive so that's not really an option. Quote Link to comment
soana Posted October 14, 2019 Share Posted October 14, 2019 On 7/20/2015 at 1:52 PM, kingfetty said: If you have multiple USB devices with the same Vendor and Product then the passthrough does not work as the UI currently builds the XML file with USB based on the Vendor / Product and not the Address Bus= Device= syntax. Since this is the case if you attempt to passthrough any usb devices that have duplicate Vendor/Product you will not be able to start your VM. The workaround is to manually edit the xml to the Address syntax. Examples: Bus 011 Device 003: ID 08bb:2704 Texas Instruments Audio Codec Bus 011 Device 002: ID 08bb:2704 Texas Instruments Audio Codec Current Syntax: <hostdev mode='subsystem' type='usb' managed='yes'> <source > <vendor id='0x08bb'/> <product id='0x2704'/> </source> </hostdev> This will result in a non booting VM Fixed Syntax: <hostdev mode='subsystem' type='usb' managed='yes'> <source> <address bus='11' device='2'/> </source> </hostdev> This workaround does not seem to work on my Windows VM running on 6.8.0-rc1 - anybody else having this issue or is it just me? I ended up passing a whole USB controller and everything is back up and running. Quote Link to comment
Dava2k7 Posted January 28, 2020 Share Posted January 28, 2020 Hi I’ve got same problem with USB’s for oculus sensors can some one post a step by step guide to fix this pls..... Quote Link to comment
JonathanM Posted January 29, 2020 Share Posted January 29, 2020 3 hours ago, Dava2k7 said: can some one post a step by step guide to fix this pls..... On 10/14/2019 at 4:09 PM, soana said: passing a whole USB controller and everything is back up and running. There is your answer. Quote Link to comment
Dava2k7 Posted January 29, 2020 Share Posted January 29, 2020 (edited) Thank you for helping but I don’t understand does that mean I need to buy a pci usb controller then passthrough to vm using spaceinvader video cause I haven’t a pci slot left I’m on a gigabyte x570 itx board or do you mean get a usb hub Thanks again for your assistance 👍🏻 Edited January 29, 2020 by Dava2k7 Quote Link to comment
testdasi Posted January 29, 2020 Share Posted January 29, 2020 (edited) 1 hour ago, Dava2k7 said: Thank you for helping but I don’t understand does that mean I need to buy a pci usb controller then passthrough to vm using spaceinvader video cause I haven’t a pci slot left I’m on a gigabyte x570 itx board or do you mean get a usb hub Thanks again for your assistance 👍🏻 X570 (actually all Ryzen motherboards that I know of) has 1 onboard USB 3.0 controller that can be passed through i.e. no need more PCIe card. Follow Spaceinvader One vid on PCIe vfio stubbing to stub it and it will show up as other PCIe device on your VM template and then it's just tick, save, start. Check this post for the onboard controller for X570 chipset that can be passed through (you will have to do all .0, .1, .3 to the same VM or it will not work). Edited January 29, 2020 by testdasi Quote Link to comment
Dava2k7 Posted January 29, 2020 Share Posted January 29, 2020 Thank you il give it ago if I succeed il let ya know lol Quote Link to comment
Skitals Posted January 29, 2020 Share Posted January 29, 2020 3 hours ago, testdasi said: X570 (actually all Ryzen motherboards that I know of) has 1 onboard USB 3.0 controller that can be passed through i.e. no need more PCIe card. Follow Spaceinvader One vid on PCIe vfio stubbing to stub it and it will show up as other PCIe device on your VM template and then it's just tick, save, start. Check this post for the onboard controller for X570 chipset that can be passed through (you will have to do all .0, .1, .3 to the same VM or it will not work). You can not follow Spaceinvader One's tutorial, if you stub by pci id you will stub all 3 usb controllers including the one unraid is using. You need to stub by address. I would shamelessly recommend the "VFIO-PCI Config" plugin on Community Applications to verify which controller your unraid usb is on and to build your vfio-pci.cfg file. Quote Link to comment
Recommended Posts
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.