xref: /linux/Documentation/input/joydev/joystick.rst (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
14c79e98bSDmitry Torokhov.. include:: <isonum.txt>
24c79e98bSDmitry Torokhov
3ad649380SDmitry Torokhov.. _joystick-doc:
4ad649380SDmitry Torokhov
54c79e98bSDmitry TorokhovIntroduction
64c79e98bSDmitry Torokhov============
74c79e98bSDmitry Torokhov
84c79e98bSDmitry TorokhovThe joystick driver for Linux provides support for a variety of joysticks
94c79e98bSDmitry Torokhovand similar devices. It is based on a larger project aiming to support all
104c79e98bSDmitry Torokhovinput devices in Linux.
114c79e98bSDmitry Torokhov
124c79e98bSDmitry TorokhovThe mailing list for the project is:
134c79e98bSDmitry Torokhov
144c79e98bSDmitry Torokhov	linux-input@vger.kernel.org
154c79e98bSDmitry Torokhov
164c79e98bSDmitry Torokhovsend "subscribe linux-input" to majordomo@vger.kernel.org to subscribe to it.
174c79e98bSDmitry Torokhov
184c79e98bSDmitry TorokhovUsage
194c79e98bSDmitry Torokhov=====
204c79e98bSDmitry Torokhov
214c79e98bSDmitry TorokhovFor basic usage you just choose the right options in kernel config and
224c79e98bSDmitry Torokhovyou should be set.
234c79e98bSDmitry Torokhov
244c79e98bSDmitry TorokhovUtilities
254c79e98bSDmitry Torokhov---------
264c79e98bSDmitry Torokhov
274c79e98bSDmitry TorokhovFor testing and other purposes (for example serial devices), there is a set
284c79e98bSDmitry Torokhovof utilities, such as ``jstest``, ``jscal``, and ``evtest``,
294c79e98bSDmitry Torokhovusually packaged as ``joystick``, ``input-utils``, ``evtest``, and so on.
304c79e98bSDmitry Torokhov
314c79e98bSDmitry Torokhov``inputattach`` utility is required if your joystick is connected to a
324c79e98bSDmitry Torokhovserial port.
334c79e98bSDmitry Torokhov
344c79e98bSDmitry TorokhovDevice nodes
354c79e98bSDmitry Torokhov------------
364c79e98bSDmitry Torokhov
374c79e98bSDmitry TorokhovFor applications to be able to use the joysticks, device nodes should be
384c79e98bSDmitry Torokhovcreated in /dev. Normally it is done automatically by the system, but
394c79e98bSDmitry Torokhovit can also be done by hand::
404c79e98bSDmitry Torokhov
414c79e98bSDmitry Torokhov    cd /dev
424c79e98bSDmitry Torokhov    rm js*
434c79e98bSDmitry Torokhov    mkdir input
444c79e98bSDmitry Torokhov    mknod input/js0 c 13 0
454c79e98bSDmitry Torokhov    mknod input/js1 c 13 1
464c79e98bSDmitry Torokhov    mknod input/js2 c 13 2
474c79e98bSDmitry Torokhov    mknod input/js3 c 13 3
484c79e98bSDmitry Torokhov    ln -s input/js0 js0
494c79e98bSDmitry Torokhov    ln -s input/js1 js1
504c79e98bSDmitry Torokhov    ln -s input/js2 js2
514c79e98bSDmitry Torokhov    ln -s input/js3 js3
524c79e98bSDmitry Torokhov
534c79e98bSDmitry TorokhovFor testing with inpututils it's also convenient to create these::
544c79e98bSDmitry Torokhov
554c79e98bSDmitry Torokhov    mknod input/event0 c 13 64
564c79e98bSDmitry Torokhov    mknod input/event1 c 13 65
574c79e98bSDmitry Torokhov    mknod input/event2 c 13 66
584c79e98bSDmitry Torokhov    mknod input/event3 c 13 67
594c79e98bSDmitry Torokhov
604c79e98bSDmitry TorokhovModules needed
614c79e98bSDmitry Torokhov--------------
624c79e98bSDmitry Torokhov
634c79e98bSDmitry TorokhovFor all joystick drivers to function, you'll need the userland interface
644c79e98bSDmitry Torokhovmodule in kernel, either loaded or compiled in::
654c79e98bSDmitry Torokhov
664c79e98bSDmitry Torokhov	modprobe joydev
674c79e98bSDmitry Torokhov
684c79e98bSDmitry TorokhovFor gameport joysticks, you'll have to load the gameport driver as well::
694c79e98bSDmitry Torokhov
704c79e98bSDmitry Torokhov	modprobe ns558
714c79e98bSDmitry Torokhov
724c79e98bSDmitry TorokhovAnd for serial port joysticks, you'll need the serial input line
734c79e98bSDmitry Torokhovdiscipline module loaded and the inputattach utility started::
744c79e98bSDmitry Torokhov
754c79e98bSDmitry Torokhov	modprobe serport
764c79e98bSDmitry Torokhov	inputattach -xxx /dev/tts/X &
774c79e98bSDmitry Torokhov
784c79e98bSDmitry TorokhovIn addition to that, you'll need the joystick driver module itself, most
794c79e98bSDmitry Torokhovusually you'll have an analog joystick::
804c79e98bSDmitry Torokhov
814c79e98bSDmitry Torokhov	modprobe analog
824c79e98bSDmitry Torokhov
834c79e98bSDmitry TorokhovFor automatic module loading, something like this might work - tailor to
844c79e98bSDmitry Torokhovyour needs::
854c79e98bSDmitry Torokhov
864c79e98bSDmitry Torokhov	alias tty-ldisc-2 serport
874c79e98bSDmitry Torokhov	alias char-major-13 input
884c79e98bSDmitry Torokhov	above input joydev ns558 analog
894c79e98bSDmitry Torokhov	options analog map=gamepad,none,2btn
904c79e98bSDmitry Torokhov
914c79e98bSDmitry TorokhovVerifying that it works
924c79e98bSDmitry Torokhov-----------------------
934c79e98bSDmitry Torokhov
944c79e98bSDmitry TorokhovFor testing the joystick driver functionality, there is the jstest
954c79e98bSDmitry Torokhovprogram in the utilities package. You run it by typing::
964c79e98bSDmitry Torokhov
974c79e98bSDmitry Torokhov	jstest /dev/input/js0
984c79e98bSDmitry Torokhov
994c79e98bSDmitry TorokhovAnd it should show a line with the joystick values, which update as you
1004c79e98bSDmitry Torokhovmove the stick, and press its buttons. The axes should all be zero when the
1014c79e98bSDmitry Torokhovjoystick is in the center position. They should not jitter by themselves to
1024c79e98bSDmitry Torokhovother close values, and they also should be steady in any other position of
1034c79e98bSDmitry Torokhovthe stick. They should have the full range from -32767 to 32767. If all this
1044c79e98bSDmitry Torokhovis met, then it's all fine, and you can play the games. :)
1054c79e98bSDmitry Torokhov
1064c79e98bSDmitry TorokhovIf it's not, then there might be a problem. Try to calibrate the joystick,
1074c79e98bSDmitry Torokhovand if it still doesn't work, read the drivers section of this file, the
1084c79e98bSDmitry Torokhovtroubleshooting section, and the FAQ.
1094c79e98bSDmitry Torokhov
1104c79e98bSDmitry TorokhovCalibration
1114c79e98bSDmitry Torokhov-----------
1124c79e98bSDmitry Torokhov
1134c79e98bSDmitry TorokhovFor most joysticks you won't need any manual calibration, since the
1144c79e98bSDmitry Torokhovjoystick should be autocalibrated by the driver automagically. However, with
1154c79e98bSDmitry Torokhovsome analog joysticks, that either do not use linear resistors, or if you
1164c79e98bSDmitry Torokhovwant better precision, you can use the jscal program::
1174c79e98bSDmitry Torokhov
1184c79e98bSDmitry Torokhov	jscal -c /dev/input/js0
1194c79e98bSDmitry Torokhov
1204c79e98bSDmitry Torokhovincluded in the joystick package to set better correction coefficients than
1214c79e98bSDmitry Torokhovwhat the driver would choose itself.
1224c79e98bSDmitry Torokhov
1234c79e98bSDmitry TorokhovAfter calibrating the joystick you can verify if you like the new
1244c79e98bSDmitry Torokhovcalibration using the jstest command, and if you do, you then can save the
1254c79e98bSDmitry Torokhovcorrection coefficients into a file::
1264c79e98bSDmitry Torokhov
1274c79e98bSDmitry Torokhov	jscal -p /dev/input/js0 > /etc/joystick.cal
1284c79e98bSDmitry Torokhov
1294c79e98bSDmitry TorokhovAnd add a line to your rc script executing that file::
1304c79e98bSDmitry Torokhov
1314c79e98bSDmitry Torokhov	source /etc/joystick.cal
1324c79e98bSDmitry Torokhov
1334c79e98bSDmitry TorokhovThis way, after the next reboot your joystick will remain calibrated. You
1344c79e98bSDmitry Torokhovcan also add the ``jscal -p`` line to your shutdown script.
1354c79e98bSDmitry Torokhov
136eef8abdaSRandy DunlapHardware-specific driver information
137eef8abdaSRandy Dunlap====================================
1384c79e98bSDmitry Torokhov
1394c79e98bSDmitry TorokhovIn this section each of the separate hardware specific drivers is described.
1404c79e98bSDmitry Torokhov
1414c79e98bSDmitry TorokhovAnalog joysticks
1424c79e98bSDmitry Torokhov----------------
1434c79e98bSDmitry Torokhov
144eef8abdaSRandy DunlapThe analog.c driver uses the standard analog inputs of the gameport, and thus
1454c79e98bSDmitry Torokhovsupports all standard joysticks and gamepads. It uses a very advanced
1464c79e98bSDmitry Torokhovroutine for this, allowing for data precision that can't be found on any
1474c79e98bSDmitry Torokhovother system.
1484c79e98bSDmitry Torokhov
1494c79e98bSDmitry TorokhovIt also supports extensions like additional hats and buttons compatible
1504c79e98bSDmitry Torokhovwith CH Flightstick Pro, ThrustMaster FCS or 6 and 8 button gamepads. Saitek
1514c79e98bSDmitry TorokhovCyborg 'digital' joysticks are also supported by this driver, because
1524c79e98bSDmitry Torokhovthey're basically souped up CHF sticks.
1534c79e98bSDmitry Torokhov
1544c79e98bSDmitry TorokhovHowever the only types that can be autodetected are:
1554c79e98bSDmitry Torokhov
1564c79e98bSDmitry Torokhov* 2-axis, 4-button joystick
1574c79e98bSDmitry Torokhov* 3-axis, 4-button joystick
1584c79e98bSDmitry Torokhov* 4-axis, 4-button joystick
1594c79e98bSDmitry Torokhov* Saitek Cyborg 'digital' joysticks
1604c79e98bSDmitry Torokhov
1614c79e98bSDmitry TorokhovFor other joystick types (more/less axes, hats, and buttons) support
1624c79e98bSDmitry Torokhovyou'll need to specify the types either on the kernel command line or on the
1634c79e98bSDmitry Torokhovmodule command line, when inserting analog into the kernel. The
1644c79e98bSDmitry Torokhovparameters are::
1654c79e98bSDmitry Torokhov
1664c79e98bSDmitry Torokhov	analog.map=<type1>,<type2>,<type3>,....
1674c79e98bSDmitry Torokhov
1684c79e98bSDmitry Torokhov'type' is type of the joystick from the table below, defining joysticks
1694c79e98bSDmitry Torokhovpresent on gameports in the system, starting with gameport0, second 'type'
1704c79e98bSDmitry Torokhoventry defining joystick on gameport1 and so on.
1714c79e98bSDmitry Torokhov
1724c79e98bSDmitry Torokhov	========= =====================================================
1734c79e98bSDmitry Torokhov	Type      Meaning
1744c79e98bSDmitry Torokhov	========= =====================================================
1754c79e98bSDmitry Torokhov	none      No analog joystick on that port
1764c79e98bSDmitry Torokhov	auto      Autodetect joystick
1774c79e98bSDmitry Torokhov	2btn      2-button n-axis joystick
1784c79e98bSDmitry Torokhov	y-joy     Two 2-button 2-axis joysticks on an Y-cable
1794c79e98bSDmitry Torokhov	y-pad     Two 2-button 2-axis gamepads on an Y-cable
1804c79e98bSDmitry Torokhov	fcs       Thrustmaster FCS compatible joystick
1814c79e98bSDmitry Torokhov	chf       Joystick with a CH Flightstick compatible hat
1824c79e98bSDmitry Torokhov	fullchf   CH Flightstick compatible with two hats and 6 buttons
1834c79e98bSDmitry Torokhov	gamepad   4/6-button n-axis gamepad
1844c79e98bSDmitry Torokhov	gamepad8  8-button 2-axis gamepad
1854c79e98bSDmitry Torokhov	========= =====================================================
1864c79e98bSDmitry Torokhov
1874c79e98bSDmitry TorokhovIn case your joystick doesn't fit in any of the above categories, you can
1884c79e98bSDmitry Torokhovspecify the type as a number by combining the bits in the table below. This
1894c79e98bSDmitry Torokhovis not recommended unless you really know what are you doing. It's not
1904c79e98bSDmitry Torokhovdangerous, but not simple either.
1914c79e98bSDmitry Torokhov
1924c79e98bSDmitry Torokhov	==== =========================
1934c79e98bSDmitry Torokhov	Bit  Meaning
1944c79e98bSDmitry Torokhov	==== =========================
1954c79e98bSDmitry Torokhov	 0   Axis X1
1964c79e98bSDmitry Torokhov	 1   Axis Y1
1974c79e98bSDmitry Torokhov	 2   Axis X2
1984c79e98bSDmitry Torokhov	 3   Axis Y2
1994c79e98bSDmitry Torokhov	 4   Button A
2004c79e98bSDmitry Torokhov	 5   Button B
2014c79e98bSDmitry Torokhov	 6   Button C
2024c79e98bSDmitry Torokhov	 7   Button D
2034c79e98bSDmitry Torokhov	 8   CHF Buttons X and Y
2044c79e98bSDmitry Torokhov	 9   CHF Hat 1
2054c79e98bSDmitry Torokhov	10   CHF Hat 2
2064c79e98bSDmitry Torokhov	11   FCS Hat
2074c79e98bSDmitry Torokhov	12   Pad Button X
2084c79e98bSDmitry Torokhov	13   Pad Button Y
2094c79e98bSDmitry Torokhov	14   Pad Button U
2104c79e98bSDmitry Torokhov	15   Pad Button V
2114c79e98bSDmitry Torokhov	16   Saitek F1-F4 Buttons
2124c79e98bSDmitry Torokhov	17   Saitek Digital Mode
2134c79e98bSDmitry Torokhov	19   GamePad
2144c79e98bSDmitry Torokhov	20   Joy2 Axis X1
2154c79e98bSDmitry Torokhov	21   Joy2 Axis Y1
2164c79e98bSDmitry Torokhov	22   Joy2 Axis X2
2174c79e98bSDmitry Torokhov	23   Joy2 Axis Y2
2184c79e98bSDmitry Torokhov	24   Joy2 Button A
2194c79e98bSDmitry Torokhov	25   Joy2 Button B
2204c79e98bSDmitry Torokhov	26   Joy2 Button C
2214c79e98bSDmitry Torokhov	27   Joy2 Button D
2224c79e98bSDmitry Torokhov	31   Joy2 GamePad
2234c79e98bSDmitry Torokhov	==== =========================
2244c79e98bSDmitry Torokhov
2254c79e98bSDmitry TorokhovMicrosoft SideWinder joysticks
2264c79e98bSDmitry Torokhov------------------------------
2274c79e98bSDmitry Torokhov
2284c79e98bSDmitry TorokhovMicrosoft 'Digital Overdrive' protocol is supported by the sidewinder.c
2294c79e98bSDmitry Torokhovmodule. All currently supported joysticks:
2304c79e98bSDmitry Torokhov
2314c79e98bSDmitry Torokhov* Microsoft SideWinder 3D Pro
2324c79e98bSDmitry Torokhov* Microsoft SideWinder Force Feedback Pro
2334c79e98bSDmitry Torokhov* Microsoft SideWinder Force Feedback Wheel
2344c79e98bSDmitry Torokhov* Microsoft SideWinder FreeStyle Pro
2354c79e98bSDmitry Torokhov* Microsoft SideWinder GamePad (up to four, chained)
2364c79e98bSDmitry Torokhov* Microsoft SideWinder Precision Pro
2374c79e98bSDmitry Torokhov* Microsoft SideWinder Precision Pro USB
2384c79e98bSDmitry Torokhov
2394c79e98bSDmitry Torokhovare autodetected, and thus no module parameters are needed.
2404c79e98bSDmitry Torokhov
2414c79e98bSDmitry TorokhovThere is one caveat with the 3D Pro. There are 9 buttons reported,
2424c79e98bSDmitry Torokhovalthough the joystick has only 8. The 9th button is the mode switch on the
2434c79e98bSDmitry Torokhovrear side of the joystick. However, moving it, you'll reset the joystick,
2444c79e98bSDmitry Torokhovand make it unresponsive for about a one third of a second. Furthermore, the
2454c79e98bSDmitry Torokhovjoystick will also re-center itself, taking the position it was in during
2464c79e98bSDmitry Torokhovthis time as a new center position. Use it if you want, but think first.
2474c79e98bSDmitry Torokhov
2484c79e98bSDmitry TorokhovThe SideWinder Standard is not a digital joystick, and thus is supported
2494c79e98bSDmitry Torokhovby the analog driver described above.
2504c79e98bSDmitry Torokhov
2514c79e98bSDmitry TorokhovLogitech ADI devices
2524c79e98bSDmitry Torokhov--------------------
2534c79e98bSDmitry Torokhov
2544c79e98bSDmitry TorokhovLogitech ADI protocol is supported by the adi.c module. It should support
2554c79e98bSDmitry Torokhovany Logitech device using this protocol. This includes, but is not limited
2564c79e98bSDmitry Torokhovto:
2574c79e98bSDmitry Torokhov
2584c79e98bSDmitry Torokhov* Logitech CyberMan 2
2594c79e98bSDmitry Torokhov* Logitech ThunderPad Digital
2604c79e98bSDmitry Torokhov* Logitech WingMan Extreme Digital
2614c79e98bSDmitry Torokhov* Logitech WingMan Formula
2624c79e98bSDmitry Torokhov* Logitech WingMan Interceptor
2634c79e98bSDmitry Torokhov* Logitech WingMan GamePad
2644c79e98bSDmitry Torokhov* Logitech WingMan GamePad USB
2654c79e98bSDmitry Torokhov* Logitech WingMan GamePad Extreme
2664c79e98bSDmitry Torokhov* Logitech WingMan Extreme Digital 3D
2674c79e98bSDmitry Torokhov
2684c79e98bSDmitry TorokhovADI devices are autodetected, and the driver supports up to two (any
269eef8abdaSRandy Dunlapcombination of) devices on a single gameport, using a Y-cable or chained
2704c79e98bSDmitry Torokhovtogether.
2714c79e98bSDmitry Torokhov
2724c79e98bSDmitry TorokhovLogitech WingMan Joystick, Logitech WingMan Attack, Logitech WingMan
2734c79e98bSDmitry TorokhovExtreme and Logitech WingMan ThunderPad are not digital joysticks and are
2744c79e98bSDmitry Torokhovhandled by the analog driver described above. Logitech WingMan Warrior and
2754c79e98bSDmitry TorokhovLogitech Magellan are supported by serial drivers described below.  Logitech
2764c79e98bSDmitry TorokhovWingMan Force and Logitech WingMan Formula Force are supported by the
2774c79e98bSDmitry TorokhovI-Force driver described below. Logitech CyberMan is not supported yet.
2784c79e98bSDmitry Torokhov
2794c79e98bSDmitry TorokhovGravis GrIP
2804c79e98bSDmitry Torokhov-----------
2814c79e98bSDmitry Torokhov
2824c79e98bSDmitry TorokhovGravis GrIP protocol is supported by the grip.c module. It currently
2834c79e98bSDmitry Torokhovsupports:
2844c79e98bSDmitry Torokhov
2854c79e98bSDmitry Torokhov* Gravis GamePad Pro
2864c79e98bSDmitry Torokhov* Gravis BlackHawk Digital
2874c79e98bSDmitry Torokhov* Gravis Xterminator
2884c79e98bSDmitry Torokhov* Gravis Xterminator DualControl
2894c79e98bSDmitry Torokhov
2904c79e98bSDmitry TorokhovAll these devices are autodetected, and you can even use any combination
291eef8abdaSRandy Dunlapof up to two of these pads either chained together or using a Y-cable on a
2924c79e98bSDmitry Torokhovsingle gameport.
2934c79e98bSDmitry Torokhov
2944c79e98bSDmitry TorokhovGrIP MultiPort isn't supported yet. Gravis Stinger is a serial device and is
2954c79e98bSDmitry Torokhovsupported by the stinger driver. Other Gravis joysticks are supported by the
2964c79e98bSDmitry Torokhovanalog driver.
2974c79e98bSDmitry Torokhov
2984c79e98bSDmitry TorokhovFPGaming A3D and MadCatz A3D
2994c79e98bSDmitry Torokhov----------------------------
3004c79e98bSDmitry Torokhov
3014c79e98bSDmitry TorokhovThe Assassin 3D protocol created by FPGaming, is used both by FPGaming
3024c79e98bSDmitry Torokhovthemselves and is licensed to MadCatz. A3D devices are supported by the
3034c79e98bSDmitry Torokhova3d.c module. It currently supports:
3044c79e98bSDmitry Torokhov
3054c79e98bSDmitry Torokhov* FPGaming Assassin 3D
3064c79e98bSDmitry Torokhov* MadCatz Panther
3074c79e98bSDmitry Torokhov* MadCatz Panther XL
3084c79e98bSDmitry Torokhov
3094c79e98bSDmitry TorokhovAll these devices are autodetected. Because the Assassin 3D and the Panther
3104c79e98bSDmitry Torokhovallow connecting analog joysticks to them, you'll need to load the analog
3114c79e98bSDmitry Torokhovdriver as well to handle the attached joysticks.
3124c79e98bSDmitry Torokhov
3134c79e98bSDmitry TorokhovThe trackball should work with USB mousedev module as a normal mouse. See
314eef8abdaSRandy Dunlapthe USB documentation for how to setup a USB mouse.
3154c79e98bSDmitry Torokhov
3164c79e98bSDmitry TorokhovThrustMaster DirectConnect (BSP)
3174c79e98bSDmitry Torokhov--------------------------------
3184c79e98bSDmitry Torokhov
3194c79e98bSDmitry TorokhovThe TM DirectConnect (BSP) protocol is supported by the tmdc.c
3204c79e98bSDmitry Torokhovmodule. This includes, but is not limited to:
3214c79e98bSDmitry Torokhov
3224c79e98bSDmitry Torokhov* ThrustMaster Millennium 3D Interceptor
3234c79e98bSDmitry Torokhov* ThrustMaster 3D Rage Pad
3244c79e98bSDmitry Torokhov* ThrustMaster Fusion Digital Game Pad
3254c79e98bSDmitry Torokhov
3264c79e98bSDmitry TorokhovDevices not directly supported, but hopefully working are:
3274c79e98bSDmitry Torokhov
3284c79e98bSDmitry Torokhov* ThrustMaster FragMaster
3294c79e98bSDmitry Torokhov* ThrustMaster Attack Throttle
3304c79e98bSDmitry Torokhov
3314c79e98bSDmitry TorokhovIf you have one of these, contact me.
3324c79e98bSDmitry Torokhov
3334c79e98bSDmitry TorokhovTMDC devices are autodetected, and thus no parameters to the module
3344c79e98bSDmitry Torokhovare needed. Up to two TMDC devices can be connected to one gameport, using
335eef8abdaSRandy Dunlapa Y-cable.
3364c79e98bSDmitry Torokhov
3374c79e98bSDmitry TorokhovCreative Labs Blaster
3384c79e98bSDmitry Torokhov---------------------
3394c79e98bSDmitry Torokhov
3404c79e98bSDmitry TorokhovThe Blaster protocol is supported by the cobra.c module. It supports only
3414c79e98bSDmitry Torokhovthe:
3424c79e98bSDmitry Torokhov
3434c79e98bSDmitry Torokhov* Creative Blaster GamePad Cobra
3444c79e98bSDmitry Torokhov
345eef8abdaSRandy DunlapUp to two of these can be used on a single gameport, using a Y-cable.
3464c79e98bSDmitry Torokhov
3474c79e98bSDmitry TorokhovGenius Digital joysticks
3484c79e98bSDmitry Torokhov------------------------
3494c79e98bSDmitry Torokhov
3504c79e98bSDmitry TorokhovThe Genius digitally communicating joysticks are supported by the gf2k.c
3514c79e98bSDmitry Torokhovmodule. This includes:
3524c79e98bSDmitry Torokhov
3534c79e98bSDmitry Torokhov* Genius Flight2000 F-23 joystick
3544c79e98bSDmitry Torokhov* Genius Flight2000 F-31 joystick
3554c79e98bSDmitry Torokhov* Genius G-09D gamepad
3564c79e98bSDmitry Torokhov
3574c79e98bSDmitry TorokhovOther Genius digital joysticks are not supported yet, but support can be
3584c79e98bSDmitry Torokhovadded fairly easily.
3594c79e98bSDmitry Torokhov
3604c79e98bSDmitry TorokhovInterAct Digital joysticks
3614c79e98bSDmitry Torokhov--------------------------
3624c79e98bSDmitry Torokhov
3634c79e98bSDmitry TorokhovThe InterAct digitally communicating joysticks are supported by the
3644c79e98bSDmitry Torokhovinteract.c module. This includes:
3654c79e98bSDmitry Torokhov
3664c79e98bSDmitry Torokhov* InterAct HammerHead/FX gamepad
3674c79e98bSDmitry Torokhov* InterAct ProPad8 gamepad
3684c79e98bSDmitry Torokhov
3694c79e98bSDmitry TorokhovOther InterAct digital joysticks are not supported yet, but support can be
3704c79e98bSDmitry Torokhovadded fairly easily.
3714c79e98bSDmitry Torokhov
3724c79e98bSDmitry TorokhovPDPI Lightning 4 gamecards
3734c79e98bSDmitry Torokhov--------------------------
3744c79e98bSDmitry Torokhov
3754c79e98bSDmitry TorokhovPDPI Lightning 4 gamecards are supported by the lightning.c module.
3764c79e98bSDmitry TorokhovOnce the module is loaded, the analog driver can be used to handle the
3774c79e98bSDmitry Torokhovjoysticks. Digitally communicating joystick will work only on port 0, while
3784c79e98bSDmitry Torokhovusing Y-cables, you can connect up to 8 analog joysticks to a single L4
3794c79e98bSDmitry Torokhovcard, 16 in case you have two in your system.
3804c79e98bSDmitry Torokhov
3814c79e98bSDmitry TorokhovTrident 4DWave / Aureal Vortex
3824c79e98bSDmitry Torokhov------------------------------
3834c79e98bSDmitry Torokhov
384eef8abdaSRandy DunlapSoundcards with a Trident 4DWave DX/NX or Aureal Vortex/Vortex2 chipset
3854c79e98bSDmitry Torokhovprovide an "Enhanced Game Port" mode where the soundcard handles polling the
3864c79e98bSDmitry Torokhovjoystick.  This mode is supported by the pcigame.c module. Once loaded the
3874c79e98bSDmitry Torokhovanalog driver can use the enhanced features of these gameports..
3884c79e98bSDmitry Torokhov
3894c79e98bSDmitry TorokhovCrystal SoundFusion
3904c79e98bSDmitry Torokhov-------------------
3914c79e98bSDmitry Torokhov
3924c79e98bSDmitry TorokhovSoundcards with Crystal SoundFusion chipsets provide an "Enhanced Game
3934c79e98bSDmitry TorokhovPort", much like the 4DWave or Vortex above. This, and also the normal mode
3944c79e98bSDmitry Torokhovfor the port of the SoundFusion is supported by the cs461x.c module.
3954c79e98bSDmitry Torokhov
3964c79e98bSDmitry TorokhovSoundBlaster Live!
3974c79e98bSDmitry Torokhov------------------
3984c79e98bSDmitry Torokhov
3994c79e98bSDmitry TorokhovThe Live! has a special PCI gameport, which, although it doesn't provide
4004c79e98bSDmitry Torokhovany "Enhanced" stuff like 4DWave and friends, is quite a bit faster than
4014c79e98bSDmitry Torokhovits ISA counterparts. It also requires special support, hence the
4024c79e98bSDmitry Torokhovemu10k1-gp.c module for it instead of the normal ns558.c one.
4034c79e98bSDmitry Torokhov
4044c79e98bSDmitry TorokhovSoundBlaster 64 and 128 - ES1370 and ES1371, ESS Solo1 and S3 SonicVibes
4054c79e98bSDmitry Torokhov------------------------------------------------------------------------
4064c79e98bSDmitry Torokhov
4074c79e98bSDmitry TorokhovThese PCI soundcards have specific gameports. They are handled by the
4084c79e98bSDmitry Torokhovsound drivers themselves. Make sure you select gameport support in the
4094c79e98bSDmitry Torokhovjoystick menu and sound card support in the sound menu for your appropriate
4104c79e98bSDmitry Torokhovcard.
4114c79e98bSDmitry Torokhov
4124c79e98bSDmitry TorokhovAmiga
4134c79e98bSDmitry Torokhov-----
4144c79e98bSDmitry Torokhov
4154c79e98bSDmitry TorokhovAmiga joysticks, connected to an Amiga, are supported by the amijoy.c
4164c79e98bSDmitry Torokhovdriver. Since they can't be autodetected, the driver has a command line:
4174c79e98bSDmitry Torokhov
4184c79e98bSDmitry Torokhov	amijoy.map=<a>,<b>
4194c79e98bSDmitry Torokhov
4204c79e98bSDmitry Torokhova and b define the joysticks connected to the JOY0DAT and JOY1DAT ports of
4214c79e98bSDmitry Torokhovthe Amiga.
4224c79e98bSDmitry Torokhov
4234c79e98bSDmitry Torokhov	====== ===========================
4244c79e98bSDmitry Torokhov	Value  Joystick type
4254c79e98bSDmitry Torokhov	====== ===========================
4264c79e98bSDmitry Torokhov	  0    None
4274c79e98bSDmitry Torokhov	  1    1-button digital joystick
4284c79e98bSDmitry Torokhov	====== ===========================
4294c79e98bSDmitry Torokhov
4304c79e98bSDmitry TorokhovNo more joystick types are supported now, but that should change in the
4314c79e98bSDmitry Torokhovfuture if I get an Amiga in the reach of my fingers.
4324c79e98bSDmitry Torokhov
4334c79e98bSDmitry TorokhovGame console and 8-bit pads and joysticks
4344c79e98bSDmitry Torokhov-----------------------------------------
4354c79e98bSDmitry Torokhov
4364c79e98bSDmitry TorokhovThese pads and joysticks are not designed for PCs and other computers
4374c79e98bSDmitry TorokhovLinux runs on, and usually require a special connector for attaching
4384c79e98bSDmitry Torokhovthem through a parallel port.
4394c79e98bSDmitry Torokhov
4404c79e98bSDmitry TorokhovSee :ref:`joystick-parport` for more info.
4414c79e98bSDmitry Torokhov
4424c79e98bSDmitry TorokhovSpaceTec/LabTec devices
4434c79e98bSDmitry Torokhov-----------------------
4444c79e98bSDmitry Torokhov
4454c79e98bSDmitry TorokhovSpaceTec serial devices communicate using the SpaceWare protocol. It is
4464c79e98bSDmitry Torokhovsupported by the spaceorb.c and spaceball.c drivers. The devices currently
4474c79e98bSDmitry Torokhovsupported by spaceorb.c are:
4484c79e98bSDmitry Torokhov
4494c79e98bSDmitry Torokhov* SpaceTec SpaceBall Avenger
4504c79e98bSDmitry Torokhov* SpaceTec SpaceOrb 360
4514c79e98bSDmitry Torokhov
4524c79e98bSDmitry TorokhovDevices currently supported by spaceball.c are:
4534c79e98bSDmitry Torokhov
4544c79e98bSDmitry Torokhov* SpaceTec SpaceBall 4000 FLX
4554c79e98bSDmitry Torokhov
4564c79e98bSDmitry TorokhovIn addition to having the spaceorb/spaceball and serport modules in the
457eef8abdaSRandy Dunlapkernel, you also need to attach a serial port to it. To do that, run the
4584c79e98bSDmitry Torokhovinputattach program::
4594c79e98bSDmitry Torokhov
4604c79e98bSDmitry Torokhov	inputattach --spaceorb /dev/tts/x &
4614c79e98bSDmitry Torokhov
4624c79e98bSDmitry Torokhovor::
4634c79e98bSDmitry Torokhov
4644c79e98bSDmitry Torokhov	inputattach --spaceball /dev/tts/x &
4654c79e98bSDmitry Torokhov
4664c79e98bSDmitry Torokhovwhere /dev/tts/x is the serial port which the device is connected to. After
4674c79e98bSDmitry Torokhovdoing this, the device will be reported and will start working.
4684c79e98bSDmitry Torokhov
469eef8abdaSRandy DunlapThere is one caveat with the SpaceOrb. The button #6, the one on the bottom
4704c79e98bSDmitry Torokhovside of the orb, although reported as an ordinary button, causes internal
4714c79e98bSDmitry Torokhovrecentering of the spaceorb, moving the zero point to the position in which
4724c79e98bSDmitry Torokhovthe ball is at the moment of pressing the button. So, think first before
4734c79e98bSDmitry Torokhovyou bind it to some other function.
4744c79e98bSDmitry Torokhov
4754c79e98bSDmitry TorokhovSpaceTec SpaceBall 2003 FLX and 3003 FLX are not supported yet.
4764c79e98bSDmitry Torokhov
4774c79e98bSDmitry TorokhovLogitech SWIFT devices
4784c79e98bSDmitry Torokhov----------------------
4794c79e98bSDmitry Torokhov
4804c79e98bSDmitry TorokhovThe SWIFT serial protocol is supported by the warrior.c module. It
4814c79e98bSDmitry Torokhovcurrently supports only the:
4824c79e98bSDmitry Torokhov
4834c79e98bSDmitry Torokhov* Logitech WingMan Warrior
4844c79e98bSDmitry Torokhov
4854c79e98bSDmitry Torokhovbut in the future, Logitech CyberMan (the original one, not CM2) could be
4864c79e98bSDmitry Torokhovsupported as well. To use the module, you need to run inputattach after you
4874c79e98bSDmitry Torokhovinsert/compile the module into your kernel::
4884c79e98bSDmitry Torokhov
4894c79e98bSDmitry Torokhov	inputattach --warrior /dev/tts/x &
4904c79e98bSDmitry Torokhov
4914c79e98bSDmitry Torokhov/dev/tts/x is the serial port your Warrior is attached to.
4924c79e98bSDmitry Torokhov
4934c79e98bSDmitry TorokhovMagellan / Space Mouse
4944c79e98bSDmitry Torokhov----------------------
4954c79e98bSDmitry Torokhov
4964c79e98bSDmitry TorokhovThe Magellan (or Space Mouse), manufactured by LogiCad3d (formerly Space
4974c79e98bSDmitry TorokhovSystems), for many other companies (Logitech, HP, ...) is supported by the
4984c79e98bSDmitry Torokhovjoy-magellan module. It currently supports only the:
4994c79e98bSDmitry Torokhov
5004c79e98bSDmitry Torokhov* Magellan 3D
5014c79e98bSDmitry Torokhov* Space Mouse
5024c79e98bSDmitry Torokhov
503eef8abdaSRandy Dunlapmodels; the additional buttons on the 'Plus' versions are not supported yet.
5044c79e98bSDmitry Torokhov
5054c79e98bSDmitry TorokhovTo use it, you need to attach the serial port to the driver using the::
5064c79e98bSDmitry Torokhov
5074c79e98bSDmitry Torokhov	inputattach --magellan /dev/tts/x &
5084c79e98bSDmitry Torokhov
5094c79e98bSDmitry Torokhovcommand. After that the Magellan will be detected, initialized, will beep,
5104c79e98bSDmitry Torokhovand the /dev/input/jsX device should become usable.
5114c79e98bSDmitry Torokhov
5124c79e98bSDmitry TorokhovI-Force devices
5134c79e98bSDmitry Torokhov---------------
5144c79e98bSDmitry Torokhov
5154c79e98bSDmitry TorokhovAll I-Force devices are supported by the iforce module. This includes:
5164c79e98bSDmitry Torokhov
5174c79e98bSDmitry Torokhov* AVB Mag Turbo Force
5184c79e98bSDmitry Torokhov* AVB Top Shot Pegasus
5194c79e98bSDmitry Torokhov* AVB Top Shot Force Feedback Racing Wheel
520*9c9c7116SGreg Tulli* Boeder Force Feedback Wheel
5214c79e98bSDmitry Torokhov* Logitech WingMan Force
5224c79e98bSDmitry Torokhov* Logitech WingMan Force Wheel
5234c79e98bSDmitry Torokhov* Guillemot Race Leader Force Feedback
5244c79e98bSDmitry Torokhov* Guillemot Force Feedback Racing Wheel
5254c79e98bSDmitry Torokhov* Thrustmaster Motor Sport GT
5264c79e98bSDmitry Torokhov
5274c79e98bSDmitry TorokhovTo use it, you need to attach the serial port to the driver using the::
5284c79e98bSDmitry Torokhov
5294c79e98bSDmitry Torokhov	inputattach --iforce /dev/tts/x &
5304c79e98bSDmitry Torokhov
5314c79e98bSDmitry Torokhovcommand. After that the I-Force device will be detected, and the
5324c79e98bSDmitry Torokhov/dev/input/jsX device should become usable.
5334c79e98bSDmitry Torokhov
5344c79e98bSDmitry TorokhovIn case you're using the device via the USB port, the inputattach command
5354c79e98bSDmitry Torokhovisn't needed.
5364c79e98bSDmitry Torokhov
5374c79e98bSDmitry TorokhovThe I-Force driver now supports force feedback via the event interface.
5384c79e98bSDmitry Torokhov
5394c79e98bSDmitry TorokhovPlease note that Logitech WingMan 3D devices are _not_ supported by this
5404c79e98bSDmitry Torokhovmodule, rather by hid. Force feedback is not supported for those devices.
5414c79e98bSDmitry TorokhovLogitech gamepads are also hid devices.
5424c79e98bSDmitry Torokhov
5434c79e98bSDmitry TorokhovGravis Stinger gamepad
5444c79e98bSDmitry Torokhov----------------------
5454c79e98bSDmitry Torokhov
5464c79e98bSDmitry TorokhovThe Gravis Stinger serial port gamepad, designed for use with laptop
5474c79e98bSDmitry Torokhovcomputers, is supported by the stinger.c module. To use it, attach the
5484c79e98bSDmitry Torokhovserial port to the driver using::
5494c79e98bSDmitry Torokhov
5504c79e98bSDmitry Torokhov	inputattach --stinger /dev/tty/x &
5514c79e98bSDmitry Torokhov
5524c79e98bSDmitry Torokhovwhere x is the number of the serial port.
5534c79e98bSDmitry Torokhov
5544c79e98bSDmitry TorokhovTroubleshooting
5554c79e98bSDmitry Torokhov===============
5564c79e98bSDmitry Torokhov
5574c79e98bSDmitry TorokhovThere is quite a high probability that you run into some problems. For
5584c79e98bSDmitry Torokhovtesting whether the driver works, if in doubt, use the jstest utility in
5594c79e98bSDmitry Torokhovsome of its modes. The most useful modes are "normal" - for the 1.x
5604c79e98bSDmitry Torokhovinterface, and "old" for the "0.x" interface. You run it by typing::
5614c79e98bSDmitry Torokhov
5624c79e98bSDmitry Torokhov	jstest --normal /dev/input/js0
5634c79e98bSDmitry Torokhov	jstest --old    /dev/input/js0
5644c79e98bSDmitry Torokhov
5654c79e98bSDmitry TorokhovAdditionally you can do a test with the evtest utility::
5664c79e98bSDmitry Torokhov
5674c79e98bSDmitry Torokhov	evtest /dev/input/event0
5684c79e98bSDmitry Torokhov
5694c79e98bSDmitry TorokhovOh, and read the FAQ! :)
5704c79e98bSDmitry Torokhov
5714c79e98bSDmitry TorokhovFAQ
5724c79e98bSDmitry Torokhov===
5734c79e98bSDmitry Torokhov
5744c79e98bSDmitry Torokhov:Q: Running 'jstest /dev/input/js0' results in "File not found" error. What's the
5754c79e98bSDmitry Torokhov    cause?
5764c79e98bSDmitry Torokhov:A: The device files don't exist. Create them (see section 2.2).
5774c79e98bSDmitry Torokhov
5784c79e98bSDmitry Torokhov:Q: Is it possible to connect my old Atari/Commodore/Amiga/console joystick
579eef8abdaSRandy Dunlap    or pad that uses a 9-pin D-type Cannon connector to the serial port of my
5804c79e98bSDmitry Torokhov    PC?
5814c79e98bSDmitry Torokhov:A: Yes, it is possible, but it'll burn your serial port or the pad. It
5824c79e98bSDmitry Torokhov    won't work, of course.
5834c79e98bSDmitry Torokhov
5844c79e98bSDmitry Torokhov:Q: My joystick doesn't work with Quake / Quake 2. What's the cause?
5854c79e98bSDmitry Torokhov:A: Quake / Quake 2 don't support joystick. Use joy2key to simulate keypresses
5864c79e98bSDmitry Torokhov    for them.
587