Comment 14 for bug 140608

Revision history for this message
Ryan Williams (rlwilliams111) wrote :

I recently purchased a generic Twin USB gamepad. I am running Ubuntu 8.10. At first, the gamepad wasn't recognized at all. I eventually fixed this using jscalibrator. After I got the gamepad to be recognized, I rand across the problem that is listed in this bug report. After searching forums and comments on launchpad, I ran into the suggestion to add the hid-quirks patch. The only problem was that I couldn't figure out how to add this patch. To many, this might seem quite obvious. Maybe this is just the case of a semi-newbie trying to find perfect step-by-step directions for something that is simple enough that many more experienced user assume as common knowledge. Anyway, I am including a step by step reference for people, like me, who aren't familiar with adding patches to devices and need a little more explanation. Here is the process that I went through to get the controllers to be recognized correctly.

1. Go to this web page: http://georgia.ubuntuforums.org/showthread.php?t=338457&page=1
   This page gives a lot of good tips on getting the gamepad to be recognized. After following most of the tips on the page, my controller was still only recognized as one gamepad as opposed to two separate twin pads. This is where the hid-quirks patch comes in.

2. I should mention that before adding patch, I installed 3 HID libraries (python-hid, libhid0, inputlirc) through Synaptic. This may or may not have been part of the fix. Regardless, it was still necessary to add the hid-quirks patch.

3. download the patch. the file name is hid_quirks.c and many pages have a download for it. It might be best to make sure the the version of the patch is suitable for your kernel version. I just downloaded a version that looked like it was from a trusted web page and hoped for the best.

4. open a terminal and find your kernel version number by typing: uname -a

5. move the hid_quirks.c file to /usr/src/*YourKernelFolder*/drivers/hid/usbhid
    *YourKernelFolder* should be replaced with the folder name that contains your kernel version.

6. Reboot if necessary.

7. Both controllers should be recognized appropriately after completing these steps.

I want to mention that this is the first solution that I've posted for any problems with Ubuntu. Normally, if I have a problem, I search the forums and Google and try to find the answers or I ask a friend. I have come across very few things so far that I haven't been able to fix by these methods. When I came across this problem, none of the answers that anyone was giving seemed to explain the process well enough.

I would like feedback on this fix. I'm sure it could be more clear or maybe I missed a step. Let me know how this works for people. Thanks.

Ryan