Once you have figured out your mouse interface and protocol types, you're ready to proceed.
Now, you'll need to know which interrupt number your mouse is using, and make sure it doesn't conflict with any other peripherals you have installed.
You should make sure that your mouse is not trying to use the same
interrupt as any of your other devices --- it is not possible for
the mouse to share an interrupt under Linux, even though it may
work fine under other operating systems. Check the documentation
for all your peripherals to see which interrupt they use. In most
cases IRQ4 is used for the first serial port (
IRQ3 for the second (
/dev/ttyS1) (these are assuming you
actually have such devices --- if you don't you can happily use
their IRQ's), and IRQ5 for some SCSI adaptors.
Note that for ATI-XL, Inport and Logitech mice the kernel default is to use IRQ5, so if you are stuck with a pre-compiled kernel (eg, CD-ROM users) you will have to use that. If you are using an Inport or Logitech mice with a newer kernel you may be able to pass a command line option to the kernel to tell it what interrupt to use without recompiling.
If you open up your computer's case and look at the card which your mouse plugs into, you should notice a block of jumpers on the card (hopefully labeled ``INTERRUPT'') with positions for interrupt (otherwise known as IRQ) numbers 2,3,4 and 5. To change the interrupt simply move the jumper from its current position onto the correct pair of pins.
*************************************************** *** MAKE SURE YOUR COMPUTER IS TURNED OFF *** *** BEFORE CHANGING THE JUMPERS AROUND. *** ***************************************************
ATI-XL busmice have a software selectable IRQ - you should have
received with your mouse a MS-DOS program (
VSETUP.EXE) to set
IRQ. In order to do so you must (temporarily) boot MS-DOS and run
this program. Note that the VSETUP program takes an optional
parameter ``/70'' to increase the vertical refresh rate (which results
in less flicker). The VSETUP program also allows you to select
either the primary or secondary mouse address - you should set
this to the primary address or the kernel will not be able to
detect your mouse.
Once VSETUP has been run you must perform a hard reset for the new configuration to take effect.
The PS/2 mouse always uses IRQ12 -- there is no way of changing this (except with a soldering gun.) In the rare case that some other device is using IRQ12, you'll have to rejumper that peripheral to use another IRQ number.
In order for your busmouse to operate correctly you will need to configure your kernel to compile in busmouse support. If you are using a pre-compiled kernel then it often comes with support for all three busmouse included. This may still not be enough. The kernel could be trying to use the wrong interrupt or the detection can get confused and treat your mouse as the wrong type. When in doubt, try recompiling your kernel with only support for your mouse type and set it to use the correct interrupt.
Change to your kernel directory (here assumed to be
and do a
If you are unsure as to your mouse type, the first time you recompile the kernel you may wish to enable all of the busmouse options in the hope that the kernel will autodetect your mouse properly. People have mixed success with this: it doesn't always work, but on the other hand it might save you any further compiles.
Answer ``y'' or ''m'' to the question pertaining to your type of busmouse interface and ``n'' to all the other busmouse questions. Use the ''m'' option if you have your system setup to support loading kernel modules if you do not or do not know what that means then it will be safe to always answer ''y'' to have the support directly compiled into your kernel.
As an example, if you have an Inport mouse you should answer ``y'' to
and ``n'' to all other busmouse questions. Answer the non-mouse related questions as you usually would.
Microsoft busmouse support
To compile the kernel with PS/2 mouse support answer ``y'' to the question.
PS/2 mouse (aka "auxiliary device") support
The PS/2 mouse driver actually supports two kinds of devices: the standard PS/2 Auxiliary Device controller and a special PS/2 mouse interface chip from Chips & Technologies which is used in the Texas Instruments Travelmate and Gateway Nomad laptops. To compile in support for the trackballs on these computers, answer ``y'' to the
question. Note that you will still have to answer ``y'' to the question about the standard PS/2 driver to even get a chance to answer this question, since the 82C710 driver is actually an add-on to the standard PS/2 mouse driver.
C&T 82C710 mouse port support (as on TI Travelmate)
When configured both for a standard PS/2 mouse device and the 82C710 device, the driver first tries to locate a 82C710 chip at boot time. Failing this, the standard driver is used instead, so using a kernel configured for both types of interface on a machine with a standard PS/2 mouse port should work too. However, there has been one report of a falsely detected 82C710 chip, so to be on the safe side do not configure in support for the 82C710 if you don't need it.
You will now need to tell the kernel what interrupt your mouse uses. You can skip this step if your using a PS/2 mouse as it always uses IRQ 12.
If you have a Logitech or Inport mouse, edit the file
/usr/src/linux/include/linux/busmouse.h and change the line
to reflect the interrupt number for your mouse (see the section Setting the mouse interrupt for details on finding your interrupt number).
#define MOUSE_IRQ 5
If you have an ATI-XL mouse, edit the file
/usr/src/linux/drivers/char/atixlmouse.c and change the line
to reflect your mouse's interrupt number.
#define ATIXL_MOUSE_IRQ 5
Due to the vagaries of the PC architecture, if you have set your mouse to use interrupt 2, you must set the #define to use interrupt 9.
For a mouse on interrupt 3, you should change the line to read
#define MOUSE_IRQ 3
For a mouse on interrupt 2, you should change the line to read
#define MOUSE_IRQ 9
Next, compile your kernel as per the instructions which come with it, and boot from the new kernel. You should now have the busmouse support correctly compiled in.
It appears that in older kernels you had to compile in support to use the program selection (a program that allows you to cut and past from virtual consoles the same way you do under X). This option does not appear in modern kernels and the program selection has generally been replaced with the program gpm (see the section gpm for more details).
If you are working with an old kernel then you may wish to set this option to ``y'' regardless of your mouse type so that you may use the selection program.
The steps to compile into the kernel what interrupt it uses works with any version of the kernel to date. Newer kernels (starting somewhere in the 2.x.x's) allow you to pass arguments to the kernel during load time using something like LILO or LOADLIN to specify the interrupt number for Logitech and Microsoft Inport mice. This can be a real time saver as you do not need to recompiler your kernel (or know how to). If you've configured your kernel to load the mouse drivers as modules then you will need to pass this information when loading the module.
You can add the following options to your boot line in LILO to change interrupt:
bmouse=3 (Logitech Busmice) msmouse=3 (for Microsoft Inport mice)
Substitute the 3 with your mouse's actual interrupt. An example of using this with lilo is:
You can consult your LILO or LOADLIN docs to see how to add this type information to their configuration files so that you do not need to type it.
When using modules you can manually set the interrupt by using insmod as follows:
insmod msbusmouse.o mouse_irq=3 (use for Inport mice) insmod busmouse.o mouse_irq=3 (use for Logitech mice)
If your system uses kerneld to auto load modules, you can edit your /etc/conf.modules or /etc/modules.conf file, which ever your system uses, and add one of the following lines.
options msbusmouse mouse_irq=3 options busmouse mouse_irq=3
Mice under Linux are accessed via the devices in the
directory. The following table gives a list of interface types
and which device you should use.
INTERFACE DEVICE MAJOR MINOR --------------------------------------------- Logitech /dev/logibm 10 0 PS/2 /dev/psaux 10 1 Inport /dev/inportbm 10 2 ATI-XL /dev/atibm 10 3 Table 1. Mouse devices.
If you are using your ATI-XL mouse with the Inport driver,
you should use the
inportbm device, not the
The major and minor entries are the device numbers for that particular device.
If you find that you do not have these devices, you should create them first. To do so, execute the following as root.
mknod /dev/logimm c 10 0 mknod /dev/psaux c 10 1 mknod /dev/inportbm c 10 2 mknod /dev/atibm c 10 3
Some time in the (progressively less) recent history of
Linux the names for the busmouse devices have changed. The following
device names have been superceded by those above and should be removed:
bmousems, bmouseps2, bmouseatixl, and bmouselogitech..
Many people like to create a symbolic link from their mouse
/dev/mouse so that they don't have to remember which
device they need to be using. If you have one of the current
Linux distributions you will almost certainly find that you have
such a link. If you have such a link, or create one, you should
make sure that it is pointing to the correct device for your