http://pingus.seul.org/~grumbel/xboxdrv/

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]>


Reply via email to