What Is Virtual Usb Host Controller Driver

  

Firstly, uninstall your USB xHCI Compliant Host Controller driver. 1) Hold Windows key + R key to open Run box. 2) Type devmgmt.msc in the box and hit Enter to open Device Manager. 3) Find and expand Universal Serial Bus controllers dialog. Then right-click on USB xHCI Compliant Host Controller and choose Uninstall. 4) Click OK when asked to. Although your host operating system must support USB, you do not need to install device-specific drivers for your USB devices in the host operating system if you want to use those devices only in the virtual machine. On a Windows 2000 host computer with USB 2.0 support, be sure you are using the Microsoft USB 2.0 driver for the USB controller.

Features | Documentation | Knowledge Base | Discussion Forums

Using USB Devices in a Virtual Machine Using USB Devices in a Virtual Machine

The following sections describe how to use USB devices in a virtual machine:

VMware Workstation 4 provides a two-port USB 1.1 controller. You can use up to two USB devices in your virtual machine if both your host operating system and your guest operating system support USB. If your host computer supports USB 2.0 devices, you can use those devices in the virtual machine.

Note: Windows NT and Linux kernels older than 2.2.17 do not support USB.

Although your host operating system must support USB, you do not need to install device-specific drivers for your USB devices in the host operating system if you want to use those devices only in the virtual machine.

On a Windows 2000 host computer with USB 2.0 support, be sure you are using the Microsoft USB 2.0 driver for the USB controller. Third-party USB 2.0 drivers, such as those provided by some motherboard manufacturers, are not supported. For notes on replacing the third-party drivers, see Replacing USB 2.0 Drivers on a Windows 2000 Host.

Controller Notes on USB Support in Version 4 Notes on USB Support in Version 4

We have tested a variety of USB devices with this release. In general, if the guest operating system has appropriate drivers, you should be able to use PDAs, printers, storage (disk) devices, scanners, MP3 players, digital cameras and memory card readers.

Modems and certain streaming data devices, such as speakers and Web cams, do not work properly.

Enabling and Disabling the USB Controller Update usb host controller Enabling and Disabling the USB Controller

The virtual machine's USB ports are enabled by default. If you will not be using USB devices in a virtual machine, you can disable its USB controller using the virtual machine settings editor.

Connecting USB Devices Connecting USB Devices

When a virtual machine is running, its window is the active window and a USB device is plugged into the host computer, the device automatically connects to the guest instead of the host. This autoconnect feature can be disabled in the USB Controller panel of the virtual machine settings editor (VM > Settings). If all of the virtual machine's USB ports are already occupied when it is trying to connect automatically to a new device, a dialog box gives you a choice: you can either disconnect one of the existing USB devices to free its port or ignore the new device, allowing the device to connect to the host.

Nvidia Virtual Usb Host Controller Driver

Choose VM > Removable Devices to connect specific USB devices to your virtual machine. You can connect up to two USB devices at a time. If the physical USB devices are connected to the host computer through a hub, the virtual machine sees only the USB devices, not the hub.

There is a menu item for each of the USB ports. Move the mouse over one of these items to see a cascading menu of devices that are plugged into your host computer and available for use. To connect a device to the virtual machine, click its name.

If a device is already connected to that port, click the name of a new device to release the first device and connect the new one.

To release a connected device, click None on the cascading menu for the port to which it is connected.

If you physically plug a new device into the host computer and the autoconnect feature does not connect it to a virtual machine, the device is initially connected to the host. Its name is also added to the VM > Removable Devices menu so you can connect it to the virtual machine manually.

Using USB with a Windows Host Using USB with a Windows Host

Windows 2000, Windows XP and Windows Server 2003 hosts: When a particular USB device is connected to a virtual machine for the first time, the host detects it as a new device named VMware USB Device and installs the appropriate VMware driver.

Windows XP and Windows Server 2003 hosts: User confirmation is required in the Found New Hardware Wizard. Select the default action — Install the software automatically. Once the software is installed, the guest operating system detects the USB device and searches for a suitable driver.

When you are synchronizing a PDA, such as a Palm handheld or Handspring Visor, to a virtual machine for the first time, the total time required to load the VMware USB device driver in the host and the PDA driver in the guest may exceed the device's connection timeout value. This causes the device to disconnect itself from the computer before the guest can synchronize with it. If this occurs, let the guest finish installing the PDA driver, dismiss any connection error warnings, then try synchronizing the PDA again. The second attempt should succeed.

Replacing USB 2.0 Drivers on a Windows 2000 Host Replacing USB 2.0 Drivers on a Windows 2000 Host

To use VMware Workstation 4 on a Windows 2000 host that has USB 2.0 ports, you must use the Microsoft USB 2.0 drivers for the USB controller in the host operating system. If your host operating system is using a third-party driver — a driver supplied by your motherboard vendor, for example — you must replace it.

Take the following steps to check the provider of your driver:

  1. Go to the Device Manager. Right-click My Computer, choose Properties, click the Hardware tab, then click Device Manager.
  2. Expand the listing for Universal Serial Bus controllers.
  3. Right-click the listing for the controller and choose Properties.
  4. Click the Driver tab. If the driver provider shown on that page is Microsoft, you have the correct driver already.

If the driver provider is not Microsoft, download the latest USB driver for your host operating system from the Microsoft Web site and follow the Microsoft instructions to install it. Details are available in Microsoft knowledge base article 319973.

Installing USB Devices as a Non-Administrator Installing USB Devices as a Non-Administrator

Any user on a Windows host can connect USB devices for use in a virtual machine. You no longer need administrative privileges on the host to connect a USB device to a virtual machine.

This functionality is not enabled by default. To enable it, you must use a text editor such as Notepad to add one line to the global configuration file. This file is
C:Documents and Settings<username>Application DataVMwareconfig.ini

Add the following line anywhere in the file:

usb.EnablePnpMgr = TRUE

Note: A user with administrative privileges on the host operating system must install a USB device on the host before it can be connected by users who do not have administrative privileges.

Using USB with a Linux Host What Is Virtual Usb Host Controller Driver Using USB with a Linux Host

On Linux hosts, VMware Workstation uses the USB device file system to connect to USB devices. In most Linux systems that support USB, the USB device file system is at /proc/bus/usb. If your host operating system uses a different path to the USB device file system, you can change it in the virtual machine settings editor (VM > Settings > USB). Enter the correct path in the Path to usbdevfs field.

Who Has Control over a USB Device? Who Has Control over a USB Device?

Only one computer — host or guest — can have control of a USB device at any one time.

Device Control on a Windows Host Device Control on a Windows Host

When you connect a device to a virtual machine, it is 'unplugged' from the host or from the virtual machine that previously had control of the device. When you disconnect a device from a virtual machine, it is 'plugged in' to the host.

Caution: On Windows 2000, Windows XP and Windows Server 2003 hosts, you need to take a special step to disconnect USB network and storage devices from the host. There is a system tray icon called Eject Hardware on Windows 2000 and Safely Remove Hardware on Windows XP and Windows Server 2003. Use this icon to disconnect the device from the host before connecting it to a virtual machine.

Note: On Windows 2000, Windows XP and Windows Server 2003 hosts, when you connect a USB network or storage device in a virtual machine, you may see a message on your host that says the device can be removed safely. This is normal behavior, and you can simply dismiss the dialog box. However, do not remove the device from your physical computer. VMware Workstation automatically transfers control of the device to the virtual machine.

Under some circumstances, if a USB storage device is in use on the host (for example, one or more files stored on the device are open on the host), an error appears in the virtual machine when you try to connect to the device. You must let the host complete its operation or close any application connected to the device on the host, then connect to the device in the virtual machine again.

Device Control on a Linux Host Device Control on a Linux Host

On Linux hosts, guest operating systems can use devices that are not already in use by the host — that is, devices that are not claimed by a host operating system driver.

If your device is in use by the host and you try to connect it to the guest using the VM > Removable Devices menu, a dialog box appears, informing you that there is a problem connecting to the device.

To disconnect the device from the host, you must unload the device driver. You can unload the driver manually as root (su) using the rmmod command. Or, if the driver was automatically loaded by hotplug, you can disable it in the hotplug configuration files in the /etc/hotplug directory. See your Linux distribution's documentation for details on editing these configuration files.

A related issue sometimes affects devices that rely on automatic connection (as PDAs often do).

If you have successfully used autoconnection to connect the device to your virtual machine, then experience problems with the connection to the device, take the following steps:

  1. Disconnect and reconnect the device. You can either unplug it physically, then plug it back in or use the VM > Removable Devices menu to disconnect it and reconnect it.
  2. If you see a dialog box warning that the device is in use, disable it in the hotplug configuration files in the /etc/hotplug directory.
Disconnecting USB Devices from a Virtual Machine Disconnecting USB Devices from a Virtual Machine

Before unplugging a USB device or using the VM > Removable Devices menu to disconnect it from a virtual machine, be sure it is in a safe state.

You should follow the procedures the device manufacturer specifies for unplugging the device from a physical computer. This is true whether you are physically unplugging it, moving it from host to virtual machine, moving it between virtual machines or moving it from virtual machine to host.

This is particularly important with data storage devices (a Zip drive, for example). If you move a data storage device too soon after saving a file and the operating system has not actually written the data to the disk, you can lose data.

Human Interface Devices Human Interface Devices

USB human interface devices, such as the keyboard and mouse, are not handled though the virtual machine's USB controller. Instead, they appear in the virtual machine as a standard PS/2 keyboard and mouse, even though they are plugged into USB ports on the host.

What Is Virtual Usb Host Controller Driver Download

I am a newbie learning how to write WDM device drivers for USB devices and found that the materials available are all too hard to comprehend (the DDK online doc is one of the most difficult to read, and the WDM Device driver book by Oney isn't anything better).

So, I've got a simple question. Where do I start if I want to create a virtual USB device (for example, a virtual USB mouse which looks like a real USB mouse attached to a USB port) for testing/learning.

So far what I understand is the HIDClass driver (hidclass.sys) has a minidriver for the usb bus (hidusb.sys) that carries out the enumeration of attached USB hardware. So, if I want to hijack the hardware enumeration process and creates my own virtual hardware, should I include a filter driver somewhere to intercept some IRPs related to the hardware enumeration process?

Sorry if the above does not make sense at all since I am still in the learning stage and this is actually one of the exercise I think could help me learn about writing USB device drivers better.

JavaManJavaMan

4 Answers

Windows uses a Plug and Play Architecture. When you insert a USB device, It sends low level USB request to the device and then based on the response from a device decides what driver to load. Matching is done by comparing vendor id, product id and etc to inf files sections. Drivers come in the form of a compiled xxx.sys with xxx.inf file and is loaded to kernel space. Windows decides which xxx.sys to load based on the *.inf file that comes with the device's driver.

These files have sections like this:

(a more detailed description on what's in inf files can be found over on https://docs.microsoft.com/en-us/windows-hardware/drivers/install/inf-manufacturer-section)

A detailed look at the USB enumeration process (Use USB Logger):

  • USB Device Plugged
  • USB Bus Driver Request
    • GetDescriptor(Device)
    • GetDescriptor(Configuration)
    • GetDescriptor(String iSerialNumber), used as Device Instance ID
    • GetDescriptor(String iProduct), used in the 'new Hardware been identified' popups
  • The PNP (Plug and Play) manager is informed that a device was added by the bus drivers.
  • The PNP manager then asks the bus driver for device information by using a PNP request, asking for:
    • DeviceID string, representing the USB Vendor and Product ID,
    • HardwareIDs string,
    • CompatibleIDs string, representing USB device' Interface Class, Subclass and Protocol, and
    • InstanceID string, representing the uid for this particular device within the set of all instances with the same compatible id hooked up to the computer.

For any connected USB device you can see these strings using the Device Manager:

  • Open the Device Manager (windows menu -> 'device manager', or control panel -> 'System' -> 'Hardware' -> 'Device Manager')
  • then use the 'view' menu to switch to 'Device by Connection'
  • open 'ACPI [...]' -> 'PCI bus'/'PCI Express Root Complex' -> '[...] USB [...] Host Controller'
  • expand any of the entries under the host controller, and for any of the devices listed, right click to get their properties, open the 'details' tab, and then use the property pulldown menu to find 'Hardware Ids', 'Compatible Ids', 'Device Instance ID', 'Matching Device Id', 'Service', etc.

For example, I have a USB storage device with Device Id = usbclass_08&subclass_06&prot_50 hooked up, and this string can be matched to an .inf file that was added to the list of known devices after first enumeration. This file has a string Service = USBSTOR, and so we know that usbstor.sys is used to interface with this USB Mass Storage Device.

Let's continue with matching process.

  • The PNP Manager tries to determine whether Device was already 'installed':
    • It search the registry for a key matching the 'DeviceInstance ID' to see which service handles interfacing with this device. Specifically, it searches for this in HKEY_LOCAL_MACHINESYSTEMCurrentControlSetEnumUSB

For disk on key, you can see something like:

  • The PNP Manager then loads the associated driver based on a match between the strings in PNP requests and data from the .inf database:
    • inf database located under: C:WINDOWSinf
    • drivers .sys files located: C:WINDOWSsystem32drivers
  • If PNP can't find matching string, you will get prompt to show a path to xxx.sys and xxx.inf

For writing drivers my advice is:

  1. Don't start with implementing HID (human interface device) devices, because you can cause windows to use your custom driver for you mouse or keyboard instead of original driver, this will disable your mouse or keyboard, very dangerous.
  2. Don't load drivers into your dev machine:
    1. use a virtual machine and install your drivers there. Set up a kernel debugger for your virtual machine: http://www.codeproject.com/KB/winsdk/KernelModeDebuggerSetup.asp
    2. or load drivers on other test machine.
  3. Good learning platform for USB drivers is 'OSR USB-FX2 Learning Kit'
Alex.SalnikovAlex.Salnikov

Use Device Simulation Framework (DSF).

Amir SaniyanAmir Saniyan

You can use the USB/IP project to emulate any device that you want. In my blog I demonstrated how to emulate USB Mouse device in python using the USB/IP project:http://breaking-the-system.blogspot.com/2014/08/emulating-usb-devices-in-python-with-no.html

It wont help you to understand how to create the virtual USB device (the process is done in the USB/IP driver, you could read the code), but it will create the virtual USB HID device and you could play with the HID arguments sent to the USB driver.

Yaron ShaniYaron Shani

Usb Host Controller Of Microsoft

Wouldn't it make more sense to provide your own bus type and enumerator?

Simon RichterSimon Richter

Hi-speed Usb Host Controller Driver

Not the answer you're looking for? Browse other questions tagged usbdevicedrivers or ask your own question.