Monday, December 17, 2012

XBox controller - Windows driver

In my last post I showed how I modded an original XBox controller for use on a PC.  In this post I'll talk about the Windows driver.  When you connect the controller to a computer, Windows recognizes the USB device but without a driver the controller is useless.  If you search on the Internet you'll quickly find XBCD by redcl0ud.  This is the original XBox controller driver, currently at version 1.07.  According to the author this driver works on Windows XP, which is my OS of choice.  So I downloaded the driver and tried it out.  Unfortunately, the driver wouldn't load for me.  XP accepted the driver, but after installation it said there was a problem with the device.  I was convinced my soldering was fine, something must be wrong with the driver itself.

As it happens, the author provides the source code for the driver, and at work I recently had to write a device driver, so I have all the tools necessary to compile the driver.  The first thing I noticed is the source is rather old - it hasn't been updated since 2005.  Even if the driver works on XP, I can guaranty the driver won't work on 64-bit Windows.  I decided to take the time to update the driver and produce version 1.08.  Using newer tools from Microsoft I was able to fix a few problems in the driver's source code, correct issues in the driver INF file, and recompile for both 32-bit and 64-bit Windows.  This updated driver works, I've tested it on XP, 2003, Vista, and Windows 7, both 32-bit and 64-bit.  I'll make this new driver available to anyone who wants a copy, including the updated source code.  You can download the driver here (link updated).  This 7Zip file contains the unsigned 32 and 64-bit versions, the modified source code, and the tools necessary to sign the driver if you have your own digital certificate (read on).

No discussion of the driver would be complete without mentioning 64-bit drivers.  Starting with Vista, Microsoft made a change to 64-bit Windows.  All device drivers must be digitally signed using a what's called a cross-certificate.  These certificates cost at least $100, and quite frankly I'm not going to spend my own money for a certificate so I can sign a free driver.  So if you want to run this driver on 64-bit Windows Vista, 7, or 8 then you have two choices.

  1. The follow website has 4 different methods of loading uncertified drivers under Windows.  The intent is this is used by developers who need to test their code.  So it's up to you to make these changes to your own system.  http://www.raymond.cc/blog/loading-unsigned-drivers-in-windows-7-and-vista-64-bit-x64/
  2. You can sign the driver yourself.  Assuming you have access to a valid certificate, cross certificate from Microsoft, and know how to use the signtool.exe application then you can sign your own driver.

9 comments:

  1. Thank you so much! The drivers work on windows 8. (in case you haven't tried them). I was beginning to despair.

    ReplyDelete
    Replies
    1. I'm glad to hear that. I haven't had a chance to try the driver on Windows 8. But now I know it works!

      Delete
    2. how did you install the unsigned drivers?

      Delete
    3. At the bottom is a link to a page that details multiple ways of loading unsigned drivers on 64-bit Windows. Unfortunately it's not a simple process.

      Delete
  2. The driver link is broken.
    Please upload the driver again.

    ReplyDelete
    Replies
    1. Hmm, RapidShare deleted my account and is changing their hosting model. Time to find a new (free) place to host this file. If anyone has a suggestion please let me know.

      Delete
    2. I've updated the link. I'm now hosting the file right here on my blog. You'll need to UUDecode the file, but since it's not hosted externally the link will always be good. Enjoy.

      Delete
  3. Thanks... drivers work on Vista 32bit without signing...
    Select drivers from file.. a windows says something like "Not signed--You know what you doing?-- Installing annyway ?" And it's Ok
    I've made my controller without solding, twisting the color wires together .. it's awful but is working...
    Thanks again!!!

    ReplyDelete
  4. You Gamers Awesome (me too),I bought me Original Xbox in 98's soon years the Discs & Mc's are damaged, i thought it waste of use and shifted to garbage(store) since 2006. but recently i modded my controller by just giving a try the device detected partiall (unknown device) but no drivers.your blog helps me a lot.My Original Xbox Controller Working on Windows 8 Pro x64. Thanks a lot so Much.

    ReplyDelete