Userspace Xbox/Xbox360 USB Gamepad Driver for Linux
This is a Xbox/Xbox360 gamepad driver for Linux that works in
userspace. It is an alternative to the xpad kernel driver and has
support for Xbox1 gamepads, Xbox360 USB gamepads and Xbox360 wireless
gamepads. The Xbox360 guitar and some Xbox1 dancemats might work too.
The Xbox 360 racing wheel is not supported, but shouldn't be to hard
to add if somebody is interested.
This driver is only of interest if the xpad kernel driver doesn't work
for you or if you want more configurabity. If the xpad kernel driver
works for you there is no need to try this driver.
In addition to all the Xbox related stuff, the driver also
supports the Thrustmaster Dual Power 3 gamepad, including
rumble, which isn't supported by the normal kernel driver.
News
- 21. February 2009
- 0.4.6 released
- --calibration MIN,CENTER,MAX option to workaround broken controller
- xboxdrv-daemon.py to launch xboxdrv automatically when device gets plugged in
- 15. February 2009
- 0.4.5 released
- fixed mixup between strong and weak rumble
- added Harmonix Drum Kit for Xbox 360 support
- added Logitech Chillstream support
- added evsend tool to send events to /dev/input/eventX
- Y-Axis for Firestorm gamepad fixed
- 24. January 2009
- 0.4.4 released
- auto-detect USB endpoints
- rumble support, enabled via --force-feedback
- added --rumble-gain to control rumble strength
- --deadzone accepts values in percentage
- DDR Universe 2 Mat added
- 17. January 2009
- 0.4.3 released
- added support for X11 keysym in --ui-buttonmap
- added --ui-clear and 'void' mappings to unmap buttons and axis
- fixed LED handling for wireless gamepads
- Thrustmaster Firestorm Dual Power support
- added --name option to set device name
- added JS_${NUM} name to address joystick buttons by number instead of name
- fixed issue with multiple wireless controller
- some preparation for rumble (prints FF events)
- 11. January 2009
- 0.4.2 released, fixes broken --dpad-only option
- 08. January 2009
- 0.4.1 released, fixes little compile problem with KEY_MEDIA_REPEAT, nothing more
- 07. January 2009
- 0.4 released, autofire, throttle, mouse and keyboard emulation added
- 06. November 2008
- 0.3 released, mostly smaller bugfixes
- 20. Septemper 2008
- Some chatpad development is in progress, discussion at here
- 03. May 2008
- 0.2 released, adding guitar and wireless support
- 13. April 2008
- 0.1 released, Xbox and Xbox360 USB support
Features
- runs in userspace on top
of libusb, no kernel
recompile required, very easy to get build
- gives you what you would expect from a driver, like a
normal joystick device and a event device, works in all
games in which a kernel driver would work
- allows you to handle analog-triggers as a single z-axis,
as buttons or as seperate axis
- allows you to handle the dpad as buttons or as axis
- allows you to set the LED status of the Xbox360 gamepad
- allows you to set the rumble motors, for use in scripts for
new mail notification
- it supports the use multiple gamepads by starting multiple
instances of the driver
- allows you to remap buttons and axes
- allows you to configure the deadzone
Missing features
- Xbox's analog face buttons can't be used via the joystick
device, since they are converted to digital ones
- no chatpad support
- no headset support
- no proper support for running it as daemon
Supported and tested devices
- Xbox1 controller, both official and third party
- Xbox360 USB controller
- Xbox360 wireless controller via the USB wireless receiver
- Xbox360 USB guitar and drum kit
- Thrustmaster Dual Power 3 Gamepad
How to help
Three things are currently not working, the headset, the
chatpad and the racing wheel. With the headset it is relativly
easy to capture and play sound, but I don't know the sound
format that is used. Two samples of the raw data:
If you have any idea what format that could be let me
know. Playing it as 8bit PCM, Mono, 8192Hz makes the sound
somewhat understandable, but there is likely something more
going on.
The chatpad is tricker, since it doesn't send out any data on
its own, it likely needs some magical init string, but
figuring that out might require a USB protocol analysing
device to which I don't have access. Capturing the USB data
from Windows won't work, since the official windows driver
doesn't support the chatpad either.
Update: We got
a first protocol log, discussion is going
on here.
The racing wheel support should be doable if somebody wants to
spend some time on it, according to first reports the device
sends out events, so those just need to be deciphered. It is
also supported by the Windows driver, so capturing the
communication is possible.
If you can help with either of these or just have a feature
request, drop me a mail
to grumbel@gmx.de or
contact me via ICQ:59461927 or Jabber xmpp:grumbel@jabber.org.
Contact / Discussion
A Google Group for discussion around xboxdrv exist at:
Source Code Download
Git Repository
You can get xboxdrv
from github
or via http from seul.org. Both repositories are identical.
- git clone http://pingus.seul.org/~grumbel/xboxdrv.git
- git clone git://github.com/Grumbel/xboxdrv.git
Links
© 2008 Ingo Ruhnke
<grumbel@gmx.de>