How to Make CH Products Controllers Wake Up in Windows 7 (and 8)

January 5th, 2013 by Chris

A while back I picked up a set of CH Products game controllers on eBay. This set included the Pro Pedals[1], the Pro Throttle, and the Fighterstick [2].

They are very well built and I expect them to last essentially forever (or at least until USB is obsolete). There was only one problem, when my PC[3] woke back up from hibernate, the controllers wouldn’t work. I discovered that I could use the CH Control Manager to rescan for them to workaround the problem, but this was still a bit annoying.

After contacting CH Products about the issue, they told me that if I sent them the controllers they would update the firmware to resolve the issue. The charge was only $10 per controller (for return shipping), but having just gotten used to them, I didn’t want to be without them for several weeks. Instead, I did a bit more troubleshooting.

My workaround is quite effective and involves four parts:

  1. USBDeview.exe: An application which allows you to view, enable and disable any USB attached devices.
  2. resetChProducts.bat: A batch file which uses USBDeview to disable, then enable all CH Products devices by product ID. (in attached zip file)
  3. runResetChProducts.vbs: A VisualBasic script which runs a batch file without opening a window[4] (in attached zip file)
  4. wscript.exe: A built-in component of Windows which allows execution of Visual Basic Scripts.

I installed USBDeview and used it to determine the Product ID of the CH products devices (0x068e). The scripts expect the install location to be C:\Program Files\USBDeview. I also put them in the same folder. The VB Script simply invokes the batch script without creating a window. The batch script disables all the devices which match this ID, then immediately enables them again. The final piece of the puzzle, was to use the Windows Task Scheduler to run the whole shebang automatically. In this case I used “On workstation unlock of any user” as a trigger for the command: wscript.exe “C:\Program Files\USBDeview\runResetChProducts.vbs”

Now every time I log in, the lights on the controllers blink once, and they’re good to go.

Update:
I discovered an issue in Win8 I didn’t have in Win7, which is that my devices seem to enable in an arbitrary order. As a result, the joystick mappings (i.e. numbers) in my games change from one start-up to the next. To work around this, I change the bat file to enable the devices in an order I prescribe. As follows:

REM Disable, then re-enable all devices with the CH Products VendorID
"C:\Program Files\USBDeview\USBDeview.exe" /disable_by_pid 068e
"C:\Program Files\USBDeview\USBDeview.exe" /enable_by_pid 068e;00f3
"C:\Program Files\USBDeview\USBDeview.exe" /enable_by_pid 068e;00f2
"C:\Program Files\USBDeview\USBDeview.exe" /enable_by_pid 068e;00f1

  1. Replacing a heavily worn, but still working set I’ve had for over a decade of the old game-port variety. []
  2. Replacing a MS Precision 2. []
  3. Running Windows 7 Pro, 64-bit. I’ve since determined that this continues to work for Windows 8 Pro 64-bit. []
  4. Thanks to Hey, Scripting Guy Blog for the code I generated this from. []

Comments are closed.