diff options
| -rw-r--r-- | Documentation/input/xpad.txt | 123 |
1 files changed, 83 insertions, 40 deletions
diff --git a/Documentation/input/xpad.txt b/Documentation/input/xpad.txt index 7cc9a436e6a1..d1b23f295db4 100644 --- a/Documentation/input/xpad.txt +++ b/Documentation/input/xpad.txt | |||
| @@ -1,18 +1,22 @@ | |||
| 1 | xpad - Linux USB driver for X-Box gamepads | 1 | xpad - Linux USB driver for Xbox compatible controllers |
| 2 | 2 | ||
| 3 | This is the very first release of a driver for X-Box gamepads. | 3 | This driver exposes all first-party and third-party Xbox compatible |
| 4 | Basically, this was hacked away in just a few hours, so don't expect | 4 | controllers. It has a long history and has enjoyed considerable usage |
| 5 | miracles. | 5 | as Window's xinput library caused most PC games to focus on Xbox |
| 6 | controller compatibility. | ||
| 6 | 7 | ||
| 7 | In particular, there is currently NO support for the rumble pack. | 8 | Due to backwards compatibility all buttons are reported as digital. |
| 8 | You won't find many ff-aware linux applications anyway. | 9 | This only effects Original Xbox controllers. All later controller models |
| 10 | have only digital face buttons. | ||
| 11 | |||
| 12 | Rumble is supported on some models of Xbox 360 controllers but not of | ||
| 13 | Original Xbox controllers nor on Xbox One controllers. As of writing | ||
| 14 | the Xbox One's rumble protocol has not been reverse engineered but in | ||
| 15 | the future could be supported. | ||
| 9 | 16 | ||
| 10 | 17 | ||
| 11 | 0. Notes | 18 | 0. Notes |
| 12 | -------- | 19 | -------- |
| 13 | |||
| 14 | Driver updated for kernel 2.6.17.11. (Based on a patch for 2.6.11.4.) | ||
| 15 | |||
| 16 | The number of buttons/axes reported varies based on 3 things: | 20 | The number of buttons/axes reported varies based on 3 things: |
| 17 | - if you are using a known controller | 21 | - if you are using a known controller |
| 18 | - if you are using a known dance pad | 22 | - if you are using a known dance pad |
| @@ -20,12 +24,16 @@ The number of buttons/axes reported varies based on 3 things: | |||
| 20 | module configuration for "Map D-PAD to buttons rather than axes for unknown | 24 | module configuration for "Map D-PAD to buttons rather than axes for unknown |
| 21 | pads" (module option dpad_to_buttons) | 25 | pads" (module option dpad_to_buttons) |
| 22 | 26 | ||
| 23 | If you set dpad_to_buttons to 0 and you are using an unknown device (one | 27 | If you set dpad_to_buttons to N and you are using an unknown device |
| 24 | not listed below), the driver will map the directional pad to axes (X/Y), | 28 | the driver will map the directional pad to axes (X/Y). |
| 25 | if you said N it will map the d-pad to buttons, which is needed for dance | 29 | If you said Y it will map the d-pad to buttons, which is needed for dance |
| 26 | style games to function correctly. The default is Y. | 30 | style games to function correctly. The default is Y. |
| 31 | |||
| 32 | dpad_to_buttons has no effect for known pads. A erroneous commit message | ||
| 33 | claimed dpad_to_buttons could be used to force behavior on known devices. | ||
| 34 | This is not true. Both dpad_to_buttons and triggers_to_buttons only affect | ||
| 35 | unknown controllers. | ||
| 27 | 36 | ||
| 28 | dpad_to_buttons has no effect for known pads. | ||
| 29 | 37 | ||
| 30 | 0.1 Normal Controllers | 38 | 0.1 Normal Controllers |
| 31 | ---------------------- | 39 | ---------------------- |
| @@ -80,17 +88,29 @@ to the list of supported devices, ensuring that it will work out of the | |||
| 80 | box in the future. | 88 | box in the future. |
| 81 | 89 | ||
| 82 | 90 | ||
| 83 | 1. USB adapter | 91 | 1. USB adapters |
| 84 | -------------- | 92 | -------------- |
| 93 | All generations of Xbox controllers speak USB over the wire. | ||
| 94 | - Original Xbox controllers use a proprietary connector and require adapters. | ||
| 95 | - Wireless Xbox 360 controllers require a 'Xbox 360 Wireless Gaming Receiver | ||
| 96 | for Windows' | ||
| 97 | - Wired Xbox 360 controllers use standard USB connectors. | ||
| 98 | - Xbox One controllers can be wireless but speak Wi-Fi Direct and are not | ||
| 99 | yet supported. | ||
| 100 | - Xbox One controllers can be wired and use standard Micro-USB connectors. | ||
| 101 | |||
| 85 | 102 | ||
| 86 | Before you can actually use the driver, you need to get yourself an | 103 | |
| 87 | adapter cable to connect the X-Box controller to your Linux-Box. You | 104 | 1.1 Original Xbox USB adapters |
| 88 | can buy these online fairly cheap, or build your own. | 105 | -------------- |
| 106 | Using this driver with an Original Xbox controller requires an | ||
| 107 | adapter cable to break out the proprietary connector's pins to USB. | ||
| 108 | You can buy these online fairly cheap, or build your own. | ||
| 89 | 109 | ||
| 90 | Such a cable is pretty easy to build. The Controller itself is a USB | 110 | Such a cable is pretty easy to build. The Controller itself is a USB |
| 91 | compound device (a hub with three ports for two expansion slots and | 111 | compound device (a hub with three ports for two expansion slots and |
| 92 | the controller device) with the only difference in a nonstandard connector | 112 | the controller device) with the only difference in a nonstandard connector |
| 93 | (5 pins vs. 4 on standard USB connector). | 113 | (5 pins vs. 4 on standard USB 1.0 connectors). |
| 94 | 114 | ||
| 95 | You just need to solder a USB connector onto the cable and keep the | 115 | You just need to solder a USB connector onto the cable and keep the |
| 96 | yellow wire unconnected. The other pins have the same order on both | 116 | yellow wire unconnected. The other pins have the same order on both |
| @@ -102,26 +122,41 @@ original one. You can buy an extension cable and cut that instead. That way, | |||
| 102 | you can still use the controller with your X-Box, if you have one ;) | 122 | you can still use the controller with your X-Box, if you have one ;) |
| 103 | 123 | ||
| 104 | 124 | ||
| 125 | |||
| 105 | 2. Driver Installation | 126 | 2. Driver Installation |
| 106 | ---------------------- | 127 | ---------------------- |
| 107 | 128 | ||
| 108 | Once you have the adapter cable and the controller is connected, you need | 129 | Once you have the adapter cable, if needed, and the controller connected |
| 109 | to load your USB subsystem and should cat /proc/bus/usb/devices. | 130 | the xpad module should be auto loaded. To confirm you can cat |
| 110 | There should be an entry like the one at the end [4]. | 131 | /proc/bus/usb/devices. There should be an entry like the one at the end [4]. |
| 132 | |||
| 133 | |||
| 111 | 134 | ||
| 112 | Currently (as of version 0.0.6), the following devices are included: | 135 | 3. Supported Controllers |
| 113 | original Microsoft XBOX controller (US), vendor=0x045e, product=0x0202 | 136 | ------------------------ |
| 114 | smaller Microsoft XBOX controller (US), vendor=0x045e, product=0x0289 | 137 | For a full list of supported controllers and associated vendor and product |
| 138 | IDs see the xpad_device[] array[6]. | ||
| 139 | |||
| 140 | As of the historic version 0.0.6 (2006-10-10) the following devices | ||
| 141 | were supported: | ||
| 142 | original Microsoft XBOX controller (US), vendor=0x045e, product=0x0202 | ||
| 143 | smaller Microsoft XBOX controller (US), vendor=0x045e, product=0x0289 | ||
| 115 | original Microsoft XBOX controller (Japan), vendor=0x045e, product=0x0285 | 144 | original Microsoft XBOX controller (Japan), vendor=0x045e, product=0x0285 |
| 116 | InterAct PowerPad Pro (Germany), vendor=0x05fd, product=0x107a | 145 | InterAct PowerPad Pro (Germany), vendor=0x05fd, product=0x107a |
| 117 | RedOctane Xbox Dance Pad (US), vendor=0x0c12, product=0x8809 | 146 | RedOctane Xbox Dance Pad (US), vendor=0x0c12, product=0x8809 |
| 147 | |||
| 148 | Unrecognized models of Xbox controllers should function as Generic | ||
| 149 | Xbox controllers. Unrecognized Dance Pad controllers require setting | ||
| 150 | the module option 'dpad_to_buttons'. | ||
| 151 | |||
| 152 | If you have an unrecognized controller please see 0.3 - Unknown Controllers | ||
| 118 | 153 | ||
| 119 | The driver should work with xbox pads not listed above as well, however | ||
| 120 | you will need to do something extra for dance pads to work. | ||
| 121 | 154 | ||
| 122 | If you have a controller not listed above, see 0.3 - Unknown Controllers | 155 | 4. Manual Testing |
| 156 | ----------------- | ||
| 157 | To test this driver's functionality you may use 'jstest'. | ||
| 123 | 158 | ||
| 124 | If you compiled and installed the driver, test the functionality: | 159 | For example: |
| 125 | > modprobe xpad | 160 | > modprobe xpad |
| 126 | > modprobe joydev | 161 | > modprobe joydev |
| 127 | > jstest /dev/js0 | 162 | > jstest /dev/js0 |
| @@ -134,7 +169,8 @@ show 20 inputs (6 axes, 14 buttons). | |||
| 134 | It works? Voila, you're done ;) | 169 | It works? Voila, you're done ;) |
| 135 | 170 | ||
| 136 | 171 | ||
| 137 | 3. Thanks | 172 | |
| 173 | 5. Thanks | ||
| 138 | --------- | 174 | --------- |
| 139 | 175 | ||
| 140 | I have to thank ITO Takayuki for the detailed info on his site | 176 | I have to thank ITO Takayuki for the detailed info on his site |
| @@ -145,14 +181,14 @@ His useful info and both the usb-skeleton as well as the iforce input driver | |||
| 145 | the basic functionality. | 181 | the basic functionality. |
| 146 | 182 | ||
| 147 | 183 | ||
| 148 | 4. References | ||
| 149 | ------------- | ||
| 150 | 184 | ||
| 151 | 1. http://euc.jp/periphs/xbox-controller.ja.html (ITO Takayuki) | 185 | 6. References |
| 152 | 2. http://xpad.xbox-scene.com/ | 186 | ------------- |
| 153 | 3. http://www.markosweb.com/www/xboxhackz.com/ | ||
| 154 | 187 | ||
| 155 | 4. /proc/bus/usb/devices - dump from InterAct PowerPad Pro (Germany): | 188 | [1]: http://euc.jp/periphs/xbox-controller.ja.html (ITO Takayuki) |
| 189 | [2]: http://xpad.xbox-scene.com/ | ||
| 190 | [3]: http://www.markosweb.com/www/xboxhackz.com/ | ||
| 191 | [4]: /proc/bus/usb/devices - dump from InterAct PowerPad Pro (Germany): | ||
| 156 | 192 | ||
| 157 | T: Bus=01 Lev=03 Prnt=04 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0 | 193 | T: Bus=01 Lev=03 Prnt=04 Port=00 Cnt=01 Dev#= 5 Spd=12 MxCh= 0 |
| 158 | D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=32 #Cfgs= 1 | 194 | D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=32 #Cfgs= 1 |
| @@ -162,7 +198,7 @@ I: If#= 0 Alt= 0 #EPs= 2 Cls=58(unk. ) Sub=42 Prot=00 Driver=(none) | |||
| 162 | E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl= 10ms | 198 | E: Ad=81(I) Atr=03(Int.) MxPS= 32 Ivl= 10ms |
| 163 | E: Ad=02(O) Atr=03(Int.) MxPS= 32 Ivl= 10ms | 199 | E: Ad=02(O) Atr=03(Int.) MxPS= 32 Ivl= 10ms |
| 164 | 200 | ||
| 165 | 5. /proc/bus/usb/devices - dump from Redoctane Xbox Dance Pad (US): | 201 | [5]: /proc/bus/usb/devices - dump from Redoctane Xbox Dance Pad (US): |
| 166 | 202 | ||
| 167 | T: Bus=01 Lev=02 Prnt=09 Port=00 Cnt=01 Dev#= 10 Spd=12 MxCh= 0 | 203 | T: Bus=01 Lev=02 Prnt=09 Port=00 Cnt=01 Dev#= 10 Spd=12 MxCh= 0 |
| 168 | D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 | 204 | D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 |
| @@ -173,7 +209,12 @@ I: If#= 0 Alt= 0 #EPs= 2 Cls=58(unk. ) Sub=42 Prot=00 Driver=xpad | |||
| 173 | E: Ad=82(I) Atr=03(Int.) MxPS= 32 Ivl=4ms | 209 | E: Ad=82(I) Atr=03(Int.) MxPS= 32 Ivl=4ms |
| 174 | E: Ad=02(O) Atr=03(Int.) MxPS= 32 Ivl=4ms | 210 | E: Ad=02(O) Atr=03(Int.) MxPS= 32 Ivl=4ms |
| 175 | 211 | ||
| 176 | -- | 212 | [6]: http://lxr.free-electrons.com/ident?i=xpad_device |
| 213 | |||
| 214 | |||
| 215 | |||
| 216 | 7. Historic Edits | ||
| 217 | ----------------- | ||
| 177 | Marko Friedemann <mfr@bmx-chemnitz.de> | 218 | Marko Friedemann <mfr@bmx-chemnitz.de> |
| 178 | 2002-07-16 | 219 | 2002-07-16 |
| 179 | - original doc | 220 | - original doc |
| @@ -181,3 +222,5 @@ Marko Friedemann <mfr@bmx-chemnitz.de> | |||
| 181 | Dominic Cerquetti <binary1230@yahoo.com> | 222 | Dominic Cerquetti <binary1230@yahoo.com> |
| 182 | 2005-03-19 | 223 | 2005-03-19 |
| 183 | - added stuff for dance pads, new d-pad->axes mappings | 224 | - added stuff for dance pads, new d-pad->axes mappings |
| 225 | |||
| 226 | Later changes may be viewed with 'git log Documentation/input/xpad.txt' | ||
