<!doctype linuxdoc system>
<article>
<title>Linux Laptop-HOWTO
<author>Werner Heuser <htmlurl url ="mailto:wehe@tuxmobil.org" name="&lt;wehe@tuxmobil.org&gt;">
<date>v2.2b, 27 February 2003
<abstract>
Laptops are different from desktops/towers. They use certain hardware such as PCMCIA cards, infrared ports, batteries, docking stations. Often their hardware is more limited (e.g. disk space, CPU speed), though the performance gap is becoming smaller. In many instances, laptops can become a desktop replacement.

Hardware support for Linux (and other operating systems) on laptops is sometimes more limited (e.g. graphic chips, internal modems). Laptops often use specialized hardware, hence finding a driver can be more difficult.

Laptops are often used in changing environments, so there is a need for multiple configurations and additional security strategies.

Though there are laptop related HOWTOs available already, this HOWTO contains a concise survey of laptop related documents. Also, laptop related Linux features, such as installation methods for laptops (via PCMCIA, without CD drive, etc.), laptop hardware features and configurations for different (network) environments are described. Besides there are some notes on PDAs, Handheld PCs and other mobile computer devices (digital cameras, cellular phones, calculators).

And though some caveats Linux is a better choice for laptops, than most other operating systems. Because it supports numerous installation methods, works in many heterogenoues environments and needs smaller resources.

</abstract>
<toc>

<sect>Preface
<p>
Life is the first gift, love is the second, and understanding is the third. -- <url url="http://www.capecod.net/~tmpiercy/" name="Marge Piercy">

<sect1>About the Author
<p>
People like either <idx>laptops</idx> or <idx>desktops</idx>. I like to work with laptops rather than with desktops. I like Linux too. My first HOWTO was the <url url="http://tuxmobil.org/howtos.html" name="Linux/IR-HOWTO"> about infrared support for Linux. My second is this one and my third the Ecology-HOWTO, about some ways to use Linux in an ecology aware manner.
<p>
Also I have written some pages about Linux with certain laptops: <url url="http://tuxmobil.org/echos133.html" name="Olivetti Echos 133 DM (German)"> (together with Kurt Saetzler), <url url="http://tuxmobil.org/hp800e.html" name="HP OmniBook 800CT">, <url url="http://tuxmobil.org/hp3100e.html" name="HP OmniBook 3100"> (together with Friedhelm Kueck) <url url="http://tuxmobil.org/armada1592dte.html" name="COMPAQ Armada 1592 DT"> and <url url="http://tuxmobil.org/c286lte.html" name="COMMODORE C286LT">.
<p>
During the work with the Laptop-HOWTO I have collected some surveys about laptop related hardware: <url url="http://tuxmobil.org/graphic_linux.html" name="graphic chips">, <it>unofficially</it> <url url="http://tuxmobil.org/pcmcia_linux.html" name="supported PCMCIA cards">, <url url="http://tuxmobil.org/modem_linux.html" name="internal modems"> and <url url="http://tuxmobil.org/ir_misc.html" name="infrared chips">.
<p>
But I don't claim to be a laptop guru, I just had the opportunity to install Linux on some laptops and I simply want to share the information I collected.
<p>
Since I don't own a non-Intel based machine, this HOWTO might not contain all the details for non-Intel systems or may contain inaccuracies. Sorry.

<sect1>Sponsoring
<p>
This HOWTO is free of charge and free in the sense of the General Public Licence - GPL. Though it requires much work and could gain more quality if I would have some more hardware. So if you have a spare laptop, even an old one or one which requires repair, please let me know. Especially I need one with infrared port, USB port, DVD drive, WinModem and a non Intel machine. The according chapters need a major rewrite. For the curious, this HOWTO is written on a <url url="http://tuxmobil.org/hp800e.html" name="HP OmniBook 800CT 5/100">.
<p>
Or sponsor a banner ad at my WWW pages <url url="http://tuxmobil.org/ " name="TuxMobil">.
<p>
You can hire me for readings or workshops on <it>Linux with Laptops</it>, <it>Repairing of Laptops</it> and other Linux topics, too.

<sect1>About the Document (Mirrors, Translations, Versions, Formats, URLs)
<p>
Many times I have mentioned <it>MetaLab</it> formerly known as <it>SunSite</it>. This site carries a heavy load, so do yourself a favor, use one of the <url url="http://metalab.unc.edu/pub/Linux/MIRRORS.html" name="MetaLab mirrors"> .
<p>
For <it>Debian/GNU Linux</it> the mirror URLs are organized in this scheme <tt>http://www.&lt;country code, e.g. uk&gt;.debian.org</tt> .
<p>
This text is included in the <url url="http://tldp.org/" name="LINUX DOCUMENTATION PROJECT - LDP"> .
<p>
Richard Worwood mirrors this HOWTO at <url url="http://www.felch01.demon.co.uk/laptop-howto.html" name="http://www.felch01.demon.co.uk/laptop-howto.html"> .
<p>
Lionel, &dquot;trollhunter&dquot; Bouchpan-Lerust-Juery, &lt;trollhunter@linuxfr.org&gt; provides a translation into French. You can download or browse it at <url url="http://infonomade.linuxfr.org/portables/ressourcesfr.html#howto" name="http://infonomade.linuxfr.org/portables/ressourcesfr.html#howto"> . And he mirrors the English version at <url url="http://infonomade.linuxfr.org/portables/ressourcesen.html#howto" name="http://infonomade.linuxfr.org/portables/ressourcesen.html#howto ">
<p>
He has also written a HOWTO about portables and wearables, please look at his pages <url url="http://infonomade.linuxfr.org/index.html" name="http://infonomade.linuxfr.org/index.html "> (French version) <url url="http://infonomade.linuxfr.org/indexen.html" name="http://infonomade.linuxfr.org/indexen.html"> (English version).
<p>
Translations into Japanese (Ryoichi Sato &lt;rsato@ipf.de&gt;), Italian (Alessandro Grillo &lt;Alessandro_Grillo@tivoli.com&gt;), Portuguese (Gledson Evers &lt;pulga_linux@bol.com.br&gt; the translation will be announced at <url url="http://www.linuxall.org" name="LinuxALL">) and Greek (Vassilis Rizopoulos &lt;mscyvr@scs.leeds.ac.uk&gt;) are under construction.
<p>
Please contact me before starting a translation to avoid double work. Since a translation is a great amount of work, I recommend to do this work as a group.
<p>
Nearly all of the programms I mention are available as <url url="http://www.debian.org" name="Debian/GNU Linux"> packages, or as RPM packages, look up your favorite RPM server, for instance <url url="http://rufus.w3.org/linux/RPM/ByName.html" name="RUFUS"> .
<p>
The latest version of this document is available in different formats at <url url="http://tuxmobil.org/" name="TuxMobil"> .

<sect1>Contact
<p>
This document isn't ready yet. If you like to write a chapter or even a smaller part by yourself, please feel free to contact me. Also your suggestions and recommendations and critics are welcome. But please don't expect me to solve your laptop related problems if the solution is already documented. Please read all according manual pages, HOWTOs and WWW sites first, than you may consider to contact me or the other resources mentioned below.
<p>
Since I want to write much more stuff about mobile computing and Linux I'm thinking about turning this HOWTO into a book.
<p>
Werner Heuser &lt;wehe@tuxmobil.org&gt;

<sect>Copyright, Disclaimer and Trademarks
<p>
Copyright &copy; 1999 by Werner Heuser. This document may be distributed under the terms set forth in the <url url="http://metalab.unc.edu/LDP/COPYRIGHT.html" name="LDP license"> .
<p>
This is free documentation. It is distributed in the hope that it will be useful, but without any warranty. 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.
<p>
Some laptop manufacturers don't like to see a broken laptop with an operating system other than the one shipped with it, and may reload MS-Windows if you complain of a hardware problem. They may even declare the warranty void. Though IMHO this isn't legal or at least not fair. Always have a backup of both the original configuration and your Linux installation if you have to get your laptop repaired.
<p>
Though I hope trademarks will be superfluous sometimes (you may see what I mean at <url url="http://www.opensource.org/osd.html" name="Open Source Definition">) : If certain words are trademarks, the context should make it clear to whom they belong. For example &dquot;MS Windows NT&dquot; implies that &dquot;Windows NT&dquot; belongs to Microsoft (MS). Mac is a trademark by Apple Computer. All trademarks belong to their respective owners.

<sect>Which Laptop to Buy?
<p>
<sect1>Introduction
<p>
Portable computers may be divided into different categories. This is a subjective decision, but I try to do so. My groupings roughly follow the generally accepted marketing categories. The criteria could be:

<enum>

<item>
Weight: Often expressed in terms like Portables, Laptops/Notebooks, Sub/Mini-Notebooks, Palmtops/PDAs. There is no standard method to define the weight of a laptop, therefore the data provided by the manufacturers (and which are given below) have to be considered as approximations. The question is how the power supply (wether external or internal) or swappable parts like CD and floppy drive, are included in the weight.
<p>
Most peripheral cables are appallingly heavy. If you get a subnotebook 
and carry it around with a bunch of external drives, cables, and <it>port 
expander</it> dongles and power converter, you may be lugging a heavier 
bag than if it were all in one box. Subnotebooks are useful mainly
if you can afford to leave all the other junk behind.</item>

<item>
Supported Operations Systems: proprietary versus open</item>

<item>
Price: NoName versus Brand</item>

<item>
Hardware Features: display size, harddisk size, CPU speed, battery type, etc.</item>

<item>
Linux Support: graphic chip, sound card, infrared controller (IrDA), internal modem, etc.</item>

</enum>

<sect1>Portables, Laptops/Notebooks, Sub/Mini-Notebooks, Palmtops, PDAs/HPCs
<p>
<sect2>Portables
<p>
Weight greater than 4.0 kg (9 lbs). Features like a PC, but in a smaller box and with LCD display. Examples: lunchbox or ruggedized laptops (e.g., <url url="http://www.bsicomputer.com/" name="http://www.bsicomputer.com/">)

<sect2>Laptops/Notebooks
<p>
Weight between 1.7 and 4.0 kg (4 to 9 lbs). Features custom hardware and usually a special CPU. Examples: HP OmniBook 3100, COMPAQ Armada 1592DT. The terms <it>laptop</it> and <it>notebook</it> seem equivalent to me.

<sect2>Sub-Notebooks/Mini-Notebooks
<p>
Weight between 1.3 and 1.7 kg (3 to 4 lbs). Features: external floppy drive, external CD drive. Examples: HP OmniBook 800CT, Toshiba Libretto 100, COMPAQ Aero, SONY VAIO 505.

<sect2>Palmtops
<p>
Weight between 0.7 and 1.3 kg (1.5 to 3 lbs). Features: proprietary commercial operating systems. Examples: HP200LX.

<sect2>Personal Digital Assistants (PDAs)/Handheld PCs (HPCs)
<p>
Weight below 0.7 kg (1.5 lbs). Features: proprietary commercial operating systems and often non-Intel CPU with commercial operating systems like PalmOS, EPOC32, GEOS, Windows CE. Examples: Newton Message Pad, Palm III (former Pilot), Psion Series 3 and 5, CASIO Z-7000. 

<sect2>Wearables
<p>
Watches, digital pens, calculators, digital cameras, cellular phones and other wearables.

<sect1>Linux Features
<p>
Due to a lack of support by some <idx>hardware manufacturers</idx>, not every feature of a laptop is always supported or fully operational. The main devices which may cause trouble are: graphic chip, IrDA port, sound card, PCMCIA controller , PnP devices and internal modem. Please try to get as much information about these topics before buying a laptop. But often it isn't quite easy to get the necessary information. Sometimes even the specifications or the hotline of the manufacturer aren't able to provide the information. Therefore I have included a Linux <idx>Compatibility Check</idx> chapter in the Hardware In Detail sections below.
<p>
Depending on your needs, you might investigate one of the vendors that provide
laptops pre-loaded with Linux. By purchasing a pre-loaded Linux laptop, much
of the guesswork and time spent downloading additional packages could be
avoided. See the <url url="http://tuxmobil.org/laptop_manufacturer.html"
name="Linux Laptop Manufacturer Survey">.

<sect1>Main Hardware Features
<p>
Besides its Linux features, there often are some <it>main features</it> which have to be considered when buying a laptop. For <it>Linux features</it> please see the Hardware In Detail section below.

<sect2>Weight
<p>
Don't underestimate the weight of a laptop. This weight is mainly influenced by:

<enum>

<item>
screen size</item>

<item>
battery type</item>

<item>
internal components, such as CD drive, floppy drive</item>

<item>
power supply</item>

<item>
material used for the case, usually they are either from plastics or from magnesium.

</enum>

<sect2>Display
<p>
Laptops come with one of two types of displays: <it>active</it> matrix (TFT) and <it>passive</it> matrix (DSTN). Active matrix displays have better color and contrast, but usually cost more and use more power. Also consider the screen size. Laptops may be purchased with screens up to 15&dquot;. A bigger screen weighs more, costs more, and is harder to carry, but is good for a portable desktop replacement.

<sect2>Batteries
<p>
The available battery types are <it>Lithium Ion (LiIon)</it>, <it>Nickel Metal Hydride ( NiMH)</it> and <it>Nickel Cadmium (NiCd)</it>.

LiIon batteries are the most expensive ones but a lot lighter than NiCd for the same energy content, and have minimal -- but present -- memory effects. NiMH is better than NiCd, but still rather heavy and does suffer some (although less than NiCd) memory effects.

Unfortenately most laptops come with a proprietary battery size. So they are not interchangeable between different models.

<sect2>CPU
<p>
<sect3>Supported CPU Families
<p>
For details about systems which are supported by the Linux Kernel, see the <url url="http://www.cl.cam.ac.uk/users/iwj10/linux-faq/" name="Linux FAQ"> . See also <url url="http://www.ctv.es/USERS/xose/linux/linux_ports.html" name="Current ports of Linux OS">

<enum>

<item>i286: 
Linux doesn't support this CPU family yet. But there are some efforts at <url url="http://www.elks.ecs.soton.ac.uk/" name="ELKS">. If you like, you may use <url url="http://www.cs.vu.nl/~ast/minix.html" name="Minix"> one of the predecessors of Linux. Minix supports 8088 to 286 with as little as 640K memory. Actually there are some laptops with ELKS around, for instance the <url url="http://tuxmobil.org/c286lte.html" name="Commodore C286LT">

<item>i386: 
This covers PCs based on Intel-compatible processors, including Intel's 386, 486, Pentium, Pentium Pro and Pentium II, and compatible processors by AMD, Cyrix and others. Most of the currently available laptops use Intel compatible CPUs and have quite good Linux support.

<item>m68k: 
This covers Amigas and Ataris having a Motorola 680x0 processor for x&gt;=2; with MMU. And the early Apple/Macintosh computers.
<p>
There was a long series of Apple PowerBooks and other laptops based on the m68k chip. Macintosh Portable (an ugly 16-pound first attempt); PowerBook 100, 140, 170, 145, 160, 180c, 165c, 520c, 540c, 550c, 190; Duo 210, 230, 250, 270c, 280. The PowerBook Duos were available at the same time as the PowerBooks, they were a sort of subnotebook, but were designed so that you could plug them into a base station (a DuoDock) with more RAM, peripherals, etcetera, so that they could also act as a desktop computer. The first PowerPC PowerBooks were the ill-starred PowerBook 5300 (after the 190) and the Duo 2300c.
<p>
For a complete list of all Macintosh computers ever made, with specifications, see <url url="http://www.apple-history.com/gallery.html" name="Apple-History">.
<p>
Note also that readers should *not* go to www.linuxppc.org for hardware compatibility with 68k laptops--as the name implies, LinuxPPC is only for PowerPC machines. The proper place to go for information on running Linux on m68k Macintoshes is: <url url="http://www.mac.linux-m68k.org/" name="linux-m68k">.
<p>
In particular, their hardware compatibility list is at: <url url="http://www.mac.linux-m68k.org/status/sysreq.html" name="linux-m68k-status"> and it states in regards to laptops:
<p>
&dquot;Much like laptops of the Intel/Linux world, Mac laptops have generally different setups that can be very hard to figure out.  Also, because of a general lack of machines to test, we are only aware of boots on the Powerbook 145, Powerbook 150, Powerbook 170, Powerbook 180, and Powerbook 190. Even if it boots, we currently have no support for Powerbook-style ADB, the APM support, or just about anything else on them. This means the only way to log in is with a terminal hooked up to the serial interface, this has been tested on the 170.&dquot;
<p>
&dquot;Several Powerbooks have internal IDE which is supported. PCMCIA drivers will be forthcoming if someone can supply the necessary hardware information to write a driver. As always, an FPU is needed also. Many of the later models have the 68LC040 processor without FPU, and many of these processors are broken with respect to the FPU trap mechanism so they can't run regular Linux binaries even with FPU emulation. Current status on Powerbooks 140, 160, 165, 165c, 180c, 190, 520 and Duos 210, 230, 250, 270c, 280, and 280c is unknown.&dquot;

<p>
Also there are two Atari laptops, for which I don't have enough information. The following quotations are from the <url url="http://capybara.sk-pttsc.lj.edus.si/yescrew/eng/atari.htm" name="Atari Gallery">.
<p>
&dquot;The <it>STacy</it> was released shortly after the <it>Mega ST</it> to provide a portable means of Atari computing. STacy computers were shipped with TOS v1.04.
<p>
Designed to replace the <it>STacy</it> as the defacto portable ST computer, the <it>ST Book</it> brought the basic computing power of an ST to a lightweight notebook computer. This machine was only released in Europe and Atari only shipped a very small quantity. The ST Book was shipped with TOS v2.06.&dquot;
<p>
Is there an Amiga notebook?

<item>PowerPC (PPC): 
Although some driver support present in Intel based Linux is still missing for Linux PPC, it is a fully usable system for Macintosh PowerBooks. See <url url="http://www.linuxppc.org/hardware/" name="LinuxPPC"> for a current list of supported machines.
<p>
BTW: The team at <url url="http://www.imaclinux.net" name="iMac Linux"> has managed to get the iMac DV to boot Linux to a usable point. You may get information about the iBook there as well.

<item>Alpha, Sparc, Sparc64 architectures: 
These are currently under construction. AFAIK there are only the Tadpole SPARC and ALPHA laptops, and some other ALPHA laptops available. 

<item>StrongARM: 
a very low-power CPU found in Rebel.com's popular NetWinder (some kind of mobile computer, too),
and actively supported in the Debian project, it is also in several 
WinCE machines, such as HP's Jornadas. Only the lack of tech specs
prevents Linux from being ported to these tiny, long-battery-life 
machines. A full-scale StrongARM-based laptop would make a superb 
Linux platform, but none exists yet.
<p>
For PDAs with ARM/StrongARM CPU see the PDA chapter below.

<item>MIPS: 
Used in SGI mainframes and Cobalt Micro intranet appliances, 
chips based on this architecture are used in many Wince machines.  
Linux has been ported to a few of these, including the lovely little 
Vadem Clio. Vadem has been admirably cooperative.
<p>
More about Linux on Wince boxes may be found at 
<url url="http://www.2gn.com/~jjorgens/linuxce_faq.html" name="LinuxCE-FAQ">.

</enum>

<sect3>Miscellaneous
<p>
At higher speed, a CPU consumes more power and generates more heat. Therefore, in many laptops a special low-power CMOS CPU is used. Usually, this special CPU doesn't use as much power as a similar processor used in a desktop. These special CPUs are also more expensive. As a side effect you may find that laptops with a desktop CPU often have a fan which seems quite loud.

<sect2>Cooling
<p>
An enormously important issue.
Anything based on PPC or Pentium will generate enormous amounts
of heat which must be dissipated.Generally, this means either a
fan, or a heat sink the size of the case.If it's a fan, the air
path had better not ever get blocked, or it will overhead and burn
out.This means machines with a fan mounted in the bottom are a
big, big mistake: you can't use them on a soft surface.

<sect2>Keyboard Quality
<p>
Though you might use your desktop computer to do longer writings, a good keyboard can save you some headaches and finger-aches. Look especially for the location of special keys like: <tt>&lt;ESC&gt;</tt>, <tt>&lt;TAB&gt;</tt>, <tt>&lt;Pos1&gt;</tt>, <tt>&lt;End&gt;</tt>, <tt>&lt;PageDown&gt;</tt>, <tt>&lt;PageUp&gt;</tt> and the cursor keys.
<p>

<sect2>Price
<p>
Laptops are quite expensive if you compare them with desktops. So you may decide between a brand or no-name product. Though I would like to encourage you to take a <it>no-name</it> product, there are some caveats. I have experienced that laptops break often, so you are better off, when you have an after sales warranty, which is usually only offered with brand products. Or you may decide to take a <it>second hand</it> machine. When I tried this, I discovered that the laptop market is changing quite often.  A new generation is released approximately every three months (compared by CPU speed, harddisk capacity, screen size etc.). So laptops become old very quick. But this scheme often isn't followed by the prices for second hand laptops. They seem too expensive to me. Anyway if you plan on purchasing a second hand machine, review my recommendations on checking the machine. For German readers there is an online market place at <url url="http://www.hardware.de" name="http://www.hardware.de">, which offers a good survey about current prices for second hand machines.

<sect2>Power Supply
<p>
If you travel abroad pay attention to the voltage levels which are supported by the power supply. Also the power supply is often one of the heavier parts of a laptop.

<sect1>Sources of More Information
<p>
Specifications, manuals and manufacturer support often are not helpful. Therefore you should retrieve information from other sources too:

<enum>

<item>
Highly recommended is the survey by Kenneth E. Harker <url url="http://www.linux-on-laptops.com/" name=" http://www.linux-on-laptops.com/"> .</item>

<item>
<url url="ftp://tsx-11.mit.edu/pub/linux/packages/laptops/" name=" ftp://tsx-11.mit.edu/pub/linux/packages/laptops/"> .</item>

<item>
Hardware-HOWTO</item>

<item>
open hardware - The Open Hardware Certification Program <url url="http://www.debian.org/OpenHardware/" name=" http://www.debian.org/OpenHardware/"> </item>

<item>HARDWARE.doa.org - dedicated to the hardware aspects of (Linux) computing <url url="http://hardware.doa.org/" name=" http://hardware.doa.org/"> </item>

<item>How to Build a PC FAQ - excellent hardware overview by Billy Newsom <url url="http://www.motherboards.org/build.html" name="http://www.motherboards.org/build.html"></item>

<item>
Last but not least the WWW itself.</item>

</enum>

<sect1>Linux Compatibility Check
<p>
<sect2>Related HOWTOs
<p>

<enum>

<item>
Hardware-HOWTO</item>

<item>
Kernel-HOWTO</item>

<item>
PCMCIA-HOWTO</item>

<item>
PCI-HOWTO</item>
<item>
Plug-and-Play-mini-HOWTO</item>

</enum>

<sect2>Check Methods in General
<p>
If you can't find the necessary information through the above mentioned sources, you are on your own. Luckily, Linux provides many means to help. For details see the Hardware on Detail section below. In general you may use:

<enum>

<item>
First of all the kernel itself. Look up what kind of hardware is detected by the kernel. You get this information during boot time or usually by <tt>dmesg</tt> or by looking into <file>/var/log/messages</file>.

<item>
If your kernel supports the <file>/proc</file> file system you may get detailed information about PCI devices by <tt>cat /proc/pci</tt> Please read the kernel documentation <file>pci.txt</file>. You may get further information about unknown PCI devices at the database from Craig Hart at <url url="http://members.hyperlink.net.au/~chart" name="http://members.hyperlink.net.au/~chart">. From 2.1.82 kernels on you may use the <tt>lspci</tt> command from the <tt>pci-utils</tt> package.

<item>
To retrieve information about Plug-and-Play (PNP) devices use <tt>isapnp-tools</tt> .

<item>
Use <tt>scsi_info</tt> by David Hinds for SCSI devices or <tt>scsiinfo</tt>.

</enum>

If you don't want to install a complete Linux you may retrieve this information by using a micro Linux ( see appendix A). The package <tt>muLinux</tt> provides even a small <tt>systest</tt> program and <tt>TomsRtBt</tt> comes with <tt>memtest</tt>. To use <tt>memtest</tt> you have to copy it on a floppy <tt>dd if=/usr/lib/memtest of=/dev/fd0</tt> and to reboot from this floppy.
<p>
If your laptop came with Windows, you may determine a lot of hardware settings from the installation. Boot into DOS or Windows to get the information you need.
<p>
Using Windows9x/NT to get hardware settings, basically boot Windows, then <tt>Start -&gt; Settings -&gt; Control Panel -&gt; System -&gt; Device Manager</tt> and write down everything, or make a hardcopy from the display using the <tt>&lt;PRINT&gt;</tt> key, plus keep a log of settings, hardware, memory, etc.
<p>
Using MS-DOS and Windows3.1x you can use the command <tt>msd</tt>, which is an akronym for MicroSoft Diagnostics. Or you might try one of the numerous DOS shareware utilities: <tt>CHECK-IT</tt>, <tt>DR.HARD</tt> and others.
<p>
Sometimes it's difficult to know what manufacturer has built the machine or parts of it actually. The <url url="http://www.fcc.gov/fcc-bin/ead" name="FCC"> &dquot;Federal Communications Commission On-line Equipment Authorization Database may be used, if you are having problems identifying the manufacturer of a laptop or notebook computer (or other electronic device,) this site lets you search the FCC database based on the FCC ID number you can usually find on the equipment if it was marketed in the United States of America.&dquot;
<p>
<url url="http://www.linux-mandrake.com/lothar/" name="The Lothar Project">
is a Mandrake-related project to provide a GUIed interface to get at hardware 
configuration information on Linux-based systems. It provides a
library for different system informations, too.
<p>
Many laptops are no more compatible with Windows than Linux. David Hinds, author of the PCMCIA drivers, points out that Toshiba notebooks use a proprietary Toshiba PCMCIA bridge chip that exhibits the same bugs under Windows as under Linux. IBM Thinkpads have serious BIOS problems that affect delivery of events to the power management daemon <tt>apmd</tt>. These bugs also affect MS-Windows, and are listed in IBM's documentation as <it>considerations</it>.
<p>
Some incompatibilities are temporary, for instance laptops that have Intel's USB chip will probably get full USB support, eventually.

<sect1>Writing a Device Driver
<p>
If you encounter a device which is not yet supported by Linux, don't forget it's also possible to write a driver by yourself. You may look at the book from Alessandro Rubini, Andy Oram: Linux Device Drivers.

<sect1>Buying a Second Hand Laptop
<p>
Some recommendations to check an used laptop, before buying it:

<enum>

<item>
Review the surface of the case for visible damages.</item>

<item>
Check the display for pixel faults. Maybe it's useful to take a magnifying glass therefore.</item>

<item>
Do an IO stress-test, .e.g. with the tool <tt>bonnie</tt>.</item>

<item>
You may use <tt>memtest</tt> and <tt>crashme</tt> to achieve a memory test.

<item>
Do a CPU stress test, e.g. with the tool <tt>Byte</tt> or by compiling a kernel.</item>

<item>
Check the floppy drive by formatting a floppy.</item>

<item>
Check the CD drive by reading a CD.</item>

<item>
To check the battery seems difficult, because it needs some time: one charge and one work cycle.</item>

<item>
To check the surface of the harddisk you may take <tt>e2fsck</tt>. There is also a Linux tool <tt>dosfsck</tt> or the other <tt>fsck</tt> tools.</item>

<item>
To test the entire disk (non-destructively), time it for performance, and determine its size, as root do: <tt>time dd if=/dev/hda of=/dev/null bs=1024k</tt> .

<item>
Check wether the machine seems stolen. I have provided a <url url="http://tuxmobil.org/stolen_laptops.html" name="survey of databases for stolen laptops">.

</enum>

AFAIK there is no Linux tool like the DOS tools CHECK-IT, DR. HARD, SYSDIAG and others. These tools include many of the tests in one integrated suite. One of the best IMHO is the tool <tt>PC Diagnostics 95</tt> made by Craig Hart <url url="http://members.hyperlink.net.au/~chart" name="http://members.hyperlink.net.au/~chart"> . Despite the 95 in its name it's plain DOS, tiny (76KB programm and 199KB data) reliable and free. Unfortenately it contains no check for the IrDA port.
<p>
Please note this quotation from the disclaimer: &dquot;This program is written with the target audience being a trained, experienced technician. It is NOT designed to be used by those ignorant of computer servicing. Displays are not <it>pretty</it> but functional. Information is not explained since we are not trying to educate. This software should be considered to be just like any other tool in a tech's toolbox. It is to be applied with care, in the right situation, in order to find answers to specific problems. If you are an end user who is less than confident of dealing with computer hardware, this is probably not a program for you.&dquot;
<p>
Laptop computers, unlike desktop machines, really do get used up.
<it>Lithium batteries</it> are good for no more than 400 recharge cycles,
sometimes much fewer. <it>Keyboards</it> wear out. <it>LCD screen backlighting</it> 
grows dim. <it>Mouse buttons</it> fail. Worst of all, <it>connectors</it> get loose 
as a result of vibration, causing intermittent failures (e.g. only
when you hit the &lt;Enter&gt; key). We have heard of a machine used on the
table in a train being shaken to unusability in one trip.

<sect1>No Hardware Recommendations
<p>
It's difficult to give any recommendations for a certain laptop model in general. Your personal needs have to be taken into account. Also the market is changing very quickly. I guess every three months a new generation of laptops (according to harddisk space, CPU speed, display size, etc.) comes into the market. So I don't give any model or brand specific recommendations.

<sect>Laptop Distribution
<p>
<sect1>Requirements
<p>
From the Battery-HOWTO I got this recommendation (modified by WH):

A Message to Linux Distributors

If you happen to be a Linux distributor, thank you for reading all this. Laptops are becoming more and more popular, but still most Linux distributions are not very well prepared for portable computing. Please make this section of this document obsolete, and make a few changes in your distribution.

The installation routine should include a configuration, optimized for laptops. The <it>minimal install</it> is often not lean enough. There are a lot of things that a laptop user does not need on the road. Just a few examples. There is no need for three different versions of vi (as found in Suse Linux). Most portable systems do not need printing support (they will never be connected to a printer, printing is usually done with the desktop system at home). Quite a few laptops do not need any network support at all.

Don't forget to describe <it>laptop-specific installation problems</it>, e. g. how to install your distribution without a cd-rom drive or how to setup the plip network driver.

Add better <it>power management</it> and seamless <it>PCMCIA support</it> to your distribution. Add a recompiled kernel and an alternative set of PCMCIA drivers with <it>apm support</it> that the user can install on demand. Include a precompiled <it>apmd package</it> with your distribution.

Add support for dynamically <it>switching network configurations</it>. Most Linux laptops travel between locations with different network settings (e. g. the network at home, the network at the office and the network at the university) and have to change the network ID very often. Changing a Linux system's network ID is a pain with most distributions.

Add a <it>convenient PPP dialer</it> with an address book, that does not try to start multiple copies of the PPP daemon if you click on the button twice (e.g., the RedHat <tt>usernet</tt> tool). It would be nice to have the PPP dialer also display the connection speed and some statistics. One nice command line dialer that autodetects modems and PPP services is <tt>wvdial</tt> from Worldvisions <url url="http://www.worldvisions.ca/wvdial/" name="http://www.worldvisions.ca/wvdial/">.

<sect1>Recommendation
<p>
The <url url="http://www.debian.org" name="Debian/GNU Linux"> has most of the desired features for a laptop installation. The distribution has a quite flexible installation tool. The installation process is well documented, especially concerning the methods which are useful at laptops. All the binaries are tiny, because they are stripped. A mailing list <it>debian-laptop</it> including a searchable archiv is provided. And Debian/GNU Linux is free.
<p>
At the end of August 1999 the <url url="http://tuxmobil.org/debian_linux.html" name="Debian Laptop Distribution - Proposal"> was issued. And some more laptop related packages and a Debian <it>meta-package</it> dedicated to laptops are on the way.
<p>
Note: I know other Linux distributions work well with laptops, too. I even tried some of them, see my pages about certain laptops mentioned above.

<sect>Installation
<p>
<sect1>Related HOWTOs
<p>
<enum>
<item>
CDROM-HOWTO</item>

<item>
Config-HOWTO</item>

<item>
Diskless-mini-HOWTO</item>

<item>
Installation-HOWTO</item>

<item>
Pre-Installation-Checklist-mini-HOWTO</item>

<item>
Update-mini-HOWTO</item>

<item>
Hard-Disk-Upgrade-mini-HOWTO</item>

<item>
Installation and getting started by Matt Welsh and others available at the LINUX DOCUMENTATION PROJECT <url url="http://metalab.unc.edu/LDP" name="http://metalab.unc.edu/LDP"></item>

<item>
Installing Debian Linux 2.1 For x86 by Bruce Perens, Sven Rudolph, Igor Grobman, James Treacy, Adam P. Harris <url url="ftp://ftp.debian.org/debian/dists/slink/main/disks-i386/current/install.html" name="ftp://ftp.debian.org/debian/dists/slink/main/disks-i386/current/install.html">

<item>
Install-From-Zip-mini-HOWTO</item>

<item>
<url url="http://www.torque.net/~campbell" name="ZIP-Drive-mini-HOWTO "> </item>
</enum>

<sect1>Prerequisites - Partitioning
<p>
Partitioning can be done in a very sophisticated way. Currently I have only some first thoughts. I assume that with laptops there are still some reasons (e.g. updating the firmware of PCMCIA cards and BIOS) to share Linux and Windows9x/NT. Depending on your needs and the features of your laptop you could create the following partitions:

<itemize>
<item>BIOS, some current BIOSes use a separate partition
<item>suspend to disk, some laptops support this feature
<item>swap space Linux
<item>swap space Windows9x/NT
<item>Linux base
<item>Linux <file>/home</file> or data
<item>common data between Linux and Windows9x/NT
</itemize>

Note this chapter isn't ready yet. Please read the according HOWTOs first.

<sect1>Linux Tools to Repartition a Hard Disk
<p>
<sect2>GNU parted
<p>
<url url="http://www.alphalink.com.au/~clausen/parted/" name="GNU parted"> allows you to create, destroy, resize and copy partitions. It currently supports ext2 and fat (fat16 and fat32) filesystems, and MS-DOS disklabels. This program can destroy data, and is not yet safe for general use. <tt>parted</tt> is currently in its early developement stage.

<sect2>ext2resize
<p>
<url url="http://www.dsv.nl/~buytenh/ext2resize/" name="ext2resize"> is a program capable of resizing (shrinking and growing) ext2 filesystems. Checks whether the new size the user gave is feasible (i.e. whether the fs isn't too occupied to shrink it), connected to the <tt>parted</tt> project.

<sect2>fixdisktable
<p>
Something was recently published on the &lt;linux-kernel@vger.kernel.org&gt; mailing list about a partition recovery program. I have not used this, nor examined it, nor read much about it (except for the HTML page.) It may be useful to some of you if you have problems with FIPS, Ranish Partition Manager/Utility or Partition Magic destroying your partition information. You can find information on this partition-fixer named &dquot;fixdisktable&dquot; at <url url="http://bmrc.berkeley.edu/people/chaffee/fat32.html" name="http://bmrc.berkeley.edu/people/chaffee/fat32.html ">. It is quite a ways down in that page. Or look for it via ftp in <url url="ftp://bmrc.berkeley.edu/pub/linux/rescue/" name=" ftp://bmrc.berkeley.edu/pub/linux/rescue/"> and locate the latest &dquot;fixdisktable&dquot; in that ftp directory. (Source and binary dist should be available.)

<sect2>Caveats
<p>
Before repartitioning your harddisk take care about the disk layout. Especially look for hidden disk space or certain partitions used for <it>suspend to disk</it> or <it>hibernation</it> mode. Some laptops come with a partition which contains some BIOS programs (e.g. COMPAQ Armada 1592DT). Search the manual carefully for tools like <tt>PHDISK.EXE</tt>, Suspend to Disk, Diagnostic TOOLS.
<p>
Please see chapter <ref id="dostools" name="DOS Tools to Repartition a Hard Disk">, too.
<p>
By Nathan Myers from <url url="http://www.linuxlaptops.com" name="LL - LinuxLaptops">: &dquot;I partitioned a 10G Thinkpad drive last week and then none of fdisk, cfdisk, or sfdisk would read the partition table any more. It turns out I had created a partition that started on cylinder 1024, and there's a bug common to all three programs that makes them fail in that case. (I didn't try Disk Druid.) So, maybe you should add some advice about not starting partitions on that cylinder.&dquot;

<sect2>Multi Boot
<p>
Please see the Different Environments chapter, for information about booting different operating systems from the same harddisk.

<sect1>Installation Methods
<p>
From the Battery-HOWTO:&dquot;Installing and using Linux on a laptop is usually no problem at all, so go ahead and give it a try. Unlike some other operating systems, Linux still supports and runs well on even very old hardware, so you might give your outdated portable a new purpose in life by installing Linux on it.&dquot; 
<p>
One of the great benefits of Linux are its numerous and flexible installation features, which I don't want to describe in detail. Instead I try to focus on <it>laptop specific methods</it>, which are necessary only in certain circumstances.
<p>
Most current distributions support installation methods which are useful for laptops, including installation from CD-ROM, via PCMCIA and NFS (or maybe SMB). Please see the documents which are provided with these distributions for further details or take a look at the above mentioned manuals and HOWTOs.

<sect1>From a Boot Floppy plus CD-ROM - The Usual Way
<p>
With modern laptops, the usual Linux <idx>installation</idx> (one Boot Floppy, one Support Floppy, one Packages CD-ROM) should be no problem, if there is are floppy drive and a CD-ROM drive available. Though with certain laptops you might get trouble if you can not simultaneously use the <it>floppy drive and CD-ROM drive </it>, or if the floppy drive is <it>only available as a PCMCIA device</it>, as with the Toshiba Libretto 100. Some laptops support also booting and therefore installation completely from a CD drive, as reported for the SONY VAIO in the VAIO-HOWTO. Note: Check the BIOS for the CD boot option and make sure your Linux distribution comes on a bootable CD.
<p>
Certain laptops will only boot <it>zImage</it> kernels. <it>bzImage</it> kernels won't work. This is a known problem with the IBM Thinkpad 600 and Toshiba Tecra series, for instance. Some distributions provide certain boot floppies for these machines or for machines with limited memory resources, Debian/GNU Linux <url url="http://www.debian.org" name="http://www.debian.org"> for instance.

<sect1>From a DOS or Windows Partition at the Same Machine
<p>
This is a short description of how to install from a CD-ROM under DOS without using boot or supplemental floppy diskettes. This is especially useful for notebooks with <it>swappable floppy and CD-ROM components</it> (if both are mutually exclusive) or if they are <it>only available as PCMCIA devices</it>. I have taken this method from &dquot;Installing Debian GNU/Linux 2.1 For Intel x86 - Chapter 5 Methods for Installing Debian&dquot; <url url="http://www.debian.org" name="http://www.debian.org"> :

<enum>

<item>Get the following files from your nearest Debian FTP mirror and put them into a directory on your DOS partition: <tt>resc1440.bin drv1440.bin base2_1.tgz root.bin linux install.bat</tt> and <tt>loadlin.exe</tt>. 

<item>Boot into DOS (not Windows) without any drivers being loaded. To do this, you have to press &lt;<tt>F8</tt>&gt; at exactly the right moment.

<item>Execute <tt>install.bat</tt> from that directory in DOS. 

<item>Reboot the system and install the rest of the distribution, you may now use all the advanced features such as PCMCIA, PPP and others. 

</enum>

This should work for other distributions with similar changes. For RedHat see <url url="http://www.linux-on-laptops.com/install&lowbar;advice.html" name="How to Install from CD-ROM without Boot and Supplemental Disks"> .
<p>
Some new laptops may be able to boot a Linux distribution on a bootable CD-ROM (e.g., RedHat). This would allow installation without a floppy disk drive.

<sect1>From a Second Machine With a Micro Linux On a Floppy
<p>
<sect2>Introduction
<p>
Because of their small or non-existent footprint, micro-Linuxes are especially suited to run on laptops, particularly if you use a company-provided laptop running Windows9x/NT. Or for installation purposes using another non Linux machine. There are several <it>micro</it> Linux distributions out there that boot from one or two floppies and run off a ramdisk. See appendix A for a listing of distributions.
<p>
I tried the following with <tt>muLinux</tt> <url url="http://mulinux.firenze.linux.it/" name="http://mulinux.firenze.linux.it/"> to clone my HP OmniBook 800 to a COMPAQ Armada 1592DT. Thanks to Michele Andreoli, maintainer of muLinux for his support. Since <tt>muLinux</tt> doesn't support PCMCIA yet, you may use <tt>TomsRtBt</tt> instead. In turn <tt>TomsRtBt</tt> doesn't support <tt>PPP</tt> but provides <tt>slip</tt>. Note: Since version 7.0 <tt>muLinux</tt> provides an Add-On with PCMCIA support.
<p>
I have described how to copy an already existing partition, but it might be also possible to achieve a customized installation. Note: Usually you would try to achieve an installation via NFS, which is supported by many distributions. Or if your sources are not at a Linux machine you might try the SMB protocol with SAMBA, which is also supported by <tt>muLinux</tt> .

<sect2>Prerequisites
<p>
You need two machines equipped with Linux. With the laptop (client/destination) on which you want to install Linux use the muLinux floppy. The other machine (server/source) may be a usual Linux box or also using muLinux. Though its low transfer rate I use a serial null modem cable because its cheap. You may apply the according method using a PCMCIA network card and a crossover network cable or a HUB, or a parallel &dquot;null modem&dquot; cable and PLIP. As the basic protocol I used PPP, but you may also use SLIP. For the data-transfer I used <tt>nc</tt>. Note: this is an abbrevation for <tt>netcat</tt>, some distributions use this as the program name. You may use <tt>ftp</tt>, <tt>tftp</tt>, <tt>rsh</tt>, <tt>ssh</tt>, <tt>dd</tt>, <tt>rcp</tt>, <tt>kermit</tt>, <tt>NFS</tt>, <tt>SMB</tt> and other programs instead.

Basic requirements are:

<enum>

<item>
A good knowledge about using Linux. You have to know exactly what you are doing, if not you might end destroying former installations.</item>

<item>
A nullmodem serial cable.</item>

</enum>

<sect2>Source Machine
<p>
At your <it>source</it> machine issue the following commands (attention: IP address, port number, partition and tty are just examples!):

<enum>

<item>
Edit <file>/etc/ppp/options</file>, it should contain only:
<code>
/dev/ttyS0
115200
passive
</code></item>

<item>With muLinux versions 3.x you may even use the convenient command <tt>setup -f ppp</tt> .</item>

<item>
Start PPP: <tt>pppd</tt> .</item>

<item>
Configure the PPP network device: <tt>ifconfig ppp0 192.168.0.1</tt> .</item>

<item>
Add the default route: <tt>route add default gw 192.168.0.1</tt> .</item>

<item>
Check the network connection: <tt>ping 192.168.0.2</tt>, though the destination machine isn't up yet.</item>

<item>
Start the transfer from another console, remember <tt>&lt;LEFT-ALT&gt;&lt;Fx&gt;</tt>: <tt>cat /dev/hda2 | gzip -c | nc -l -p 5555</tt> .</item>

<item>
After the transfer (there are no more harddisk writings) stop the ping: <tt>killall ping</tt> .</item>

</enum>

<sect2> Destination Machine
<p>
At the <it>destination</it> machine issue:

<enum>

<item>
Edit <file>/etc/ppp/options</file>, it should contain only:
<code>
/dev/ttyS0
115200
passive
</code></item>

<item>With muLinux versions &gt;= 3.x you may even use the convenient command <tt>setup -f ppp</tt> .</item>

<item>
Start PPP: <tt>pppd</tt> .</item>

<item>
Configure the PPP network device: <tt>ifconfig ppp0 192.168.0.2</tt> .</item>

<item>
Add the default route: <tt>route add default gw 192.168.0.2</tt> .</item>

<item>
Check the network connection, by pinging to the source machine: <tt>ping 192.168.0.1</tt> .</item>

<item>
Change to another console and get the data from the server: <tt>nc 192.168.0.1 5555 | gzip -dc &gt;/dev/hda4</tt> .</item>

<item>
400 MB may take app. 6 hours, but YMMV.</item>

<item>
Stop the transfer, when it is finished with: <tt>&lt;CTL&gt;&lt;C&gt;</tt> . This can probably be avoided (but I didn't test it) by adding a timeout of 3 seconds using the <tt>-w 3</tt> parameter for <tt>nc</tt> at the destination machine <tt>nc -w 3 192.168.0.1 5555 | gzip -dc &gt;/dev/hda4</tt></item>

<item>
After the transfer is completed, stop the ping: <tt>killall ping</tt> .</item>

</enum>

<sect2>Configuration of the Destination Machine after the Transfer
<p>

<enum>

<item>
Edit <file>/etc/fstab</file> .</item>

<item>
Edit <file>/etc/lilo.conf</file> and <file>/etc/lilo.msg</file> and start <tt>lilo</tt> .</item>

<item>
Set the new root device to the kernel: <tt>rdev image root&lowbar;device</tt> .</item>

</enum>

<sect2>Miscellaneous
<p>

<enum>

<item>
You may use <tt>bzip2</tt> the same way as <tt>gzip</tt> (untested).

<item>
Since <tt>rshd</tt>, <tt>sshd</tt>, <tt>ftpd</tt> daemons are not available with muLinux you have to build your own daemon with <tt>nc</tt> aka <tt>netcat</tt>, as described above.</item>

<item>
I had to set up both PPP sides very quick or the connection broke, I don't know why.</item>

<item>
Speed optimization has to be done, <tt>asyncmap 0</tt> or <tt>local</tt>?</item>

<item>
I checked this only with a destination partition greater than the source partition. Please check <tt>dd</tt> instead of <tt>cat</tt> therefore.
<p>
Or do the following (untested): At the destination machine <tt>cd</tt> into the root directory <file>/</file> and do <tt>nc -l -p 5555 | bzip2 -dc | tar xvf -</tt>. At the source machine machine <tt>cd</tt> into the root directory <file>/</file> and do <tt>tar cvf - . | bzip2 | nc -w 3 192.168.0.2 5555</tt>. This should shorten the time needed for the operation, too. Because only the allocated blocks need to be transfered.

<item>
Don't <tt>mount</tt> the destination partition.</item>

</enum>

<sect1>From a Second Machine With a 2.5&dquot; Hard Disk Adapter
<p>
From Adam Sulmicki adam@cfar.unc.edu I got this hint: Most but not all harddisks in laptops are removable, but this might be not an easy task. You could just buy one of those cheap 2.5&dquot; IDE converters/adapters which allow you to connect this harddisk temporarily to a PC with IDE subsystem, and install Linux as usual using that PC. You may do so using the harddisk as the first IDE drive or besides as the second IDE drive. But than you need to be sure that lilo writes to the right partition. Also you have to make sure that you use the same translation style as your laptop is going to use (i.e. LBA vs. LARGE vs. CHS ). You find additional information in the Hard-Disk-Upgrade-mini-HOWTO. You might copy an existing partition, but it is also possible to achieve a customized installation.

<sect1>From a PCMCIA Device
<p>
Since I don't have a laptop which comes with a PCMCIA <it>floppy drive</it> (for instance Toshiba Libretto 100), I couldn't check this method. Please see the chapter Booting from a PCMCIA Device in the PCMCIA-HOWTO. Also I couldn't check whether booting from a PCMCIA <it>harddisk</it> is possible.
<p>
Anyway, when you are able to boot from a floppy and the laptop provides a PCMCIA slot, it should be possible to use different PCMCIA cards to connect to another machine, to an external SCSI device, different external CD and ZIP drives and others. Usually these methods are described in the documentation which is provided with the distribution.

<sect1>From a Parallel Port Device (ZIP Drive, CD Drive)
<p>
I couldn't check this method by myself, because I don't have such a device. Please check the according Install-From-Zip-mini-HOWTO and CD-HOWTO. Also I don't know how much these installation methods are supported by the Linux distributions or the micro Linuxes. I suppose you have to fiddle around a bit to get this working.

<sect1>From a Second Machine Using the Parallel Port - PLIP Network Install
<p>
I got this courtesy by Nathan Myers &lt;ncm@cantrip.org&gt;: &dquot;Many distributions support installing via a network, using FTP, HTTP, or NFS. It is increasingly common for laptops to have only a single PCMCIA slot, already occupied by the boot floppy drive. Usually the boot floppy image has drivers for neither the floppy drive itself, nor the PCMCIA subsystem. Thus, the only network interface available may be the parallel port.
<p>
Installation via the parallel port using the PLIP protocol has been demonstrated on, at least, Red Hat. All you need is a <it>Laplink</it> parallel cable, cheap at any computer store. See the PLIP-mini-HOWTO for details on setting up the connection. Note that (uniquely) the RedHat installation requires that the other end of the PLIP connection be configured to use ARP (apparently because RedHat uses the DOS driver in their installer). On the host, either <tt>export</tt> your CD file system on NFS, or <tt>mount</tt> it where the ftp or web daemon can find it, as needed for the installation.&dquot; 
<p>
The PLIP Install HOWTO by Gilles Lamiral describes how to install the Debian GNU-Linux distribution on a computer without ethernet card, nor cdrom, but just a local floppy drive and a remote nfs server attached by a Null-Modem parallel cable. The nfs server has a cdrom drive mounted and exported.

<sect1>Installing Linux on Small Machines
<p>
If you have less than 8MB memory and want to install via NFS you may get the message &dquot;fork: out of memory&dquot;. To handle this problem, use <tt>fdisk</tt> to make a swap partition (<tt>fdisk</tt> should be on the install floppy or take one of the mini Linuxes described above). Then try to boot from the install floppy again. Before configuring the NFS connection change to another console (for instance by pressing &lt;ALT&gt;&lt;2&gt;) and issue <tt>swapon /dev/xxx</tt>   (xxx = swap partition ). Thanks to Thomas Schmaltz.

<sect>
Hardware In Detail
<p>
<sect1>
PCMCIA Controller
<p>
<sect2>
Linux Compatibility Check
<p>
With the <tt>probe</tt> 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 <tt>cat /proc/pci</tt> .

<sect2>
Related HOWTOs
<p>

<enum>

<item>
PCMCIA-HOWTO</item>

</enum>

<sect2>PCMCIA Configuration - Survey
<p>
In the mailing lists where I'm a member, the question &dquot;How can I set up PCMCIA support, after the Linux installation?&dquot; comes up sometimes. Therefore I try to give a short survey. But the authoritative source for the latest information about the <it>PCMCIA Card Services for Linux</it>, including documentation, files, and generic PCMCIA information is the <url url="http://pcmcia.sourceforge.org" name="Linux PCMCIA Information Page"> . For problems with PCMCIA and APM see the APM chapter.

<sect3>Software
<p>
<enum>

<item>
Read the PCMCIA HOWTO, usually included in the PCMCIA-CS package.</item>

<item>
Install the newest available PCMCIA-CS package, if you take a rpm or deb package it is quite easy.</item>

<item>
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.</item>

<item>
Make sure your kernel has module support and PCMCIA support enabled (and often APM support)</item>

<item>
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.</item>

<item>
If you have a custom made kernel, don't forget to compile the PCMCIA-CS source against your kernel.

</enum>

<sect3>PCMCIA Controller
<p>

<enum>

<item>
Use the <tt>probe</tt> command to get information whether your PCMCIA controller is detected or not.</item>

<item>
Edit the file <file>/etc/sysconfig/pcmcia</file>. It should include <tt>PCMCIA=y</tt> and the type of your PCMCIA controller, e.g. <tt>PCIC=i82365</tt>. </item>

<item>
Start the PCMCIA services typically via <tt>/etc/init.d/pcmcia start</tt>. If you get two high beeps, everything should be fine.</item>

<item>
If something doesn't work, check the messages in <file>/var/log/messages</file> . </item>

</enum>

<sect3>
PCMCIA Card
<p>
<enum>
<item>
Check your card with <tt>cardctl ident</tt> .</item>

<item>
If your card is not in <file>/etc/pcmcia/config</file>, edit the file <file>/etc/pcmcia/config.opts</file> 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 <tt>pcnet_cs</tt> supports many NE2000 compatible PCMCIA network cards.

<item>
A list of supported cards is included in the PCMCIA-CS package. The current list you may find at <url url="http://pcmcia-cs.sourceforge.net" name=" SUPPORTED.CARDS">. 
<p>
Since there are not all cards mentioned I have set up a page <url url="http://tuxmobil.org/pcmcia_linux.html" name="PCMCIA Cards &dquot;Unofficially&dquot; Supported by Linux"> .

<item>
If you use X, you can use <tt>cardinfo</tt> to insert, suspend, or restart a PCMCIA card via a nice graphical interface.

</enum>

<sect1>Infrared Port
<p>
<sect2>Linux Compatibility Check
<p>
To get the IrDA port of your laptop working with Linux/IrDA you may use StandardInfraRed (SIR) or FastInfraRed (FIR).

<sect3>SIR
<p>
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 <file>serial</file> module. If infrared support is enabled in the BIOS, for most laptops you will get a kernel message like:

<code>
Serial driver version 4.25 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A     &num;first serial port /dev/ttyS0
ttyS01 at 0x3000 (irq = 10) is a 16550A    &num;e.g. infrared port
ttyS02 at 0x0300 (irq = 3) is a 16550A     &num;e.g. PCMCIA modem port
</code>

<sect3>FIR
<p>
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: 

<enum>

<item>Read the <it>specification</it> of the machine, though it is very rare that you will find enough and reliable information there. 

<item>Try to find out wether the FIR chip is a <it>PCI</it> device. Do a <tt>cat /proc/pci</tt> . The according files for 2.2.x kernels are in <file>/proc/bus/pci</file> . 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 <file>/usr/src/linux/Documentation</file> or at the page of Craig Hart <url url="http://members.hyperlink.net.au/~chart" name="http://members.hyperlink.net.au/~chart"> . From kernel 2.1.82 on, you may use <tt>lspci</tt> from the <tt>pci-utils</tt> package, too.

<item>Use the <it>DOS tool</it> <tt>CTPCI330.EXE</tt> provided in ZIP format by the German computer magazine CT <url url="http://www.heise.de/ct/ftp/pci.shtml" name=" http://www.heise.de/ct/ftp/pci.shtml"> . The information provided by this program is sometimes better than that provided by the Linux tools.

<item>Try to get information about <it>Plug-and-Play (PnP)</it> devices. Though I didn't use them for this purpose yet, the <tt>isapnp</tt> tools, could be useful.

<item>If you have installed the <it>Linux/IrDA software</it> load the FIR modules and watch the output of <tt>dmesg</tt>, whether FIR is detected or not.

<item>Another way how to figure it out explained by Thomas Davis (modified by WH): &dquot;Dig through the FTP site of the vendor, find the <it>Windows9x FIR drivers</it>, and they have (for a SMC chip): 

<code>
-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 
</code>

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).&dquot 

<item>Also Thomas Davis found a package of small <it>DOS utilities made by SMC</it>. Look at <url url="http://www.smsc.com/ftppub/chips/appnote/ir_utils.zip" name="http://www.smsc.com/ftppub/chips/appnote/ir_utils.zip"> . The package contains <tt>FINDCHIP.EXE</tt>. And includes a <tt>FIRSETUP.EXE</tt> utility that is supposed to be able to set all values except the chip address. Furthermore it contains <tt>BIOSDUMP.EXE</tt>, which produces this output:
<p>
Example 1 (from a COMPAQ Armada 1592DT)

<code>
     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
</code>

Result 1:
<p>
<tt>Irq Tag, Mask (bit mapped - ) = 0x0010 = 0000 0000 0000 0001 0000</tt> so, it's IRQ 4. (start at 0, count up ..), so this is a SIR only device, at IRQ=4, IO=x03e8.
<p>
<p>
Example 2 (from an unknown machine)

<code>
     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
</code>

Result 2:
<p>
a) it's a SMC IrCC chip
<p>
b) one portion is at 0x02f8, has an io-extent of 8 bytes; irq = 3
<p>
c) another portion is at 0x02e8, io-extent of 8 bytes; dma = 1 (0x02 =0000 0010)
<p>
<p>
Thomas Davis has placed some device information at <url url="http://www.jps.net/tadavis/irda/devids.txt" name="http://www.jps.net/tadavis/irda/devids.txt"> .
<p>
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 <tt>catdoc</tt>, available at <url url="http://www.fe.msk.ru/~vitus/catdoc/" name="http://www.fe.msk.ru/~vitus/catdoc/"> .

<item>Use the <it>Device Manager</it> of Windows9x/NT.

<item>You may also use the <it>hardware surveys</it> mentioned below.

<item>And as a last ressort, you may even <it>open the laptop</it> and look at the writings at the chipsets themselfs.

</enum>

<sect3>Hardware Survey
<p>
I have made a hardware survey at <url url="http://tuxmobil.org/ir_misc.html" name="http:/www.snafu.de/~wehe/ir_misc.html">. This list also contains information about infrared capable devices which are not mentioned here (mice, printers, remote control, transceivers, etc.).
<p>
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.
<p>
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).
<p>
Also you can help by contributing detailed technological information about some infrared devices, which is necessary for the development of drivers for Linux.

<sect2>Related HOWTOs
<p>

<enum>

<item>
Linux/IR-HOWTO</item>

</enum>

<sect2>IrDA Configuration - Survey
<p>
<sect3>IrDA
<p>
The Linux infrared support is still experimental, but rapidly improving. I try to describe the installation in a short survey. Please read my <url url="http://tuxmobil.org/howtos.html" name="Linux/IR-HOWTO"> for detailed information.

<sect4>Kernel
<p>

<enum>

<item>
Get a 2.2.x kernel.</item>

<item>
Compile it with all IrDA options enabled.</item>

<item>
Also enable experimental, sysctl, serial and network support.</item>

</enum>

<sect4>Software
<p>

<enum>

<item>
Get the Linux/IrDA software <tt>irda-utils</tt> at <url url="http://irda.sourceforge.net" name="The Linux IrDA Project"> .</item>

<item>
Untar the package.</item>

<item>
Do a <tt>make depend; make all; make install</tt></item>

</enum>

<sect4>Hardware
<p>

<enum>

<item>
Enable the IrDA support in the BIOS.</item>

<item>
Check for SIR or FIR support, as described above.</item>

<item>
Start the Linux/IrDA service with <tt>irmanager -d 1</tt> .</item>

<item>
Watch the kernel output with <tt>dmesg</tt> .</item>

</enum>

<sect3>Linux Remote Control - LiRC
<p>
Linux Remote Control <url url="http://fsinfo.cs.uni-sb.de/~columbus/lirc/" name="http://fsinfo.cs.uni-sb.de/~columbus/lirc/"> is maintained by Christoph Bartelmus. &dquot;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.&dquot; I don't have valid information about how much infrared remote control is working with laptop infrared devices.

<sect1>Graphic Chip
<p>
<sect2>Linux Compatibility Check
<p>
<sect3>Video Mode
<p>
The tool <tt>SuperProbe</tt> is part of XFree86 and is able to check many graphic chips. Please read the documentation carefully, because it might crash your hardware. From <tt>man SuperProbe</tt>:
<p>
&dquot;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 <tt>-no_bios</tt> 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).&dquot:

For testing reasons start the X server with <tt>X 2&gt; &lt;error.msg&gt;</tt>. And try to change the resolution by typing <tt>&lt;CTL&gt;&lt;ALT&gt;&lt;+&gt;</tt> or <tt>&lt;CTL&gt;&lt;ALT&gt;&lt;-&gt;</tt>. Note: the + or - sign have to be taken from the numeric pad, which can be emulated at the letter pad by some laptops.

<sect3>Text Mode
<p>
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.

<sect2>Related HOWTOs
<p>

<enum>

<item>
XFree86-HOWTO</item>

<item>
XFree86-Video-Timings-HOWTO</item>

<item>
XFree86-XInside-HOWTO</item>

<item>
X-Big-Cursor-mini-HOWTO (useful when running X on a notebook with low contrast LCD)</item>

<item>
Keyboard-and-Console-HOWTO</item>

<item>
vesafb-mini-HOWTO</item>

</enum>

<sect2>Survey X-Servers
<p>
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.

<enum>

<item>
XFree86 <url url="http://www.xfree86.org" name="http://www.xfree86.org"></item>

<item>
VESA Frame-Buffer-Device, available with 2.2.x kernels and XFree86 3.3.2 </item>

<item>
Xinside aka AcceleratedX <url url="http://www.xig.com" name="http://www.xig.com"> , commercial </item>

<item>
SciTech <url url="http://www.scitechsoft.com" name="http://www.scitechsoft.com"> , commercial</item>

<item>
Metro-X at <url url="http://www.metrolink.com" name=" http://www.metrolink.com">, commercial .

</enum>

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.

<sect2>Resources
<p>
You may find a survey about X windows resources at Kenneth E. Harker's page <url url="http://www.linux-on-laptops.com/" name="Linux on Laptops"> and a survey about current graphic chips used in laptops at <url url="http://tuxmobil.org/" name="TuxMobil">.

<sect2>External Monitor
<p>
There are several different methods to activate support for an external monitor: as a <it>BIOS option</it> or during runtime with a <it>keystroke</it> e.g. <tt>&lt;Fn&gt;+&lt;F4&gt;</tt>. Maybe you have to edit <file>/etc/XF86Config</file> by configuring <tt>int&lowbar;disp</tt> and <tt>ext&lowbar;disp</tt>. 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.

<sect2>Miscellaneous
<p>
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 <it>backlight</it> 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.

<sect1>Sound
<p>
<sect2>Linux Compatibility Check
<p>
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 <file>/usr/src/linux/Documentation/sound/Introduction</file> 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.
<sect2>Related HOWTOs
<p>

<enum>

<item>
Sound-HOWTO

<item>
Visual-Bell-mini-HOWTO

</enum>

<sect2>Survey Sound Drivers
<p>
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 <tt>pcsnd</tt>, which tries to emulate a soundcard.

<enum>

<item>
Kernel Sound Driver by Hannu Savolainen</item>

<item>
ALSA <url url="http://alsa.jcu.cz" name="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)</item>

<item>
OSS <url url="http://www.4front-tech.com/usslite/ossfree.html" name="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 <url url="http://www.opensound.com" name="http://www.opensound.com"> .</item>

</enum>

<sect1>Keyboard
<p>
<sect2>Linux Compatibility Check
<p>
Usually there are no problems with Linux and the keyboard. Though there are two minor caveats: First the <tt>setleds</tt> program might not work. Second the key mapping might not fit your needs. Some Unix users and <tt>vi</tt> users expect to find the &lt;CONTROL&gt; key to the left of the &lt;A&gt; key. Many PC-type keyboards have the &lt;CAPS-LOCK&gt; key there. You may use <tt>xmodmap</tt> or <tt>loadkeys</tt> to re-map the keyboard. Some laptops (e.g., Toshiba) allow you to swap the &lt;CAPS-LOCK&gt; and &lt;CONTROL&gt; keys. Mark Alexander offered this solution in the linux-laptop mailing list: On RedHat, it's a one-line patch to <file>/usr/lib/kbd/keytables/us.map</file> , or whatever file is referenced in <file>/etc/sysconfig/keyboard</file>:

<code>
*** us.map~     Tue Oct 31 14:00:07 1995
--- us.map      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       
</code>

<sect2>External (Second) Keyboard
<p>
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.
<p>
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.
<p>
<url url="http://www.suse.cz/development/input/" name=" 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 <tt>parkbd.c</tt> module for that.
<p>
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.
<p>
<url url="http://www.suse.cz/development/input/" name="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.

<sect1>Pointing Devices - Mice and Their Relatives
<p>
<sect2>Linux Compatibility Check
<p>
You may check your mouse with the <tt>mev</tt> command from the GPM package.
<sect2>Related HOWTOs
<p>

<enum>

<item>
3-Button-Mouse-mini-HOWTO for serial mice</item>

<item>
Bus-Mouse-HOWTO</item>

<item>
Kernel-HOWTO</item>

</enum>

<sect2>Mice Species
<p>

<enum>

<item>
Trackpad, Touchpad, used with the majority of current laptops</item>

<item>
Trackball, e.g. COMPAQ LTE</item>

<item>
Pop-up-Mouse, e.g. HP OmniBook 800</item>

<item>
Trackpoint, Mouse-Pin, e.g. IBM ThinkPad and Toshiba</item>

<item>
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. </item>

</enum>

<sect2>PS/2 Mice
<p>
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 <file>/dev/psaux</file> or <file>/dev/psmouse</file>. If you use X windows this device and the protocol has to be set in <file>/etc/XF86Config</file>, 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. 
<p>
Speaking of Emulate3Buttons, 100ms is usually better than the 50ms
allowed in most default setups of <file>/etc/X11/XF86Config</file>.
<code>
Section &dquot;Pointer&dquot;
Protocol    &dquot;PS/2&dquot;
Device      &dquot;/dev/psaux&dquot;
Emulate3Buttons
Emulate3Timeout    100
EndSection
</code>

<sect2>Touchpad
<p>
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 &lt;mh@rrz.uni-hamburg.de&gt; for an IPC-Radiance 900).
<p>
There is also a dedicated touchpad driver available. <url url="http://www.pdos.lcs.mit.edu/~cananian/Synaptics/" name="The Synaptics Touchpad Linux Driver"> supports pointing devices used in notebooks by Acer, Compaq, Dell, Gateway, Olivetti, Texas Instruments, Winbook, and others. Other URL <url url="http://compass.com/synaptics/" name="N.N.">.
<p>
The recent <tt>gpm</tt> package (<url url="ftp://ftp.prosa.it/pub/gpm/" name="gpm &gt;=1.8">) includes the above mentioned synaptics touchpad device driver. This device driver has been developed by H. Davies &lt;hdavies@ameritech.net&gt;. Instead of using the PS/2 compatibility mode of touchpad devices, you can now use native touchpad mode with some pretty impressive features. 
<p>
In addition to translating finger motion into mouse motion and supporting the buttons, this support currently has several features (from the README):

<itemize>

<item>a &dquot;tap&dquot; on the TouchPad causes a left mouse click

<item>a &dquot;tap&dquot; followed quickly by a finger motion causes a left button drag type action.

<item>a &dquot;tap&dquot; in one of the corners causes an action the default configuration is upper right causes middle mouse click and lower right causes right mouse click

<item>more pressure on the touch pad speeds the motion of the cursor

<item>a &dquot;tap&dquot; with a motion component (default &gt; 2mm) initiates a toss and catch sequence. This is terminated by a finger touch on the pad (the toss also ends after 1 sec since that is the idle timeout period for the touchpad).

<item>if the finger moves close to an edge then the mouse motion will be continued in that direction so that you don't need to pick up your finger and start moving again. This continued motion is pressure sensitive (more pressure is faster motion).

</itemize>

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.
<p>
It seems <tt>gpm</tt> is best known as a console biased tool. This is true, but you may use it as an X input device. <tt>gpm</tt> 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 <file>/dev/gpmdata</file> in a protocol it understands, which in my case is <it>Mouse-Systems-Compatible</it> (5bytes). Most 3-button mice use the default protocol. So a simple reconfiguration in XF86Config is all that is required, after starting <tt>gpm</tt> in an appropriate way, of course. 
<p>
<tt>gpm</tt> could be started on your laptop with the following arguments : <tt>/usr/bin/gpm -t synps2 -M -t ms -m /dev/ttyS0</tt> . Both touchpad and serial mouse work in console and X mode. You do have to create the named pipe <file>/dev/gpmdata</file> yourself.
<p>
Tapping with two fingers simultaneously to simulate a middle mouse
button works on Logitech touchpads used in a few machines.
<p>
Thanks to Geert Van der Plas for most of the touchpad chapter.

<sect2>Touchscreen
<p>
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.

<sect2>COMPAQ Concerto Pen
<p>
The latest version of the <url url="http://www.cs.nmsu.edu/~pfeiffer/&num;pen" name="Linux Compaq Concerto Pen Driver"> is available from Joe Pfeiffer's home page.

<sect2>External Mouse
<p>
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.
<p>
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.
<p>
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.

<sect1>Advanced Power Management - APM
<p>
<sect2>Linux Compatibility Check
<p>
From the Battery-Powered-mini-HOWTO &dquot; .. for APM to work on any notebook or energy-conscious desktop, the system BIOS ROM in the machine must support the <htmlurl url="http://www.intel.ocm/IAL/powermgm" name="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.&dquot;

You may get information about the APM version with the <tt>dmesg</tt> command and in the <file>/proc/apm</file> file. 

<sect2>Introduction
<p>
Features of APM according to <file>Documentation/Configure.help</file>: &dquot;The system time will be reset after a USER RESUME operation, the <file>/proc/apm</file> device will provide battery status information, and user-space programs will receive notification of APM <it>events</it> (e.g., battery status change). &dquot;

APM support consists of two parts: <it>kernel</it> support and <it>user-land</it> support.

<sect3>Kernel Land
<p>
For <it>kernel</it> 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, (&dquot;TI 4000M TravelMate and the ACER 486/DX4/75 because they don't have compliant BIOSes&dquot;). 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 <file>Documentation/Configure.help</file> in the kernel source tree for more details):

<itemize>

<item><tt>CONFIG_APM_IGNORE_USER_SUSPEND</tt> Just a workaround for some NEC Versa M series laptops.

<item><tt>CONFIG_APM_DO_ENABLE</tt> Enable APM features at boot time. 

<item><tt>CONFIG_APM_CPU_IDLE</tt>. Puts CPU in power save mode, if there is nothing to do for the kernel.

<item><tt>CONFIG_APM_DISPLAY_BLANK</tt> Some laptops can use this to turn off the LCD backlight when the screen blanker of the Linux virtual console blanks the screen. Note that this is only used by the virtual console screen blanker, and won't turn off the backlight when using the X Window system.

<item><tt>CONFIG_APM_POWER_OFF</tt> Turns the machine completely down, when using <tt>halt</tt>. This feature works with most laptops without problems.

<item><tt>CONFIG_APM_IGNORE_MULTIPLE_SUSPEND</tt> Just a workaround for IBM ThinkPad 560.

<item><tt>CONFIG_APM_IGNORE_SUSPEND_BOUNCE</tt> Just a workaround for Dell Inspiron 3200 and other notebooks.

<item><tt>CONFIG_APM_RTC_IS_GMT</tt> Stores time in Greenwich Mean Time format. It is in fact recommended to store GMT in your real time clock (RTC) in the BIOS.

<item><tt>CONFIG_APM_ALLOW_INTS</tt> Resolves some problems with <it>Suspend to Disk</it> for some laptops, for instance many newer IBM ThinkPads.

</itemize>
<p>
Joey Hess &lt;joey@kitenet.net&gt; wrote at debian-laptop@lists.debian.org
&dquot;I just installed kernel 2.2.12 on my laptop, and was having some trouble
getting apm working. it said <it>apm disabled on user request</it> at boot time.
Well, some grepping the kernel sources found that passing <tt>apm=on</tt> to the
kernel at boot time enables it now. I can't find any record or docs of this
change.

<sect3>User Land
<p>

The utilities for <it>userland</it> support may be found at <url url="http://worldvisions.ca/~apenwarr/apmd/" name="http://worldvisions.ca/~apenwarr/apmd/">. 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 &lt;seasons@falcon.sch.bme.hu&gt; has made a kernel patch that allows you to <it>hibernate</it> 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 &lt;kontakt@hanno.de&gt; <url url="http://www.hanno.de" name="Hanno Mueller"> and the page of <url url="http://www.linux-on-laptops.com/" name="Kenneth E. Harker"> for detailed information.

<p>
README <tt>apmd</tt>?: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 &lt;faith@acm.org&gt; has transferred maintenance of the Linux apmd
package over to me, Avery Pennarun &lt;apenwarr@worldvisions.ca&gt; 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 <tt>apmd</tt> can do:

<itemize>
<item>apmd(8): logs the battery status to syslog every now and then and handles background power management tasks;
<item>apm(1): a command-line tool to print the current battery status or suspend the computer;
<item>xapm(1x): provides a battery meter for X;
<item>libapm.a: a library for writing similar APM applications.
</itemize>

Richard Gooch wrote: I'have had a look at the beta version of <tt>apmd</tt>, and I still don't like it, because:

<itemize>

<item>
Only supports one command to run at suspend time.

<item>
Doesn't distinguish between user and system suspends.

<item>doesn't provide a way to disable policy (the <tt>sync()</tt>; <tt>sleep(0) </tt>; <tt>sync()</tt>; <tt>sleep(1)</tt>; sequence)

<item>
Does not document extra features.

<item>
And I'm not sure that what we want is a single super daemon. A collection of smaller daemons might be better, since it allows people to pick and choose. A super daemon is bloat for those who only want one small feature. 

</itemize>

Though this topic was discussed controversly Richard Gooch has put together a package <tt>suspendd</tt> at <url url="http://www.atnf.csiro.au/~rgooch/linux/" name="http://www.atnf.csiro.au/~rgooch/linux/"> .

Also, have a look at <tt>apmcd</tt> (<tt>apm</tt> based crontab) at <url url="ftp://ftp.binary9.net/pub/linux/" name="ftp://ftp.binary9.net/pub/linux/"> . A tool made by Nicolas J. Leon &lt;nicholas@binary9.net&gt; <url url="http://mrnick.binary9.net/" name="http://mrnick.binary9.net/">.

Note: I didn't check wether this features are merged into one package (<tt>apmd</tt> eventually) already.

<sect2>Caveats
<p>
If you have another operating system preinstalled or use another operating system at the same disk, make sure there is no &dquot;hibernation&dquot; or &dquot;suspend&dquot; tool installed, which could severely interfere with Linux, e.g. it might use disk space which is occupied by Linux or vice versa.

<sect2>Troubleshooting
<p>
If your machine worked with 2.0.x kernels but not with the 2.2.x series, take this advice from Klaus Franken kfr@klaus.franken.de : &dquot;The default changed in 2.2. Search in the init-scripts for <tt>halt</tt> and change it to <tt>halt -p</tt> or <tt>poweroff</tt>. See <tt>man halt</tt> , if you don't have this option you need a newer version of <tt>halt</tt>.&dquot; You may find it in the <tt>SysVinit</tt> package.
<p>
On some new machines (for instance HP Omnibook 4150 - 366 MHz model) when accessing <file>/proc/apm</file>, you may get a kernel fault <tt>general protection fault: f000</tt>. Stephen Rothwell &lt;Stephen.Rothwell@canb.auug.org.au&gt; <url url="http://www.canb.auug.org.au/~sfr/" name="http://www.canb.auug.org.au/~sfr/"> explaines: &dquot;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.&dquot;
<p>
<tt> apmd-rhcn-2.4phil-1</tt> by RedHat <url url="ftp://rhcn.redhat.com/pub/rhcn/" name="ftp://rhcn.redhat.com/pub/rhcn/"> contains an unofficial patch for shutting down the PCMCIA sockets before a suspend and patches for multiple batteries.
<p>
According to <file>Documentation/Configure.help</file>: &dquot;Some other things you should try when experiencing seemingly random, <it>weird</it> problems:

<enum>

<item>make sure that you have enough swap space and that it is enabled. 
<item>pass the <tt>no-hlt</tt> option to the kernel.
<item>switch on floating point emulation in the kernel and pass the <tt>no387</tt> option to the kernel.
<item>pass the <tt>floppy=nodma</tt> option to the kernel.
<item>pass the <tt>mem=4M</tt> option to the kernel (thereby disabling all but the first 4 MB of RAM).
<item>make sure that the CPU is not over clocked.
<item>read the sig11 FAQ at <url url="http://www.bitwizard.nl/sig11/" name="http://www.bitwizard.nl/sig11/"> .
<item>disable the cache from your BIOS settings.
<item>install a fan for the video card or exchange video RAM.
<item>install a better fan for the CPU.
<item>exchange RAM chips. 
<item>exchange the motherboard.

</enum>

<sect2>APM and PCMCIA
<p>
PCMCIA Card Services and Advanced Power Management (from the PCMCIA-HOWTO):
<p>
&quot;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 <tt>cardctl suspend</tt> before suspending your laptop, and <tt>cardctl resume</tt> 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 <tt>cardctl eject</tt> prior to suspending the system.&quot;.

<sect2>APM and Resuming X Windows
<p>
&dquot;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.&dquot;
<htmlurl url="http://www.linuxlaptops.com/ll/xresume.html" name="Linux Laptops">
has created a fix for this problem.
<p>
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 <tt>apm -s</tt>. Folks with this affliction might want switch to the console virtual terminal then suspend <tt>chvt 1; apm -s</tt> as root, or, more appropiately.<tt>sudo chvt 1; sudo apm -s</tt>. I have these commands in a script, say, <tt>my-suspend</tt> and then do <tt>xapmload --click-command my-suspend</tt> .

<sect2>Modularization of APM
<p>
As far as I remember this is controversly discussed, but I don't remember the URL. It isn't a kernel feature yet.

<sect2>APM Resume Options
<p>
The new 3.0beta versions add a new feature to apmd:  it can run arbitrary
commands (like <tt>cardctl suspend</tt>) when you suspend or resume your system. 
It also supports BIOS clocks that are set to UTC time.

<sect2>APM and Sound
<p>
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 
<file>/etc/apm/event.d</file> can use <tt>aumix</tt> to save and restore sound mixer settings.

<sect2> Software Suspend
<p>
<htmlurl url="http://falcon.sch.bme.hu/&tilde;seasons/linux/swsusp.html" name="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. 

<sect1>ACPI
<p>
ACPI stands for <it>Advanced Configuration and Power Interface</it>. 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.
<p>
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 <url url="http://phobos.fachschaften.tu-muenchen.de/acpi/" name="ACPI4Linux">. 

<sect1>Batteries
<p>
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 &lt;kontakt@hanno.de&gt; <url url="http://www.hanno.de/" name="http://www.hanno.de"> <url url="http://tuxmobil.org/energy_laptops.html" name="Power Supplies for Laptops - (Draft)"> for further information.

Stephen Rothwell <url url="http://www.canb.auug.org.au/~sfr/" name="http://www.canb.auug.org.au/~sfr/"> is currently integrating a patch that will add multiple battery support to the kernel APM. 

From the <tt>mobile-update</tt> 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.

<sect1>Memory
<p>
Unfortenately most laptops come with a proprietary memory chips. So they are not interchangeable between different models. But this seems changing.

<sect1>Plug-and-Play Devices (PnP)
<p>
The <it>Plug and Play driver project</it> 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 <url url="http://www.io.com/~cdb/mirrors/lpsg/pnp-linux.html" name="http://www.io.com/~cdb/mirrors/lpsg/pnp-linux.html"> . 
<p>
<it>ISA PnP tools</it> is another useful package.
<p>
And there is a project at RedHat <url url="http://www.redhat.com/pnp/overview.html" name="http://www.redhat.com/pnp/overview.html"> .
<p>
The latest PCMCIA driver package (>&gt;3.1.0) has utilities <tt>lspnp</tt> and
<tt>setpnp</tt> to manipulate PNP settings. Note that in 3.1.0 you may
need this patch to compile them:
<code>
-&num;ifdef __GLIBC__
+&num;if 0 /* def __GLIBC__ */
 &num;include <byteswap.h>
 &num;else
</code>

<sect1>Docking Station / Port Replicator
<p>
<sect2>Definitions
<p>
First some definitions. There is a difference between <it>docking station</it> and <it>port replicator</it>.

I use the term <it>docking station</it> 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 <it>port replicator</it> is just a copy of the laptop ports which may be connected permanently to a PC.

<sect2>Other Solutions
<p>
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 <url url="http://www.tekram.com/Hot_Products.asp?Product=IR-660" name="http://www.tekram.com/Hot_Products.asp?Product=IR-660"> . 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 <it>network</it> 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 <it>Y cable</it>, which connects the PS/2 port to an external keyboard and an external monitor. Note: Your laptop probably has support for the <it>Y cable</it> feature, e.g. the COMPAQ Armada 1592DT.

<sect2>Connection Methods
<p>
AFAIK there are <it>three solutions</it> to connect a laptop to a docking station:

<enum>

<item>
SCSI port</item>

<item>
parallel port</item>

<item>
(proprietary) docking port</item>

</enum>

From <url url="http://www.mjedev.demon.co.uk/index.html" name="Martin J. Evans martin@mjedev.demon.co.uk "> &dquot;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.
<p>
1) Supporting <it>additional disks</it> on the docking station SCSI card
<p>
To my mind the best way of doing this is to:

<enum>

<item>
Either build support for the SCSI card into the kernel or build it as a module.</item>

<item>
Put the mount points into <file>/etc/fstab</file> but use the &dquot;noauto&dquot; flag to prevent them from being mounted automatically with the <tt>mount -a</tt> flag. In this way, when you are docked you can explicitly mount the partitions off any disk connected to the docking station SCSI card.</item>

</enum>
<p>
2) Supporting <it>additional network adaptors</it> in the docking station
<p>
You can use a similar method to that outlined above for the graphics card. Check the <file>/proc</file> filesystem in your rc scripts to see if you are docked and then set up your network connections appropriately. &dquot;

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:
<p>

<code>
&num; check, if Laptop is in docking-station (4 PCMCIA slots available)
&num; or if it is standalone (2 slots available)
&num; Start after cardmgr has started
&num;
&num; Friedhelm Kueck mailto:fk@impress.de
&num; 08-Sep-1998
&num;
&num; Find No. of Sockets
SOCKETS=`tail -1 /var/run/stab | cut -d &dquot:&dquot; -f 1`

case &dquot;$SOCKETS&dquot; in

&dquot;Socket 3&dquot;)
echo Laptop is in Dockingstation ...
echo Disabeling internal LCD Display for X11
echo
cp /etc/XF86Config_extern /etc/XF86Config
&num;
&num; Setup of PCMCIA Network Interface after start of cardmge
&num;
echo
echo &dquot;Setting up eth0 for use at Network ...&dquot;
echo
/sbin/ifconfig eth0 10.1.9.5 netmask 255.255.0.0 broadcast 10.1.255.255
/sbin/route add -net 10.1.0.0 gw 10.1.9.5
/sbin/route add default gw 10.1.10.1
;;

&dquot;Socket 1&dquot;)
echo Laptop is standalone
echo Disabling external Monitor for X11
cp /etc/XF86Config_intern /etc/XF86Config
echo
echo Network device NOT setup
;;
esac
</code>

<sect1>Network Connections
<p>
<sect2>Related HOWTOs
<p>

<enum>

<item>
PLIP-mini-HOWTO</item>

<item>
NET-3-HOWTO</item>

<item>
Ethernet-HOWTO</item>

<item>
Term-Firewall-mini-HOWTO</item>

</enum>

<sect2>Connection Methods
<p>
<sect3>PCMCIA Network Card
<p>
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.

<sect3>Serial Null Modem Cable
<p>
Probably the cheapest way to connect your laptop to another computer, but quite slow. You may use PPP or SLIP to start the connection.

<sect3>Parallel Port NIC (Pocket Adaptor)
<p>
<url url="http://www.unix-ag.uni-siegen.de/~nils/accton&lowbar;linux.html" name="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.

<url url="http://www.linux-on-laptops.com/linksys.html" name="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.

<sect3>Parallel &dquot;Null&dquot; Modem Cable
<p>
Offers more speed than a serial connection. Some laptops use chipsets that will not work with PLIP. Please see PLIP-HOWTO for details.

<sect3>Docking Station NIC
<p>
I don't have experience with a NIC in a docking station yet.

<sect1>Modem
<p>
<sect2>Modem Types
<p>
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: &dquot;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 <it>WinModems</it> 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.&dquot;

&dquot;<it>Win</it> 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. &dquot;

Anyway, I have set up a page collecting information on laptops with internal modems at <url url="http://tuxmobil.org/" name="http://tuxmobil.org/"> . Maybe it's possible to run such modems with MS-Windows9x/NT emulators like <tt>wine</tt> or <tt>VMware</tt>, but I don't know it.
<p>
Recently there is a driver for Lucent WinModems (alpha) available at <url url="http://www.suse.cz/development/ltmodem/" name="SuSE - Labs"> and <url url="http://www.close.u-net.com" name="LTModem diagnostic tool">.

<sect2>Caveats
<p>
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 <tt>pppstats</tt>. Or <tt>pload</tt> 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 <tt>pload</tt> is  <url url="http://www.engr.utk.edu/~mdsmith/pload/" name="http://www.engr.utk.edu/~mdsmith/pload/"> .

<sect1>SCSI
<p>
<sect2>Hardware Compatibility Check
<p>
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.

<sect2>Related HOWTOs
<p>

<enum>

<item>
SCSI-HOWTO</item>

</enum>

<sect2>Survey
<p>
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.
<p>
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.

<sect1>Universal Serial Bus - USB
<p>
<sect2>Linux Compatibility Check
<p>
You should get information about the USB controller with <tt>cat /proc/pci</tt> and about USB devices with <tt>cat /proc/bus/usb/devices</tt>.

<sect2>Miscelleaneous
<p>
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.
<p>
Visit <url url="http://www.linux-usb.org" name="http://www.linux-usb.org"> for the USB Linux home page. Also I have set up a page collecting information about laptops and USB at <url url="http://tuxmobil.org/" name="TuxMobil"> .

<sect1>Floppy Drive
<p>
<sect2>Linux Compatibility Check
<p>
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 <tt>superformat</tt> 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 <tt>man bootparam</tt> .

<sect1>CD Drive
<p>
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: &dquot;Portable PC Card CD-ROM drives transform laptops into mobile multimedia machines&dquot;, 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.

<sect1>DVD Drive
<p>
<url url="http://livid.on.openprojects.net" name="The Linux Video and DVD Project"> has made great headway since its start last February. They have just released the source code ( http://livid.on.openprojects.net/css.tgz) 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.
<p>
<url url="http://www.trylinux.com/projects/udf/index.html" name="Universal Disk Format (UDF) Driver">: &dquot;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.&dquot;

<sect1>Harddisk
<p>
<sect2>Linux Compatibility Check
<p>
Useful programms are <tt>hdparm</tt>, <tt>dmesg</tt>, <tt>fsck</tt> and <tt>fdisk</tt> .

<sect2>Miscellaneous
<p>
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.
<p>
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.

<sect2>Form Factors
<p>
AFAIK there is only one form factor for harddisks used in laptops the 2.5&dquot; format. This format seems to be available in different heights (Please note I couldn't verify this information yet):

<itemize>

<item>  18mm: laptops build before 1996 usually have drives 18mm high

<item>12.7mm: I got a report about such disks but without a notebook model or manufacturer name

<item>  11mm: since 1996 the drives are 11mm high

<item>   9mm: many laptops, including the subnotebooks, now use a 9mm-high disk drive. The largest available in this format in late 1999 is IBM <it>12GN</it>.

<item> 9.5mm: Toshiba Libretto L70 and L100 have a 9.5mm HD

<item>8.45mm: Toshiba Libretto 20, 30, 50 and 60 have 8.45mm tall HDs

<item>6.35mm: Toshiba Libretto L1000 has a 6.35mm HD

</itemize>

It might be possible to use a hard disk wich doesn't fit with some case modifications.
<p>
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.

<sect1>Video Port / ZV Port
<p>
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 <url url="http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html" name=" http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html "> (driver) <url url="http://www.mathematik.uni-kl.de/~wenk/xwintv.html" name=" http://www.mathematik.uni-kl.de/~wenk/xwintv.html "> (tvviewer). For further information see video4linux at <url url=" http://roadrunner.swansea.uk.linux.org/v4l.shtml" name="http://roadrunner.swansea.uk.linux.org/v4l.shtml">. To collect information about laptops with video port I have setup a page at <url url="http://tuxmobil.org/" name="http://tuxmobil.org/"> . Alternatively to the ZV port you might use the USB port.

<sect>Palmtops, Personal Digital Assistants - PDAs, Handheld PCs - HPCs
<p>
Palmtops and PDAs are currently not much covered in this HOWTO. Anyway it may be useful therefore, too. I just include some links, most of them are from <url url="http://www.linux-on-laptops.com/" name="Kenneth E. Harker's page"> :

<enum>

<item>
Highly recommended is the page by Russell King <url url="http://www.arm.uk.linux.org/~rmk/" name=" ARM Linux "> about PDAs with ARM CPU and with links to other Linux related PDA sites.

<item>
PalmOS-HOWTO (former Pilot-HOWTO) by David H. Silber.

<item>
<url url="http://privat.swol.de/ReinholdSchoeb/Newton/"name="Newton and Linux Mini-HOWTO"> .

<item><url url="http://www.tcel.com/~aehall/newtl/" name="Newtl: Newton/Linux Communications System"> Newtl allows a Linux machine to communicate with a Newton PDA. Automatically send e-mail, print, and fax outboxes through your Linux machine, and more.

<item>
<url url="ftp://ryeham.ee.ryerson.ca/pub/PalmOS/" name="PilotLink and XCoPilot"> PilotLink is an utility that performs data transfers from 3com PalmPilot handheld computers to your Linux machine. XCoPilot is an emulator of the PalmPilot operating system that runs under Linux.

<item>
<url url="http://www.icsi.berkeley.edu/~minenko/PalmVNC" name="PalmVNC"> is an implementation of the Virtual Network Client architecture that will allow you to use a Linux or other UNIX machine to put up a (tiny) X Window on a 3COM PalmPilot.

<item>PDAs and infrared remote control, see <url url="http://hp.vector.co.jp/authors/VA005810/remocon/remocone.htm" name="Hiromu Okada">

<item>
AFAIK you can run Linux on the IBM PC110 (a tiny PC handheld that's no longer manufactured). There's a HOWTO on it running around somewhere but I don't have an URL, instead I found a description in <url url="http://boardwatch.internet.com/mag/97/jul/bwm70.html" name=" LINUX REDUX July 1997"> by Alan Cox.

<item>
For more information on Virtual Network Computing, see <url url="http://www.uk.research.att.com/vnc" name="VNC"> .

<item>
There is also the <url url="http://www.cdpubs.com/hhsys/archives.html" name="Handheld Systems(TM) On-line Archives"> and a search engine about palmtop related topics <url url="http://www.palmtop.net/" name="Palmtop.Net/"> .

<item>
I have setup a small page about <url url="http://tuxmobil.org/pda_linux.html" name="Linux with PDAs and Handheld PCs">, too.

</enum>

<sect>Cellular Phones, Pagers, Calculators, Digital Cameras, Wearable Computing
<p>
Though in my opinion related to the topic, these devices are not much covered in this text, yet. For general information about Embedded Systems, see <url url="http://www.embedded.com" name="http://www.embedded.com ">. For Linux information, see <url url="http://www.elks.ecs.soton.ac.uk/" name="ELKS"> and the <url url="http://ryeham.ee.ryerson.ca/uClinux" name=" uCLinux"> project. See news:comp.arch.embedded

<sect1>Cellular Phones
<p>
For NOKIA cellular phones see <url url="http://multivac.fatburen.org/gnokii/" name="GNOKII project"> . And <url url="http://www.users.globalnet.co.uk/~syrinx/nserver/index.html" name="Linux Nserver">. This project aim is to produce a GPL replacement for Nokia's Windows Nserver, and maybe improve upon it along the way. Initially it will emulate the Windows 3.1 version (ie. allow backup, restore and install).
<p>
<url url="http://www.openwap.org/" name="openWAP"> is an open source project for the implementation of the Wireless Application Protocol (WAP) for use with browsers, servers and tools. WAP is used by PDA devices, cell phones, pagers and other wireless devices to transmit internet content to these devices. The project is still in its early stages and nothing can be downloaded yet.
<p>
<url url="http://www.pxh.de/fs/gsmlib/download/" name="GSMLIB"> is a library to access GSM mobile phones through GSM modems. Features include: modification of phonebooks stored in the mobile phone or on the SIM card, reading and writing of SMS messages stored in the mobile phone, sending and reception of SMS messages. Additionally, some simple command line programs are provided to use these features.

<sect1>Pagers - SMS Messages
<p>
<url url="http://www.qpage.org/" name="QuickPage"> is a client/server software package that enables you to send messages to an alphanumeric pager. The client accepts a message from the user and forwards it to a server using SNPP. The server uses a modem to transmit the message to the recipient's paging service using the TAP protocol (also known as the IXO protocol).
<p>
<url url="http://www.fts.frontec.se/~dast/mail2sms/" name="mail2sms"> converts a (MIME) mail to a short message, allowing search/replace, conditional rules, date/time dependent actions, customizing the output format, etc. The output defaults to 160 characters, which is perfectly suitable for sending the text to a GSM telephone as an SMS message. This software does not include any code for actually sending the text to anything else but another program or stdout.
<p>
<url url="http://www.new.ox.ac.uk/~adam/computing/email2sms/" name="email2sms"> is a filter written in Perl which converts an e-mail into a form suitable for sending as an SMS message. Its main advantage over the alternatives is that it uses the CPAN module <it>Lingua::EN::Squeeze</it> to compress the text down to as little as 40% of its original size, so you can get much more of your e-mail into the 160 character limit imposed by SMS. It is fully MIME compatible, and has many configurable options, including removal of quoted text. Ideal for use with procmail. A Perl script for sending the output to a typical e-mail to SMS web gateway is included.
<p>
<url url="http://www.styx.demon.co.uk/smslink/" name="SMSLink"> implements a client/server gateway to the SMS protocol (short messages on the mobile phones). It requires the use of dedicated hardware though (a serial GSM module). Both SMS emission and reception are supported. The server only runs under Linux at the present time and also supports interactive mode via <tt>telnet</tt>. The command-line client already exists for Linux, Solaris and HP-UX. A basic web interface is provided. A Win32 client is in the works.
<p>
<url url="http://lide.pruvodce.cz/~wayne/" name="nmsms"> is a very simple program to announce incoming email to an SMS address (email address) defined at compile time. The original <it>From:</it> and <it>Subject:</it> header are included in each mail announced.
<p>
<url url="http://www.hof-berlin.de/mepl/" name="mepl"> is a software for 3COM/USRobotics Messagemodems to control the self-employed-mode. This program can be used for downloading the messages and saving or mailing them in gsm or fax-format.

<sect1>Digital Cameras
<p>
For information about cellular phones and digital cameras see some links at my page about <url url="http://tuxmobil.org/ir_misc.html" name="Linux with Infrared Devices"> and my IR-HOWTO.
<p>
Newsgroup: rec.photo.digital .
<p>
The Flashpath adapter is a diskette like device which is used to transfer data from a digital camera to a computer. See <url url="http://www.schou.dk/flashpath/" name="Flashpath for Linux"> and James Radley's <url url="http://www.susie.demon.co.uk/flashpath.html" name="flashpath homepage">.

<sect1>Calculators
<p>
Information about calculators e.g. HP-48 is at <url url="http://www.hpcalc.org" name="HP-Calculator.Org"> and <url url="http://www.gmi.edu/~madd0118/hp48/" name="Keith's HP-48 Page">. <url url="http://www.columbia.edu/kermit/hp48.html" name="HP-48 Kermit Hints and Tips"> shows how to talk to the HP48 via its serial-line Kermit protocol. The HP-48 may also be used as a <url url="http://panic.et.tudelft.nl/~costar/hp48" name="Linux terminal">.
<p>
See also at my page about <url url="http://tuxmobil.org/ir_misc.html" name="Linux with Infrared Devices">.
<p>
<url url="http://www.tunbury.demon.co.uk/casio/" name="Backup utility for the CASIO diary">. It is a package ported from DOS to allow communication to the CASIO series of hand-held organizers.  It allows backup from CASIO to your computer and restore a backup file from your computer to the CASIO. It can also output human readable file from CASIO. Currently supports: phone, calendar, schedule, memo, and reminder. See also http://www.aloha.net/~alank/ http://www.casioworld.com , http://home.t-online.de/home/Milan.Urosevic/ and http://sunsite.unc.edu/pub/Linux/apps/
<p>
<url url="http://www.multimania.com/rlievin/" name="GtkTiLink"> is a program which allows you to transfer data between a Texas Instruments calculator and a computer. It works with all cables (parallel, serial, Black and Gray TI Graph Link). It supports the TI82, TI89, TI92 and TI92+ calculators. It can send/receive data and backups, make a capture of the calculator screen and do remote control.

<sect1>Wearable Computing
<p>
Also related to this topic but not covered yet seems wearable computing, see <url url="http://lcs.www.media.mit.edu/projects/wearables/" name="http://lcs.www.media.mit.edu/projects/wearables/"> , the page of Lionel, &dquot;trollhunter&dquot; Bouchpan-Lerust-Juery, <url url="http://infonomade.linuxfr.org/indexen.html" name="http://infonomade.linuxfr.org/indexen.html"> for further information and <url url="http://wearables.blu.org" name="http://wearables.blu.org"> and <url url="http://www.wearcomp.org/" name="http://www.wearcomp.org/">.
<p>
<url url="http://wearables.essex.ac.uk/sulawesi/" name="Sulawesi"> was developed due to the problems running a desktop GUI on a wearable computer. It has been designed and implemented to tackle what has been considered to be important challenges in a wearable user interface, the ability to accept input from any number of input devices, such as machine vision, speech recognition, portable keyboards, GPS devices, infra-red, etc. and to allow services to manipulate the information and generate a suitable output such as speech generation, graphics using a headmounted display, vibrotactile stimuli, etc. The <it>Gili</it> user interface has been updated, more documentation has been added, and the <it>Spatial Reminder</it> has been introduced.

<sect1>Watches
<p>
The <url url="http://datalink.fries.net/" name="datalink library"> allows sending information to the Timex DataLink watches. The original datalink library supports the model 150 and possibly the model 70 watch. This version has been extended to work with the DataLink Ironman Triathlon watch. It has been tested with the SVGA output on the Ironman watch only, other output devices and other watches may or may not work, I have no reports either way. The display must be a CRT display (not a LCD).

<sect>Accessories
<p>
<sect1>PCMCIA Cards
<p>
<sect2>Card Families
<p>

<enum>

<item>
Ethernet adapter</item>

<item>
Token Ring adapter</item>

<item>
Ethernet + Modem / GSM</item>

<item>
Fax-Modem / GSM adapter</item>

<item>
SCSI adapter</item>

<item>
I/O cards: RS232, LPT, RS422, RS485, GamePort, IrDA, Radio, Video</item>

<item>
Memory cards</item>

<item>
harddisks</item>

<item>
2.5&dquot; harddisk adapters</item>

</enum>

For desktops there are PCMCIA slots for ISA and PCI bus available.

Source: <url url="http://www.lapshop.de" name="http://www.lapshop.de">

<sect2>Linux Compatibility Check
<p>
With the command <tt>cardctl ident</tt> you may get information about your card. Put this information into <file>/etc/pcmcia/config.opts</file> if necessary. But this may not be enough to get the card to work, but works sometimes for no-name network cards or modem cards. If you get a card to work or have written a new driver please don't forget to announce this to <url url="http://pcmcia.sourceforge.org" name="the developer of the PCMCIA-CS package David Hinds"> . Look the current issue of his file <url url=" http://pcmcia.sourceforge.org" name="SUPPORTED.CARDS"> to get information about supported cards.
<p>
Since there are not all cards mentioned I have set up a page <url url="http://tuxmobil.org/" name="PCMCIA Cards &dquot;Unofficially&dquot; Supported by Linux"> .

<sect1>SmartCards
<p>
SmartCard reader, see Project Muscle - <url url="http://www.linuxnet.com/smartcard/index.html" name="Movement for the Use of Smart Cards in a Linux Environment">

<sect1>Memory Technology Devices - RAM and Flash Cards
<p>
<url url="http://www.linux-mtd.infradead.org/" name="The Linux Memory Technology Device"> project aims to provide a unified subsystem for handling RAM and Flash cards (Memory Technology Devices). It is intended to be compatible with the Linux PCMCIA code, to prevent duplication of code and effort, yet its main target is small embedded systems, so it will be possible to compile the drivers into the kernel for use as a root filesystem, and a close eye will be kept on the memory footprint.

<sect1>Printers
<p>
Survey about small mobile printers:

<enum>

<item>
CANON: BJC-80, for infrared connections to this printer see the links at my page about <url url="http://tuxmobil.org/ir_misc.html" name="Linux and Infrared Devices"></item>

<item>
CANON: BJ-30</item>

<item>
HP: DeskJet 340Cbi. This is a small, portable, low-duty-cycle printer. It prints either black, or color (3 color). I have had some problems with it loading paper. Overall, the small size and portability make it a nice unit for use with laptops. I use the HP 500/500C driver with Linux. </item>

<item>
Olivetti: JP-90</item>

</enum>

AFAIK only the HP and the BJC-80 machine have an infrared port. Pay attention to the supplied voltage of the power supply if you plan to travel abroad. Source: <url url="http://www.lapshop.de" name="http://www.lapshop.de">

<sect1>Power and Phone Plugs, Power Supply
<p>
When travelling abroad you might consider to take a set of different power and phone plugs with you. Also, it's useful if you can change the input voltage of the power supply, for instance from 110V in the US to 220V in Germany. There also power supplies for 12V batteries from cars.

Some models of power plugs:
<code>
                ____
               / () \          _   _              _
frontal view: |()  ()|        (_)=(_)            (_)           N.N.
               ------ 

abbrevation.:    C13             C8              ??            PS/2

symbol......:    ??              ??              -O)-          N.N.
</code>
Caveats: Though some -O)- plug may seem to be compatible to your laptop, because of the according physical size, take extremely care it uses the same plus-minus voltage scheme, for instance plus for the inner ring and minus for the outer one. Often but not always there are the according symbols near the plug.

<sect1>Bags and Suitcases
<p>
You probably wonder, why I include this topic here. But shortly after using my COMPAQ Armada 1592DT I recognized that the rear side of the machine (where the ports are arranged) was slightly damaged. Though I have taken much care when transporting the laptop, this was caused by putting the bag on the floor. It seems that the laptop has so much weight, that it bounces inside the bag on its own rear side. So I decided to put a soft pad into the bag before loading the laptop. A good bag is highly recommended if you take your laptop on trips, or take it home every night.
<p>
Laptops computers are frequently demolished in their carrying bag.
The two main causes of demolition are poking the LC display and
banging the edges.A good case has very stiff sides to spread out
pokes, and lots of energy-absorbent padding around the edges to help
when you whack it on the door jamb.Few cases actually have either
of these features.
<p>
More laptops are lost to theft than damage, so camouflage is a wise too.
Emerson, Tom &num; El Monte &lt;TOMEMERSON@ms.globalpay.com&gt; wrote: &dquot;I use for a laptop <it>travelling bag</it>: a Pyrex <it>casserole carrier</it> bag. Yup, you might think it <it>odd</it> to use a casserole bag for a laptop, but it turns out it has several advantages:

<itemize>

<item>
The one I use has a microwavable heating pad in it -- while I don't actually heat this pad (it's meant to keep food warm while in transport), it does provide padding underneath the laptop.  The carrier I have only has a lower  - heating - pad, but there is also a similar carrier that has both a lower  - heating - pad and an upper  - cooling - pad - placed in the freezer to get it cold - -- the intent is that you keep one or the other in the bag to keep your food hot or col