1*4882a593Smuzhiyun.. include:: <isonum.txt> 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun.. _joystick-doc: 4*4882a593Smuzhiyun 5*4882a593SmuzhiyunIntroduction 6*4882a593Smuzhiyun============ 7*4882a593Smuzhiyun 8*4882a593SmuzhiyunThe joystick driver for Linux provides support for a variety of joysticks 9*4882a593Smuzhiyunand similar devices. It is based on a larger project aiming to support all 10*4882a593Smuzhiyuninput devices in Linux. 11*4882a593Smuzhiyun 12*4882a593SmuzhiyunThe mailing list for the project is: 13*4882a593Smuzhiyun 14*4882a593Smuzhiyun linux-input@vger.kernel.org 15*4882a593Smuzhiyun 16*4882a593Smuzhiyunsend "subscribe linux-input" to majordomo@vger.kernel.org to subscribe to it. 17*4882a593Smuzhiyun 18*4882a593SmuzhiyunUsage 19*4882a593Smuzhiyun===== 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunFor basic usage you just choose the right options in kernel config and 22*4882a593Smuzhiyunyou should be set. 23*4882a593Smuzhiyun 24*4882a593SmuzhiyunUtilities 25*4882a593Smuzhiyun--------- 26*4882a593Smuzhiyun 27*4882a593SmuzhiyunFor testing and other purposes (for example serial devices), there is a set 28*4882a593Smuzhiyunof utilities, such as ``jstest``, ``jscal``, and ``evtest``, 29*4882a593Smuzhiyunusually packaged as ``joystick``, ``input-utils``, ``evtest``, and so on. 30*4882a593Smuzhiyun 31*4882a593Smuzhiyun``inputattach`` utility is required if your joystick is connected to a 32*4882a593Smuzhiyunserial port. 33*4882a593Smuzhiyun 34*4882a593SmuzhiyunDevice nodes 35*4882a593Smuzhiyun------------ 36*4882a593Smuzhiyun 37*4882a593SmuzhiyunFor applications to be able to use the joysticks, device nodes should be 38*4882a593Smuzhiyuncreated in /dev. Normally it is done automatically by the system, but 39*4882a593Smuzhiyunit can also be done by hand:: 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun cd /dev 42*4882a593Smuzhiyun rm js* 43*4882a593Smuzhiyun mkdir input 44*4882a593Smuzhiyun mknod input/js0 c 13 0 45*4882a593Smuzhiyun mknod input/js1 c 13 1 46*4882a593Smuzhiyun mknod input/js2 c 13 2 47*4882a593Smuzhiyun mknod input/js3 c 13 3 48*4882a593Smuzhiyun ln -s input/js0 js0 49*4882a593Smuzhiyun ln -s input/js1 js1 50*4882a593Smuzhiyun ln -s input/js2 js2 51*4882a593Smuzhiyun ln -s input/js3 js3 52*4882a593Smuzhiyun 53*4882a593SmuzhiyunFor testing with inpututils it's also convenient to create these:: 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun mknod input/event0 c 13 64 56*4882a593Smuzhiyun mknod input/event1 c 13 65 57*4882a593Smuzhiyun mknod input/event2 c 13 66 58*4882a593Smuzhiyun mknod input/event3 c 13 67 59*4882a593Smuzhiyun 60*4882a593SmuzhiyunModules needed 61*4882a593Smuzhiyun-------------- 62*4882a593Smuzhiyun 63*4882a593SmuzhiyunFor all joystick drivers to function, you'll need the userland interface 64*4882a593Smuzhiyunmodule in kernel, either loaded or compiled in:: 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun modprobe joydev 67*4882a593Smuzhiyun 68*4882a593SmuzhiyunFor gameport joysticks, you'll have to load the gameport driver as well:: 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun modprobe ns558 71*4882a593Smuzhiyun 72*4882a593SmuzhiyunAnd for serial port joysticks, you'll need the serial input line 73*4882a593Smuzhiyundiscipline module loaded and the inputattach utility started:: 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun modprobe serport 76*4882a593Smuzhiyun inputattach -xxx /dev/tts/X & 77*4882a593Smuzhiyun 78*4882a593SmuzhiyunIn addition to that, you'll need the joystick driver module itself, most 79*4882a593Smuzhiyunusually you'll have an analog joystick:: 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun modprobe analog 82*4882a593Smuzhiyun 83*4882a593SmuzhiyunFor automatic module loading, something like this might work - tailor to 84*4882a593Smuzhiyunyour needs:: 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun alias tty-ldisc-2 serport 87*4882a593Smuzhiyun alias char-major-13 input 88*4882a593Smuzhiyun above input joydev ns558 analog 89*4882a593Smuzhiyun options analog map=gamepad,none,2btn 90*4882a593Smuzhiyun 91*4882a593SmuzhiyunVerifying that it works 92*4882a593Smuzhiyun----------------------- 93*4882a593Smuzhiyun 94*4882a593SmuzhiyunFor testing the joystick driver functionality, there is the jstest 95*4882a593Smuzhiyunprogram in the utilities package. You run it by typing:: 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun jstest /dev/input/js0 98*4882a593Smuzhiyun 99*4882a593SmuzhiyunAnd it should show a line with the joystick values, which update as you 100*4882a593Smuzhiyunmove the stick, and press its buttons. The axes should all be zero when the 101*4882a593Smuzhiyunjoystick is in the center position. They should not jitter by themselves to 102*4882a593Smuzhiyunother close values, and they also should be steady in any other position of 103*4882a593Smuzhiyunthe stick. They should have the full range from -32767 to 32767. If all this 104*4882a593Smuzhiyunis met, then it's all fine, and you can play the games. :) 105*4882a593Smuzhiyun 106*4882a593SmuzhiyunIf it's not, then there might be a problem. Try to calibrate the joystick, 107*4882a593Smuzhiyunand if it still doesn't work, read the drivers section of this file, the 108*4882a593Smuzhiyuntroubleshooting section, and the FAQ. 109*4882a593Smuzhiyun 110*4882a593SmuzhiyunCalibration 111*4882a593Smuzhiyun----------- 112*4882a593Smuzhiyun 113*4882a593SmuzhiyunFor most joysticks you won't need any manual calibration, since the 114*4882a593Smuzhiyunjoystick should be autocalibrated by the driver automagically. However, with 115*4882a593Smuzhiyunsome analog joysticks, that either do not use linear resistors, or if you 116*4882a593Smuzhiyunwant better precision, you can use the jscal program:: 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun jscal -c /dev/input/js0 119*4882a593Smuzhiyun 120*4882a593Smuzhiyunincluded in the joystick package to set better correction coefficients than 121*4882a593Smuzhiyunwhat the driver would choose itself. 122*4882a593Smuzhiyun 123*4882a593SmuzhiyunAfter calibrating the joystick you can verify if you like the new 124*4882a593Smuzhiyuncalibration using the jstest command, and if you do, you then can save the 125*4882a593Smuzhiyuncorrection coefficients into a file:: 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun jscal -p /dev/input/js0 > /etc/joystick.cal 128*4882a593Smuzhiyun 129*4882a593SmuzhiyunAnd add a line to your rc script executing that file:: 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun source /etc/joystick.cal 132*4882a593Smuzhiyun 133*4882a593SmuzhiyunThis way, after the next reboot your joystick will remain calibrated. You 134*4882a593Smuzhiyuncan also add the ``jscal -p`` line to your shutdown script. 135*4882a593Smuzhiyun 136*4882a593SmuzhiyunHW specific driver information 137*4882a593Smuzhiyun============================== 138*4882a593Smuzhiyun 139*4882a593SmuzhiyunIn this section each of the separate hardware specific drivers is described. 140*4882a593Smuzhiyun 141*4882a593SmuzhiyunAnalog joysticks 142*4882a593Smuzhiyun---------------- 143*4882a593Smuzhiyun 144*4882a593SmuzhiyunThe analog.c uses the standard analog inputs of the gameport, and thus 145*4882a593Smuzhiyunsupports all standard joysticks and gamepads. It uses a very advanced 146*4882a593Smuzhiyunroutine for this, allowing for data precision that can't be found on any 147*4882a593Smuzhiyunother system. 148*4882a593Smuzhiyun 149*4882a593SmuzhiyunIt also supports extensions like additional hats and buttons compatible 150*4882a593Smuzhiyunwith CH Flightstick Pro, ThrustMaster FCS or 6 and 8 button gamepads. Saitek 151*4882a593SmuzhiyunCyborg 'digital' joysticks are also supported by this driver, because 152*4882a593Smuzhiyunthey're basically souped up CHF sticks. 153*4882a593Smuzhiyun 154*4882a593SmuzhiyunHowever the only types that can be autodetected are: 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun* 2-axis, 4-button joystick 157*4882a593Smuzhiyun* 3-axis, 4-button joystick 158*4882a593Smuzhiyun* 4-axis, 4-button joystick 159*4882a593Smuzhiyun* Saitek Cyborg 'digital' joysticks 160*4882a593Smuzhiyun 161*4882a593SmuzhiyunFor other joystick types (more/less axes, hats, and buttons) support 162*4882a593Smuzhiyunyou'll need to specify the types either on the kernel command line or on the 163*4882a593Smuzhiyunmodule command line, when inserting analog into the kernel. The 164*4882a593Smuzhiyunparameters are:: 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun analog.map=<type1>,<type2>,<type3>,.... 167*4882a593Smuzhiyun 168*4882a593Smuzhiyun'type' is type of the joystick from the table below, defining joysticks 169*4882a593Smuzhiyunpresent on gameports in the system, starting with gameport0, second 'type' 170*4882a593Smuzhiyunentry defining joystick on gameport1 and so on. 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun ========= ===================================================== 173*4882a593Smuzhiyun Type Meaning 174*4882a593Smuzhiyun ========= ===================================================== 175*4882a593Smuzhiyun none No analog joystick on that port 176*4882a593Smuzhiyun auto Autodetect joystick 177*4882a593Smuzhiyun 2btn 2-button n-axis joystick 178*4882a593Smuzhiyun y-joy Two 2-button 2-axis joysticks on an Y-cable 179*4882a593Smuzhiyun y-pad Two 2-button 2-axis gamepads on an Y-cable 180*4882a593Smuzhiyun fcs Thrustmaster FCS compatible joystick 181*4882a593Smuzhiyun chf Joystick with a CH Flightstick compatible hat 182*4882a593Smuzhiyun fullchf CH Flightstick compatible with two hats and 6 buttons 183*4882a593Smuzhiyun gamepad 4/6-button n-axis gamepad 184*4882a593Smuzhiyun gamepad8 8-button 2-axis gamepad 185*4882a593Smuzhiyun ========= ===================================================== 186*4882a593Smuzhiyun 187*4882a593SmuzhiyunIn case your joystick doesn't fit in any of the above categories, you can 188*4882a593Smuzhiyunspecify the type as a number by combining the bits in the table below. This 189*4882a593Smuzhiyunis not recommended unless you really know what are you doing. It's not 190*4882a593Smuzhiyundangerous, but not simple either. 191*4882a593Smuzhiyun 192*4882a593Smuzhiyun ==== ========================= 193*4882a593Smuzhiyun Bit Meaning 194*4882a593Smuzhiyun ==== ========================= 195*4882a593Smuzhiyun 0 Axis X1 196*4882a593Smuzhiyun 1 Axis Y1 197*4882a593Smuzhiyun 2 Axis X2 198*4882a593Smuzhiyun 3 Axis Y2 199*4882a593Smuzhiyun 4 Button A 200*4882a593Smuzhiyun 5 Button B 201*4882a593Smuzhiyun 6 Button C 202*4882a593Smuzhiyun 7 Button D 203*4882a593Smuzhiyun 8 CHF Buttons X and Y 204*4882a593Smuzhiyun 9 CHF Hat 1 205*4882a593Smuzhiyun 10 CHF Hat 2 206*4882a593Smuzhiyun 11 FCS Hat 207*4882a593Smuzhiyun 12 Pad Button X 208*4882a593Smuzhiyun 13 Pad Button Y 209*4882a593Smuzhiyun 14 Pad Button U 210*4882a593Smuzhiyun 15 Pad Button V 211*4882a593Smuzhiyun 16 Saitek F1-F4 Buttons 212*4882a593Smuzhiyun 17 Saitek Digital Mode 213*4882a593Smuzhiyun 19 GamePad 214*4882a593Smuzhiyun 20 Joy2 Axis X1 215*4882a593Smuzhiyun 21 Joy2 Axis Y1 216*4882a593Smuzhiyun 22 Joy2 Axis X2 217*4882a593Smuzhiyun 23 Joy2 Axis Y2 218*4882a593Smuzhiyun 24 Joy2 Button A 219*4882a593Smuzhiyun 25 Joy2 Button B 220*4882a593Smuzhiyun 26 Joy2 Button C 221*4882a593Smuzhiyun 27 Joy2 Button D 222*4882a593Smuzhiyun 31 Joy2 GamePad 223*4882a593Smuzhiyun ==== ========================= 224*4882a593Smuzhiyun 225*4882a593SmuzhiyunMicrosoft SideWinder joysticks 226*4882a593Smuzhiyun------------------------------ 227*4882a593Smuzhiyun 228*4882a593SmuzhiyunMicrosoft 'Digital Overdrive' protocol is supported by the sidewinder.c 229*4882a593Smuzhiyunmodule. All currently supported joysticks: 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun* Microsoft SideWinder 3D Pro 232*4882a593Smuzhiyun* Microsoft SideWinder Force Feedback Pro 233*4882a593Smuzhiyun* Microsoft SideWinder Force Feedback Wheel 234*4882a593Smuzhiyun* Microsoft SideWinder FreeStyle Pro 235*4882a593Smuzhiyun* Microsoft SideWinder GamePad (up to four, chained) 236*4882a593Smuzhiyun* Microsoft SideWinder Precision Pro 237*4882a593Smuzhiyun* Microsoft SideWinder Precision Pro USB 238*4882a593Smuzhiyun 239*4882a593Smuzhiyunare autodetected, and thus no module parameters are needed. 240*4882a593Smuzhiyun 241*4882a593SmuzhiyunThere is one caveat with the 3D Pro. There are 9 buttons reported, 242*4882a593Smuzhiyunalthough the joystick has only 8. The 9th button is the mode switch on the 243*4882a593Smuzhiyunrear side of the joystick. However, moving it, you'll reset the joystick, 244*4882a593Smuzhiyunand make it unresponsive for about a one third of a second. Furthermore, the 245*4882a593Smuzhiyunjoystick will also re-center itself, taking the position it was in during 246*4882a593Smuzhiyunthis time as a new center position. Use it if you want, but think first. 247*4882a593Smuzhiyun 248*4882a593SmuzhiyunThe SideWinder Standard is not a digital joystick, and thus is supported 249*4882a593Smuzhiyunby the analog driver described above. 250*4882a593Smuzhiyun 251*4882a593SmuzhiyunLogitech ADI devices 252*4882a593Smuzhiyun-------------------- 253*4882a593Smuzhiyun 254*4882a593SmuzhiyunLogitech ADI protocol is supported by the adi.c module. It should support 255*4882a593Smuzhiyunany Logitech device using this protocol. This includes, but is not limited 256*4882a593Smuzhiyunto: 257*4882a593Smuzhiyun 258*4882a593Smuzhiyun* Logitech CyberMan 2 259*4882a593Smuzhiyun* Logitech ThunderPad Digital 260*4882a593Smuzhiyun* Logitech WingMan Extreme Digital 261*4882a593Smuzhiyun* Logitech WingMan Formula 262*4882a593Smuzhiyun* Logitech WingMan Interceptor 263*4882a593Smuzhiyun* Logitech WingMan GamePad 264*4882a593Smuzhiyun* Logitech WingMan GamePad USB 265*4882a593Smuzhiyun* Logitech WingMan GamePad Extreme 266*4882a593Smuzhiyun* Logitech WingMan Extreme Digital 3D 267*4882a593Smuzhiyun 268*4882a593SmuzhiyunADI devices are autodetected, and the driver supports up to two (any 269*4882a593Smuzhiyuncombination of) devices on a single gameport, using an Y-cable or chained 270*4882a593Smuzhiyuntogether. 271*4882a593Smuzhiyun 272*4882a593SmuzhiyunLogitech WingMan Joystick, Logitech WingMan Attack, Logitech WingMan 273*4882a593SmuzhiyunExtreme and Logitech WingMan ThunderPad are not digital joysticks and are 274*4882a593Smuzhiyunhandled by the analog driver described above. Logitech WingMan Warrior and 275*4882a593SmuzhiyunLogitech Magellan are supported by serial drivers described below. Logitech 276*4882a593SmuzhiyunWingMan Force and Logitech WingMan Formula Force are supported by the 277*4882a593SmuzhiyunI-Force driver described below. Logitech CyberMan is not supported yet. 278*4882a593Smuzhiyun 279*4882a593SmuzhiyunGravis GrIP 280*4882a593Smuzhiyun----------- 281*4882a593Smuzhiyun 282*4882a593SmuzhiyunGravis GrIP protocol is supported by the grip.c module. It currently 283*4882a593Smuzhiyunsupports: 284*4882a593Smuzhiyun 285*4882a593Smuzhiyun* Gravis GamePad Pro 286*4882a593Smuzhiyun* Gravis BlackHawk Digital 287*4882a593Smuzhiyun* Gravis Xterminator 288*4882a593Smuzhiyun* Gravis Xterminator DualControl 289*4882a593Smuzhiyun 290*4882a593SmuzhiyunAll these devices are autodetected, and you can even use any combination 291*4882a593Smuzhiyunof up to two of these pads either chained together or using an Y-cable on a 292*4882a593Smuzhiyunsingle gameport. 293*4882a593Smuzhiyun 294*4882a593SmuzhiyunGrIP MultiPort isn't supported yet. Gravis Stinger is a serial device and is 295*4882a593Smuzhiyunsupported by the stinger driver. Other Gravis joysticks are supported by the 296*4882a593Smuzhiyunanalog driver. 297*4882a593Smuzhiyun 298*4882a593SmuzhiyunFPGaming A3D and MadCatz A3D 299*4882a593Smuzhiyun---------------------------- 300*4882a593Smuzhiyun 301*4882a593SmuzhiyunThe Assassin 3D protocol created by FPGaming, is used both by FPGaming 302*4882a593Smuzhiyunthemselves and is licensed to MadCatz. A3D devices are supported by the 303*4882a593Smuzhiyuna3d.c module. It currently supports: 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun* FPGaming Assassin 3D 306*4882a593Smuzhiyun* MadCatz Panther 307*4882a593Smuzhiyun* MadCatz Panther XL 308*4882a593Smuzhiyun 309*4882a593SmuzhiyunAll these devices are autodetected. Because the Assassin 3D and the Panther 310*4882a593Smuzhiyunallow connecting analog joysticks to them, you'll need to load the analog 311*4882a593Smuzhiyundriver as well to handle the attached joysticks. 312*4882a593Smuzhiyun 313*4882a593SmuzhiyunThe trackball should work with USB mousedev module as a normal mouse. See 314*4882a593Smuzhiyunthe USB documentation for how to setup an USB mouse. 315*4882a593Smuzhiyun 316*4882a593SmuzhiyunThrustMaster DirectConnect (BSP) 317*4882a593Smuzhiyun-------------------------------- 318*4882a593Smuzhiyun 319*4882a593SmuzhiyunThe TM DirectConnect (BSP) protocol is supported by the tmdc.c 320*4882a593Smuzhiyunmodule. This includes, but is not limited to: 321*4882a593Smuzhiyun 322*4882a593Smuzhiyun* ThrustMaster Millennium 3D Interceptor 323*4882a593Smuzhiyun* ThrustMaster 3D Rage Pad 324*4882a593Smuzhiyun* ThrustMaster Fusion Digital Game Pad 325*4882a593Smuzhiyun 326*4882a593SmuzhiyunDevices not directly supported, but hopefully working are: 327*4882a593Smuzhiyun 328*4882a593Smuzhiyun* ThrustMaster FragMaster 329*4882a593Smuzhiyun* ThrustMaster Attack Throttle 330*4882a593Smuzhiyun 331*4882a593SmuzhiyunIf you have one of these, contact me. 332*4882a593Smuzhiyun 333*4882a593SmuzhiyunTMDC devices are autodetected, and thus no parameters to the module 334*4882a593Smuzhiyunare needed. Up to two TMDC devices can be connected to one gameport, using 335*4882a593Smuzhiyunan Y-cable. 336*4882a593Smuzhiyun 337*4882a593SmuzhiyunCreative Labs Blaster 338*4882a593Smuzhiyun--------------------- 339*4882a593Smuzhiyun 340*4882a593SmuzhiyunThe Blaster protocol is supported by the cobra.c module. It supports only 341*4882a593Smuzhiyunthe: 342*4882a593Smuzhiyun 343*4882a593Smuzhiyun* Creative Blaster GamePad Cobra 344*4882a593Smuzhiyun 345*4882a593SmuzhiyunUp to two of these can be used on a single gameport, using an Y-cable. 346*4882a593Smuzhiyun 347*4882a593SmuzhiyunGenius Digital joysticks 348*4882a593Smuzhiyun------------------------ 349*4882a593Smuzhiyun 350*4882a593SmuzhiyunThe Genius digitally communicating joysticks are supported by the gf2k.c 351*4882a593Smuzhiyunmodule. This includes: 352*4882a593Smuzhiyun 353*4882a593Smuzhiyun* Genius Flight2000 F-23 joystick 354*4882a593Smuzhiyun* Genius Flight2000 F-31 joystick 355*4882a593Smuzhiyun* Genius G-09D gamepad 356*4882a593Smuzhiyun 357*4882a593SmuzhiyunOther Genius digital joysticks are not supported yet, but support can be 358*4882a593Smuzhiyunadded fairly easily. 359*4882a593Smuzhiyun 360*4882a593SmuzhiyunInterAct Digital joysticks 361*4882a593Smuzhiyun-------------------------- 362*4882a593Smuzhiyun 363*4882a593SmuzhiyunThe InterAct digitally communicating joysticks are supported by the 364*4882a593Smuzhiyuninteract.c module. This includes: 365*4882a593Smuzhiyun 366*4882a593Smuzhiyun* InterAct HammerHead/FX gamepad 367*4882a593Smuzhiyun* InterAct ProPad8 gamepad 368*4882a593Smuzhiyun 369*4882a593SmuzhiyunOther InterAct digital joysticks are not supported yet, but support can be 370*4882a593Smuzhiyunadded fairly easily. 371*4882a593Smuzhiyun 372*4882a593SmuzhiyunPDPI Lightning 4 gamecards 373*4882a593Smuzhiyun-------------------------- 374*4882a593Smuzhiyun 375*4882a593SmuzhiyunPDPI Lightning 4 gamecards are supported by the lightning.c module. 376*4882a593SmuzhiyunOnce the module is loaded, the analog driver can be used to handle the 377*4882a593Smuzhiyunjoysticks. Digitally communicating joystick will work only on port 0, while 378*4882a593Smuzhiyunusing Y-cables, you can connect up to 8 analog joysticks to a single L4 379*4882a593Smuzhiyuncard, 16 in case you have two in your system. 380*4882a593Smuzhiyun 381*4882a593SmuzhiyunTrident 4DWave / Aureal Vortex 382*4882a593Smuzhiyun------------------------------ 383*4882a593Smuzhiyun 384*4882a593SmuzhiyunSoundcards with a Trident 4DWave DX/NX or Aureal Vortex/Vortex2 chipsets 385*4882a593Smuzhiyunprovide an "Enhanced Game Port" mode where the soundcard handles polling the 386*4882a593Smuzhiyunjoystick. This mode is supported by the pcigame.c module. Once loaded the 387*4882a593Smuzhiyunanalog driver can use the enhanced features of these gameports.. 388*4882a593Smuzhiyun 389*4882a593SmuzhiyunCrystal SoundFusion 390*4882a593Smuzhiyun------------------- 391*4882a593Smuzhiyun 392*4882a593SmuzhiyunSoundcards with Crystal SoundFusion chipsets provide an "Enhanced Game 393*4882a593SmuzhiyunPort", much like the 4DWave or Vortex above. This, and also the normal mode 394*4882a593Smuzhiyunfor the port of the SoundFusion is supported by the cs461x.c module. 395*4882a593Smuzhiyun 396*4882a593SmuzhiyunSoundBlaster Live! 397*4882a593Smuzhiyun------------------ 398*4882a593Smuzhiyun 399*4882a593SmuzhiyunThe Live! has a special PCI gameport, which, although it doesn't provide 400*4882a593Smuzhiyunany "Enhanced" stuff like 4DWave and friends, is quite a bit faster than 401*4882a593Smuzhiyunits ISA counterparts. It also requires special support, hence the 402*4882a593Smuzhiyunemu10k1-gp.c module for it instead of the normal ns558.c one. 403*4882a593Smuzhiyun 404*4882a593SmuzhiyunSoundBlaster 64 and 128 - ES1370 and ES1371, ESS Solo1 and S3 SonicVibes 405*4882a593Smuzhiyun------------------------------------------------------------------------ 406*4882a593Smuzhiyun 407*4882a593SmuzhiyunThese PCI soundcards have specific gameports. They are handled by the 408*4882a593Smuzhiyunsound drivers themselves. Make sure you select gameport support in the 409*4882a593Smuzhiyunjoystick menu and sound card support in the sound menu for your appropriate 410*4882a593Smuzhiyuncard. 411*4882a593Smuzhiyun 412*4882a593SmuzhiyunAmiga 413*4882a593Smuzhiyun----- 414*4882a593Smuzhiyun 415*4882a593SmuzhiyunAmiga joysticks, connected to an Amiga, are supported by the amijoy.c 416*4882a593Smuzhiyundriver. Since they can't be autodetected, the driver has a command line: 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun amijoy.map=<a>,<b> 419*4882a593Smuzhiyun 420*4882a593Smuzhiyuna and b define the joysticks connected to the JOY0DAT and JOY1DAT ports of 421*4882a593Smuzhiyunthe Amiga. 422*4882a593Smuzhiyun 423*4882a593Smuzhiyun ====== =========================== 424*4882a593Smuzhiyun Value Joystick type 425*4882a593Smuzhiyun ====== =========================== 426*4882a593Smuzhiyun 0 None 427*4882a593Smuzhiyun 1 1-button digital joystick 428*4882a593Smuzhiyun ====== =========================== 429*4882a593Smuzhiyun 430*4882a593SmuzhiyunNo more joystick types are supported now, but that should change in the 431*4882a593Smuzhiyunfuture if I get an Amiga in the reach of my fingers. 432*4882a593Smuzhiyun 433*4882a593SmuzhiyunGame console and 8-bit pads and joysticks 434*4882a593Smuzhiyun----------------------------------------- 435*4882a593Smuzhiyun 436*4882a593SmuzhiyunThese pads and joysticks are not designed for PCs and other computers 437*4882a593SmuzhiyunLinux runs on, and usually require a special connector for attaching 438*4882a593Smuzhiyunthem through a parallel port. 439*4882a593Smuzhiyun 440*4882a593SmuzhiyunSee :ref:`joystick-parport` for more info. 441*4882a593Smuzhiyun 442*4882a593SmuzhiyunSpaceTec/LabTec devices 443*4882a593Smuzhiyun----------------------- 444*4882a593Smuzhiyun 445*4882a593SmuzhiyunSpaceTec serial devices communicate using the SpaceWare protocol. It is 446*4882a593Smuzhiyunsupported by the spaceorb.c and spaceball.c drivers. The devices currently 447*4882a593Smuzhiyunsupported by spaceorb.c are: 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun* SpaceTec SpaceBall Avenger 450*4882a593Smuzhiyun* SpaceTec SpaceOrb 360 451*4882a593Smuzhiyun 452*4882a593SmuzhiyunDevices currently supported by spaceball.c are: 453*4882a593Smuzhiyun 454*4882a593Smuzhiyun* SpaceTec SpaceBall 4000 FLX 455*4882a593Smuzhiyun 456*4882a593SmuzhiyunIn addition to having the spaceorb/spaceball and serport modules in the 457*4882a593Smuzhiyunkernel, you also need to attach a serial port to it. to do that, run the 458*4882a593Smuzhiyuninputattach program:: 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun inputattach --spaceorb /dev/tts/x & 461*4882a593Smuzhiyun 462*4882a593Smuzhiyunor:: 463*4882a593Smuzhiyun 464*4882a593Smuzhiyun inputattach --spaceball /dev/tts/x & 465*4882a593Smuzhiyun 466*4882a593Smuzhiyunwhere /dev/tts/x is the serial port which the device is connected to. After 467*4882a593Smuzhiyundoing this, the device will be reported and will start working. 468*4882a593Smuzhiyun 469*4882a593SmuzhiyunThere is one caveat with the SpaceOrb. The button #6, the on the bottom 470*4882a593Smuzhiyunside of the orb, although reported as an ordinary button, causes internal 471*4882a593Smuzhiyunrecentering of the spaceorb, moving the zero point to the position in which 472*4882a593Smuzhiyunthe ball is at the moment of pressing the button. So, think first before 473*4882a593Smuzhiyunyou bind it to some other function. 474*4882a593Smuzhiyun 475*4882a593SmuzhiyunSpaceTec SpaceBall 2003 FLX and 3003 FLX are not supported yet. 476*4882a593Smuzhiyun 477*4882a593SmuzhiyunLogitech SWIFT devices 478*4882a593Smuzhiyun---------------------- 479*4882a593Smuzhiyun 480*4882a593SmuzhiyunThe SWIFT serial protocol is supported by the warrior.c module. It 481*4882a593Smuzhiyuncurrently supports only the: 482*4882a593Smuzhiyun 483*4882a593Smuzhiyun* Logitech WingMan Warrior 484*4882a593Smuzhiyun 485*4882a593Smuzhiyunbut in the future, Logitech CyberMan (the original one, not CM2) could be 486*4882a593Smuzhiyunsupported as well. To use the module, you need to run inputattach after you 487*4882a593Smuzhiyuninsert/compile the module into your kernel:: 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun inputattach --warrior /dev/tts/x & 490*4882a593Smuzhiyun 491*4882a593Smuzhiyun/dev/tts/x is the serial port your Warrior is attached to. 492*4882a593Smuzhiyun 493*4882a593SmuzhiyunMagellan / Space Mouse 494*4882a593Smuzhiyun---------------------- 495*4882a593Smuzhiyun 496*4882a593SmuzhiyunThe Magellan (or Space Mouse), manufactured by LogiCad3d (formerly Space 497*4882a593SmuzhiyunSystems), for many other companies (Logitech, HP, ...) is supported by the 498*4882a593Smuzhiyunjoy-magellan module. It currently supports only the: 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun* Magellan 3D 501*4882a593Smuzhiyun* Space Mouse 502*4882a593Smuzhiyun 503*4882a593Smuzhiyunmodels, the additional buttons on the 'Plus' versions are not supported yet. 504*4882a593Smuzhiyun 505*4882a593SmuzhiyunTo use it, you need to attach the serial port to the driver using the:: 506*4882a593Smuzhiyun 507*4882a593Smuzhiyun inputattach --magellan /dev/tts/x & 508*4882a593Smuzhiyun 509*4882a593Smuzhiyuncommand. After that the Magellan will be detected, initialized, will beep, 510*4882a593Smuzhiyunand the /dev/input/jsX device should become usable. 511*4882a593Smuzhiyun 512*4882a593SmuzhiyunI-Force devices 513*4882a593Smuzhiyun--------------- 514*4882a593Smuzhiyun 515*4882a593SmuzhiyunAll I-Force devices are supported by the iforce module. This includes: 516*4882a593Smuzhiyun 517*4882a593Smuzhiyun* AVB Mag Turbo Force 518*4882a593Smuzhiyun* AVB Top Shot Pegasus 519*4882a593Smuzhiyun* AVB Top Shot Force Feedback Racing Wheel 520*4882a593Smuzhiyun* Boeder Force Feedback Wheel 521*4882a593Smuzhiyun* Logitech WingMan Force 522*4882a593Smuzhiyun* Logitech WingMan Force Wheel 523*4882a593Smuzhiyun* Guillemot Race Leader Force Feedback 524*4882a593Smuzhiyun* Guillemot Force Feedback Racing Wheel 525*4882a593Smuzhiyun* Thrustmaster Motor Sport GT 526*4882a593Smuzhiyun 527*4882a593SmuzhiyunTo use it, you need to attach the serial port to the driver using the:: 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun inputattach --iforce /dev/tts/x & 530*4882a593Smuzhiyun 531*4882a593Smuzhiyuncommand. After that the I-Force device will be detected, and the 532*4882a593Smuzhiyun/dev/input/jsX device should become usable. 533*4882a593Smuzhiyun 534*4882a593SmuzhiyunIn case you're using the device via the USB port, the inputattach command 535*4882a593Smuzhiyunisn't needed. 536*4882a593Smuzhiyun 537*4882a593SmuzhiyunThe I-Force driver now supports force feedback via the event interface. 538*4882a593Smuzhiyun 539*4882a593SmuzhiyunPlease note that Logitech WingMan 3D devices are _not_ supported by this 540*4882a593Smuzhiyunmodule, rather by hid. Force feedback is not supported for those devices. 541*4882a593SmuzhiyunLogitech gamepads are also hid devices. 542*4882a593Smuzhiyun 543*4882a593SmuzhiyunGravis Stinger gamepad 544*4882a593Smuzhiyun---------------------- 545*4882a593Smuzhiyun 546*4882a593SmuzhiyunThe Gravis Stinger serial port gamepad, designed for use with laptop 547*4882a593Smuzhiyuncomputers, is supported by the stinger.c module. To use it, attach the 548*4882a593Smuzhiyunserial port to the driver using:: 549*4882a593Smuzhiyun 550*4882a593Smuzhiyun inputattach --stinger /dev/tty/x & 551*4882a593Smuzhiyun 552*4882a593Smuzhiyunwhere x is the number of the serial port. 553*4882a593Smuzhiyun 554*4882a593SmuzhiyunTroubleshooting 555*4882a593Smuzhiyun=============== 556*4882a593Smuzhiyun 557*4882a593SmuzhiyunThere is quite a high probability that you run into some problems. For 558*4882a593Smuzhiyuntesting whether the driver works, if in doubt, use the jstest utility in 559*4882a593Smuzhiyunsome of its modes. The most useful modes are "normal" - for the 1.x 560*4882a593Smuzhiyuninterface, and "old" for the "0.x" interface. You run it by typing:: 561*4882a593Smuzhiyun 562*4882a593Smuzhiyun jstest --normal /dev/input/js0 563*4882a593Smuzhiyun jstest --old /dev/input/js0 564*4882a593Smuzhiyun 565*4882a593SmuzhiyunAdditionally you can do a test with the evtest utility:: 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun evtest /dev/input/event0 568*4882a593Smuzhiyun 569*4882a593SmuzhiyunOh, and read the FAQ! :) 570*4882a593Smuzhiyun 571*4882a593SmuzhiyunFAQ 572*4882a593Smuzhiyun=== 573*4882a593Smuzhiyun 574*4882a593Smuzhiyun:Q: Running 'jstest /dev/input/js0' results in "File not found" error. What's the 575*4882a593Smuzhiyun cause? 576*4882a593Smuzhiyun:A: The device files don't exist. Create them (see section 2.2). 577*4882a593Smuzhiyun 578*4882a593Smuzhiyun:Q: Is it possible to connect my old Atari/Commodore/Amiga/console joystick 579*4882a593Smuzhiyun or pad that uses a 9-pin D-type cannon connector to the serial port of my 580*4882a593Smuzhiyun PC? 581*4882a593Smuzhiyun:A: Yes, it is possible, but it'll burn your serial port or the pad. It 582*4882a593Smuzhiyun won't work, of course. 583*4882a593Smuzhiyun 584*4882a593Smuzhiyun:Q: My joystick doesn't work with Quake / Quake 2. What's the cause? 585*4882a593Smuzhiyun:A: Quake / Quake 2 don't support joystick. Use joy2key to simulate keypresses 586*4882a593Smuzhiyun for them. 587