Next Previous Contents

6. Hardware In Detail

6.1 PCMCIA Controller

Linux Compatibility Check

With the probe command, which is included in the PCMCIA-CS package by David Hinds you can get the type of the PCMCIA controller. Often this shows also up with cat /proc/pci .

Related HOWTOs


PCMCIA Configuration - Survey

In the mailing lists where I'm a member, the question "How can I set up PCMCIA support, after the Linux installation?" comes up sometimes. Therefore I try to give a short survey. But the authoritative source for the latest information about the PCMCIA Card Services for Linux, including documentation, files, and generic PCMCIA information is the Linux PCMCIA Information Page . For problems with PCMCIA and APM see the APM chapter.


  1. Read the PCMCIA HOWTO, usually included in the PCMCIA-CS package.
  2. Install the newest available PCMCIA-CS package, if you take a rpm or deb package it is quite easy.
  3. If necessary, install a new kernel. Note: With 2.2.x kernels PCMCIA kernel support seems no longer necessary. I had no time to look this up yet. Please read the according documents.
  4. Make sure your kernel has module support and PCMCIA support enabled (and often APM support)
  5. Make sure your kernel also includes support for the cards you want to use, e.g. network support for a NIC card, serial support for a modem card, SCSI support for a SCSI card and so on.
  6. If you have a custom made kernel, don't forget to compile the PCMCIA-CS source against your kernel.

PCMCIA Controller

  1. Use the probe command to get information whether your PCMCIA controller is detected or not.
  2. Edit the file /etc/sysconfig/pcmcia. It should include PCMCIA=y and the type of your PCMCIA controller, e.g. PCIC=i82365.
  3. Start the PCMCIA services typically via /etc/init.d/pcmcia start. If you get two high beeps, everything should be fine.
  4. If something doesn't work, check the messages in /var/log/messages .


  1. Check your card with cardctl ident .
  2. If your card is not in /etc/pcmcia/config, edit the file /etc/pcmcia/config.opts accordingly. Take an entry in the first file as a model. You may try every driver, just in case it might work, for instance the pcnet_cs supports many NE2000 compatible PCMCIA network cards.
  3. A list of supported cards is included in the PCMCIA-CS package. The current list you may find at SUPPORTED.CARDS.

    Since there are not all cards mentioned I have set up a page PCMCIA Cards "Unofficially" Supported by Linux .

  4. If you use X, you can use cardinfo to insert, suspend, or restart a PCMCIA card via a nice graphical interface.

6.2 Infrared Port

Linux Compatibility Check

To get the IrDA port of your laptop working with Linux/IrDA you may use StandardInfraRed (SIR) or FastInfraRed (FIR).


Up to 115.200bps, the infrared port emulates a serial port like the 16550A UART. This will be detected by the kernel serial driver at boot time, or when you load the serial module. If infrared support is enabled in the BIOS, for most laptops you will get a kernel message like:

Serial driver version 4.25 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A     #first serial port /dev/ttyS0
ttyS01 at 0x3000 (irq = 10) is a 16550A    #e.g. infrared port
ttyS02 at 0x0300 (irq = 3) is a 16550A     #e.g. PCMCIA modem port


If you want to use up to 4Mbps, your machine has to be equipped with a certain FIR chip. You need a certain Linux/IrDA driver to support this chip. Therefore you need exact information about the FIR chip. You may get this information in one of the following ways:

  1. Read the specification of the machine, though it is very rare that you will find enough and reliable information there.
  2. Try to find out wether the FIR chip is a PCI device. Do a cat /proc/pci . The according files for 2.2.x kernels are in /proc/bus/pci . Though often the PCI information is incomplete. You may find the latest information about PCI devices and vendor numbers in the kernel documentation usually in /usr/src/linux/Documentation or at the page of Craig Hart . From kernel 2.1.82 on, you may use lspci from the pci-utils package, too.
  3. Use the DOS tool CTPCI330.EXE provided in ZIP format by the German computer magazine CT . The information provided by this program is sometimes better than that provided by the Linux tools.
  4. Try to get information about Plug-and-Play (PnP) devices. Though I didn't use them for this purpose yet, the isapnp tools, could be useful.
  5. If you have installed the Linux/IrDA software load the FIR modules and watch the output of dmesg, whether FIR is detected or not.
  6. Another way how to figure it out explained by Thomas Davis (modified by WH): "Dig through the FTP site of the vendor, find the Windows9x FIR drivers, and they have (for a SMC chip):
    -rw-rw-r--   1 ratbert  ratbert       743 Apr  3  1997 smcirlap.inf 
    -rw-rw-r--   1 ratbert  ratbert     17021 Mar 24  1997 smcirlap.vxd 
    -rw-rw-r--   1 ratbert  ratbert      1903 Jul 18  1997 smcser.inf 
    -rw-rw-r--   1 ratbert  ratbert     31350 Jun  7  1997 smcser.vxd 

    If in doubt, always look for the .inf/.vxd drivers for Windows95. Windows95 doesn't ship with _ANY_ FIR drivers. (they are all third party, mostly from Counterpoint, who was assimilated by ESI)."
  7. Also Thomas Davis found a package of small DOS utilities made by SMC. Look at . The package contains FINDCHIP.EXE. And includes a FIRSETUP.EXE utility that is supposed to be able to set all values except the chip address. Furthermore it contains BIOSDUMP.EXE, which produces this output:

    Example 1 (from a COMPAQ Armada 1592DT)

         In current devNode:
               Size      = 78
               Handle    = 14
               ID        = 0x1105D041 = 'PNP0511' -- Generic IrDA SIR
               Types:  Base = 0x07, Sub = 0x00,  Interface = 0x02
                    Comm. Device, RS-232, 16550-compatible
               Attribute = 0x80
                    CAN be disabled
                    CAN be configured
                    BOTH Static & Dynamic configuration
          Allocated Resource Descriptor Block TAG's:
               TAG=0x47, Length=7 I/O Tag, 16-bit Decode
                                       Min=0x03E8, Max=0x03E8
                                       Align=0x00, Range=0x08
               TAG=0x22, Length=2 IRQ Tag, Mask=0x0010
               TAG=0x79, Length=1 END Tag, Data=0x2F

    Result 1:

    Irq Tag, Mask (bit mapped - ) = 0x0010 = 0000 0000 0000 0001 0000 so, it's IRQ 4. (start at 0, count up ..), so this is a SIR only device, at IRQ=4, IO=x03e8.

    Example 2 (from an unknown machine)

         In current devNode:
              Size      = 529
              Handle    = 14
              ID        = 0x10F0A34D = 'SMCF010' -- SMC IrCC
              Types:  Base = 0x07, Sub = 0x00,  Interface = 0x02
                   Comm. Device, RS-232, 16550-compatible
              Attribute = 0x80
                   CAN be disabled
                   CAN be configured
                   BOTH Static & Dynamic configuration 
         Allocated Resource Descriptor Block TAG's:
              TAG=0x47, Length=7 I/O Tag, 16-bit Decode
                                      Min=0x02F8, Max=0x02F8
                                      Align=0x00, Range=0x08
              TAG=0x22, Length=2 IRQ Tag, Mask=0x0008
              TAG=0x47, Length=7 I/O Tag, 16-bit Decode
                                      Min=0x02E8, Max=0x02E8
                                      Align=0x00, Range=0x08
              TAG=0x2A, Length=2 DMA Tag, Mask=0x02, Info=0x08
              TAG=0x79, Length=1 END Tag, Data=0x00

    Result 2:

    a) it's a SMC IrCC chip

    b) one portion is at 0x02f8, has an io-extent of 8 bytes; irq = 3

    c) another portion is at 0x02e8, io-extent of 8 bytes; dma = 1 (0x02 =0000 0010)

    Thomas Davis has placed some device information at .

    WARNING: The package is not intended for the end user, and some of the utilities could be harmful. The only documentation in the package is in M$ Word format. Linux users may read this with catdoc, available at .

  8. Use the Device Manager of Windows9x/NT.
  9. You may also use the hardware surveys mentioned below.
  10. And as a last ressort, you may even open the laptop and look at the writings at the chipsets themselfs.

Hardware Survey

I have made a hardware survey at http:/ This list also contains information about infrared capable devices which are not mentioned here (mice, printers, remote control, transceivers, etc.).

To make this list more valuable, it is necessary to collect more information about the infrared devices in different hardware. You can help by sending me a short e-mail containing the exact name of the hardware you have and which type of infrared controller is used.

Please let me know also how well Linux/IrDA worked (at which tty, port and interrupt it works and the corresponding infrared device, e.g. printer, cellular phone).

Also you can help by contributing detailed technological information about some infrared devices, which is necessary for the development of drivers for Linux.

Related HOWTOs

  1. Linux/IR-HOWTO

IrDA Configuration - Survey


The Linux infrared support is still experimental, but rapidly improving. I try to describe the installation in a short survey. Please read my Linux/IR-HOWTO for detailed information.


  1. Get a 2.2.x kernel.
  2. Compile it with all IrDA options enabled.
  3. Also enable experimental, sysctl, serial and network support.


  1. Get the Linux/IrDA software irda-utils at The Linux IrDA Project .
  2. Untar the package.
  3. Do a make depend; make all; make install


  1. Enable the IrDA support in the BIOS.
  2. Check for SIR or FIR support, as described above.
  3. Start the Linux/IrDA service with irmanager -d 1 .
  4. Watch the kernel output with dmesg .

Linux Remote Control - LiRC

Linux Remote Control is maintained by Christoph Bartelmus. "Lirc is a package that supports receiving and sending IR signals of the most common IR remote controls. It contains a device driver for hardware connected to the serial port, a daemon that decodes and sends IR signals using this device driver, a mouse daemon that translates IR signals to mouse movements and a couple of user programs that allow to control your computer with a remote control." I don't have valid information about how much infrared remote control is working with laptop infrared devices.

6.3 Graphic Chip

Linux Compatibility Check

Video Mode

The tool SuperProbe is part of XFree86 and is able to check many graphic chips. Please read the documentation carefully, because it might crash your hardware. From man SuperProbe:

"SuperProbe is a a program that will attempt to determine the type of video hardware installed in an EISA/ISA/VLB-bus system by checking for known registers in various combinations at various locations (MicroChannel and PCI machines may not be fully supported; many work with the use of the -no_bios option). This is an error-prone process, especially on Unix (which usually has a lot more esoteric hardware installed than MS-DOS system do), so SuperProbe may likely need help from the user.


At this time, SuperProbe can identify MDA, Hercules, CGA, MCGA, EGA, VGA, and an entire horde of SVGA chipsets (see the -info option, below). It can also identify several HiColor/True-color RAMDACs in use on SVGA boards, and the amount of video memory installed (for many chipsets). It can identify 8514/A and some derivatives, but not XGA, or PGC (although the author intends to add those capabilities). Nor can it identify other esoteric video hardware (like Targa, TIGA, or Microfield boards).":

For testing reasons start the X server with X 2> <error.msg>. And try to change the resolution by typing <CTL><ALT><+> or <CTL><ALT><->. Note: the + or - sign have to be taken from the numeric pad, which can be emulated at the letter pad by some laptops.

Text Mode

Just watch the display and determine if it works properly. If not, try to enable different video modes at startup time. Setting up X can sometimes be an exercise in trial and error.

Related HOWTOs

  1. XFree86-HOWTO
  2. XFree86-Video-Timings-HOWTO
  3. XFree86-XInside-HOWTO
  4. X-Big-Cursor-mini-HOWTO (useful when running X on a notebook with low contrast LCD)
  5. Keyboard-and-Console-HOWTO
  6. vesafb-mini-HOWTO

Survey X-Servers

You might discover that some features of your laptop are not supported by XFree86, e.g. high resolutions, accelerated X or an external monitor. Therefore I give a survey of available X servers.

  1. XFree86
  2. VESA Frame-Buffer-Device, available with 2.2.x kernels and XFree86 3.3.2
  3. Xinside aka AcceleratedX , commercial
  4. SciTech , commercial
  5. Metro-X at, commercial .

If you can't get an appropriate X server working, but don't want to effort a commercial X server you may try the VGA16 or the mono server included in XFree86.


You may find a survey about X windows resources at Kenneth E. Harker's page Linux on Laptops and a survey about current graphic chips used in laptops at MobiliX.

External Monitor

There are several different methods to activate support for an external monitor: as a BIOS option or during runtime with a keystroke e.g. <Fn>+<F4>. Maybe you have to edit /etc/XF86Config by configuring int_disp and ext_disp. If you can't get this to work with XFree, try a demo version of the commercial X servers mentioned above. Also check with the RedHat and SuSE WWW sites as they may have new, binary-only, X servers that may work with your laptop.


Sometimes you may encounter a display not working properly in text mode. Currently I don't have any recommendations, please see Keyboard-Console-HOWTO.

Take care of the backlight AFAIK this device can only bear a limited number of uptime circles. So avoid using screensavers too much.

For problems with X windows and APM please see the APM chapter.

6.4 Sound

Linux Compatibility Check

The only way I know to check this, is to compile the different sound drivers into the kernel and check whether they are detected or not. The best way to do so, is to compile them as modules because it's easier to load different parameters such as interrupts and IO ports than. For the new 2.2.x kernels, read the /usr/src/linux/Documentation/sound/Introduction document by Wade Hampton. This document may help you get started with sound. Also, you might try one of the commercial sound drivers mentionend below.

Related HOWTOs

  1. Sound-HOWTO
  2. Visual-Bell-mini-HOWTO

Survey Sound Drivers

Many new laptops come with 16-bit sound. But MWave and some other sound technologies won't work or are very hard to get working, e.g. booting to DOS, loading a driver, then using the soundcard as a standard SB-PRO. So you might need a commercial sound driver. With the recent announcement of Linux support by IBM, it would be GREAT if IBM supported the MWave under Linux (hint, hint...). As a last ressort you may try the speaker module pcsnd, which tries to emulate a soundcard.

  1. Kernel Sound Driver by Hannu Savolainen
  2. ALSA Advanced Linux Sound Architecture , commercial or at least non-GPL (since I found a Debian/GNU Linux package I'm not sure anymore, about the commercial status)
  3. OSS UNIX Sound System Lite / OSS, commercial or at least non-GPL (since the 2.2.x kernels I'm not sure about the commercial status), also available from .

6.5 Keyboard

Linux Compatibility Check

Usually there are no problems with Linux and the keyboard. Though there are two minor caveats: First the setleds program might not work. Second the key mapping might not fit your needs. Some Unix users and vi users expect to find the <CONTROL> key to the left of the <A> key. Many PC-type keyboards have the <CAPS-LOCK> key there. You may use xmodmap or loadkeys to re-map the keyboard. Some laptops (e.g., Toshiba) allow you to swap the <CAPS-LOCK> and <CONTROL> keys. Mark Alexander offered this solution in the linux-laptop mailing list: On RedHat, it's a one-line patch to /usr/lib/kbd/keytables/ , or whatever file is referenced in /etc/sysconfig/keyboard:

***     Tue Oct 31 14:00:07 1995
---      Thu Aug 28 13:36:03 1997
*** 113,119 ****
  keycode  57 = space            space           
        control keycode  57 = nul             
        alt     keycode  57 = Meta_space      
! keycode  58 = Caps_Lock       
  keycode  59 = F1               F11              Console_13      
        control keycode  59 = F1              
        alt     keycode  59 = Console_1       
--- 113,119 ----
  keycode  57 = space            space           
        control keycode  57 = nul             
        alt     keycode  57 = Meta_space      
! keycode  58 = Control       
  keycode  59 = F1               F11              Console_13      
        control keycode  59 = F1              
        alt     keycode  59 = Console_1       

External (Second) Keyboard

A second (or external) keyboard can be attached using the PS/2 port (I suppose this is not possible via the serial port, since there is no keyboard controller for the serial port). Also there is one laptop with a detachable keyboard the Siemens Scenic Mobile 800. This machine uses an infrared connection to the keyboard, but I don't know whether this works with Linux. WARNING: Don't plug the external keyboard in while the laptop is booted, or plug the mouse in the keyboard port and the keyboard in the mouse port. On a Toshiba, this caused one user to have to completely shutdown the laptop, remove the keyboard/mouse, and do a cold reboot.

For PS/2 ports there are so called Y-Cable available, which make it possible to use external mouse and external keyboard at the same time if your laptop supports this feature.

Parport to AUX port adapter In some cases one kbd port and one aux port is not enough and you may want to add another keyboard or mouse. You can use this adapter, together with the parkbd.c module for that.

On some laptops a splitter works to allow both mouse and keyboard to be plugged in; on others it doesn't work at all.If you might want to use both you had better check that it works, or you may find yourself waiting anxiously for USB support.

Sun keyboard to PC serial port adapter: Many people have dreamed having their Sun Type 5 keyboard attached to their Linux box up to now. And with this adapter, it is finally possible. Because the standard Sun keyboards use TTL RS232 at 1200 bps to talk to the Suns, it's very easy to make them talk to any non-Sun computer by converting this to true RS232. All what you need is a MAX232 chip that'll take care about the correct voltage levels, and also some chip to invert the signals (CD4049 in the pic, I've used a 7400 quad-nand myself), since the MAX232 inverts them as well, and we don't need this. This all easily fits into a 25-pin serial connector.

6.6 Pointing Devices - Mice and Their Relatives

Linux Compatibility Check

You may check your mouse with the mev command from the GPM package.

Related HOWTOs

  1. 3-Button-Mouse-mini-HOWTO for serial mice
  2. Bus-Mouse-HOWTO
  3. Kernel-HOWTO

Mice Species

  1. Trackpad, Touchpad, used with the majority of current laptops
  2. Trackball, e.g. COMPAQ LTE
  3. Pop-up-Mouse, e.g. HP OmniBook 800
  4. Trackpoint, Mouse-Pin, e.g. IBM ThinkPad and Toshiba
  5. 3 Button Mice, e.g. IBM Thinkpads at least the 600s. I have heard rumor about a 3 button mouse for Texas Instruments Travelmates, but couldn't verify this yet.

PS/2 Mice

Most of the mice used in laptops are PS/2 mice (actually I don't know one with another mouse protocol). You may communicate with the PS/2 mouse through /dev/psaux or /dev/psmouse. If you use X windows this device and the protocol has to be set in /etc/XF86Config, too. In earlier releases, sometimes the GPM mouse manager and X windows had trouble sharing a mouse when enabled at the same time. But AFAIK this is no problem anymore for the latest versions.

Speaking of Emulate3Buttons, 100ms is usually better than the 50ms allowed in most default setups of /etc/X11/XF86Config.

Section "Pointer"
Protocol    "PS/2"
Device      "/dev/psaux"
Emulate3Timeout    100


Usually a touchpad works with the PS/2 mouse driver. A tip: I've heard that tipping with one , two or three fingers on the touchpad simultaneously results in pressing the left, middle and respectively the right mouse-button (by Martin Hoffmann <> for an IPC-Radiance 900).

There is also a dedicated touchpad driver available. The Synaptics Touchpad Linux Driver supports pointing devices used in notebooks by Acer, Compaq, Dell, Gateway, Olivetti, Texas Instruments, Winbook, and others. Other URL N.N..

The recent gpm package ( gpm >=1.8) includes the above mentioned synaptics touchpad device driver. This device driver has been developed by H. Davies <>. Instead of using the PS/2 compatibility mode of touchpad devices, you can now use native touchpad mode with some pretty impressive features.

In addition to translating finger motion into mouse motion and supporting the buttons, this support currently has several features (from the README):

These features can be enabled/disabled and many of them have time and speed parameters which can be adjusted to the taste of the user.

It seems gpm is best known as a console biased tool. This is true, but you may use it as an X input device. gpm is used as a repeater device. In this way you can use both the built-in synaptics touchpad with all the features and at the same time a serial mouse (with three buttons). This all works smoothly together. X reads the mouse events from a named pipe /dev/gpmdata in a protocol it understands, which in my case is Mouse-Systems-Compatible (5bytes). Most 3-button mice use the default protocol. So a simple reconfiguration in XF86Config is all that is required, after starting gpm in an appropriate way, of course.

gpm could be started on your laptop with the following arguments : /usr/bin/gpm -t synps2 -M -t ms -m /dev/ttyS0 . Both touchpad and serial mouse work in console and X mode. You do have to create the named pipe /dev/gpmdata yourself.

Tapping with two fingers simultaneously to simulate a middle mouse button works on Logitech touchpads used in a few machines.

Thanks to Geert Van der Plas for most of the touchpad chapter.


The only laptop I know which includes a touchscreen is the Fujitsu Biblo 112. It may work in PS/2 or serial mouse compatibility mode. But I couldn't check this yet.

COMPAQ Concerto Pen

The latest version of the Linux Compaq Concerto Pen Driver is available from Joe Pfeiffer's home page.

External Mouse

For better handling, e.g. with a 3 button mouse you may use an external mouse. This usually a serial mouse or a PS/2 mouse, according to the port your laptop offers. Usually this is no problem.

For PS/2 ports there are so called Y-Cable available, which make it possible to use external mouse and external keyboard at the same time if your laptop supports this feature.

WARNING: Don't plug in the external mouse while powered up. If you have separate mouse and keyboard ports, make sure you plug the mouse in the mouse port and the keyboard in the keyboard port. If you don't, you may have to do a hard reboot of the laptop to get it to recover.

6.7 Advanced Power Management - APM

Linux Compatibility Check

From the Battery-Powered-mini-HOWTO " .. for APM to work on any notebook or energy-conscious desktop, the system BIOS ROM in the machine must support the APM Specification standard. Furthermore, for APM to work with the Linux operating system, the system BIOS ROM must support either the 1.0 or 1.1 version of the APM standard, and it must also support 32-bit protected mode connections. A system that supports APM 1.1 is preferred, as it provides more features that the device driver and supporting utilities can take advantage of."

You may get information about the APM version with the dmesg command and in the /proc/apm file.


Features of APM according to Documentation/ "The system time will be reset after a USER RESUME operation, the /proc/apm device will provide battery status information, and user-space programs will receive notification of APM events (e.g., battery status change). "

APM support consists of two parts: kernel support and user-land support.

Kernel Land

For kernel support, enable the parameters in the corresponding kernel section. Some features need special tweaking with certain machines (e.g. IBM ThinkPad) or even don't work, ("TI 4000M TravelMate and the ACER 486/DX4/75 because they don't have compliant BIOSes"). Currently all distributions I know don't provide a kernel with APM support enabled. So you usually have to compile your custom kernel. Please see Kernel-HOWTO or distribution manual for details. The available APM options are (please see Documentation/ in the kernel source tree for more details):

Joey Hess <> wrote at "I just installed kernel 2.2.12 on my laptop, and was having some trouble getting apm working. it said apm disabled on user request at boot time. Well, some grepping the kernel sources found that passing apm=on to the kernel at boot time enables it now. I can't find any record or docs of this change.

User Land

The utilities for userland support may be found at APMD is a set of programs that control the Advanced Power Management system found in most modern laptop computers. If you run a 2.2.x kernel and want to experiment, Gabor Kuti <> has made a kernel patch that allows you to hibernate any Linux system to disk, even if your computers APM BIOS doesn't support it directly. IMHO you don't need this features if your laptop provides a function key to invoke suspend mode directly.

When you first install Linux, you will probably have to recompile the kernel. The kernel that came with your distribution probably does not have APM enabled.

Please see the Battery Powered Linux Mini-HOWTO by <> Hanno Mueller and the page of Kenneth E. Harker for detailed information.

README apmd?:On laptop computers, the APM support provides access to battery status information and may help you to conserve battery power, depending on your laptop and the APM implementation.

Rik Faith <> has transferred maintenance of the Linux apmd package over to me, Avery Pennarun <> and I'm finally getting around to making a release with the many updates we've collected since the last release back in 1996.

Here's what apmd can do:

Richard Gooch wrote: I'have had a look at the beta version of apmd, and I still don't like it, because:

Though this topic was discussed controversly Richard Gooch has put together a package suspendd at .

Also, have a look at apmcd (apm based crontab) at . A tool made by Nicolas J. Leon <>

Note: I didn't check wether this features are merged into one package (apmd eventually) already.


If you have another operating system preinstalled or use another operating system at the same disk, make sure there is no "hibernation" or "suspend" tool installed, which could severely interfere with Linux, e.g. it might use disk space which is occupied by Linux or vice versa.


If your machine worked with 2.0.x kernels but not with the 2.2.x series, take this advice from Klaus Franken : "The default changed in 2.2. Search in the init-scripts for halt and change it to halt -p or poweroff. See man halt , if you don't have this option you need a newer version of halt." You may find it in the SysVinit package.

On some new machines (for instance HP Omnibook 4150 - 366 MHz model) when accessing /proc/apm, you may get a kernel fault general protection fault: f000. Stephen Rothwell <> explaines: "This is your APM BIOS attempting to use a real mode segment while in protected mode, i.e. it is a bug in your BIOS. .. We have seen a few of these recently, except all the others are in the power off code in the BIOS wher we can work around it by returning to real mode before attempting to power off. Here we cannot do this."

apmd-rhcn-2.4phil-1 by RedHat contains an unofficial patch for shutting down the PCMCIA sockets before a suspend and patches for multiple batteries.

According to Documentation/ "Some other things you should try when experiencing seemingly random, weird problems:

  1. make sure that you have enough swap space and that it is enabled.
  2. pass the no-hlt option to the kernel.
  3. switch on floating point emulation in the kernel and pass the no387 option to the kernel.
  4. pass the floppy=nodma option to the kernel.
  5. pass the mem=4M option to the kernel (thereby disabling all but the first 4 MB of RAM).
  6. make sure that the CPU is not over clocked.
  7. read the sig11 FAQ at .
  8. disable the cache from your BIOS settings.
  9. install a fan for the video card or exchange video RAM.
  10. install a better fan for the CPU.
  11. exchange RAM chips.
  12. exchange the motherboard.


PCMCIA Card Services and Advanced Power Management (from the PCMCIA-HOWTO):

"Card Services can be compiled with support for APM (Advanced Power Management) if you've configured your kernel with APM support. ... The PCMCIA modules will automatically be configured for APM if a compatible version is detected on your system. Whether or not APM is configured, you can use cardctl suspend before suspending your laptop, and cardctl resume after resuming, to cleanly shut down and restart your PCMCIA cards. This will not work with a modem that is in use, because the serial driver isn't able to save and restore the modem operating parameters. APM seems to be unstable on some systems. If you experience trouble with APM and PCMCIA on your system, try to narrow down the problem to one package or the other before reporting a bug. Some drivers, notably the PCMCIA SCSI drivers, cannot recover from a suspend/resume cycle. When using a PCMCIA SCSI card, always use cardctl eject prior to suspending the system.".

APM and Resuming X Windows

"Many (most?) BIOSes fail to save and restore display controller chip registers, and X has no protocol to be notified of resume events, so on many systems suspend/resume is more-or-less incompatible with X." Linux Laptops has created a fix for this problem.

Sometimes X windows and APM don't work smoothly together, the machine might even hang. A recommendation from Steve Rader: Some linux systems have their X server hang when doing apm -s. Folks with this affliction might want switch to the console virtual terminal then suspend chvt 1; apm -s as root, or, more appropiately.sudo chvt 1; sudo apm -s. I have these commands in a script, say, my-suspend and then do xapmload --click-command my-suspend .

Modularization of APM

As far as I remember this is controversly discussed, but I don't remember the URL. It isn't a kernel feature yet.

APM Resume Options

The new 3.0beta versions add a new feature to apmd: it can run arbitrary commands (like cardctl suspend) when you suspend or resume your system. It also supports BIOS clocks that are set to UTC time.

APM and Sound

Lots of BIOSes fail to restore sound chip registers, so you may get a squeal of feedback when you wake up the machine. A script in /etc/apm/event.d can use aumix to save and restore sound mixer settings.

Software Suspend

Software suspend enables the possibilty of suspendig machine. It doesn't need APM. You may suspend your machine by either pressing Sysrq-d or with 'swsusp' or 'shutdown -z (patch for sysvinit needed). It creates an image which is saved in your active swaps. By the next booting the kernel detects the saved image, restores the memory from it and then it continues to run as before you've suspended. If you don't want the previous state to continue use the 'noresume' kernel option.

6.8 ACPI

ACPI stands for Advanced Configuration and Power Interface. This is a specification by Toshiba, Intel and Microsoft. Besides many other things it also defines power management. This is why it is often compared to APM.

The ACPI4Linux project has started at the beginning of 1999. The ACPI4Linux project is a kernel driver project aimed at implementing full ACPI support for Linux, including fan control, dock/undock detection and a WindowMaker dockable temperature meter. You may reach it at ACPI4Linux.

6.9 Batteries

For information about available battery types, take a look at the Hardware Features chapter above.

Please see Battery Powered Linux Mini-HOWTO by Hanno Mueller <> Power Supplies for Laptops - (Draft) for further information.

Stephen Rothwell is currently integrating a patch that will add multiple battery support to the kernel APM.

From the mobile-update page (modified by WH): Discharge the battery. If your battery runs only for about 20 minutes, you probably suffer from memory effects. Most laptops do not discharge the battery properly. With low powered devices like old computer fans they can be discharged completely. This removes memory effects. You should do so even with LiIon batteries, though they don't suffer much from memory effext (the manual of an IBM Thinkpad says to cycle the batteries through a full charge/discharge cycle 3 times every few months or so).

WARNING: Try this at your own risk! Make sure the voltage of the fans is compatible to your battery. It works for me.

In the US, this company has most batteries for anything and can rebuild many that are no longer manufactured: Batteries Plus, 2045 Pleasant Hill Road, Duluth, GA 30096 +1 770 495 1644.

6.10 Memory

Unfortenately most laptops come with a proprietary memory chips. So they are not interchangeable between different models. But this seems changing.

6.11 Plug-and-Play Devices (PnP)

The Plug and Play driver project for Linux is a project to create support within the Linux kernel (see Linux.Org for more information) for handling Plug and Play (and other semi-PnP) devices in a clean, consistent way. It aims to allow a driver of any type of hardware to have this hardware configured by the PnP driver in the kernel. This driver is then notified when the device is reconfigured, or even removed from the system, so as to allow for graceful action in these circumstances .

ISA PnP tools is another useful package.

And there is a project at RedHat .

The latest PCMCIA driver package (>>3.1.0) has utilities lspnp and setpnp to manipulate PNP settings. Note that in 3.1.0 you may need this patch to compile them:

-#ifdef __GLIBC__
+#if 0 /* def __GLIBC__ */
 #include <byteswap.h>

6.12 Docking Station / Port Replicator


First some definitions. There is a difference between docking station and port replicator.

I use the term docking station for a box which contains slots to put some interface cards in, and space to put a harddisk, etc. in. This box can be permanently connected to a PC. A port replicator is just a copy of the laptop ports which may be connected permanently to a PC.

Other Solutions

I don't use a docking station. They seem really expensive and I can't see any usefulness. OK you have to mess up with some more cables, but is it worth so much money? Docking stations are useful in an office environment when you have a permanent network connection, or need the docking station's SCSI adaptor (e.g., for a CD-R).

Also all docking stations I know are proprietary models, so if you change your laptop you have to change this device, too. I just found one exception a docking station which connects to your laptop via IrDA the IRDocking IR-660 by Tekram . It supports these connectors: 10Base-T (RJ-45); PS/2 Keyboard; PS/2 Mouse; 25-Pin Printer Port (LPT); IR Transceiver; Power (6 VDC). So it seems that a VGA port and a port to connect a desktop PC directly are missing. This device should work with Linux/IrDA, though I couldn't check it out.

I would prefer to buy a PC instead and connect it via network to the laptop.

Or use an external display, which usually works well as described above, and an external keyboard and mouse. If your laptop supports an extra PS/2 port you may use a cheap solution a Y cable, which connects the PS/2 port to an external keyboard and an external monitor. Note: Your laptop probably has support for the Y cable feature, e.g. the COMPAQ Armada 1592DT.

Connection Methods

AFAIK there are three solutions to connect a laptop to a docking station:

  1. SCSI port
  2. parallel port
  3. (proprietary) docking port

From Martin J. Evans "The main problem with docking stations is getting the operating system to detect you are docked. Fortunately, if you configure your kernel with the /proc file system (does anyone not do this?) you can examine the devices available and thus detect a docked state. With this in mind a few simple scripts is all you need to get your machine configured correctly in a docked state.

You may want to build support for the docking station hardware as modules instead of putting it directly into the kernel. This will save space in your kernel but your choice probably largely depends on how often you are docked.

1) Supporting additional disks on the docking station SCSI card

To my mind the best way of doing this is to:

  1. Either build support for the SCSI card into the kernel or build it as a module.
  2. Put the mount points into /etc/fstab but use the "noauto" flag to prevent them from being mounted automatically with the mount -a flag. In this way, when you are docked you can explicitly mount the partitions off any disk connected to the docking station SCSI card.

2) Supporting additional network adaptors in the docking station

You can use a similar method to that outlined above for the graphics card. Check the /proc filesystem in your rc scripts to see if you are docked and then set up your network connections appropriately. "

Once you determine this information, you may use a script, similar to the following example, to configure the connection to your docking station at startup. The script is provided by Friedhelm Kueck:

# check, if Laptop is in docking-station (4 PCMCIA slots available)
# or if it is standalone (2 slots available)
# Start after cardmgr has started
# Friedhelm Kueck
# 08-Sep-1998
# Find No. of Sockets
SOCKETS=`tail -1 /var/run/stab | cut -d ":" -f 1`

case "$SOCKETS" in

"Socket 3")
echo Laptop is in Dockingstation ...
echo Disabeling internal LCD Display for X11
cp /etc/XF86Config_extern /etc/XF86Config
# Setup of PCMCIA Network Interface after start of cardmge
echo "Setting up eth0 for use at Network ..."
/sbin/ifconfig eth0 netmask broadcast
/sbin/route add -net gw
/sbin/route add default gw

"Socket 1")
echo Laptop is standalone
echo Disabling external Monitor for X11
cp /etc/XF86Config_intern /etc/XF86Config
echo Network device NOT setup

6.13 Network Connections

Related HOWTOs

  1. PLIP-mini-HOWTO
  2. NET-3-HOWTO
  3. Ethernet-HOWTO
  4. Term-Firewall-mini-HOWTO

Connection Methods

PCMCIA Network Card

If your laptop supports PCMCIA this is the easiest and fastest way to get network support. Make sure your card is supported before buying one.

Serial Null Modem Cable

Probably the cheapest way to connect your laptop to another computer, but quite slow. You may use PPP or SLIP to start the connection.

Parallel Port NIC (Pocket Adaptor)

Accton Pocket Ethernet and Linux This ethernet adaptor uses a parallel port and delivers approximately 110k Bytes/s throughput for those notebooks that do not have PCMCIA slots.

Linux and Linksys Ethernet Adaptors A short note on the use of the Linksys parallel-port ethernet adaptor under Linux. This is a widely available networking adaptor that doesn't require a PCMCIA slot.

Parallel "Null" Modem Cable

Offers more speed than a serial connection. Some laptops use chipsets that will not work with PLIP. Please see PLIP-HOWTO for details.

Docking Station NIC

I don't have experience with a NIC in a docking station yet.

6.14 Modem

Modem Types

There are three kinds of modems available: internal, PCMCIA card or external serial port modems. But some internal modems will NOT work with Linux such as the MWave modems (IBM) or if the laptop has a WinModem. This is caused by non-standard hardware. So you have to use either a PCMCIA card modem or an external modem.

Quotation from the Kernel-FAQ: "9.Why aren't WinModems supported? (REG, quoting Edward S. Marshall) The problem is the lack of specifications for this hardware. Most companies producing so-called WinModems refuse to provide specifications which would allow non-Microsoft operating systems to use them. The basic issue is that they don't work like a traditional modem; they don't have a DSP, and make the CPU do all the work. Hence, you can't talk to them like a traditional modem, and you -need- to run the modem driver as a realtime task, or you'll have serious data loss issues under any kind of load. They're simply a poor design."

"Win modems are lobotomized modems which expect Windows to do some of their thinking for them. If you do not have Windows, you do not have a connection. "

Anyway, I have set up a page collecting information on laptops with internal modems at . Maybe it's possible to run such modems with MS-Windows9x/NT emulators like wine or VMware, but I don't know it.

Recently there is a driver for Lucent WinModems (alpha) available at SuSE - Labs and LTModem diagnostic tool.


WARNING: Pay attention to the different kinds of phone lines: analog and ISDN. You can't connect an analog modem to an ISDN port and vice versa. Though there might be hybrid modems available. Connecting to the wrong port may even destroy your modem. Trick: If you are looking for an analog phone port in an office building which is usually wired with ISDN, take a look at the fax lines, they are often analog lines.

For tracking the packets on PPP you may use pppstats. Or pload this provides a graphical view of the traffic (in and out) of the PPP connection. It is based on athena widgets hence is very portable. It also uses very little CPU time. The home of pload is .

6.15 SCSI

Hardware Compatibility Check

If unsure about the right SCSI support, compile a kernel with all available SCSI drivers as modules. Load each module step by step until you get the right one.

Related HOWTOs



AFAIK there is no laptop yet with a SCSI harddisk. Though there are two models with a built in SCSI port: Texas Instruments TI 4000 and HP OmniBook 800. Maybe the PowerBook G3 has a SCSI disk, but I didn't check this yet. The old Apple Powerbook Duo models had a SCSI hard disk.

For other models, if you need SCSI support you may get it by using a SCSI-PCMCIA card or via a SCSI adapter in a docking station.

6.16 Universal Serial Bus - USB

Linux Compatibility Check

You should get information about the USB controller with cat /proc/pci and about USB devices with cat /proc/bus/usb/devices.


Newer laptops come with the Universal Serial Bus (USB). I haven't tried it on any of my systems because I don't have any USB devices.

Visit for the USB Linux home page. Also I have set up a page collecting information about laptops and USB at MobiliX .

6.17 Floppy Drive

Linux Compatibility Check

Usually there are no problems connecting a floppy drive to a Linux laptop. But with a laptop floppy drive you may sometimes not be able to use every feature. I encountered the superformat command (from the fdutils package) couldn't format more than 1.44MB with my HP OmniBook 800. You may also have difficulty when the floppy drive and CD drive are mutually exclusive, or when the floppy drive is a PCMCIA device (as with the Toshiba Libretto 100). With older laptops, there might be a minor problem if they use a 720K drive. AFAIK all distributions come with support for 1.44M (and sometimes 1.2M) floppies only. Though it's possible to install Linux anyway. Please see Installation chapter. Please see kernel documentation for boot time parameters concerning certain laptop floppy drives, for instance IBM ThinkPad. Or man bootparam .

6.18 CD Drive

Most notebooks today come with CD drives. If floppy and CD drive are swappable they are usually mutually exclusive. Sometimes they come as PCMCIA devices. Or as SCSI device (HP OmniBook 800). AFAIK there are discmans available which have a port to connect them to a computer or even a SCSI port. I found an article published by Ziff-Davis Publishing Company (September 1996 issue, but missed to note the URL) written by Mitt Jones: "Portable PC Card CD-ROM drives transform laptops into mobile multimedia machines", which listed: Altec Lansing AMC2000 Portable Multimedia CD-ROM Center; Axonix ProMedia 6XR; CMS PlatinumPortable; EXP CDS420 Multimedia Kit; H45 QuickPCMCIA CD; Liberty 115CD; Panasonic KXL-D740; Sony PRD-250WN CD-ROM Discman.

6.19 DVD Drive

The Linux Video and DVD Project has made great headway since its start last February. They have just released the source code ( so that a DVD decoder card can unlock and read the DVD. Also provided on the site are links to various documents discussing DVD chipset specifications. The Linux Video and DVD Project is avidly seeking help from the opensource community for development.

Universal Disk Format (UDF) Driver: "UDF is a newer CDROM filesystem standard that's required for DVD roms. It's meant to be a replacement for the ISO9660 filesystem used on today's CDROMs, but the immediate impact for most will be DVD. DVD multimedia cdroms use the UDF filesystem to contain MPEG audio and video streams. To access DVD cdroms you would need a DVD cdrom drive, the kernel driver for the cdrom drive, some kind of MPEG video support, and a UDF filesystem driver (like this one). Some DVD cdroms may contain both UDF filesystems and ISO9660 filesystems. In that case, you could get by without UDF support."

6.20 Harddisk

Linux Compatibility Check

Useful programms are hdparm, dmesg, fsck and fdisk .


Be careful when using your laptop abroad. I have heard about some destroyed harddisks due to a magnetic field emitted from the magnetic-holds at the backresttable of the seats in a german railway waggon.

Though I am quite satisfied with the quality of the harddisk in my laptop, when I removed it from the case I unintendedly dropped it, I recommend to be very careful.

Form Factors

AFAIK there is only one form factor for harddisks used in laptops the 2.5" format. This format seems to be available in different heights (Please note I couldn't verify this information yet):

It might be possible to use a hard disk wich doesn't fit with some case modifications.

Some laptops come with a removable hard disk in a tray, for instance the KAPOK 9600D. There seem to be no SCSI drives for laptops available.

6.21 Video Port / ZV Port

Some high end laptops come with a video or ZV port (NTSC/PAL). Since I don't have a laptop with a ZV or video port yet, I can provide only some URLs (driver) (tvviewer). For further information see video4linux at To collect information about laptops with video port I have setup a page at . Alternatively to the ZV port you might use the USB port.

Next Previous Contents