Please understand that I wrote this "howto"
before L.I.F.E. with that being the case it may not be as simplified as
the
documents that L.I.F.E. uses now. However if you have any problems
please
feel free to email with them.
Kernel 2.4.x Linux Joystick HOWTO
1.
Will linux recognize my joystick?
2. What kernel version do I need?
3. What other software do I need?
4. How do setup my joystick?
1. Will linux recognize my joystick?
This howto covers the detection and use of standard gameports and
standard
analog joysticks. Other joysticks may be configurable in this fashion,
but there is no guarantee. Linux has probably already detected your
gameport
but the way to tell for sure is by executing a few simple steps. step
one: First try this "cat /proc/isapnp". Hold shift and press the "page
up" key
to scroll through the output. Look for something like this in
the output: Logical device 1 'CSC0001:GAME' Device is active Active
port 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff Active
IRQ 255 [0xff],255 [0xff] Active DMA 255,255 Active memory
0xffffffff,0xffffffff,0xffffffff,0xffffffff Resources 0 Priority
preferred Port 0x200-0x200, align 0x7,
size 0x8, 16-bit address decoding Alternate resources 0:1 Priority
acceptable Port 0x208-0x208, align 0x7, size 0x8, 16-bit address
decoding If you see something similar to this then you are in luck.
Your
gameport is more than likely on an isa PnP (Plug and Play) sound card
or game card. If you have a PCI sound card or game card then you can
type
"pnpdump" instead of "cat /proc/isapnp to get a similar output.
2.
What kernel version do I need?
This HOWTO is written for kernel versions 2.4.x. For older kernel
versions
read any joystick related files in the "Documentation" directory of
your
kernel source directory (usually
/usr/src/linux/Documentation/joystick.txt) Since the joystick and
compilation have several differences these steps
WILL NOT work for earlier versions. Please refer to the "Kernel
configuration"
section of part 4 of this HOWTO to see suggestions for how to configure
your kernel version 2.4.x
3.
What other software do I need?
Read the "Changes" file in your source directory. Make sure that you
have
the version of modutils that is asks for. You can also find joystick
testing
software on the web (see section 5 of this HOWTO)
4.
How do setup my joystick?
Ok, the fun part :) Part 4 is
set up in 6 steps below.
Step
one:
configuring your kernel Again this is for kernel
versions 2.4.x and will not work on other versions. Run make config,
make
menuconfig or make xconfig. Make sure you have enabled the following:
Input core support (module) Input core support --> Joysticks
(module) Character Devices --> Joysticks --> Joystick support
(compiled in
the kernel) Character Devices --> Joysticks --> ns558 support
(module) Character Devices --> Joysticks --> analog joysticks
(module) Once again this HOWTO is for setting up analog joysticks with
standard gameports,
but at this point you can attempt to add support for your joystick if
it is not analog....lots of choices here. Also if you use make
menuconfig
you can highlight the joystick of your choice and then select "help".
In
the help dialog it will tell you the name of the module file
(whatever.o)
you probably want to write it down.
Step
two:
compiling your kernel. If you are unsure about how
to do that see the kernel HOWTO, but usually "make dep" then "make
clean"
then "make bzImage" then "make modules" (VERY IMPORTANT) then "make
modules_install"
(ALSO IMPORTANT) then optionally "make install" or use lilo (see the
lilo
HOWTO)to make a boot floppy or "make bzdisk"
Step
three:
Setup your modules. You should check to make sure
your modules are in the right directories. Look in
/lib/modules/2.4.4/kernel/drivers/input/
you should see the files "joydev.o" and "input.o" Now look in
/lib/modules/2.4.4/kernel/drivers/char/joystick/
look for the files "ns558.o", "analog.o" and "gameport.o" if you
compiled
module support for any other joysticks you should be able to find
modules
for them in here as well. If you do not find all of these module files
here then you need to repeat steps one and two. Make sure that you have
enabled them as modules which will look like not < > or <*>
if you ran "make menuconfig"
Step
four:
Make the device files. Do the following command to
set up the correst device files in your /dev directory: cd /dev rm
js* mkdir input mknod input/js0 c 13 0 mknod input/js1 c 13 1
(if you have more than one gameport) ln -s input/js0 js0 ln -s
input/js1
js1 (if you have more than one gameport) chmod u+rwx input/js0 chmod
u+rwx input/js1 (if you have more than one gameport) This will
manually make the nessecary device files and symbolic links that your
joystick(S)
needs to function. I am not sure if the last step (chmod) is nessecary
for all systems but it was for mine.
Step
five:
Modifying rc scripts for the new modules modules.Before
you reboot your machine modify the file /etc/rc.d/rc.modules and ad the
following lines: /sbin/modprobe joydev /sbin/modprobe ns558
/sbin/modprobe
analog (or whichever driver your joystick uses) Now you can reboot your
machine.
Step
six:
Did it work? Take a close look at your start up dialog.
You should see: "Using
/lib/modules/2.4.4/kernel/drivers/input/joydev.o" "Using
/lib/modules/2.4.4/kernel/drivers/char/joystick/ns558.o" "Using
/lib/modules/2.4.4/kernel/drivers/char/joystick/analog.o" If you see
these lines with no error messages you are probably ready to test your
joystick
so move to section 5. If testing does not work you can return to this
part and continue. If you do see error messages (If your sound card or
joystick card is ISA you probably do) DO NOT PANIC. Simply move on to
the next step. Step seven: ISAPNP. First do "ls /etc/isapnp.conf" if
you
get a "file not found" error that's fine. If you do have a
/etc/isapnp.conf
file then this will get a little tricky, but chances are you don't. If
you do not have a isapnp.conf file then simply do "pnpdump -c >
/etc/isapnp.conf".
If you have your sound card working already and you did not already
have
a isapnp.conf file then you will probably want to edit /etc/isapnp.conf
and comment out any references to your sound card and any other ISA
cards
that are already working normally (if it ain't broke don't fix it).
However
you want to leave any references to your gameport. After you are sure
you
have edited this file properly then you can run "isapnp
/etc/isapnp.conf"
you should get a response that says your gameport (and only your
gameport)
is enabled. This is good. Step eight: Try try again. At this point you
will
want to run "lsmod" to see what modules are running. You should see
that "Joydev" and "input" are enabled. Now do "rmmod joydev" then
"rmmod input".
Now do "insmod joydev" then "insmod ns558" then "insmod analog". Now do
"lsmod" again and you should see something like: Module Size Used by
analog 7456 0 (unused) ns558 3200 0 (unused) gameport 1808 0 [analog
ns558] joydev 6240 0 input 3360 0 [analog joydev] If so all is well.
Notice that "input"
and "gameport" are loaded as well. They are loaded automatically when
you
load "joydev" and "ns558". You should be ready to move on to section 5
and test your joystick. If these modules are not loaded or if you got
an error when trying to load one of them then you may have a hardware
and/or
module problem. Try rebooting and see what happens. If it still does
not
work then try again from section one. 5. How can I test my joystick?
There are a few utilities for testing your joystick. Some can be found
at: http://atrey.karlin.mff.cuni.cz/~vojtech/input/quick.html#download
Download the utilities package from the cvs tree. Alternatively you can
probably use an older version of the utility jstest like I did. As a
last
ditch effort you can "cat /dev/js0" while moving the joystick. If you
see
output you probably have a functional gameport. Note: This process is
not fool proof but it worked for my system. Please refer to the file
/usr/src/linux/Documentation/joystick.txt
for more detailed instructions if this does not do the trick. Let me
remind
everyone that I am a relatively new Linux user. If anyone has any
corrections
or suggestions please email them to me.
Special thanks to Urchlay from #linuxhelp, who really DOES know
everything.