I made a driver this past week for the Xbox 360 Wireless Receiver for Linux to supersede the in-kernel xpad driver's functionality. I'm rather desperate for people to test it or give criticism on the code. If you use Linux and have an Xbox 360 Wireless Reciever, would you please post your distro, current kernel, and try the damn thing?
I unfortunately don't have an install script quite yet.
This experience was a rather fulfilling one but there's still plenty missing from the driver, which an be found in the todo at the top of the page. Seriously, any suggestions would be welcome.
Yeah, you don't need an Xbox 360, you just need an Xbox 360 Wireless controller and the Xbox 360 Wireless Receiver for PC.
Also, to use, you must disable the in-kernel xpad driver by using rmmod or whatever your distro uses. Then "make && sudo insmod xpad360wr.ko" should do the trick, assuming make succeeded.
There is an issue where if your controller is already on whenever the module is loaded, the controller needs to be turned off then back on so the driver receives a connect packet from the adapter. Otherwise, any attempt to open the device will fail as the driver doesn't think it's present.
You can do that through other means as far as I understand. There's "joy2key" and something relatively new called "leanstick" http://yiannnos.com/leanstick
Whenever I get a userspace driver working, I will hopefully be able to change how certain things work... such as change the triggers to work as buttons instead of triggers. The current xpad driver allows this but only through module parameters which have to be defined on module startup. I don't like that and would like a more dynamic approach.
Growing on my knowledge, I realized that the device follows the HID specification, except its report descriptor is destroyed. I figured out how to restore the descriptor (by recreating it) and I'll be remaking the driver using the hid_driver interface. This allows me to do certain things that I would have issues doing before like dynamically register and unregister input devices.
But the current revision of the raw USB driver works fine, much better than Xboxdrv or xpad at the moment.
Something I'm not satisfied with is the Linux documentation. For almost 80% of the interface functionality, I have to actually look at the implementation. The implementation is usually very clean and easy to read but it takes time. So, I'm going to come up with something to generate formatted documentation while I learn things.