home *** CD-ROM | disk | FTP | other *** search
- The Linux Busmouse Howto
- Chris Bagwell, cbagwell@sprynet.com
- v1.07, 1 February 1998
-
- 1. Introduction.
-
- This document is a guide to getting your busmouse working with Linux.
- During early kernel versions it was quite common to see questions come
- up about how to get bus mice working under Linux. With the more
- advanced distributions available today the questions do not seem to
- come up as often but there still seems to be an audience for this FAQ.
-
- Busmouse support has been in the kernel for as long as I can remember,
- and hasn't changed much in a long time, so this document should be
- relevant to any version of Linux you're likely to have.
-
- 1.1. Disclaimer.
-
- The information in this document is correct to the best of my
- knowledge, but there's a always a chance I've made some mistakes, so
- don't follow everything too blindly, especially if it seems wrong.
- Nothing here should have a detrimental effect on your computer, but
- just in case I take no responsibility for any damages incurred from
- the use of the information contained herein.
-
- Microsoft(R) is a Trademark of Microsoft Corporation.
-
- [ trademark notices for other mice, anyone? ]
-
- 1.2. Feedback.
-
- If you find any mistakes in this document, have any comments about its
- contents or an update or addition, send them to me at the address
- listed at the top of this howto.
-
- 1.3. Acknowledgements.
-
- This howto has been, in the spirit of Linux, a community effort.
- Thanks goes out to Mike Battersby, mib@deakin.edu.au as he started
- this FAQ and I have since started up-keep on it. Any errors are most
- likely mine.
-
- Many thanks go to Johan Myreen for the sections on the PS/2 mice,
- Robert T. Harris for help on the ATI-XL sections and Reuben Sumner for
- miscellaneous info and constructive criticism.
-
- Thanks also to the multitudes of people who have sent me mouse
- information, fixes or words of encouragement.
-
- 2. Determining your mouse type.
-
- There are two separate but important characteristics you will need to
- know about your mouse before you go on: what mouse interface it uses
- and what mouse protocol it uses. The interface is the hardware aspect
- of the mouse, taking into account things like which i/o ports it uses
- and how to check if it is installed. This is the part which the
- kernel is concerned with, so that it knows how to read data from the
- mouse. The protocol is the software aspect of the mouse.
- Applications need to know the protocol to interpret the raw mouse data
- they receive from the kernel.
-
- 2.1. Mouse interfaces.
-
- The Linux kernel currently supports four different kinds of bus mouse
- interface : Inport (Microsoft), Logitech, PS/2 and ATI-XL. There is
- no sure-fire way of determining your mouse interface --- mouse
- developers generally do their own thing when it comes to standards.
- The following sections may help, otherwise you'll just have to make it
- up.
-
- 2.2. Inport mice.
-
- This includes most of the old style Microsoft mice which are shaped
- like a bar of dove soap. U.S. users who have purchased Gateway
- computers should note that the mice that come with them are not Inport
- mice but PS/2 mice (see below). Inport mice generally connect to an
- interface card which plugs into the bus on your motherboard. If the
- plug which connects your mouse cord to the interface card is round,
- has 9 pins, and a notch in one side you likely have an Inport mouse.
-
- As far as I can tell, apart from the ATI-XL, all ATI mice (such as
- those on the Graphics Ultra cards) are plain Inport mice.
-
- 2.3. Logitech mice.
-
- Logitech mice in general appear almost exactly the same as Inport
- mice. They too connect to an interface card via a 9 pin mini-din
- connector. Hopefully, it will have come in a Logitech box or have
- ``Logitech'' printed on the connector card so that you can tell it
- actually is a Logitech mouse.
-
- There are also some truly ancient Microsoft mice (ones with ball
- bearings on the bottom as well as the mouse ball and a DB9 connector)
- which also use the Logitech protocol.
-
- 2.4. PS/2 mice.
-
- PS/2 mice aren't really bus mice at all. The PS/2 mouse interface is
- not on an expansion card, the mouse is connected to the PS/2 Auxiliary
- Device port on the keyboard controller. A PS/2 mouse port uses a
- 6-pin mini DIN connector, similar to the keyboard connector. Many
- laptops also use this kind of interface to their trackballs --- except
- for the connector, of course.
-
- 2.5. ATI-XL mice.
-
- ATI-XL mice are a variant of Inport mice, with some slight
- differences. They come on the ATI-XL combined video adaptor/mouse
- card. Unless you know you have an ATI-XL card (and thus an ATI-XL
- mouse), you probably don't have one of these. It is possible for ATI-
- XL mice to use either the ATI-XL or Inport kernel drivers, although
- the ATI-XL driver should give better results.
-
- 2.6. Mouse protocols.
-
- The PC world is full of different and conflicting mouse protocols.
- Fortunately, the choice for bus mice is considerable smaller than that
- for serial mice. Most Inport, Logitech and ATI-XL mice use the
- ``BusMouse'' protocol, although there are some ancient Logitech mice
- which use the ``MouseSystems'' protocol, and some even older Microsoft
- mice which use the ''Logitech'' protocol. PS/2 mice use the ``PS/2''
- protocol.
-
- 3. Getting your mouse working.
-
- Once you have figured out your mouse interface and protocol types,
- you're ready to proceed.
-
- 3.1. Setting the mouse interrupt.
-
- 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 (/dev/ttyS0), 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.
-
- 3.2. Inport and Logitech mice.
-
- 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. ***
- ***************************************************
-
- 3.3. ATI-XL mice.
-
- ATI-XL busmice have a software selectable IRQ - you should have
- received with your mouse a MS-DOS program (VSETUP.EXE) to set the 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.
-
- 3.4. PS/2 mice.
-
- 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.
-
- 3.5. Configuring the kernel.
-
- 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.
-
- 3.5.1. Compiling the kernel.
-
- Change to your kernel directory (here assumed to be (/usr/src/linux)
- and do a
-
- make config
-
- 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
-
- Microsoft busmouse support
-
- and ``n'' to all other busmouse questions. Answer the non-mouse
- related questions as you usually would.
-
- 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
-
- C&T 82C710 mouse port support (as on TI Travelmate)
-
- question. Note that you will still have to answer ``y'' to the ques¡
- tion 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.
-
- 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 which says
-
- #define MOUSE_IRQ 5
-
- to reflect the interrupt number for your mouse (see the section ``Set¡
- ting the mouse interrupt'' for details on finding your interrupt num¡
- ber).
-
- If you have an ATI-XL mouse, edit the file
- /usr/src/linux/drivers/char/atixlmouse.c and change the line which
- says
-
- #define ATIXL_MOUSE_IRQ 5
-
- to reflect your mouse's interrupt number.
-
- 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.
-
- Examples
-
- 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.
-
- 3.5.2. selection.
-
- 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.
-
- 3.5.3. Changing interrupts with newer kernels.
-
- 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:
-
- LILO:linux msmouse=3
-
- 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
-
- 3.6. The mouse devices.
-
- Mice under Linux are accessed via the devices in the /dev 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.
-
- Note:
- If you are using your ATI-XL mouse with the Inport driver, you
- should use the inportbm device, not the /dev/atibm device.
-
- 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
-
- Note:
- 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 device to
- /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 mouse.
-
- 4. Using your mouse.
-
- 4.1. gpm.
-
- Gpm is a program which allows you to do mouse based 'cut- and-paste'
- between Linux virtual consoles, much like you can under X, and is a
- good way of testing your mouse out. The current version of gpm is
- gpm-1.13.tar.gz
- <http://sunsite.unc.edu/pub/Linux/system/mouse/gpm-1.13.tar.gz> and
- can be found at your friendly Linux FTP site (such as
- sunsite.unc.edu), and contains instructions for getting it compiled.
- Some Linux distributions, such as Red Hat, come with a precompiled gpm
- binary.
-
- When invoking gpm, use the -t switch to indicate which protocol your
- mouse is using and the -m option to indicate which mouse device you
- are using. Three protocols useful for most busmice are logi, bm, and
- ps2. The default for mouse device is to use /dev/mouse, so you can
- omit the -m option if you have the appropriate symbolic link. An
- example for a Microsoft Inport mouse is:
-
- gpm -t bm
-
- or if you use the PS/2 protocol:
-
- gpm -t ps2
-
- You should then be able move your mouse and see a block move around
- the screen and also be able to cut and paste text between virtual
- consoles using the mouse buttons. Read the documentation with gpm, or
- do a ``man gpm'' for more information on how to operate it.
-
- 4.2. XFree86.
-
- To use your busmouse under XFree86, you will need to set your mouse
- protocol type in your Xconfig file. If you have a BusMouse protocol
- mouse, your Xconfig should contain (including the quotes)
-
- Section "Pointer"
- Protocol "Busmouse"
- Device "/dev/mouse"
-
- # Any other options such as Emulate3Buttons
- EndSection
-
- For PS/2 mice change the protocol line to:
-
- Protocol "PS/2"
-
- If you have a two button mouse, it should also contain the line
-
- Emulate3Buttons
-
- which will allow you to emulate the use of the middle mouse button by
- pressing both mouse buttons simultaneously. All other mouse related
- lines, such as ``BaudRate'' and ``SampleRate'' should be commented
- out, as these have no effect on bus mice.
-
- 4.3. XFree86 and gpm.
-
- For a long period of the kernel developement, it was not possible to
- share busmice between processes. Because of this it was hard to run
- both XFree86 and gpm at the same time. If you try to run X with gpm
- running and you get errors like the following then you know you are
- using one of these older kernels.
-
- Fatal server error:
- Cannot open mouse (Device or resource busy)
-
- There are two meathods of getting gpm working with XFree86 with these
- kernels. The first is to kill any copy of gpm you have running before
- you start up XFree86. The second is to use gpm's "repeater" option
- (it takes mouse data and repeats the information to multiple
- applications).
-
- I would recommend upgrading your kernel if possible so that you can
- share busmice between processes. For this document, I will only
- explain the simplest meathod of using XFree86 and gpm together with
- older kernels. Please see gpm's documentation if you would like to
- use the repeater meathod.
-
- Gpm allows you to terminate running copies of itself by executing:
-
- gpm -k
-
- This should be done before starting up X11. Take whatever script you
- use to start up your X session, such as startx, and add the above com¡
- mand to the top of the script so that gpm is shut down automatically.
- You may wish to also put a command that restarts gpm at the bottom of
- the script so that it restarts upon exiting your X session.
-
- 5. Still can't get your mouse going?
-
- So you've read through this howto a dozen times, done everything
- exactly as you think you should have, and your mouse still doesn't
- work? The best advice I can give you is this: experiment. Sure, it's
- a pain in the posterior, but in the end the only way to find out what
- is going to work with your mouse is to try all of the alternatives
- until you have success.
-
- As always, if there is something you don't understand, try reading the
- manual page first and see if that helps. If you have a specific
- question, or a problem you think I might be able to help with, feel
- free to contact me at the address listed at the top of this howto, and
- I'll see if I can help you out or point you to someone who can.
-
- The comp.os.linux.setup newsgroup or comp.os.linux.hardware is the
- appropriate forum for discussion and/or questions regarding setup ---
- please don't post questions to other groups, and especially don't
- crosspost questions to two or more of the Linux groups, they are more
- than cluttered enough as it is! When posting, you will get a much
- better response (and much fewer flames) if you use appropriate
- Subject: and Keywords: lines. For example:
-
- Subject: BUSMICE - Gateway 2000 mouse wont work.
- Keywords: mouse busmouse gateway
-
-