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.
News
- 01. November 2009
- 0.4.9 released
- Saitek P2500 support (no rumble, untested)
- Hori Real Arcade Pro Ex support
- changes in the thread handling to reduce latency
- include fixes for g++-4.4
- 30. July 2009
- 0.4.8 released
- usb reading in separate thread, should fix missed events and
stuck buttons
- some SCons configuration magic for better compatibility
- 29. July 2009
- 0.4.7 released
- support for Pelican TSZ360 pad
- support for Saitek P3200 pad
- support for Thrustmaster Firestorm Dual Power (044f:b312)
- deadzone support for trigger via --deadzone-trigger NUM
- some documentation improvements
- 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
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 [email protected]
or contact me via ICQ:59461927 or Jabber xmpp:[email protected].
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.
Links
© 2009 Ingo
Ruhnke <[email protected]>