Automatically connecting USB devices at virtual machine power on (1648)
This article describes a workaround that lets you automatically connect a USB device if you don't have access to the host that runs the guest operating system, and therefore cannot manually connect the device using the VM > Removable Devices menu. For more information about the preferred way to connect USB devices through the menu, see "Connecting USB Devices" in the VMware Workstation User's Manual.
Note: Workstation 5.5 and later enhances the auto connect feature to include support for name, path, and new PID/VID syntax. See the last section in this article, New Autoconnect Options for Workstation 5.5.
To automatically connect a particular USB device:
- Identify and obtain the USB device's vendor ID and product ID as reported by the host operating system.
- Edit the virtual machine's configuration file (.vmx) to contain an autoConnect entry for the USB device.
Caution: Be aware that you may "break" the USB functionality for your virtual machine if you configure conflicting autoconnect settings.
Identifying and Obtaining the USB Device's Vendor ID and Product ID
On a Linux host, after you connect the USB device, you can find the vendor and product ID in the /proc/bus/usb/devices file.
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 3 Spd=1.5 MxCh= 0
D: Ver= 2.00 Cls=ff(vend.) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0529 ProdID=0001 Rev= 2.15
S: Product=HASP HL 2.15
Here, 529 is the vendor ID and 1 is the product ID for the HASP HL device.
On a Windows host, you may find the vendor and product IDs in the registry.
Caution: This procedure involves accessing the registry. Incorrect changes to the registry can leave your system unstable or unable to run. Always back up the registry before you edit it, and exercise caution in making changes to the registry. VMware takes no responsibility for problems that may arise.
- Open the registry. (Choose Start > Run > regedit.)
- Search for your USB device's name or brand in this registry path:
Example: This output was a result of searching for a Cruzer Mini USB key:
LocationInformation: Cruzer Mini
Mfg: Compatible USB storage device
Here, the vendor ID is 781 and the product ID is 7101.
Editing the Virtual Machine's Configuration File
The configuration (.vmx) file is normally located in the same directory in which the virtual machine was created. Make sure the virtual machine is powered off before you edit this file.
To autoconnect the HASP HL device from the previous example, add this line in the .vmx file of the virtual machine:
usb.autoConnect.device0 = "0x529:0x1"
Or, for the Cruzer Mini device, add:
usb.autoConnect.device0 = "0x781:0x7101"
Note: Prepend 0x to each value — it must be in hex format.
You can specify multiple devices for autoconnect, provided that there are not more than two USB devices available to the host at the same time. Multiple entries for autoConnect are shown in the following example. An ellipsis [...] indicates the omission of an actual vendor or product ID. You need to include a specific value, as shown for device0 and device1.
usb.autoConnect.device0 = "0x529:0x1"
usb.autoConnect.device1 = "0x781:0x7101"
usb.autoConnect.device2 = ....
usb.autoConnect.device3 = ....
You can use the auto clean option in usb.autoconnect:
- autoclean:1 - autoconnect if a device matches the pattern, removed if the VM is powered on and no device matches the pattern, removed if disconnected via the UI.
- autoclean:0 - autoconnect if a device matches the pattern, not removed if the VM is powered on and no device matches the pattern, removed if disconnected via the UI.
- no autoclean - autoconnect if a device matches the pattern, not removed if the VM is powered on and no device matches the pattern, removed if disconnected via the UI.
Autoconnect Options for Workstation 5.5 and later
In Workstation 5.5 and on, the parameters for autoconnecting USB devices have been expanded to include the USB device name and path, in addition to the already supported PID and VID syntax. Workstation also makes extra information available in the vmware.log file, located in the virtual machines's directory, to make entering these parameters easier.
When a device is connected to the host, the virtual machine discovers the device and adds an entry to vmware.log. The virtual machine also discovers all devices attached to the host when the virtual machine is powered on, resumed, or reverted, and adds an entry for each device. For example, consider this vmware.log entry:
XXX XX XX:XX:XX: vmx| USB: Found device [name:SomeCompany\ USB device vid:0123 pid:abcd path:1/2/1]
There are four space-separated parameters available: name, vid, pid, and path.
The name Parameter
The name parameter is the string that describes the USB device. You may add the complete string of the USB device as a parameter, or a partial string if you want to match multiple USB devices for a specific word. Note that the string is not case sensitive and that spaces must be escaped with a backslash [ \ ] as they are in the vmware.log string.
To match the whole string from the example, use:
usb.autoConnect.device0 = "name:SomeCompany\ USB device"
To match all USB devices with "SomeCompany" in their names, use:
usb.autoConnect.device0 = "name:SomeCompany"
The vid and pid Parameters
The vid and pid parameters do the same thing as the previous autoconnect entry. To match the SomeCompany USB device in the above example, use:
usb.autoConnect.device0 = "vid:0123 pid:abcd"
To match any device that has the Vendor ID (VID) of SomeCompany, use:
usb.autoConnect.device0 = "vid:0123"
The path Parameter
The path parameter in vmware.log provides the path to the specific port on the host where the USB device is attached. Using autoconnect with the path entry binds a specific host port to that virtual machine. If the path parameter is used exclusively, any device that is attached to that host port automatically connects to that virtual machine.
To always connect any device attached to the host port in the above example, use:
usb.autoConnect.device0 = "path:1/2/1"
You can use the name, vid, pid, and path parameters in any combination. For the autoconnect to succeed, each parameter you enter must match.
To autoconnect the USB device in the example when connected to the same host port, use:
usb.autoConnect.device0 = "name:SomeCompany\ USB\ device vid:0123 pid:abcd path:1/2/1"
To autoconnect the USB device in the example, regardless of the host port to which it is connected, use:
usb.autoConnect.device0 = "name:SomeCompany\ USB\ device vid:0123 pid:abcd"