Tags: sync, VMware
If you’re like me, you use VMware Workstation heavily. I use it for testing, development, cloning and all manner of other things. One thing that has nagged me since upgrading to the 6.x series of Workstation is that native USB Palm synchronization stopped working.
I can sync over Bluetooth to Windows XP running inside the VM, but I can’t sync natively using the USB cable itself. Windows sees the device as a “Palm Handheld”, VMware connects it, all looks good… but it never actually wakes up the Palm HotSync applet in the System Tray.
Apparently VMware added “port reset forwarding” to the host for Workstation 6.5 but Palm devices (most, if not all) don’t work with this change. To offset that, they’ve added a way to control this, including a new way to control the “skipsetconfig” parameters on a per-device basis.
First, you’ll need to find the vendor id (vid) and product id (pid) of the Palm device you’re trying to connect to. You can usually snarf this out of the vmware.log for that VM session. Mine reported something like this:
Nov 23 13:56:52.371: vmx| USB: Found device [name:Palm\ Handheld vid:0830 pid:0061 path:5/1 speed:full family:vendor]
This means the Treo 680 was: vid:0830 pid:0061
You’ll also note that these are identical to the vendor_id and product_id that we use in pilot-link and other projects on the Linux side.
Then, you add a
usb.quirks.deviceX line with the vid:pid pair, followed by the quirk. The two known “quirks” that help USB Palm devices are
skip-reset. Here is the quirk entry to add to your VM’s vmx config file for the above example:
usb.quirks.device0 = "0x0830:0x0061 skip-setconfig, skip-reset"
Note that you need to use a 0x to denote that the number is hex, which is different from the vid:(hex number) used in log line and autoconnect lines. If you don’t put a 0x, it assumes a decimal number.
“This also acts differently than the usb.generic.skipsetconfig setting in that the skip-setconfig is only activated for a specifc device using a quirk versus having it turned on for all devices with the global usb.generic.skipsetconfig. Most devices can tolerate receiving multiple setconfigs and most devices don’t use anything but the first config. There are some devices that may need to set a second or third config, so using a skip-setconfig quirk for only those devices that need it and not using the global usb.generic.skipsetconfig is preferred.”
After setting this, uninstalling Palm Desktop, shutting down VMware entirely, rebooting and reinstalling Palm Desktop + HotSync, everything started working again.