linux-old/Documentation/joystick.txt
<<
>>
Prefs
   1                       Linux Joystick driver v1.2.15
   2               (c) 1996-1999 Vojtech Pavlik <vojtech@suse.cz>
   3                             Sponsored by SuSE
   4----------------------------------------------------------------------------
   5
   60. Disclaimer
   7~~~~~~~~~~~~~
   8  This program is free software; you can redistribute it and/or modify it
   9under the terms of the GNU General Public License as published by the Free
  10Software Foundation; either version 2 of the License, or (at your option)
  11any later version.
  12
  13  This program is distributed in the hope that it will be useful, but
  14WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  15or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
  16more details.
  17
  18  You should have received a copy of the GNU General Public License along
  19with this program; if not, write to the Free Software Foundation, Inc., 59
  20Temple Place, Suite 330, Boston, MA 02111-1307 USA
  21
  22  Should you need to contact me, the author, you can do so either by e-mail
  23- mail your message to <vojtech@suse.cz>, or by paper mail: Vojtech Pavlik,
  24Ucitelska 1576, Prague 8, 182 00 Czech Republic
  25
  26  For your convenience, the GNU General Public License version 2 is included
  27in the package: See the file COPYING.
  28
  291. Intro
  30~~~~~~~~
  31  The joystick driver for Linux provides support for a variety of joysticks
  32and similar devices.
  33
  34  These currently include various analog joysticks and gamepads (both
  35variable resistor based and microswitch+resistor based), following IBM PC
  36joystick standard, with extensions like additional hats and buttons
  37compatible with CH Flightstick Pro, ThrustMaster FCS or 6 and 8 button
  38gamepads.
  39
  40  In addition to these it also supports some of the new PC joysticks that
  41use proprietary digital protocols to communicate over the gameport,
  42currently by FPGaming, Gravis, Logitech, MadCatz, Microsoft, Creative and
  43ThrustMaster. Saitek protocol support is still to be done.
  44
  45  The driver also includes support for many gamepads and joysticks that were
  46used by various non-PC computers and game consoles. These include Multi
  47system joysticks (Atari, Amiga, Commodore, Amstrad), Sega gamepads (Master
  48System, Genesis, Saturn), Nintendo gamepads (NES, SNES, N64), Sony gamepads
  49(PSX).  Support for Atari Jaguar, Atari 2600, NES FourScore, SNES MultiTap
  50and others might be added later.
  51
  52  Last, but not least there is also native Amiga joystick support for the
  53Amiga Linux port.
  54
  55  Should you encounter any problems while using the driver, or joysticks
  56this driver can't make complete use of, I'm very interested in hearing about
  57them. Bug reports and success stories are also welcome.
  58
  59  The joystick package is available at the following FTP sites:
  60
  61        ftp://ftp.suse.cz/pub/development/joystick/
  62        ftp://atrey.karlin.mff.cuni.cz/pub/linux/joystick/
  63        ftp://ftp.gts.cz/pub/linux/joystick/
  64
  65  And a homepage of the driver is at:
  66
  67        http://www.suse.cz/development/joystick/
  68        http://atrey.karlin.mff.cuni.cz/~vojtech/joystick/
  69        http://www.trylinux.com/projects/joystick/
  70        http://www.linuxgames.com/joystick/
  71
  72  There is also a mailing list for the driver at:
  73
  74        listproc@atrey.karlin.mff.cuni.cz
  75
  76send "subscribe linux-joystick Your Name" to subscribe to it.
  77
  782. Usage
  79~~~~~~~~
  80  You could have obtained this driver in two different ways - either in the
  81joystick package or in the kernel. Because, for successful usage of the
  82joysticks, the utilities in the package are useful, maybe necessary, and
  83definitely recommended, I suggest you getting the package at some of the
  84above mentioned locations. The rest of this file assumes you have it.
  85
  862.1 Compiling the driver package
  87~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  88  To compile the utilities in the joystick package, and the driver itself,
  89as a standalone module, you first unpack the package, and then edit the
  90Makefile to meet your needs (namely whether are you using versioned
  91modules). You will also need an unpacked and configured
  92
  93        make config
  94
  95kernel in
  96        
  97        /usr/src/linux
  98
  99Furthermore, if you're using versioned modules, you'll also need
 100
 101        make dep
 102
 103done on the kernel, to create some needed files.
 104
 105After that, you compile the joystick driver
 106
 107        make
 108
 109  And after that you install it
 110
 111        make install
 112
 113  In case you have not used the driver before, you'll need to create the
 114joystick device files in /dev so that applications can use them:
 115
 116        make devs
 117
 118  For manual creation of the joystick devices, check the
 119Documentation/devices.txt file in the Linux source tree.
 120
 121  Should you not want to mess with the kernel, and just use the driver
 122standalone, as modules, skip the next two sections, proceeding right to 2.4,
 123because all you need is already done.
 124
 1252.2 Patching the kernel
 126~~~~~~~~~~~~~~~~~~~~~~~
 127  If you already have the most recent joystick driver in your kernel, skip
 128this section. If not, you need to patch the kernel, so that it contains the
 129current driver version.  You do that with a command: 
 130
 131        patch -Esp1 < /usr/src/joystick-1.2.x/kernel-2.x.y.diff
 132
 133in
 134
 135        /usr/src/linux
 136
 1372.3 Compiling the kernel
 138~~~~~~~~~~~~~~~~~~~~~~~~
 139  To compile joystick support into the kernel, use the kernel configuration
 140scripts, and answer 'Y' to Joystick support and also to at least one of the
 141hardware specific options. After doing something like
 142
 143        make bzlilo
 144
 145  you are done with the driver installation. Just reboot and the driver
 146should find all the connected joysticks. Read the notes about the hardware
 147specific drivers later in this file, though.
 148
 149  You can also compile the driver as modules, answering 'M' to all joystick
 150support you want to have modules for. It is possible to have the main
 151joystick driver compiled into the kernel and the hardware dependent drivers
 152as modules. After you compile the modules 
 153
 154        make modules
 155
 156  And install them
 157
 158        make modules_install
 159
 160 you're set, and can proceed to the next step.
 161
 1622.4 Inserting the modules into the kernel
 163~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 164  After installing the modules you'll first need to insert the generic
 165joystick driver module into the kernel
 166
 167        insmod joystick
 168
 169  and then one or more of the hardware specific modules
 170
 171        insmod joy-something
 172
 173  where 'something' is the type of your joystick. See below for more precise
 174explanation.
 175
 176  Alternately you can add the lines
 177
 178        alias char-major-15 joy-something
 179        options joy-something js_xx=x,x,x,x,...
 180
 181  to the /etc/conf.modules file, so that the joystick module will be loaded
 182automatically when the /dev/js devices are accessed.
 183
 1842.5 Verifying that it works
 185~~~~~~~~~~~~~~~~~~~~~~~~~~~
 186  For testing the joystick driver functionality, there is the jstest
 187program. You run it by typing:
 188
 189        jstest /dev/js0
 190
 191  And it should show a line with the joystick values, which update as you
 192move the stick, and press its buttons. The axes should all be zero when the
 193joystick is in the center position. They should not jitter by themselves to
 194other close values, and they also should be steady in any other position of
 195the stick. They should have the full range from -32767 to 32767. If all this
 196is met, then it's all fine, and you can play the games. :)
 197
 198  If it's not, then there might be a problem. Try to calibrate the joystick,
 199and if it still doesn't work, read the drivers section of this file, the
 200troubleshooting section, and the FAQ.
 201
 2022.6. Calibration
 203~~~~~~~~~~~~~~~~
 204  For most joysticks you won't need any manual calibration, since the
 205joystick should be autocalibrated by the driver automagically. However, with
 206some analog joysticks, that either do not use linear resistors, or if you
 207want better precision, you can use the jscal program
 208
 209        jscal -c /dev/js0
 210
 211 included in the joystick package to set better correction coefficients than
 212what the driver would choose itself.
 213
 214  After calibrating the joystick you can verify if you like the new
 215calibration using the jstest command, and if you do, you then can save the
 216correction coefficients into a file
 217
 218        jscal -p /dev/js0 > /etc/joystick.cal
 219
 220  And add a line to your rc script executing that file
 221
 222        source /etc/joystick.cal
 223
 224  This way, after the next reboot your joystick will remain calibrated. You
 225can also add the jscal -p line to your shutdown script.
 226
 227
 2283. HW specific driver information
 229~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 230In this section each of the separate hardware specific drivers is described.
 231
 2323.1 Analog joysticks
 233~~~~~~~~~~~~~~~~~~~~
 234  The joy-analog.c uses the standard analog inputs of the gameport, and thus
 235supports all standard joysticks and gamepads. It also supports extensions
 236like additional hats and buttons compatible with CH Flightstick Pro,
 237ThrustMaster FCS or 6 and 8 button gamepads. 
 238
 239  However the only types that can be autodetected are:
 240
 241* 2-axis, 4-button joystick
 242* 3-axis, 4-button joystick
 243* 4-axis, 4-button joystick
 244
 245  For other joystick types (more/less axes, hats, and buttons) support
 246you'll need to specify the types either on the kernel command line or on the
 247module command line, when inserting joy-analog.o into the kernel. The
 248parameters are:
 249
 250        js_an=p0,m0,n0,p1,m1,n1 ...
 251
 252  Where 'p' is the port number, eg. 0x201, which is the standard address.
 253'm' and 'n' are joystick 0 and joystick 1 bitmasks for the specified
 254joystick port. The bits in the bitmasks mean:
 255
 256        Bit |   2^n | Meaning
 257        ----------------------------------
 258         0  |     1 | Axis X1
 259         1  |     2 | Axis Y1
 260         2  |     4 | Axis X2
 261         3  |     8 | Axis Y2
 262         4  |    16 | Button A
 263         5  |    32 | Button B
 264         6  |    64 | Button C
 265         7  |   128 | Button D
 266         8  |   256 | CHF Buttons X and Y
 267         9  |   512 | CHF Hat 1
 268        10  |  1024 | CHF Hat 2
 269        11  |  2048 | FCS Hat
 270        12  |  4096 | Pad Button X
 271        13  |  8192 | Pad Button Y
 272        14  | 16384 | Pad Button U
 273        15  | 32768 | Pad Button V
 274
 275(CHF = CH Flightstick Pro, FCS = ThrustMaster FCS)
 276
 277  Following is a table of joysticks for which the 'm' values are known. If
 278you have any additions/corrections to it, e-mail me.
 279
 280        Joystick                                | 'm' value
 281        ----------------------------------------------------
 282        Simple 2-button 2-axis joystick         | 0x0033
 283        Second simple joystick on Y-cable       | 0x00cc
 284        Genius Flight2000 F-12                  | 0x00f3
 285        Genius Flight2000 F-21                  | 0x08f7
 286        Genius Flight2000 F-22                  | 0x02ff
 287        Genius GameHunter G-06                  | 0xf0f3
 288        Genius MaxFire G-07                     | 0xf0f3   
 289        Genius PowerStation                     | 0xf0f3
 290        Laing #1 PC SuperPad                    | 0xf0f3
 291        Logitech Wingman                        | 0x003b
 292        Microsoft SideWinder Standard           | 0x003b
 293        QuickShot QS-201 SuperWarrior           | 0x00fb
 294        Saitek Megapad XII                      | 0x30f3
 295        PC Powerpad Pro                         | 0x30f3
 296
 297  In case you have one of the joystick in the table below, and it doesn't
 298work with a specific driver in digital mode for some reason, you can use
 299them in analog mode with the joy-analog driver as well. However, digital
 300operation is always better.
 301
 302        Joystick                                | 'm' value
 303        ----------------------------------------------------
 304        Gravis GamePad Pro - analog mode        | 0x00f3
 305        Genius Flight2000 F-23                  | 0x02ff
 306        Microsoft SideWinder 3D Pro - CHF mode  | 0x02ff
 307        Microsoft SideWinder 3D Pro - FCS mode  | 0x08f7
 308
 309  An example that would configure the driver to use two two axis, two button
 310joysticks connected to port 0x201, a single four button four axis joystick
 311connected to port 0x202, a four axis, six button and two hat CHF compatible
 312joystick on 0x203, and a two axis four button FCS compatible joystick with a
 313single hat on 0x207:
 314
 315        js_an=0x201,0x33,0xcc,0x202,0xff,0,0x203,0x7ff,0,0x207,0x8f3,0
 316
 317  If you can't sum bits into hex numbers in your head easily, you can simply
 318sum the values in the 2^n column decimally and use that number instead.
 319Using this method you'd get a command line:
 320
 321        js_an=0x201,51,204,0x202,255,0,0x203,2047,0,0x207,2291,0
 322
 323  And it would do the same as the above explained command line. Use
 324whichever way you like best.
 325
 3263.2 Microsoft SideWinder joysticks
 327~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 328  Microsoft 'Digital Overdrive' protocol is supported by the
 329joy-sidewinder.c module. All currently supported joysticks:
 330
 331* SideWinder 3D Pro
 332* SideWinder Force Feedback Pro
 333* SideWinder Force Feedback Wheel
 334* SideWinder FreeStyle Pro
 335* SideWinder GamePad (up to four, chained together)
 336* SideWinder Precision Pro 
 337
 338  are autodetected, and thus no module parameters are needed.
 339
 340  There is one caveat with the 3D Pro. There are 9 buttons reported,
 341although the joystick has only 8. The 9th button is the mode switch on the
 342rear side of the joystick. However, moving it, you'll reset the joystick,
 343and make it unresponsive for about a one third of a second. Furthermore, the
 344joystick will also re-center itself, taking the position it was in during
 345this time as a new center position. Use it if you want, but think first.
 346
 347  The SideWinder Standard is not a digital joystick, and thus is supported
 348by the analog driver described above. 
 349
 3503.3 Logitech ADI devices
 351~~~~~~~~~~~~~~~~~~~~~~~~
 352  Logitech ADI protocol is supported by the joy-logitech.c module. It should
 353support any Logitech device using this protocol. This includes, but is not
 354limited to:
 355
 356* Logitech CyberMan 2
 357* Logitech ThunderPad Digital
 358* Logitech WingMan Extreme Digital
 359* Logitech WingMan Formula
 360* Logitech WingMan Interceptor
 361* Logitech WingMan GamePad
 362* Logitech WingMan GamePad USB
 363* Logitech WingMan GamePad Extreme
 364* Logitech WingMan Extreme Digital 3D
 365
 366  ADI devices are autodetected, and the driver supports up to two (any
 367combination of) devices on a single gameport, using an Y-cable or chained
 368together.
 369
 370  Logitech WingMan Joystick, Logitech WingMan Attack, Logitech WingMan
 371Extreme and Logitech WingMan ThunderPad are not digital joysticks and are
 372handled by the analog driver described above. Logitech WingMan Warrior and
 373Logitech Magellan are supported by serial drivers described below. Logitech
 374CyberMan, Logitech WingMan Force and Logitech WingMan Formula Force are not
 375supported yet.
 376
 3773.4 Gravis GrIP
 378~~~~~~~~~~~~~~~
 379  Gravis GrIP protocol is supported by the joy-gravis.c module. It
 380currently supports:
 381
 382* Gravis GamePad Pro
 383* Gravis Xterminator
 384* Gravis BlackHawk Digital
 385
 386  All these devices are autodetected, and you can even use any combination
 387of up to two of these pads either chained together or using an Y-cable on a
 388single gameport.
 389
 390GrIP MultiPort and Gravis Xterminator DualControl aren't supported yet.
 391Gravis Stinger is a serial device and hopefully will be supported in the
 392future. Other Gravis joysticks are supported by the joy-analog driver.
 393
 3943.5 FPGaming A3D and MadCatz A3D
 395~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 396  The Assassin 3D protocol created by FPGaming, is used both by FPGaming
 397themselves and is licensed to MadCatz. A3D devices are supported by the
 398joy-assassin.c module. It currently supports:
 399
 400* FPGaming Assassin 3D
 401* MadCatz Panther
 402* MadCatz Panther XL
 403
 404  All these devices are autodetected. Because the Assassin 3D and the Panther
 405allow connecting analog joysticks to them, these are supported in this
 406driver, too. The driver uses the js_as parameter for the analog joysticks,
 407which has the same syntax as js_an for the analog driver.
 408
 409  The trackball support is far from perfect at this stage of development,
 410but should be well usable.
 411
 4123.6 ThrustMaster DirectConnect (BSP)
 413~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 414  The TM DirectConnect (BSP) protocol is supported by the joy-thrustmaster.c
 415module. This includes, but is not limited to:
 416
 417* ThrustMaster Millenium 3D Inceptor
 418* ThrustMaster 3D Rage Pad
 419* ThrustMaster Fusion Digital Game Pad
 420
 421  Devices not directly supported, but hopefully working are:
 422
 423* ThrustMaster FragMaster
 424* ThrustMaster Attack Throttle
 425
 426  If you have one of these, contact me.
 427
 428  BSP devices are autodetected, and thus no parameters to the module
 429are needed.
 430
 4313.7 Creative Labs Blaster
 432~~~~~~~~~~~~~~~~~~~~~~~~~
 433  The Blaster protocol is supported by the joy-creative.c module. It
 434currently supports only the:
 435
 436* Creative Blaster GamePad Cobra
 437
 438  Up to two of these can be used on a single gameport, using an Y-cable.
 439
 4403.8 PDPI Lightning 4 gamecards
 441~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 442  PDPI Lightning 4 gamecards are supported by the joy-lightning.c module.
 443This driver is only for analog joysticks connected to the card - if you want
 444to use some of the digital devices, you need to use its specific driver. The
 445card will work in legacy mode with them, though.
 446
 447  Since all features of analog joysticks can't be detected, this driver
 448needs a command line:
 449
 450        js_l4=p0,m0,n0,p1,m1,n1,....
 451
 452  As you can see, it's very similar to the analog drivers command line.
 453Actually it is the same except for the meaning of p0. p0 in this case is the
 454port the joystick is attached to:
 455
 456          p  | Port
 457        ----------------------------
 458          0  | Primary card, port 1
 459          1  | Primary card, port 2
 460          2  | Primary card, port 3
 461          3  | Primary card, port 4
 462          4  | Secondary card, port 1
 463          5  | Secondary card, port 2
 464          6  | Secondary card, port 3
 465          7  | Secondary card, port 4
 466
 467  Two cards maximum are allowed in one system, because of the card's design.
 468
 469  See the description of analog joystick driver for explanations of m0 and
 470n0 values.
 471
 4723.9 Trident 4DWave / Aureal Vortex
 473~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 474  Soundcards with a Trident 4DWave DX/NX or Aureal Vortex chipset provide an
 475"Enhanced Game Port" mode where the soundcard handles polling the joystick.
 476This mode is supported by the joy-pci module.
 477
 478  If no module parameters are given, the joy-pci module will set all the
 479soundcards it finds to "enhanced" mode, and will try to autodetect the type
 480of attached joystick. It can only detect the same types of joysticks that
 481the joy-analog module can.
 482
 483  This module accepts parameters in the form:
 484
 485        js_pci=t0,i0,m0,n0,t1,i1,m1,n1,....
 486
 487  The "t" value specifies the type of card, as follows:
 488
 489          t  | Card Type
 490        ----------------------------
 491          0  | Trident 4DWave DX
 492          1  | Trident 4DWave NX
 493          2  | Aureal Vortex1 (Au8820 chipset)
 494          3  | Aureal Vortex2 (Au8830 chipset)
 495
 496  If you have more than one card of the same type, the "i" parameter lets
 497you choose which card to apply the "m" and "n" values to. It counts from
 498"0". (The driver detects cards in the order listed in the above table.)
 499
 500  The "m" and "n" values have the same meaning as for the analog module,
 501with the exception that the value m=0, n=0 indicates that joy-pci should
 502completely ignore that port. This can be useful to reserve a certain port
 503for purely MIDI operation.
 504
 505  For example, let's say you have 3 sound cards - a 4Dwave DX, a 4DWave NX,
 506and a Vortex 2. You have a three-axis, four-button, one-hat CHF- compatible
 507joystick on the DX. You use the NX to interface to an external MIDI device.
 508Finally, you have two two-axis, two-button joysticks on the Vortex. Your
 509command line might look like:
 510
 511        js_pci=0,0,0x207,0,1,1,0,0,3,0,0x33,0xcc
 512
 5133.10 Amiga
 514~~~~~~~~~~
 515  Amiga joysticks, connected to an Amiga, are supported by the joy-amiga.c
 516driver. Since they can't be autodetected, the driver has a command line.
 517
 518        js_am=a,b
 519
 520  a and b define the joysticks connected to the JOY0DAT and JOY1DAT ports of
 521the Amiga.
 522
 523        Value | Joystick type
 524        ---------------------
 525          0   | None
 526          1   | 1-button digital joystick
 527
 528  No more joystick types are supported now, but that should change in the
 529future if I get an Amiga in the reach of my fingers.
 530
 5313.11 Game console and 8-bit pads and joysticks
 532~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 533See joystick-parport.txt for more info.
 534
 5353.12 SpaceTec/LabTec devices
 536~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 537  SpaceTec serial devices communicate using the SpaceWare protocol. It is
 538supported by the joy-spaceorb and joy-spaceball drivers. The devices currently
 539supported by joy-spaceorb are:
 540
 541* SpaceTec SpaceBall Avenger
 542* SpaceTec SpaceOrb 360
 543
 544Devices currently supported by joy-spaceball are:
 545
 546* SpaceTec SpaceBall 4000 FLX
 547
 548  In addition to having the joy-spaceorb/spaceball module in the kernel, you
 549also need to attach a serial port to it. to do that, run the jsattach
 550program:
 551
 552        jsattach --spaceorb /dev/ttySx &
 553or
 554        jsattach --sball4 /dev/ttySx &
 555
 556where /dev/ttySx is the serial port which the device is connected to. After
 557doing this, the device will be reported and will start working.
 558
 559  There is one caveat with the SpaceOrb. The button #6, the on the bottom
 560side of the orb, although reported as an ordinary button, causes internal
 561recentering of the spaceorb, moving the zero point to the position in which
 562the ball is at the moment of pressing the button. So, think first before
 563you bind it to some other function.
 564
 565SpaceTec SpaceBall 2003 FLX and 3003 FLX are not supported yet. 
 566
 5673.13 Logitech SWIFT devices
 568~~~~~~~~~~~~~~~~~~~~~~~~~~~
 569  The SWIFT serial protocol is supported by the joy-warrior module. It
 570currently supports only the:
 571
 572* Logitech WingMan Warrior
 573
 574but in the future, Logitech CyberMan (the original one, not CM2) could be
 575supported as well. To use the module, you need to run jsattach after you
 576insert/compile the module into your kernel:
 577
 578        jsattach --warrior /dev/ttySx &
 579
 580ttySx is the serial port your Warrior is attached to.
 581
 5823.14 Magellan / Space Mouse
 583~~~~~~~~~~~~~~~~~~~~~~~~~~~
 584  The Magellan (or Space Mouse), manufactured by LogiCad3d (formerly Space
 585Systems), for many other companies (Logitech, HP, ...) is supported by the
 586joy-magellan module. It currently supports only the:
 587
 588* Magellan 3D
 589* Space Mouse
 590
 591models, the additional buttons on the 'Plus' versions are not supported yet.
 592
 593  To use it, you need to attach the serial port to the driver using the
 594
 595        jsattach --magellan /dev/ttySx &
 596
 597command. After that the Magellan will be detected, initialized, will beep,
 598and the /dev/jsX device should become useable.
 599
 6004. Troubleshooting
 601~~~~~~~~~~~~~~~~~~
 602  There is quite a high probability that you run into some problems. For
 603testing whether the driver works, if in doubt, use the jstest utility in
 604some of its modes. The most useful modes are "normal" - for the 1.x
 605interface, and "old" for the "0.x" interface. You run it by typing:
 606
 607        jstest --normal /dev/js0
 608        jstest --old    /dev/js0
 609
 610  If your trouble stems from the fact the drivers can't detect the joystick
 611attached to your gameport, and you decide you need my help (which I will
 612gladly provide), please use the joydump utility first. It's created just by
 613typing
 614
 615        make joydump.o
 616
 617  in the directory where you unpacked the joystick package. It is run then
 618by typing
 619
 620        insmod joydump.o
 621
 622  in the same directory. It will return a 'device busy' or 'initialization
 623failed' error. This is perfectly okay. It has already done it's job. The
 624results can be found in the system log or in the output of the
 625
 626        dmesg
 627
 628command. Please send me the results along with your problem report.
 629
 630  Oh, and read the FAQ! :)
 631
 6325. FAQ
 633~~~~~~
 634Q: The driver doesn't find any joysticks connected to my soundcard with the
 635   message "joy-something: no joysticks found" and "joy-something.o:
 636   init_module: Device or resource busy." or "Initialization of joy-something
 637   failed"  What could be the cause?
 638A: The most common cause is that the joystick port on your soundcard is
 639   not enabled. If it is an ISA PnP card, you'll need isapnptools to configure
 640   the gameport. Non-PnP cards usually use some option to the sound driver -
 641   see the sound driver docs and source and enable the port. Note that in case
 642   of a PnP card you have to load the joystick driver as a module after running
 643   the isapnp command, it will not work in the opposite order.
 644
 645Q: Any access to the joystick devices gives me "Operation not supported by
 646   device". What am I doing wrong?
 647A: You're running a 2.0 kernel and you forgot to insmod the hardware
 648   specific module. You not only need the joystick.o, but also one of the other
 649   joy-*.o files (most usually joy-analog.o), as described in this document,
 650   section 2. If you are not using modules, then you didn't say 'Y' to any of
 651   the hardware-specific questions. Again, see section 2. If you did select
 652   the specific support, and you still get this message, check that you
 653   selected the right one, and if it still doesn't work, go to the previous
 654   FAQ.
 655
 656Q: Everything is fine, except I get "No such device" error when I try to
 657   do anything with /dev/js0. What's the cause?
 658A: You're running a 2.1 or 2.2. kernel and you want to read the previous FAQ.
 659
 660Q: Upon 'insmod joystick.o' I get a LOT of unresolved symbols, including
 661   'printk' and others. Why?
 662A: You either don't have your kernel compiled with module support. If
 663   that's the cause, re-compile your kernel with module support switched on.
 664   Or, you use versioned symbols, and don't have -DMODVERSIONS in the joystick
 665   driver Makefile, or vice versa. Correct the situation by either removing or
 666   adding -DMODVERSIONS to the Makefile.
 667
 668Q: Upon 'insmod joy-something' I get a bunch of unresolved symbols, like
 669   'js_register_port, js_unregister device' and others. What's wrong?
 670A: You need to 'insmod joystick.o' first.
 671
 672Q: Running 'jstest 1' or 'jscal 1' doesn't work, and returns with "File
 673   not found" error. What is the problem?
 674A: The command line interface for these tools is different from what
 675   version 0.8.0 used. You have to specify the whole device name, eg. 'jstest
 676   /dev/js0'.
 677
 678Q: Running 'jstest /dev/js0' results in "File not found" error. What's the
 679   cause?
 680A: The device files don't exist. Run 'make devs'.
 681
 682Q: Is it possible to connect my old Atari/Commodore/Amiga/console joystick
 683   or pad that uses a 9-pin D-type cannon connector to the serial port of my
 684   PC?
 685A: Yes, it is possible, but it'll burn your serial port or the pad. It
 686   won't work, of course.
 687
 688Q: My joystick doesn't work with Quake / Quake 2. What's the cause?
 689A: Quake / Quake 2 don't support joystick. Use joy2key to simulate keypresses
 690   for them.
 691
 6926. Programming Interface
 693~~~~~~~~~~~~~~~~~~~~~~~~
 694  The 1.0 driver uses a new, event based approach to the joystick driver.
 695Instead of the user program polling for the joystick values, the joystick
 696driver now reports only any changes of its state. See joystick-api.txt,
 697joystick.h and jstest.c included in the joystick package for more
 698information. The joystick device can be used in either blocking or
 699nonblocking mode and supports select() calls.
 700
 701  For backward compatibility the old (v0.x) interface is still included.
 702Any call to the joystick driver using the old interface will return values
 703that are compatible to the old interface.  This interface is still limited
 704to 2 axes, and applications using it usually decode only 2 buttons, although
 705the driver provides up to 32.
 706
 7077. Credits
 708~~~~~~~~~~
 709  Thanks to the following people who contributed code, ideas or specifications
 710to the joystick driver development:
 711
 712        Arthur C. Smith         <asmith@cbnewsd.att.com>
 713        Eyal Lebedinsky         <eyal@eyal.emu.id.au>
 714        Jeff Tranter            <tranter@software.mitel.com>
 715        Carlos Puchol           <cpg@cs.utexas.edu>
 716        Matt Rhoten             <mrhoten@oz.net>
 717        Dan Fandrich            <dan@fch.wimsey.bc.ca>
 718        Sverker Wilberg         <sverkerw@manila.docs.uu.se>
 719        Hal Maney               <maney@norden.com>
 720        Bernd Schmidt           <crux@pool.informatik.rwth-aachen.de>
 721        Alan Cox                <alan@lxorguk.ukuu.org.uk>
 722        John Markus Bjorndalen  <johnm@cs.uit.no>
 723        Boris Muehmer           <mhs@cybernet-ag.de>
 724        Robert W. Grubbs        <rwgrubbs@vt.edu>
 725        Pete Chown              <pete.chown@skygate.co.uk>
 726        Benji York              <benji@cookeville.com>
 727        Leslie F. Donaldson     <donaldlf@cs.rose-hulman.edu>
 728        Eng-Jon Ong             <ongej@dcs.qmw.ac.uk>
 729        Ragnar Hojland Espinosa <ragnar@lightside.ddns.org>
 730        Brian Gerst             <bgerst@quark.vpplus.com>
 731        Andree Borrmann         <a.borrmann@tu-bs.de>
 732        Martin Giguere          <zefrench@hotmail.com>
 733        David Thompson          <dcthomp@mail.utexas.edu>
 734        Justin Wake             <spectre@telefragged.com>
 735        Benoit Triquet          <benoit@adsl-216-100-248-201.dsl.pacbell.net>
 736        John Dahlstrom          <jodaman@bradley.edu>
 737        Dan Gohman              <gohmandj@mrs.umn.edu>
 738        Joe Krahn               <krahn@niehs.nih.gov>
 739        David Kuder             <alphagod@penguinpowered.com>
 740        Raymond Ingles          <sorceror@tir.com>
 741
 742  If you think you should be in this list and are not, it's possible that
 743I forgot to include you - contact me and I'll correct the error. :)
 744
 745  Thanks to KYE Systems Europe, who provided me with driver sources for the
 746Genius Flight2000 Digital F-23, which happens to be identical (in software)
 747to Microsoft SideWinder 3D Pro.
 748
 749  Thanks to ThrustMaster Inc. who provided me with docs for their digital
 750protocol specifications, and to Trystan A Larey-Williams <axe@mail.wsu.edu>,
 751who wrote an attempt of a driver for them.
 752
 753  Thanks to Creative Labs Europe, and Ifor Powell <ipowell@cle.creaf.com>,
 754who provided me with docs for their first generation Blaster GamePad.
 755
 756  Special thanks go to FP-Gaming, Inc. and James C Barnes <james@fpgaming.com>,
 757who provided me with help and detailed information about the Assassin 3D
 758protocol and devices, and even sent me a Panther and Panther XL for testing,
 759along with cool T-shirts.
 760
 761  Special thanks to PDPI, Mike Pelkey <pdpi@email.msn.com> and Brand Kvavle
 762<BrandK@blackdiamond.com>, for providing me with documentation and example
 763code for their L4 gamecard, and sending me the card to test my driver with
 764it.
 765
 766  Thanks to LogiCad3D for their support, for having the specifications
 767online and for the nice music on their telephone.
 768
 769  Special thanks to Logitech, Jerry de Raad <Jerry_de_Raad@logitech.com>,
 770Thomas Burgel <Thomas_Burgel@logitech.com>, Avinash Shinde
 771<Avinash_Shinde@logitech.com> for providing me with a lot of documentation
 772for their devices, and also for a big box, containing a CyberMan2, Wingman
 773Extreme, Magellan, Wingman Warrior, two MouseMan mice, and a NewTouch
 774keyboard.
 775
 776  Thanks to everyone else who helped me develop this package of drivers!
 777
 778  No thanks to Microsoft and Gravis, who don't release a word about their
 779hardware .... :(
 780
 7818. ChangeLog
 782~~~~~~~~~~~~
 783  See the ChangeLog file for the log of changes.
 784
 7859. To do
 786~~~~~~~~
 787  See the TODO file for the list of things planned.
 788
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.