Linux Xbox 360 Wireless Receiver Driver

closed account (S6k9GNh0)
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.
Last edited on
closed account (Dy7SLyTq)
i dont have an xbox 360, but i have a friend who has one and ill get him to try it out
closed account (o1vk4iN6)
You need a special adapter to use a 360 remote for PC.
closed account (S6k9GNh0)
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.
Last edited on
That's pretty impressive. Does it work as a mouse and move the cursor? I ask because I have a wireless gamepad receiver but no Linux games that use it, I only use it for Dark Souls on Windows.
closed account (S6k9GNh0)
You can do that through other means as far as I understand. There's "joy2key" and something relatively new called "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.
Last edited on
hey you know whats crazy I asked you guys about this a while aago and people were all like "pfft will take you years mate dont bother!!"
closed account (S6k9GNh0)
closed account (S6k9GNh0)
The driver now has proper force feedback support and a few fixes/improvements (such as not spamming your log unless you want it to).

Next up is userspace tools and a low priority need for a semaphore when sending data. And to format the code and suggest it for the kernel.
closed account (S6k9GNh0)
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.
Topic archived. No new replies allowed.