USBN Controller Conflict

Hello when "VirtualHere USB 3 eXtensible Host Controller" is installed in device tree, at reboot one of the hardware USB drivers fails (and my docking station will refuse to work).
The error displayed on the hardware USB Device is: Code 31: "Object Name already exists"
Everythings returns normal if I remove "VirtualHere USB 3 eXtensible Host Controller" from the Device Manager.
Lenovo Thinkpad P52, Windows 10 Professional 64 bit.

#3

Hello I have updated the Thinkpad drivers multiple times at the link you supplied and yes now it is all updated.
I am having this trouble (main symptom: docking station not recognized at boot time) since months.
During these monts of trouble, I have:
* updated drivers, updated bios, updated docking station firmware, several times.
* updated vhui64 multiple times

Until last week when desperately I deleted ALL Usb devices from device manager and at the following reboot Windows reinstalled all of them, and the defect disappeared.

It remained disappeared for days, then it reappeared during a reboot, after a working day where I used VirtualHere (I dont't use VirtualHere every day, I just use it sometimes).

So I started experimenting deleting VirtualHere device and reinstalling it, finding a 1-1 match with the defect.

So, now:
* when "VirtualHere USB 3 eXtensible Host Controller" is installed in device tree, at reboot one of the hardware USB drivers fails (and my docking station will refuse to work).
* The error displayed on the hardware USB Device is: Code 31: "Object Name already exists"
* Everythings returns normal if I remove "VirtualHere USB 3 eXtensible Host Controller" from the Device Manager.

Since then, I have added a shutdown hook to my PC to remove the VirtualHere device before shutdown, and my pc works like a charm.

I have fixed my problem so this fix is not so urgent for me, but I think there is some flaw in the VirtualHere device driver and I would like to help since it is a great and useful piece of technology.

Regards,
--Vito

#4

I suspect its probably a "filter" that lenovo is installing on their drivers and its erronoeously installing on the virtualhere driver.

#5

May I investigate it in any way?

#6

In Device Manager under "Universal Serial Bus Controllers" right click on any "xxx Host Controller" device listed and select Properties Driver->Driver Details and tell me what files it has listed there. Also click on Details tab and see if this is any entries containing the word "Filter" e.g "UpperFilter" "LowerFilter" and let me know if you find that.

#7

Same Problem on Dell Precision 3541. If I uninstall the virtualhere driver everything works fine.
Properties of the Dell (Intel) USB3.1 eXtensible Hostcontroller - 1,10
c:\windows\system32\drivers\tsusbflt.sys
c:\windows\system32\drivers\UMDF\UsbXhciCompanion.dll
c:\windows\system32\drivers\USBXHCI.SYS

UpperClassFilter TsUsbFlt

#8

I debugged with v.marolda and it ended up being the Intel USB 3.1 controller wants to be called HCD1. Its a bug in their driver. I couldnt find any way to alert intel to a bug via email without joining some technical support program. So i hope they just fix it as it will conflict with other normal hardware host controllers.

On boot virtualhere searches for a spare host controller name. HCD0 is taken by the root host controller, so HCD1 is usually available and virtualhere driver calls itself that. However sometimes there is a race condition with another driver and so virtualhere will take the next number HCD2.
However the intel driver doesnt do this, it just fails if HCD1 is taken. Whereas really it should fall back to taking the next name e.g HCD2 or HCD3 but it doesnt and thats the "Object name already exists " error

#9

Here is a workaround. On the client pc that doesnt work:

1. open regedt32 and add the entry under
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\vhusb3hc\Parameters
New REG_DWORD name HCD value 3
2. Reboot the client pc then try using the device via virtualhere and it should work ok

#11

You dont need to download anything else anymore. The normal version of virtualhere includes this fix. So you just need to make that registry change and reboot.

#12

I feel like this should be noted.
I have Dell Latitude laptop with Win 10 21H2 that has two internal HCs and a Thunderbolt 3 dock also with two HCs.
After VirtualHere installation I found that USBs on dock stopped working if dock being hotplugged after boot. After experimenting a little I found that if I set HCD=4 - one of dock controllers starts working; HCD=5 - everything works.
This looks like enumeration issue - maybe VirtualHere controller ID somehow not being counted as "used"?

#13

Thanks for the detailed information. Yes the reason is when the computer boots virtualhere will choose an unused device name. E.g HCD1 or HCD2 etc However the Intel driver will default to just using HCD1, HCD2 etc, even if that name is in use. If the driver order changes then the conflict occurs. Ive asked Intel to modify their driver so that it also chooses a unused name when booting however they said no. They should also do it the same way as virtualhere to avoid conflicts..

#15

Thats great news, thanks for letting me know. (Im having trouble finding the release notes for this version... to confirm)

#17

>Thats great news, thanks for letting me know. (Im having trouble finding the release notes for this version... to confirm)
sorry - it still isn't working, I wasn't restarted - then it steps out.
by the way - this registry entry also doesn't help - may it can be added to the settings etc?

#18

Yes the registry entry will fix it but you need to use e.g HCD5 probably.