Automatically connecting USB devices at virtual machine power on (1648)
This article provides a workaround that lets you automatically connect a USB device if you do not 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 to Virtual Machine section in the Using VMware Workstation Guide.
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. (Select Start > Run and type regedit.).
- Search for your USB device's name or brand in this registry path:
For example: This output is 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 through 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 through 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 through the UI.
Autoconnect Options for Workstation 5.5, Fusion 3.x and later
The parameters for autoconnecting USB devices are 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' 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"