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

