Linux on the Road

Linux with Laptops, Notebooks, PDAs, Mobile Phones and Other Portable
Devices

Werner Heuser

      <wehe[AT]tuxmobil.org>

   Linux Mobile Edition  Edition
   Version 3.22

   TuxMobil

   Berlin

   Copyright © 2000-2011 Werner Heuser

   2011-12-12
   Revision History
   Revision 3.22   2011-12-12 Revised by: wh
   The address of the opensuse-mobile mailing list has been added, a
   section power management for graphics cards has been added, a short
   description of Intel's LinuxPowerTop project has been added, all
   references to Suspend2 have been changed to TuxOnIce, links to
   OpenSync and Funambol syncronization packages have been added, some
   notes about SSDs have been added, many URLs have been checked and
   some minor improvements have been made.
   Revision 3.21   2005-11-14 Revised by: wh
   Some more typos have been fixed.
   Revision 3.20   2005-11-14 Revised by: wh
   Some typos have been fixed.
   Revision 3.19   2005-11-14 Revised by: wh
   A link to keytouch has been added, minor changes have been made.
   Revision 3.18   2005-10-10 Revised by: wh
   Some URLs have been updated, spelling has been corrected, minor
   changes have been made.
   Revision 3.17.1 2005-09-28 Revised by: sh
   A technical and a language review have been performed by Sebastian
   Henschel. Numerous bugs have been fixed and many URLs have been
   updated.
   Revision 3.17   2005-08-28 Revised by: wh
   Some more tools added to external monitor/projector section, link to
   Zaurus Development with Damn Small Linux added to cross-compile
   section, some additions about acoustic management for hard disks
   added, references to X.org added to X11 sections, link to
   laptop-mode-tools added, some URLs updated, spelling cleaned, minor
   changes.
   Revision 3.16   2005-07-15 Revised by: wh
   Added some information about pcmciautils, link to SoftwareSuspend2
   added, localepurge for small HDDs, added chapter about FingerPrint
   Readers, added chapter about ExpressCards, link to Smart Battery
   System utils added to Batteries chapter, some additions to External
   Monitors chapter, links and descriptions added for: IBAM - the
   Intelligent Battery Monitor, lcdtest, DDCcontrol updated Credits
   section, minor changes.

   Mobile computer devices (laptops, notebooks, PDAs, mobile cell
   phones, portable audio and video players, digital cameras,
   calculators, wearables, ...) are different from desktop/tower
   computers. They use certain hardware such as PCMCIA cards, infrared
   and BlueTooth ports, wireless LAN, LCD displays, batteries, docking
   stations. Hardware parts cannot be changed as easily as in a
   desktops, e.g. the graphics card. Often their hardware is more
   limited (e.g. disk space, CPU speed). Though the performance gap to
   desktops is becoming smaller, e.g. in many instances, laptops or
   notebooks can become a desktop replacement.

   Hardware support for Linux (and other operating systems) and mobile
   computer devices is sometimes more limited (e.g. graphics chips,
   internal modems). They often use specialized hardware, hence finding
   a driver can be more difficult. Many times they are used in changing
   environments, so there is a need for multiple configurations and
   additional security strategies.

   Though there are laptop, notebook, PDA and mobile phone related
   HOWTOs available already, this guide contains a concise survey of
   documents related to mobile computer devices. Also Linux features,
   such as installation methods for laptops, notebooks and PDAs as well
   as configurations for different (network) environments are described.

   Although there are some caveats, Linux is a better choice for mobile
   computer devices than most other operating systems, because it
   supports numerous installation methods, works in many heterogeneous
   environments and needs smaller resources.

   Copyright (c) 2000-2011 Werner Heuser. For all chapters except
   "Lectures, Presentations, Animations and Slideshows" permission is
   granted to copy, distribute and/or modify this document under the
   terms of the GNU Free Documentation License, Version 1.1 or any later
   version published by the Free Software Foundation; with the Invariant
   Sections being "Preface" and "Credits", with the Front-Cover Texts
   being "Linux on the Road - the First Book on Mobile Linux", and with
   the Back-Cover Texts being the section "About the Author". A copy of
   the license is included in the section entitled "GNU Free
   Documentation License".
     ________________________________________________________________

   Table of Contents
   Preface

        1. About the Author
        2. Sponsoring
        3. About the Document
        4. Contact
        5. Disclaimer and Trademarks

   I. Laptops and Notebooks

        1. Which Laptop to Buy?
        2. Laptop Distributions
        3. Installation

   II. Handheld Devices - Personal Digital Assistants (PDAs)

        4. Palmtops, Personal Digital Assistants - PDAs, Handheld PCs -
                HPCs

        5. History of Linux on PDAs
        6. Linux PDAs
        7. Non-Linux PDAs - Ports and Tools
        8. Connectivity

   III. Tablet PCs / Pen PCs

        9. Tablet PCs / Pen PCs

   IV. Mobile (Cellular) Phones, Pagers, Calculators, Digital Cameras,
          Wearable Computing

        10. Mobile (Cellular) Phones, Pagers
        11. Calculators, Digital Cameras, Wearable Computing

   V. Mobile Hardware in Detail

        12. Hardware in Detail: CPU, Display, Keyboard, Sound and More
        13. Accessories: PCMCIA, USB and Other External Extensions

   VI. Kernel

        14. Kernel History

   VII. On the Road

        15. Different Environments
        16. Solutions with Mobile Computers

   VIII. Appendix

        A. Other Operating Systems
        B. Other Resources
        C. Repairing the Hardware
        D. Survey about Micro Linuxes
        E. Dealing with Limited Resources or Tuning the System
        F. Ecology and Laptops
        G. NeoMagic Graphics Chipset Series NM20xx
        H. Annotated Bibliography: Books For Linux Nomads
        I. Resources for Specific Laptop Brands
        J. Credits
        K. Copyrights

   List of Tables
   12-1. Arguments for the -t and -R option of gpm.

   List of Figures
   6-1. Screenshot of the YOPY PDA
   6-2. Screenshot of the SHARP Zaurus SL-5500 PDA.
   7-1. Screenshot of the HELIO PDA.
   7-2. Screenshot of the iPAQ PDA.
   7-3. Screenshot of the PALM-Pilot emulator POSE.
   12-1. Screenshot of cardinfo
   E-1. Screenshot of blackbox.
     ________________________________________________________________

Preface

   

   Life is the first gift, love is the second, and understanding is the
   third.
     [http://www.margepiercy.com/] Marge Piercy
     ________________________________________________________________

1. About the Author

   People like either laptops or desktops. I like to work with laptops
   rather than with desktops. I like Linux too. My first HOWTO was the
   [http://tuxmobil.org/howtos.html] Linux-Infrared-HOWTO about infrared
   support for Linux. My second is this one and my third the
   [http://computerecology.org/] Linux-Ecology-HOWTO , about some ways
   to use Linux in an ecology aware manner.

   Also I have written some pages about Linux with all the laptops I had
   a chance to put Linux on. You may find them at
   [http://tuxmobil.org/mylaptops.html] TuxMobil Linux Laptop and
   Notebook Survey.

   During the work with the Linux-Mobile-Guide I have also collected
   some surveys about laptop related hardware:
   [http://tuxmobil.org/graphic_linux.html] graphics chips ,
   unofficially supported PCMCIA cards ,
   [http://tuxmobil.org/modem_linux.html] internal modems ,
   [http://tuxmobil.org/ir_misc.html] infrared chips and other hardware.

   In May 2000 I have founded the German vendor [http://xtops.de/]
   Xtops.DE: Linux, Laptops, Notebooks, PDAs pre-installed, to sponsor
   the TuxMobil project.
     ________________________________________________________________

2. Sponsoring

2.1. How to and Why Sponsor?

   This guide is free of charge (except the printed version, which
   contains an additional part) 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. For the curious, the first issues of this guide have
   been written on a [http://tuxmobil.org/hp800e.html] HP OmniBook 800CT
   5/100.

   Or sponsor a banner ad at [http://tuxmobil.org/] TuxMobil: Linux with
   Laptops, Notebooks, PDAs, Mobile Phones and Portable Computers.

   You can hire me for readings or workshops on Linux with Laptops,
   Linux with PDAs, Repairing of Laptops and other Linux topics, too.
     ________________________________________________________________

2.2. Table of Sponsors

   This guide is currently sponsored by:

     * AgendaComputing (Berlin, Germany out-of-business)
     * [http://xtops.de/index.html] Xtops.DE - Pre-Installed Linux on
       Laptops, PDAs and Mobile Phones
     ________________________________________________________________

3. About the Document

   Mirrors, Translations, Versions, Formats, URLs
     ________________________________________________________________

3.1. URLs in this Document

   Many times I have mentioned MetaLab formerly known as SunSite. This
   site carries a heavy load, so do yourself a favor, use one of the
   [http://metalab.unc.edu/pub/Linux/MIRRORS.html] MetaLab mirrors .

   For Debian/GNU Linux the mirror URLs are organized in the scheme
   http://www.<country code, e.g. uk>.debian.org .

   Nearly all of the programs I mention are available as
   [http://www.debian.org/] Debian/GNU Linux package, or as RPM package.
   Look up your favorite RPM server, for instance [http://rpmfind.net/]
   rpmfind .
     ________________________________________________________________

3.2. Latest Version, Mirrors

   Former issues of this text are available at the [http://tldp.org/]
   THE LINUX DOCUMENTATION PROJECT - TLDP.

   The latest version of this document is available at
   [http://tuxmobil.org/howtos.html] TuxMobil - HOWTOs.
     ________________________________________________________________

3.3. Proposed Translations

   The following translations are under construction:

     * Chinese, John Lian <johnlian_AT_riverrich.com.tw>
     * Greek, Vassilis Rizopoulos <mscyvr_AT_scs.leeds.ac.uk>
     * Italian, Alessandro Grillo <Alessandro_Grillo_AT_tivoli.com>,
     * Japanese, Ryoichi Sato <rsato_AT_ipf.de>,
     * Portuguese, Gledson Evers <pulga_linux_AT_bol.com.br>
     * Slovenia, Ales Kosir <ales.kosir_AT_hermes.si>
     * Spanish, Jaime Robles <ea4abw_AT_amsat.org>

   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, for instance together with your
   [http://lugww.counter.li.org/] local Linux Users Group - LUG.
     ________________________________________________________________

4. Contact

   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 criticism are welcome. But please
   don't expect me to solve your laptop related problems if the solution
   is already documented. Please read all appropriate manual pages,
   HOWTOs and WWW sites first, than you may consider to contact me or
   search in the chapter Appendix B Other Resources mentioned below.

   Werner Heuser <wehe_at_tuxmobil.org>
     ________________________________________________________________

5. Disclaimer and Trademarks

   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.

   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 in my humble opinion 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.

   Though I hope trademarks will be superfluous sometimes (you may see
   what I mean at [http://www.opensource.org/osd.html] Open Source
   Definition ), I declare: If certain words are trademarks, the context
   should make it clear to whom they belong. For example "MS Windows NT"
   implies that "Windows NT" belongs to Microsoft (MS). "Mac" is a
   trademark by Apple Computer. Many of the designations used by
   manufacturers and sellers to distinguish their products are claimed
   as trademarks. Where those designations appear in this book, and I
   was aware of a trademark claim, the designations have been printed in
   caps or initial caps. All trademarks belong to their respective
   owners.

I. Laptops and Notebooks

   Table of Contents
   1. Which Laptop to Buy?

        1.1. Introduction
        1.2. Portables, Laptops/Notebooks, Sub/Mini-Notebooks, Palmtops,
                PDAs/HPCs

        1.3. Linux Features
        1.4. Main Hardware Features
        1.5. Sources of More Information
        1.6. Linux Compatibility Check
        1.7. Writing a Device Driver
        1.8. Buying a Second Hand Laptop
        1.9. No Hardware Recommendations
        1.10. Linux Laptop and PDA Vendor Survey

   2. Laptop Distributions

        2.1. Requirements
        2.2. Recommendation

   3. Installation

        3.1. Related Documentation
        3.2. Prerequisites - BIOS, Boot Options, Partitioning
        3.3. Linux Tools to Repartition a Hard Disk
        3.4. Laptop Installation Methods
        3.5. Common Problems During Installation
     ________________________________________________________________

Chapter 1. Which Laptop to Buy?

1.1. Introduction

   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:

    1. 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 (whether external or internal) or swappable parts
       like CD and floppy drive, are included in the weight.
       Most peripheral cables are appallingly heavy. If you get a
       subnotebook and carry it around with a bunch of external drives,
       cables, and port expander 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.
    2. Supported Operating Systems: proprietary versus open
    3. Price: NoName versus Brand
    4. Hardware Features: display size, harddisk size, CPU speed,
       battery type, etc.
    5. Linux Support: graphics chip, sound card, infrared controller
       (IrDA®), internal modem, etc.
     ________________________________________________________________

1.2. Portables, Laptops/Notebooks, Sub/Mini-Notebooks, Palmtops, PDAs/HPCs

1.2.1. Portables

   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. [http://www.bsicomputer.com/] BSI Computer ).
     ________________________________________________________________

1.2.2. Laptops/Notebooks

   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 laptop and notebook seem equivalent to me.
     ________________________________________________________________

1.2.3. Sub-Notebooks/Mini-Notebooks

   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.
     ________________________________________________________________

1.2.4. Palmtops

   Weight between 0.7 and 1.3 kg (1.5 to 3 lbs). Features: proprietary
   commercial operating systems. Examples: HP200LX.
     ________________________________________________________________

1.2.5. Personal Digital Assistants (PDAs)/Handheld PCs (HPCs)

   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.
     ________________________________________________________________

1.2.6. Wearables

   Watches, digital pens, calculators, digital cameras, cellular phones
   and other wearables.
     ________________________________________________________________

1.3. Linux Features

   Due to a lack of support by some manufacturers, not every feature of
   a laptop is always supported or fully operational. The main devices
   which may cause trouble are: graphics 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
   Compatibility Check chapter in every section of Part V in Linux on
   the Road Hardware In Detail below.

   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 TuxMobil for a
   survey of Linux laptop, notebook, PDA and mobile phone vendors.
     ________________________________________________________________

1.4. Main Hardware Features

   Besides its Linux features, there often are some main features which
   have to be considered when buying a laptop. For Linux features please
   see Part V in Linux on the Road Hardware In Detail below.
     ________________________________________________________________

1.4.1. Weight

   Don't underestimate the weight of a laptop. This weight is mainly
   influenced by:

    1. screen size
    2. battery type
    3. internal components, such as CD drive, floppy drive
    4. power supply
    5. material used for the case, usually they are either from plastics
       or from magnesium.
     ________________________________________________________________

1.4.2. Display

   Recent laptops come with active matrix (TFT) displays. Laptops with
   passive matrix (DSTN) are no longer manufactured. 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 17". A bigger screen weighs more, costs
   more, and is harder to carry, but is good for a portable desktop
   replacement.
     ________________________________________________________________

1.4.3. Batteries

   The available battery types are Lithium Ion (LiIon), Nickel Metal
   Hydride ( NiMH) and Nickel Cadmium (NiCd). Though almost all current
   laptops come with LiIon batteries.

   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.

   Unfortunately most laptops come with a proprietary battery size. So
   they are not interchangeable between different models.
     ________________________________________________________________

1.4.4. CPU

1.4.4.1. Supported CPU Families

   For details about systems which are supported by the Linux Kernel,
   see the [http://www.tux.org/lkml/] The linux-kernel mailing list FAQ.

    1. i286: Linux doesn't support this CPU family yet. But there are
       some efforts at [http://elks.sourceforge.net/] ELKS. If you like,
       you may use [http://www.cs.vu.nl/~ast/minix.html] Minix, which is
       also a free Unix operating system. Minix supports 8088 to 286
       CPUs with as little as 640K memory. Actually there are some
       [http://tuxmobil.org/286_mobile.html] laptops with ELKS and MINIX
       around.
    2. 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.
    3. m68k: This covers Amigas and Ataris having a Motorola 680x0
       processor for x>=2; with MMU. And the early Apple/Macintosh
       computers.
       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.
       For a complete list of all Macintosh computers ever made, with
       specifications, see [http://www.apple-history.com/] Apple-History
       . For Linux installation reports see
       [http://tuxmobil.org/apple.html] Linux Laptop and Notebook
       Survey: Apple.
       The proper place to go for information on running Linux on m68k
       Macintoshes is [http://www.mac.linux-m68k.org/] linux-m68k.
       "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."
       "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."
       Also there are two Atari laptops, for which I don't have enough
       information. The following quotations are from the
       [http://capybara.sk-pttsc.lj.edus.si/yescrew/eng/atari.htm] Atari
       Gallery.
       "The STacy was released shortly after the Mega ST to provide a
       portable means of Atari computing. STacy computers were shipped
       with TOS v1.04.
       Designed to replace the STacy as the defacto portable ST
       computer, the ST Book 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."
       From Stok, Leon <stok_AT_YIS.NL>: The STacey and the ST Book,
       both can't run Linux since they are only shipped with an 68000
       CPU, which doesnt have a MMU unit.
       As far as I know Amiga has never produced laptops. One company
       manufactured kits to convert desktop Amigas to portables. These
       used regular Amiga motherboards so any Linux setup that supports
       the regular Amiga setups will support these.
    4. Alpha, Sparc, Sparc64 architectures: These are currently under
       construction. As far as I know there are only the
       [http://www.tadpole.com/] Tadpole SPARC and ALPHA laptops, and
       some other ALPHA laptops available.
       [http://www.naturetech.com.tw/] NatureTech offers also SPARC CPUs
       in laptops. The TuxMobil survey of
       [http://tuxmobil.org/mobile_solaris.html] Solaris on laptops and
       notebooks may also be helpful.
    5. StrongARM: a very low-power CPU found in [http://www.rebel.com/]
       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.
       For PDAs with ARM/StrongARM CPU see the Part II in Linux on the
       RoadHandheld Devices part below.
    6. MIPS: Used in SGI mainframes and Cobalt Micro intranet
       appliances, chips based on this architecture are used in many
       Windows-CE machines. Linux has been ported to a few of these.
    7. AMD Processor: More about Linux on AMD processors may be found at
       [http://www.x86-64.org/] x86-64 org . At TuxMobil there is also a
       survey of [http://tuxmobil.org/cpu_amd.html] laptops with AMD
       CPUs .
    8. 64bit CPUs: At TuxMobil there is a survey of
       [http://tuxmobil.org/cpu_64bit.html] laptops with 64bit CPUs .
     ________________________________________________________________

1.4.4.2. Miscellaneous

   At higher speed, a CPU consumes more power and generates more heat.
   Therefore, in many laptops a special low-power 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
   quite noisy fan.
     ________________________________________________________________

1.4.5. Number of Spindles

   Laptops and notebooks are often described by the number of spindles.

    1. one spindle: harddisk. Usually sub-notebooks, often provided with
       an external optical drive (CD/DVD).
    2. two spindles: harddisk, optical drive (CD/DVD).
    3. three spindles: harddisk, optical drive (CD/DVD), floppy drive.
       These laptops are often used as desktop PC replacement.
     ________________________________________________________________

1.4.6. Cooling

   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 shouldn't get blocked, or it will
   overheat 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.
     ________________________________________________________________

1.4.7. Keyboard Quality

   Though you might use your desktop computer to do longer writings, a
   good keyboard can save you some head- and fingeraches. Look
   especially for the location of special keys like: <ESC>, <TAB>,
   <Pos1>, <End>, <PageDown>, <PageUp> and the cursor keys.
     ________________________________________________________________

1.4.8. Price

   Laptops are quite expensive if you compare them with desktops (though
   maybe not if compared with LCD, IrDA®, PCMCIA capabilities). So you
   may decide between a brand or no-name product. Though I would like to
   encourage you to take a no-name 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 second hand 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.
     ________________________________________________________________

1.4.9. Power Supply

   If you travel abroad pay attention to the voltage levels which are
   supported by the power supply. Also the power supply is usually one
   of the heavier parts of a laptop. Another caveat is the power plug,
   which often is different from country to country.
     ________________________________________________________________

1.5. Sources of More Information

   Specifications, manuals and manufacturer support often are not
   helpful. Therefore you should retrieve information from other sources
   too:

    1. [http://tuxmobil.org/mylaptops.html] TuxMobil Linux Laptop and
       Notebook Survey , this survey covers other UniXes (for example
       BSD, Solaris), too.
    2. [http://www.linux-on-laptops.com/] Linux on Laptops.

   General information about manufacturer support you may find in my
   [http://tuxmobil.org/laptop_manufacturer.html] Linux Status Survey of
   Laptop and Notebook Manufacturers , though don't expect to much Linux
   support from them yet. Sometimes the
   [http://tuxmobil.org/laptop_oem.html] Matrix of OEM/ODM Relations may
   help to find information for your laptop under another brand name.
     ________________________________________________________________

1.6. Linux Compatibility Check

1.6.1. Related Documentation

    1. [http://tldp.org/HOWTO/Hardware-HOWTO/] Hardware-HOWTO
    2. [http://tldp.org/HOWTO/Kernel-HOWTO/] Kernel-HOWTO
    3. PCMCIA-HOWTO
    4. [http://tldp.org/HOWTO/PCI-HOWTO.html] PCI-HOWTO
    5. [http://tldp.org/HOWTO/Plug-and-Play-HOWTO.html]
       Plug-and-Play-HOWTO
     ________________________________________________________________

1.6.2. Check Methods in General

   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 section Part V in Linux on the
   Road Hardware In Detail below. In general you may use:

    1. 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 by dmesg or by looking into /var/log/messages. For the very
       first boot messages check /var/log/boot.
    2. If your kernel supports the /proc file system you may get
       detailed information about PCI devices by cat /proc/pci Please
       read the kernel documentation pci.txt. You may get further
       information about unknown PCI devices at the
       [http://pciids.sf.net/] Linux PCI ID Repository, the home of the
       pci.ids file. From 2.1.82 kernels on you may use the lspci
       command from the pci-utils package.
    3. To retrieve information about Plug-and-Play (PNP) devices use
       isapnp-tools .
    4. Use scsi_info by David Hinds for SCSI devices or scsiinfo.

   If you don't want to install a complete Linux you may retrieve this
   information by using a micro Linux ( see Appendix A Appendix A). The
   package muLinux provides even a small systest program and TomsRtBt
   comes with memtest. To use memtest you have to copy it on a floppy dd
   if=/usr/lib/memtest of=/dev/fd0 and to reboot from this floppy.

   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.

   Using Windows9x/NT to get hardware settings, basically boot Windows,
   then Start -> Settings -> Control Panel -> System -> Device Manager
   and write down everything, or make a hardcopy from the display using
   the <PRINT> key, plus keep a log of settings, hardware, memory, etc.

   Using MS-DOS and Windows3.1x you can use the command msd, which is an
   akronym for MicroSoft Diagnostics. Or you might try one of the
   numerous DOS shareware utilities: CHECK-IT, DR.HARD and others.

   Sometimes it's difficult to know what manufacturer has built the
   machine or parts of it actually. The
   [http://www.fcc.gov/oet/fccid/help.html] FCC "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."

   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(TM) Thinkpads have
   serious BIOS problems that affect delivery of events to the power
   management daemon apmd. These bugs also affect MS-Windows, and are
   listed in IBM(TM)'s documentation as considerations.

   Some incompatibilities are temporary, for instance laptops that have
   Intel's USB chip will probably get full USB support, eventually.
     ________________________________________________________________

1.7. Writing a Device Driver

   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.
   There is even a free online issue [http://www.oreilly.com/openbook/]
   here .
     ________________________________________________________________

1.8. Buying a Second Hand Laptop

   Some recommendations to check a used laptop, before buying it:

    1. Review the surface of the case for visible damages.
    2. Check the display for pixel faults. Maybe it's useful to take a
       magnifying glass therefore. By the way: There is a standard for
       pixel faults etc. ISO 13406-2.
    3. Do an IO stress-test, .e.g. with the tool bonnie.
    4. You may use memtest and crashme to achieve a memory test.
    5. Do a CPU stress test, e.g. with the command md5sum /dev/urandom
       or by compiling a kernel.
    6. Check the floppy drive by formatting a floppy.
    7. Check the CD/DVD drive by reading and writing a CD/DVD.
    8. To check the battery seems difficult, because it needs some time:
       one charge and one work cycle. You may use battery-stats to do
       so, but note this tool only offer APM support, it is not
       available with ACPI support yet.
    9. To check the surface of the harddisk you may take e2fsck. There
       is also a Linux tool dosfsck or the other fsck tools.
   10. To test the entire disk (non-destructively), time it for
       performance, and determine its size, as root do: time dd
       if=/dev/hda of=/dev/null bs=1024k .
   11. Check whether the machine seems to be stolen. I have provided a
       [http://tuxmobil.org/stolen_laptops.html] survey of databases for
       stolen laptops.

   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 in my humble opinion is the tool
   [http://members.datafast.net.au/~dft0802/] PC Diagnostics 95 made by
   Craig Hart. Despite the 95 in its name it's plain DOS, tiny ( 76KB
   program and 199KB data) reliable and free. Unfortunately it contains
   no check for the IrDA® port.

   Please note this quotation from the disclaimer: "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 pretty 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."

   Laptop computers, unlike desktop machines, really do get used up.
   Lithium batteries are good for no more than 400 recharge cycles,
   sometimes much fewer. Keyboards wear out. LCD screen backlighting
   grows dim. Mouse buttons fail. Worst of all, connectors get loose as
   a result of vibration, causing intermittent failures (e.g. only when
   you hit the <Enter> key). We have heard of a machine used on the
   table in a train being shaken to unusability in one trip.
     ________________________________________________________________

1.9. No Hardware Recommendations

   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 (with bigger harddisk space, higher CPU speed,
   more display size, etc.) comes into the market. So I don't give any
   model or brand specific recommendations. But you may check my
   [http://tuxmobil.org/laptop_manufacturer.html] Linux support of
   laptop and notebook manufacturers survey.

   A good way to check Linux hardware compatibility the next time you go
   shopping a laptop is using a [http://www.knoppix.org/] Knoppix
   CD/DVD. The Knoppix hardware detection works quite well and is often
   capable to check all laptop hardware.
     ________________________________________________________________

1.10. Linux Laptop and PDA Vendor Survey

   You may check the [http://tuxmobil.org/reseller.html] Linux Laptop,
   PDA and Mobile Phone Vendor Survey at TuxMobil for a reseller in your
   country. Some of them even sell laptops without Microsoft operating
   systems.

   Often it is difficult to get laptops without a pre-installed
   Microsoft operating system. In case you do not want to use it you may
   read [http://tuxmobil.org/ms_tax.html] some tips and tricks to get
   rid of the Microsoft tax. If you want to buy a recent machine check
   the [http://tuxmobil.org/recent_linux_laptops.html] Linux
   installation reports for recently available laptops and notebooks.
     ________________________________________________________________

Chapter 2. Laptop Distributions

2.1. Requirements

   From the [http://tldp.org/HOWTO/Battery-Powered/]
   Battery-Powered-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 minimal install 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.
   Some portable systems do not need printing support.

   Don't forget to describe laptop-specific installation problems, e. g.
   how to install your distribution without a CD/DVD-ROM drive.

   Add better power management and seamless PCMCIA support to your
   distribution. Add a recompiled kernel and an alternative set of
   PCMCIA drivers with apm support that the user can install on demand.
   Include a precompiled apmd package with your distribution. Also
   include IrDA® infrared support and USB support.

   Add support for dynamically switching network configurations. 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.

   Add a convenient PPP dialer 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 usernet 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
   wvdial from [http://open.nit.ca/] OpenSourceInNitix.

   At TuxMobil you may find a huge number of links to
   [http://tuxmobil.org/mylaptops.html] laptop and notebook Linux
   installation reports. They are ordered by manufacturer and Linux
   distribution. Special categories are available for:

     * [http://tuxmobil.org/debian_linux.html] Debian,
     * [http://tuxmobil.org/gentoo_mobile.html] Gentoo,
     * [http://tuxmobil.org/distribution_linux_laptop_redhat.html]
       RedHat,
     * [http://tuxmobil.org/distribution_linux_laptop_suse.html] SuSE,
     * [http://tuxmobil.org/distribution_linux_laptop_ubuntu.html]
       Ubuntu,
     * [http://tuxmobil.org/distribution_linux_laptop_slackware.html]
       SlackWare,
     * [http://tuxmobil.org/distribution_linux_laptop_mandrake.html]
       Mandrake (Mandriva),
     * [http://tuxmobil.org/mobile_minix.html] Minix and
     * [http://tuxmobil.org/mobile_bsd.html] different kinds of BSD
       flavors.

   Some resources are available in [http://tuxmobil.org/lang.html]
   different languages, e.g.

     * in German [http://tuxmobil.de/] TuxMobil(DE): Linux on Mobile
       Computers
     * in Russian [http://tuxmobil.ru/] TuxMobil(RU): Linux on Mobile
       Computers
     * and in Chinese [http://tuxmobil.cn/] TuxMobil(CN): Linux on
       Mobile Computers.
     ________________________________________________________________

2.2. Recommendation

   The [http://www.debian.org] 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 for
   laptops. All the binaries are tiny, because they are stripped. A
   mailing list debian-laptop including a searchable archive is
   provided. And Debian/GNU Linux is free.

   At the end of August 1999 the [http://tuxmobil.org/debian_linux.html]
   Debian Laptop Distribution - Proposal was issued. And some more
   laptop related packages and a Debian meta-package dedicated to
   laptops are on the way.

   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.
     ________________________________________________________________

Chapter 3. Installation

3.1. Related Documentation

    1. [http://tldp.org/HOWTO/CDROM-HOWTO/] CDROM-HOWTO
    2. [http://tldp.org/HOWTO/CD-Writing-HOWTO.html] CD-Writing-HOWTO
    3. [http://tldp.org/HOWTO/Config-HOWTO/] Config-HOWTO
    4. [http://tldp.org/HOWTO/Diskless-HOWTO.html] Diskless-HOWTO
    5. [http://tldp.org/HOWTO/Installation-HOWTO/] Installation-HOWTO
    6. [http://tldp.org/HOWTO/Pre-Installation-Checklist/index.html]
       Pre-Installation-Checklist-HOWTO
    7. [http://tldp.org/HOWTO/Update.html] Update-HOWTO
    8. [http://tldp.org/HOWTO/Hard-Disk-Upgrade/]
       Hard-Disk-Upgrade-HOWTO
    9. [http://www.tldp.org/LDP/gs/gs.html] Linux Installation and
       Getting Started
   10. [http://www.debian.org/releases/stable/i386/install] Installing
       Debian/GNU Linux For Intel x86
   11. [http://tldp.org/HOWTO/Install-From-ZIP.html]
       Install-From-Zip-HOWTO
   12. [http://tldp.org/HOWTO/ZIP-Drive.html] ZIP-Drive-HOWTO
     ________________________________________________________________

3.2. Prerequisites - BIOS, Boot Options, Partitioning

3.2.1. BIOS

   When starting a fresh installation you should try with standard BIOS
   options. If something doesn't work you should try to modify BIOS
   options. For example a well known trouble maker is the Plug-and-Play
   - PnP option (which comes with different names). See also the BIOS
   section in the hardware section below.
     ________________________________________________________________

3.2.2. Boot Options

   There are many boot options, which have effects on the behavior of
   laptops, e.g. apm=on|off and acpi=on|off: For details see
   [http://tldp.org/HOWTO/BootPrompt-HOWTO.html] BootPrompt-HOWTO and
   the Kernel documentation in
   /usr/src/linux/Documentation/kernel-parameters.txt .
     ________________________________________________________________

3.2.3. Partitioning

   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:

     * BIOS, some current BIOSes use a separate partition, for instance
       COMPAQ notebooks
     * suspend to disk, some laptops support this feature
     * swap space Linux
     * swap space Windows9x/NT
     * Linux base
     * Linux /home for personal data (please consider an encrypted
       partition for security reasons, for details about encryption see
       the according chapter below)
     * common data between Linux and Windows9x/NT
     * small (~32MB) boot partition for yaBoot (Linux/PPC boot loader),
       in HFS MacOS Standard format.

   Note this chapter isn't exhausting yet. Please read the appropriate
   HOWTOs first, e.g. the [http://tldp.org/HOWTO/Partition/]
   Partition-HOWTO .
     ________________________________________________________________

3.3. Linux Tools to Repartition a Hard Disk

3.3.1. GNU parted

   [http://www.gnu.org/software/parted] GNU parted allows you to create,
   destroy, resize and copy partitions. It currently supports ext2 and
   fat (fat16 and fat32) filesystems, Linux swap partitions, and MS-DOS
   disklabels, as well as Macintosh and PC98. For NTFS file systems see
   [http://mlf.linux.rulez.org/mlf/ezaz/ntfsresize.html] ntfsresize .
     ________________________________________________________________

3.3.2. ext2resize

   [http://ext2resize.sourceforge.net/] ext2resize is a program capable
   of resizing (shrinking and growing) ext2 and ext3 filesystems. Checks
   whether the new size the user gave is feasible (i.e. whether the
   filesystem isn't too occupied to shrink it), connected to the parted
   project.
     ________________________________________________________________

3.3.3. fixdisktable

   Something was recently published on the
   <linux-kernel_at_vger.rutgers.edu> mailing list about a partition
   recovery program. I have neither used , nor examined, nor read much
   about it (except for the HTML page.) It may be useful to some of you
   if you have problems with [http://www.igd.fhg.de/~aschaefe/fips/]
   FIPS , Ranish Partition Manager/Utility or Partition Magic destroying
   your partition information. You can find information on this
   partition-fixer named "fixdisktable" at
   [http://bmrc.berkeley.edu/people/chaffee/fat32.html] his pages. It is
   quite a ways down in that page. Or look for it
   [ftp://bmrc.berkeley.edu/pub/linux/rescue/] via ftp and locate the
   latest "fixdisktable" in that FTP directory. (Source and binary dist
   should be available.)
     ________________________________________________________________

3.3.4. Caveats

   Before repartitioning your hard disk take care about the disk layout.
   Especially look for hidden disk space or certain partitions used for
   suspend to disk or hibernation mode. Some laptops come with a
   partition which contains some BIOS programs (e.g. COMPAQ Armada
   1592DT). Search the manual carefully for tools like PHDISK.EXE,
   Suspend to Disk, Diagnostic TOOLS.

   [http://www.procyon.com/~pda/lphdisk/] Patrick D. Ashmore has
   recently released a Linux utility to prepare hibernation partitions
   for use with laptops and notebooks using Phoenix NoteBIOS. "This
   utility isn't needed to utilize the APM "Suspend-To-Disk" feature ...
   if you already have a valid hibernation partition, you should be able
   to use it from any operating system that can handle APM suspends.

   However, if one ever upgrades hard drive, memory, or repartitions
   their hard drive, they discover that they either have to do without
   the suspend-to-disk feature or boot to DOS and use the PHDISK.EXE
   program provided with their laptop or directly from Phoenix
   Technologies.

   Now, Linux users are free from this restriction. lphdisk is a Linux
   utility that properly prepares these partitions for use. Not only
   does this eliminate having to boot to DOS, but my utility does not
   exhibit some of the nastier bugs that its DOS counterpart has."

   Please see chapter DOS Tools to Repartition a Hard Disk, too.
     ________________________________________________________________

3.3.5. Multi Boot

   Please see the chapter chapter Chapter 15 Different Environments, for
   information about booting different operating systems from the same
   harddisk.
     ________________________________________________________________

3.4. Laptop Installation Methods

   

   There's More Than One Way To Do It - TMTOWTDI
     Larry Wall, Tom Christiansen & Randal L. Schwartz: Programming
   Perl, Sec. Ed. 1996 p. 10

   From the [http://tldp.org/HOWTO/Battery-Powered/]
   Battery-Powered-HOWTO : "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."

   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 laptop specific methods, which are
   necessary only in certain circumstances.

   Most current distributions support installation methods which are
   useful for laptops, including installation from CD-ROM/DVD, 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.
     ________________________________________________________________

3.4.1. From a Boot Floppy plus CD/DVD-ROM - The Traditional Way

   With modern laptops, the traditional Linux installation method (from
   one boot floppy, one support floppy and a package of CD-ROMs or one
   DVD) should be no problem, if there is a floppy drive and a CD-ROM
   drive available. Though with certain laptops you might get trouble,
   if you can not use the floppy drive and the CD/DVD-ROM drive
   simultaneously, or if the floppy drive is only available as a PCMCIA
   device, 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
   [http://tldp.org/HOWTO/VAIO+Linux.html] VAIO+Linux-HOWTO . Note:
   Check the BIOS for the CD boot option and make sure your Linux
   distribution comes on a bootable CD.

   Certain laptops will only boot zImage kernels. bzImage kernels won't
   work. This is a known problem with the IBM(TM) Thinkpad 600 and
   Toshiba Tecra series, for instance. Some distributions provide
   certain boot floppies for these machines or for machines with limited
   memory resources, [http://www.debian.org] Debian/GNU Linux for
   instance.
     ________________________________________________________________

3.4.2. From a CD/DVD-ROM - The Usual Way

   Newer laptops are able to boot a Linux distribution from a bootable
   CD/DVD-ROM. This allows installation without a floppy disk drive. If
   the CD/DVD drive is only available as a PCMCIA device, as with the
   SONY VAIO PCG-Z600TEK, see the chapter about installing from PCMCIA
   devices below.
     ________________________________________________________________

3.4.3. From a DOS or Windows Partition on the same Machine

   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 swappable floppy and CD-ROM
   components (if both are mutually exclusive) or if they are only
   available as PCMCIA devices. I have taken this method from
   [http://www.us.debian.org/releases/stable/installmanual] Installing
   Debian GNU/Linux 2.1 For Intel x86 - Chapter 5 Methods for Installing
   Debian :

    1. Get the following files from your nearest Debian FTP mirror and
       put them into a directory on your DOS partition: resc1440.bin
       drv1440.bin base2_1.tgz root.bin linux install.bat and
       loadlin.exe.
    2. Boot into DOS (not Windows) without any drivers being loaded. To
       do this, you have to press <F8> at exactly the right moment
       during boot.
    3. Execute install.bat from the directory where you have put the
       downloaded files.
    4. Reboot the system and install the rest of the distribution, you
       may now use all the advanced features such as PCMCIA, PPP and
       others.

   This should work for other distributions as well. Maybe you have to
   do some appropriate changes.
     ________________________________________________________________

3.4.4. From a Second Machine With a Micro Linux On a Floppy

3.4.4.1. Introduction

   Because of their small or nonexistent 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 micro
   Linux distributions out there that boot from one or two floppies and
   run off a ramdisk. See Appendix A Appendix A for a listing of
   distributions.

   I tried the following with muLinux ( available at
   [http://sunsite.auc.dk/mulinux] muLinux ) to clone my HP OmniBook 800
   to a COMPAQ Armada 1592DT. Thanks to Michele Andreoli, maintainer of
   muLinux for his support. Since muLinux doesn't support PCMCIA yet,
   you may use TomsRtBt instead. In turn TomsRtBt doesn't support PPP
   but provides slip. Note: Since version 7.0 muLinux provides an Add-On
   with PCMCIA support.

   I have described how to copy an already existing partition, but it
   might also be 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 muLinux .
     ________________________________________________________________

3.4.4.2. Prerequisites

   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
   appropriate method using a PCMCIA network card and a crossover
   network cable or a HUB, or a parallel "null modem" cable and PLIP. As
   the basic protocol I used PPP, but you may also use SLIP. For the
   data-transfer I used nc. Note: this is an abbrevation for netcat,
   some distributions use this as the program name. You may use ftp,
   tftp, rsh, ssh, dd, rcp, kermit, NFS, SMB and other programs instead.
   If you prefer encrypted connections there is
   [http://sourceforge.net/projects/cryptcat/] Cryptcat a lightweight
   version of netcat with integrated transport encryption capabilities.

   Basic requirements are:

    1. A good knowledge about using Linux. You have to know exactly what
       you are doing, if not you might end destroying former
       installations.
    2. A null modem serial cable.
     ________________________________________________________________

3.4.4.3. Source Machine

   At your source machine issue the following commands (attention: IP
   address, port number, partition and tty are just examples!):

    1. Edit /etc/ppp/options, it should contain only:

/dev/ttyS0
115200
passive

    2. With muLinux versions 3.x you may even use the convenient command
       setup -f ppp .
    3. Start PPP: pppd .
    4. Configure the PPP network device: ifconfig ppp0 192.168.0.1 .
    5. Add the default route: route add default gw 192.168.0.1 .
    6. Check the network connection: ping 192.168.0.2, though the
       destination machine isn't up yet.
    7. Start the transfer from another console, remember <LEFT-ALT><Fx>:
       cat /dev/hda2 | gzip -c | nc -l -p 5555 .
    8. After the transfer (there are no more harddisk writings) stop the
       ping: killall ping .
     ________________________________________________________________

3.4.4.4. Destination Machine

   At the destination machine issue:

    1. Edit /etc/ppp/options, it should contain only:

/dev/ttyS0
115200
passive

    2. With muLinux versions >= 3.x you may even use the convenient
       command setup -f ppp .
    3. Start PPP: pppd .
    4. Configure the PPP network device: ifconfig ppp0 192.168.0.2 .
    5. Add the default route: route add default gw 192.168.0.2 .
    6. Check the network connection, by pinging to the source machine:
       ping 192.168.0.1 .
    7. Change to another console and get the data from the server: nc
       192.168.0.1 5555 | gzip -dc >/dev/hda4 .
    8. 400 MB may take app. 6 hours, but your mileage may vary.
    9. Stop the transfer, when it is finished with: <CTL><C> . This can
       probably be avoided (but I didn't test it) by adding a timeout of
       3 seconds using the -w 3 parameter for nc at the destination
       machine nc -w 3 192.168.0.1 5555 | gzip -dc >/dev/hda4
   10. After the transfer is completed, stop the ping: killall ping .
     ________________________________________________________________

3.4.4.5. Configuration of the Destination Machine after the Transfer

    1. Edit /etc/fstab .
    2. Edit /etc/lilo.conf and /etc/lilo.msg and start lilo .
    3. Set the new root device to the kernel: rdev image root_device .
     ________________________________________________________________

3.4.4.6. Miscellaneous

    1. You may use bzip2 the same way as gzip (untested).
    2. Since rshd, sshd, ftpd daemons are not available with muLinux,
       you have to build your own file transfer mechanism with nc also
       known as netcat, as described above.
    3. I had to set up both PPP sides very quickly or the connection
       broke, I don't know why.
    4. Speed optimization has to be done. Maybe these PPP options will
       help: asyncmap 0 or local.
    5. I checked this only with a destination partition greater than the
       source partition. Please check dd instead of cat therefore.
       Or do the following (untested): At the destination machine cd
       into the root directory / and do nc -l -p 5555 | bzip2 -dc | tar
       xvf -. At the source machine cd into the root directory / and do
       tar cvf - . | bzip2 | nc -w 3 192.168.0.2 5555. This should
       shorten the time needed for the operation, too. Because only the
       allocated blocks need to be transfered.
    6. Don't mount the destination partition.
     ________________________________________________________________

3.4.5. From a Second (Desktop) Machine With a Hard Disk Adapter

   From Adam Sulmicki <adam_AT_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" IDE
   converters/adapters which allow you to connect this harddisk
   temporarily to a desktop 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 then you need to be
   sure that the bootloader (e.g. 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 will
   find additional information in the
   [http://tldp.org/HOWTO/Hard-Disk-Upgrade/index.html]
   Hard-Disk-Upgrade-HOWTO. You might copy an existing partition, but it
   is also possible to achieve a customized installation. Instead of a
   desktop PC you may use a second laptop, which may offer better
   features like a CD/DVD, to put the harddisk in.

   The most common adapter formats are 2.5" IDE adapters (Parallel ATA -
   PATA). As far as I know Serial ATA (SATA) harddisks are not available
   for laptops yet. But they could be attached to Serial ATA interfaces
   in a desktop PC even without an adapter (at least I guess, but I will
   verify this as soon as I have SATA equipment available). Some small
   subnotebooks feature 1.8" harddisks with ZIF connectors. These
   connectors are ATA compatible, and IDE adaptors for them are
   available also.
     ________________________________________________________________

3.4.6. From a PCMCIA Device

   Since I don't have a laptop which comes with a PCMCIA floppy drive
   (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
   harddisk is possible.

   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.

   The Sony Vaio (PCG-Z600) comes with an external USB-Floppy and an
   external CD-ROM (PCMCIA). You can boot from the CD-ROM, but
   afterwards Linux doesn't recognize the same drive anymore so that you
   can't install from it. You'll have to add the bootparameter linux
   ide2=0x180,0x360 (or 0x180,0x386?) at the LILO boot prompt if you
   want Linux to recognize a PCMCIA CDROM after the kernel has booted.
     ________________________________________________________________

3.4.7. From a Parallel Port ZIP Drive

   I couldn't check this method by myself, because I don't have such a
   device. Please check the appropriate
   [http://tldp.org/HOWTO/Install-From-ZIP.html] Install-From-Zip-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.

   From Jeremy Impson <jdimpson_AT_acm.org>: I installed Red Hat 6.1 on
   a Libretto 50CT. It only has a PCMCIA floppy drive. (Which BTW isn't
   well supported by the default PCMCIA floppy driver. I needed to
   download a patch from some Linux on Libretto web site.)

   Linux will boot off the PCMCIA floppy drive, however. It just can't
   go back to the floppy after loading the kernel. My Libretto (the
   50CT) only has one PCMCIA slot (later models had two slots, or I
   could have gotten the enhanced port replicator, which gave it another
   slot). So I couldn't boot off a floppy and then mount a remote
   filesystem.

   So I downloaded ZipSlack (Slackware designed for running from a ZIP
   disk) and used another PC to load it onto a ZIP disk. I attached the
   ZIP drive to the Libretto (via the parallel port on the regular port
   replicator that comes with it) and booted from the Slackware boot
   disk in the PCMCIA floppy drive. When booted, I removed the floppy
   drive and inserted and configured a network PCMCIA card. At this
   point the kernel is in memory and it is using the filesystem on the
   ZIP disk.

   I partitioned and formatted the Libretto's harddrive and then ftp'd
   Red Hat 6.1 installation source onto one of the new partitions (the
   partition that would become /home when everything gets done). This is
   the key: if you don't have enough disk space to have the installation
   files plus enough to actually install the OS on to, this method won't
   work.

   I shut down the ZipSlack kernel and rebooted it using a RedHat
   install disk in the floppy drive. I pointed it at the RH6.1
   installation media already on the harddrive and started the install.
     ________________________________________________________________

3.4.8. From a Parallel Port CD Drive (MicroSolutions BackPack)

   I had tried myself to install Linux using the MicroSolutions BackPack
   parallel CD-ROM drive. It is fully supported by Linux and I haven't
   had any major problem running it. Until version 2.0.36 it is
   supported by its own module (bpck) while in later versions it has
   been merged in the more general parallel port ide adaptors (the
   paride module that relays then of course on more specific low level
   drivers, which in the BackPack case is still called bpck).

   In RedHat 5.x based installations the bpck module is available
   already at installation stage so you'll just have to select the
   BackPack cdrom from the Other CD-ROMs at the installation stage and
   then give it some more options (but autoprobe should work just fine).

   In RedHat 6.x (which uses 2.2.x kernels and should then use paride),
   the BackPack support was dropped. So to install the distribution from
   such a device, you will have to customize the bootdisk (adding the
   necessary modules) and the installation will be done without any
   problem.

   Federico Pellegrin has customized a RedHat bootdisk that includes all
   the parallel CDROM devices that are supported by the distribution
   Linux kernel version (2.2.12) that should then work on all the
   supported parallel CDROM devices (even if he only tested it on his
   MicroSolutions BackPack since he doesn't have other similar
   hardware). You can find
   [http://web.archive.org/web/*/http://sole.infis.univ.trieste.it/~drze
   us/rh_pcd.html] some information on it and the bootdisk image.

   As from RedHat 6.2 a supplementary driver disk was included in the
   distribution to support the paride devices. You'll just have to
   create the driver disk (the image file is paride.img and can be found
   in the images/drivers directory) in the usual way and insert it when
   the installer will ask for it.

   Of course I suppose there isn't any problem in installing any other
   Linux distribution using such a device as long as you can add and
   configure the appropriate modules at the very beginning of the
   installation stage, but I haven't tested any.

   You should take care of the mode the parallel port uses (ECP, EPP,
   Output only, PS/2) since some of them may cause your laptop to
   suddenly freeze or cause serious data corruption. On the other side
   some modes make the communication dramatically slow (I found the best
   choice on my laptop the PS/2, but you should make some tests).

   This chapter is a courtesy of Federico Pellegrin. Please check also
   the [http://tldp.org/HOWTO/CDROM-HOWTO/] CDROM-HOWTO.
     ________________________________________________________________

3.4.9. From a Parallel Port Using a Second Machine

   PLIP Network Install

   I got this courtesy by Nathan Myers <ncm_AT_cantrip.org>: "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.

   Installation via the parallel port using the PLIP protocol has been
   demonstrated on, at least, Red Hat. All you need is a Laplink
   parallel cable, cheap at any computer store. See the
   [http://tldp.org/HOWTO/PLIP.html] PLIP-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 export your CD file system on NFS, or
   mount it where the ftp or web daemon can find it, as needed for the
   installation."

   The [http://www.tldp.org/HOWTO/PLIP-Install-HOWTO.html] PLIP Install
   HOWTO by Gilles Lamiral describes how to install a Linux distribution
   on a computer without ethernet card, nor CD drive, but just a local
   floppy drive and a remote NFS server attached by a nullmodem parallel
   cable.
     ________________________________________________________________

3.4.10. From a USB Storage Device (Stick, CD, DVD, Floppy)

   If booting from an USB device is supported from the BIOS, it is
   possible to install Linux from this drive. Besides some old laptops,
   almost all laptops equipped with USB ports support this feature.

   First you have to configure the BIOS to boot from an USB device.
   Sometimes it is possible to use a certain key combination (e.g.
   <ESC>) during the boot process to select the boot device.

   Second you have to install Linux on the boot medium (let's say an
   USB-Stick) and make it bootable. There are some special Linux
   distributions available, which are dedicated for such purposes, e.g.:

   [http://featherlinux.berlios.de/about.htm] Feather Linux is a Linux
   distribution which runs completely off a CD or a USB pendrive and
   takes up under 64Mb of space. It is a Knoppix remastered (based on
   Debian/GNU Linux), and tries to include software which most people
   would use every day on their desktop. See these
   [http://featherlinux.berlios.de/usb-instructions.htm] instructions
   about installing Feather Linux on an USB drive.

   [http://www003.upp.so-net.ne.jp/tshiono/partboot-usb/] Partboot is
   dedictated to USB floppy drives and tailored for Linux laptop and
   notebook installations (you may find tools to resize your partitions
   as well as PCMCIA support and more).

   [http://www.damnsmalllinux.org/] Damn Small Linux (DSL) is a
   business-card size (50MB) Live CD Linux distribution. Despite its
   minuscule size it strives to have a functional and easy to use
   desktop.

   [http://www.puppyos.com/] Puppy Linux installs anywhere flash drive,
   live-CD, zip disk, hard drive, network emulator. All of the
   applications are in an approx 50-70MB distribution. So, it all runs
   in a ramdisk, and it all installs in a 128M usb flash card with over
   half left over for your data.
     ________________________________________________________________

3.4.11. Installing via Network Interface

   On most modern laptops and notebooks with integrated network card, a
   network installation via the PXE protocol is easy to achieve. This
   comes in handy especially if there is no CD or DVD drive available.
     ________________________________________________________________

3.4.11.1. How to Prepare the Source Machine

   For my installation I have used a Knoppix CD in the source machine.
   Just enable the Terminal Server
   (KNOPPIX->Server-Dienste->Terminal-Server KNOPPIX-Services-Start->
   KNOPPIX Terminal Server) For almost any laptop model the default
   network drivers should work. Disable secure options, otherwise you
   will not be able to become the root user on the target machine.
   Besides using Knoppix, there are numerous ways to prepare the source
   machine for PXE. I haven't checked the EtherBoot protocol yet, but
   this might work too.
     ________________________________________________________________

3.4.11.2. How to Prepare the Target Machine

   Look up the BIOS for something like a NetBoot Option and set it on.
   Boot the machine and choose booting from the network device. This is
   usually achieved by pressing a certain key during boot up or by
   pre-selecting the network interface as the boot device in the BIOS.
   Now Knoppix should come up. Open a shell and do an su to become root.
   To achieve a hard disk installation do either knx-hdinstall for
   Knoppix <=3.3 or knoppix-installer for Knoppix >=3.3.
     ________________________________________________________________

3.4.12. Installing via VNC

   You might ask why do a laptop installation via the VNC protocol?
   Indeed I know only of one reason to do so. Imagine you want to use a
   laptop with a broken keyboard you may use the keyboard of the remote
   machine to achieve the installation. Though you have to do a few key
   stroke to initiate the VNC installation! You have to prepare the
   source machine accordingly (instructions how to do so will follow
   later). For recent SuSE versions the distribution is already
   prepared, see the handbook for details.
     ________________________________________________________________

3.4.13. Installing Linux on Small Machines

   If you have less than 8MB memory and want to install via NFS you may
   get the message "fork: out of memory". To handle this problem, use
   fdisk to make a swap partition (fdisk 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 <ALT><F2>) and
   issue swapon /dev/xxx (xxx = swap partition ). Thanks to Thomas
   Schmaltz.

   Bruce Richardson has written the
   [http://tldp.org/HOWTO/4mb-Laptops.html] 4MB-Laptop-HOWTO on
   installing a modern Linux distribution (specifically Slackware 7.0)
   onto laptops with 4MB RAM and <= 200MB hard disks. Another HOWTO is
   [http://www.xs4all.nl/~lennartb/rescuedisk/index.html] Getting Linux
   into Small Machines - HOWTO by L.C. Benschop.
     ________________________________________________________________

3.4.14. Installing Linux on Apple Macintosh PowerBooks and iBooks

   Macintosh PowerBooks these days come with a CD/DVD drive but not a
   floppy drive, but the Linux distributions for PPC support booting and
   installation off of a CD without any need for a floppy.

   Sometimes, when you boot the installer on the PowerBooks, the screen
   is black; this is easily fixed by tapping the brightness key on the
   keyboard (somehow, the screen brightness gets reset to zero).

   If you have a very recent PowerBook, it may not be supported by the
   kernel on the installation CD. You can get around this by booting off
   of a recent kernel downloaded onto your hard drive and using a
   ramdisk on the CD or hard drive, while still loading the installation
   packages from the CD (the default). (See the instructions available
   online for yaBoot or BootX, the Linux/PPC boot loaders; yaBoot is
   currently better-supported on the newest machines.)

   They can also boot/install from the Macintosh (HFS) partition on the
   internal hard disk.

   This part is a courtesy of Steven G. Johnson.

   For Linux installation reports see [http://tuxmobil.org/apple.html]
   Linux Laptop and Notebook Survey: Apple.
     ________________________________________________________________

3.4.15. Mass Installation

3.4.15.1. 2.5" to 3.5" IDE Adapter

   If you have a 2,5" to 3,5" IDE drive adapter you can install one of
   the laptops, and with a desktop computer clone this harddisk to the
   disks of the other 99 laptops. You can use the DOS utility GHOST
   (works pretty with ext2) or with tar if the desktop works in linux.
   You only need an additional boot disk for the reinstall of the lilo
   in each laptop and change the hostname and IP address. These adapter
   are usually quite cheap (app . ten dollar, but difficult to get) .
     ________________________________________________________________

3.4.15.2. SystemImager

   [http://systemimager.sourceforge.net] VA SystemImager is software
   that makes the installation of Linux to masses of similar machines
   relatively easy. It also makes software distribution, configuration,
   and operating system updates easy. You can even update from one Linux
   release version to another! VA SystemImager can also be used for
   content management on web servers. It is most useful in environments
   where you have large numbers of identical machines. Some typical
   environments include: Internet server farms, high performance
   clusters, computer labs, or corporate desktop environments where all
   workstations have the same basic hardware configuration.
     ________________________________________________________________

3.4.15.3. Debian/GNU Linux

   You might want to take a look at
   [http://www.informatik.uni-koeln.de/fai] FAI - Fully Automatic
   Installation.
     ________________________________________________________________

3.4.15.4. SuSE

   The package ALICE - Automatic Linux Installation and Configuration
   Environment, offers CVS-based configuration files and configuration
   templates.
     ________________________________________________________________

3.4.15.5. Replicator

   Replicator is a set of scripts to automate the duplication of a
   Debian GNU/Linux installation from one computer to another.
   Replicator makes an effort to take into account differences in
   hardware (like HD size, video card) and in software configuration
   (such as partitioning). After the initial configuration, the scripts
   will create a bootdisk that allows you to completely (re)install a
   Debian box by booting from the floppy and answering a yes/no
   question.
     ________________________________________________________________

3.4.15.6. partimage

   [http://partimage.sourceforge.net/] Partition Image is a Linux/UNIX
   utility which saves partitions in the ext2fs (the linux standard),
   ReiserFS (a new journalized and powerful file system) or FAT16/32
   (MS-DOS and MS-Windows file systems) file system format to an image
   file. The image file can be compressed in the GZIP/BZIP2 formats to
   save disk space, and splitted into multiple files to be copied on
   floppies (ZIP for example).
     ________________________________________________________________

3.5. Common Problems During Installation

3.5.1. Display Problems (Missing Lines, Thick Borders)

   A common problem during Linux installation (or afterwards) on laptops
   are missing lines at the bottom of the text console display, so the
   last command lines or the login prompt are not shown on the screen.
   Depending on the problem it might help:

     * Either using FrameBuffer, e.g. using a Kernel with framebuffer
       support and a boot option like vga=791, for details see the
       [http://tldp.org/HOWTO/Framebuffer-HOWTO.html] FrameBuffer-HOWTO.
     * Or disabling FrameBuffer, e.g. using a boot option like
       vga=normal or another resolution Also, you could try passing
       video=vga16:off on the installer boot prompt.
     * As a workaround often it is possible to switch to a second
       console e.g. <ALT>+<F2> , because this effect is often only
       related to the first console.
     * Check if there are VGA and video boot options configured in the
       bootloader (e.g. grub, lilo). Try to disable them at least
       partly, look for options like ywrap, etc.
     * Check the BIOS for display settings, often (older) Toshiba
       laptops behave like this.
     * Issue the command resize to get the correct screen size into the
       system.
     * If none of the above helps, you may try to run a start-up-script,
       which has to run at the end of the boot process. The script has
       to contain the clear command and/or the reset.

II. Handheld Devices - Personal Digital Assistants (PDAs)

   Table of Contents
   4. Palmtops, Personal Digital Assistants - PDAs, Handheld PCs - HPCs

        4.1. Resources

   5. History of Linux on PDAs

        5.1. Itsy

   6. Linux PDAs

        6.1. AgendaComputing: Agenda VR3
        6.2. Samsung: YOPY
        6.3. SHARP SL-5000/5500/C700-860/C3x00/6000 aka Zaurus

   7. Non-Linux PDAs - Ports and Tools

        7.1. HELIO
        7.2. iPAQ
        7.3. Newton Message Pad
        7.4. PALM-Pilot
        7.5. HandSpring VISOR
        7.6. Psion 5

   8. Connectivity

        8.1. From a Linux Box to a non Linux PDA
     ________________________________________________________________

Chapter 4. Palmtops, Personal Digital Assistants - PDAs, Handheld PCs -
HPCs

   

   Linux PDAs, because using your palm isn't as good as the real thing.
     Motto of [http://zaurus.loveslinux.com] ZaurusLovesLinux
     ________________________________________________________________

4.1. Resources

    1. Highly recommended is the page by Russell King
       [http://www.arm.uk.linux.org/~rmk/] ARM Linux about PDAs with ARM
       CPU and with links to other Linux related PDA sites.
    2. For more information on Virtual Network Computing, see
       [http://www.realvnc.com/] VNC .
    3. PDAs and infrared remote control, see
       [http://hp.vector.co.jp/authors/VA005810/remocon/remocone.htm]
       Hiromu Okada .
    4. There is also the [http://www.cdpubs.com/hhsys/archives.html]
       Handheld Systems(TM) On-line Archives and a search engine about
       palmtop related topics [http://www.palmtop.net/] Palmtop.Net/ .
    5. I have setup a page about [http://tuxmobil.org/pda_linux.html]
       Linux with PDAs and Handheld PCs , too.
    6. These newsgroups for PDA application developers are available:
       codewarrior.embedded; codewarrior.games; codewarrior.linux;
       codewarrior.mac; codewarrior.palm; codewarrior.unix;
       codewarrior.windows;
     ________________________________________________________________

Chapter 5. History of Linux on PDAs

   This chapter is not complete yet, there should be more information on
   286 based PDAs which were Linux capable.
     ________________________________________________________________

5.1. Itsy

   The Itsy prototype offered considerably more computing power and
   memory than other PDAs of its time, enabling demanding applications
   such as speech recognition. It was designed as an open platform to
   facilitate innovative research projects. The base Itsy hardware
   provided a flexible interface for adding a custom daughtercard, and
   Itsy software has been based on the Linux OS and standard GNU tools.
     ________________________________________________________________

5.1.1. Resources

    1. COMPAQ/Digital is the manufacturer of the
       [http://research.compaq.com/wrl/projects/itsy/] Itsy.
     ________________________________________________________________

Chapter 6. Linux PDAs

   The most known Linux PDAs in these days are the
   [http://tuxmobil.org/pda_survey_agenda.html] Agenda VR3 by
   AgendaComputing (out-of-production), the
   [http://tuxmobil.org/pda_survey_compaq.html] iPAQ by HP/COMPAQ, the
   [http://tuxmobil.org/pda_survey_sharp.html] Zaurus series by SHARP,
   and the [http://tuxmobil.org/pda_survey_samsung.html] Yopy by Samsung
   (out-of-production). Except the iPAQ all of them are true Linux PDAs,
   they are pre-equipped with Linux by their manufacturers.

   There are different free distributions for Linux PDAs available,
   e.g.: [http://www.trolltech.com/] QT Embedded (pre-installed on the
   SHARP Zaurus), [http://opie.handhelds.org/] Opie,
   [http://familiar.handhelds.org/] Familiar. The
   [http://gpe.handhelds.org/] Gnome Palmtop Environment - GPE aims to
   provide a Free Software GUI environment for palmtop/handheld
   computers running the GNU/Linux operating system. GPE uses the X
   Window System, and the GTK+ widget toolkit.

   Most of the software for the newer PDAs can be obtained as
   pre-compiled IPK packages. You may search the
   [http://www.killefiz.de/zaurus/] Zaurus Software Index - ZSI or
   [http://ipkgfind.handhelds.org/] ipkgfind for the package you need.
   To install these packages you may choose different methods. One
   method is to install directly via a HTTP connection called feed. For
   an example see the [http://tuxmobil.org/feed.html] TuxMobil IPK feed.

   Besides these well-known Linux PDAs I will also try to point to ports
   for other PDAs and to tools to achieve connectivity to non-Linux
   PDAs, cell phones and desktop computers.
     ________________________________________________________________

6.1. AgendaComputing: Agenda VR3

6.1.1. Resources

    1. The manufacturer of the first dedicated Linux PDA the Agenda VR3
       is AgendaComputing (out-of-business).
     ________________________________________________________________

6.2. Samsung: YOPY

6.2.1. Resources

    1. [http://www.samsung.com/] Samsung is the manufacturer of the
       Yopy.
    2. The German
       [http://www.linux-magazin.de/News/index_html?newsid=519]
       Linux-Magazin about the YOPY.

   Figure 6-1. Screenshot of the YOPY PDA

   [yopy.png]
     ________________________________________________________________

6.3. SHARP SL-5000/5500/C700-860/C3x00/6000 aka Zaurus

   The SHARP Zaurus SL-5000/5500 wasn't the first Linux PDA, but the one
   with the greatest success in the Linux community and beyond.

   Figure 6-2. Screenshot of the SHARP Zaurus SL-5500 PDA.

   [zaurus1.png]
     ________________________________________________________________

6.3.1. The SHARP System

   You may find the official site for information about Linux on the
   Zaurus at [http://developer.ezaurus.com/] SHARP Japan (in Japanese).
   You can get the official kernel, either complete or just the patches
   for the Zaurus there. You can also get the official root-filesystem,
   that is the initrd, but without the [http://qpe.sourceforge.net/]
   QTopia environment. Check the documentation at SHARP how to create
   your zImage, bootflag and initrd for flashing the ROM of the Zaurus
   with your custom setup. Or go to your country-specific division of
   SHARP to get a complete ROM in one file called "ospack", which is
   [http://www.zaurus.de/] Zaurus.DE for Germany or
   [http://www.myzaurus.com/] MyZaurus for the US versions. The kernel
   is rather old: 2.4.6 with 2.4.6-rmk2-patches and some more from
   [http://www.lineo.com/] Lineo. The rmk-patches are from
   [http://www.arm.uk.linux.org/] Linux ARM Community. The root
   filesystem from SHARP is known for its weird structure with symbolic
   links all over the place. The custom compile worked. Remember to hit
   the "/"-key when the Zaurus displays "Wait... ", so you can choose to
   start a login instead of QTopia, which is not available then. Unless
   you downloaded QTopia, (cross-)compiled it and installed it into the
   root filesystem. BTW, you can create a new user with "adduser", a
   command provided by BusyBox. [http://www.busybox.org/] BusyBox ,
   provides nearly all UNIX-commands available on the official system.
     ________________________________________________________________

6.3.2. The Community Systems

   Currently I know of two running systems: OpenZaurus and Debian
   (unofficial).
     ________________________________________________________________

6.3.2.1. OpenZaurus

   [http://openzaurus.org/] OpenZaurus tries to create the same
   environment as the one from SHARP, but based upon free software only.
   At the moment, it still uses the old kernel from Sharp, but slightly
   modified in regards of usage of the FLASH-ROM as RAM and division of
   RAM between RAMDISK and RAM. Unfortunately, the driver for the
   SD-controller is binary-only and thus non-free. But also SHARP itself
   tries to convince the vendor, SDCA, to provide the sources for the
   public. Moreover, [http://openzaurus.org/] OpenZaurus created a sane
   root-filesystem we all know from our regular Linux systems. It also
   replaces QTopia by [http://opie.handhelds.org] Open Palmtop
   Integrated Environment - OPIE , which is a fork from QTopia with no
   relations to Trolltech anymore. All applications from QTopia should
   run on OPIE, but not quite: The Doom-like game called Zraycast does
   not run on OPIE, but does on QTopia (more or less). You can download
   a ready zimage, bootflag and initrd directly or checkout the sources
   from CVS. The downloaded images worked fine.
     ________________________________________________________________

6.3.2.2. Debian

   The current, unofficial version of
   [http://people.debian.org/~mdz/zaurus/] Debian Zaurus really tries to
   be a regular Debian system with apt and X. A simple version of dpkg
   is already shipped with [http://www.busybox.org/] BusyBox , which
   makes it a little bit easier. The maintainer has therefore stripped
   down some more tools to fit them into the Flash-ROM. It uses the
   kernel provided by [http://openzaurus.org/] OpenZaurus and thus the
   one from Sharp. There are some issues with the RAMdisk, calibration
   of the stylus and sleep / power-off/-on. As soon as it is in a more
   stable state, it will join forces with
   [http://emdebian.sourceforge.net/] EmDebian and the sources will
   become available (probably already furnished upon request). The
   downloaded images still have to be tweaked. :) All systems, including
   the sources from SHARP, are set to use the US keyboard layout (or the
   German keyboard). It seems that the keymap available is fixed in the
   kernel and there are no user-space tools installed per default to
   change this. Perhaps I will give the package "console-tools" on
   Debian a try.
     ________________________________________________________________

6.3.2.3. PocketWorkStation

   Here are some of the features of [http://www.pocketworkstation.net/]
   PocketWorkStation a Debian/GNU Linux distribution for PDAs:

     * Full Debian GNU/Linux operating environment, with easy access to
       the many GB of available software. Want the Konqueror web browser
       and have 50MB free space on your SD card? Run apt-get install
       konqueror, go eat lunch and come back to find it ready to run. No
       porting needed.
     * Includes X11 able to run most Linux applications - it supports
       virtual screens larger than the physical screen, realtime
       anti-aliased scaling and rotation, 3-mouse-button emulation and a
       full keyboard (useful i.e. if you need to send Ctrl-Alt-Del to an
       application).
     * VNC client fbvnc (same features as X11 above) - remote administer
       your NT box from your Zaurus.
     * Runs completely out of a single directory (a 256MB SD card is
       ideal), no re-flashing or modification of the existing operating
       system is required.
     * Switch between QTopia and X11 whenever you like without rebooting
       or needing to stop any of your X11 applications.
     ________________________________________________________________

6.3.3. Synchronization with your Linux PC

   The QTopia-Desktop is available as a download from
   [http://www.trolltech.com/developer/download/qtopia.html] Trolltech
   for free (as in beer): There is a [http://docs.zaurus.com] FAQ, which
   explains the necessary steps for setup (Ethernet-over-USB). It is not
   quite up-to-date, because SHARP has tightened the security with their
   current ROM-release, so you have to give the IP-address 192.168.129.1
   to your usb0 network device. You have to download and compile a patch
   for your kernel to use the driver usbdnet (see aforementioned
   website). Afterwards, a connection between the QTopia-Desktop and the
   Zaurus is possible. I had a lot of problems with the usb network
   layer on my system and could not sync properly. A switch from the
   driver uhci to usb-uhci for my host dit it. Just recently I had to
   reboot my notebook and the Zaurus due to a hiccup in the
   corresponding usb-net drivers. The network via an ethernet-card in
   the CF-slot is much more reliable than the connection via usb and you
   can still use the keyboard. The disadvantage is, that you cannot have
   a storage device in your CF-slot while you are on-line.
     ________________________________________________________________

6.3.4. External Serial Keyboard

   So far I was not able to get it going. There is a site which offers a
   [http://www.doc.ic.ac.uk/~jpc1/linux/ipaq/serial.html] serial
   keyboard driver and a patch for the iPAQ . Since the iPAQ and the
   Zaurus are based on the same CPU architecture, StrongArm, I hope that
   the driver provided there will also work on the Zaurus. You also need
   a user-space tool called inputattach, which you can also get from
   there (source or binary for ARM). I got a Happy Hacking Keyboard Lite
   with a PS/2 connector. An adaptor translates to serial which itself
   is plugged into to the Collie serial <-> serial connector. I do not
   know if this chain is even possible to work. The provided patch
   applied with only one failing hunk which made a trivial change in the
   sources (include/linux/serio.h) necessary; check the output. After
   having re-configured the SHARP kernel config and having compiled the
   modules, I transferred them to the Zaurus. The modules marked and
   created are: newtonkbd.o, serio.o, serport.o and perhaps stowaway.o
   from drivers/char/joystick/ and input.o and keybdev.o from
   drivers/input/. When you start inputattach, you have to use the line
   inputattach --newtonkbd /dev/ttyS0, _not_ ttySA0 as stated on the
   website. For some strange reason, the Collie serial driver does not
   comply to the official StrongARM documentation of the kernel, which
   states that the serial ports are accessible via /dev/ttySAx. And
   because the serial_collie.o is already compiled into the Sharp
   kernel, you do not have to load the generic module serial.o. Well, I
   also tried the serial_collie.o as a module, while it was still
   compiled into the kernel. There were no complaints when loading it,
   but the system froze unpredictably, so I had to do a soft-reset quite
   often. Why can I load a module whose code is already in the kernel, I
   wonder... Anyway, it does not work. :( I tried inputattach in the
   --dump mode (you have to undefine a variable in the source and
   recompile) and it seems that there is nothing happening between the
   serial port and the keyboard. The call for select (man 2 select)
   fails due to a timeout.
     ________________________________________________________________

6.3.5. Cross-Compiling

6.3.5.1. Kernel

   In order to build the kernel, initrd and applications you need a
   cross-compiling environment, GCC is preferred.
   [http://emdebian.sourceforge.net/] EmDebian offers .deb packages for
   Debian GNU/Linux i386. Note: you have to look up the download links
   in the old site (a link is provided on the new site), because they
   are missing on the new site (though the download page exists). There
   are some dependancy problems with the g++ and libstdc++-dev packages
   which can be "resolved" with a --force-depends. The package
   libstdc++-dev has some problems finding an info-file: just create a
   symlink from /usr/share/info/iostream.ifo.gz to
   /usr/share/info/iostream-295.info.gz. You should get some pointers
   for other systems at the [http://www.arm.uk.linux.org/] Linux ARM
   Community. Once installed, you can grab a standard kernel, apply the
   current ARM-patches and modify the top Makefile to target the
   arm-architecture. I did not try that so far.
     ________________________________________________________________

6.3.5.2. Applications

   Check the [http://qpe.sourceforge.net/sharp.html] QTopia pages for
   more info and the [http://qpe.sourceforge.net/development.html]
   QTopia - Development pages.
     ________________________________________________________________

6.3.5.3. Tool Chains

   Werner Schulte explains how to build a OPIE development Live CD. The
   CD contains an ISO image with the tools and methods described in his
   [http://www.uv-ac.de/opiedev] Opie Development HOWTO - LiveCD
   chapter. The CD allows the user to crosscompile OPIE programs without
   having a cross-compiler installed on his linux-box (also i386
   embedded available).

   Instructions for building a
   [http://www.lucid-cake.net/osx_arm/index_en.html] cross-compiling GCC
   for the Zaurus under Mac OS X.

   A [http://www.pellicosystems.com/demolinux/zdemolinux/index.html]
   DemoLinux distribution to show the Trolltech Qtopia development
   environment for the SHARP Zaurus Personal Mobility Tool or any ARM
   based device running the Trolltech QPE system provided by Pellico
   Systems.

   [http://kopsisengineering.com/kopsis/SharpZaurusSdkDsl] Zaurus
   Development with Damn Small Linux offers a cross-development
   environment to build binaries for the ARM processor used in the SHARP
   Zaurus Linux PDAs. You may run it either inside the QEMU virtual
   machine or from a Live CD.

   [http://free-electrons.com/community/tools/kernelkit/en] KernelKit is
   a Knoppix derivative dedicated to developers of Linux device drivers
   and Free Software embedded systems. In particular, it includes uClibc
   cross-compiling toolchains for several embedded architectures
   (currently ARM, i386, MIPS, mipsel, PPC, and m68k) and emulators
   (currently qemu and SkyEye). It can be used for demonstration or
   training purposes, or by developers who cannot install GNU/Linux on
   their workstations.
     ________________________________________________________________

6.3.6. Caveats

   SHARP introduced a proprietary serial interface at the bottom of the
   Zaurus SL-5x00 series. You can buy an adaptor to a regular serial
   interface from them, but unfortunately, the plug is very thick and
   you cannot open the slide for the keyboard anymore. Hopefully, you
   can still plug an external keyboard into this port! You can at least
   plug the power cord into the adaptor so you do not have to run on
   battery. There are third-party adaptors available, which overcome
   this caveat.

   There is no speaker for the soundchip of the SL-5500. You have to use
   the socket for the headphones to hear OggVorbis and the alikes. The
   buzzer currently supports only 14 different sounds defined in
   <kernel-source>/include/asm-arm/sharp_char.h , check for
   SHARP_BUZ_ALL_SOUNDS.
     ________________________________________________________________

6.3.7. Resources

6.3.7.1. Manufacturer: SHARP

    1. [http://docs.zaurus.com] ZaurusZone.
    2. [http://more.sbc.co.jp/slj/linux.asp] Sharp Linux/Java PDA Linux
       Information
    3. [http://www.zaurus.com/dev/] Sharp Zaurus Developer's Program
     ________________________________________________________________

6.3.7.2. Kernel and Community Distributions

    1. [http://www.arm.uk.linux.org/] ARM Linux
    2. [http://emdebian.sourceforge.net/] Emdebian
    3. [http://openzaurus.org/] OpenZaurus Project
    4. [http://www.doc.ic.ac.uk/~jpc1/linux/ipaq/serial.html] Linux
       serial keyboards
     ________________________________________________________________

6.3.7.3. FAQs, Forums, etc.

    1. [http://zaurus.help4free.de/html/modules/news/] Sharp Zaurus
       Hilfe und Support Community (German)
    2. [http://www.zaurususergroup.com/modules.php?op=modload&name=FAQ&f
       ile=index] Unofficial Sharp Zaurus SL-5500 FAQ
    3. [http://docs.zaurus.com] Sharp Zaurus - Developer Site
    4. [http://www.handhelds.org] handhelds.org - mobile Devices
     ________________________________________________________________

6.3.7.4. Applications, Desktop Environments

    1. [http://opie.handhelds.org] Open Palmtop Integrated Environment
       (OPIE)
    2. [http://gpe.handhelds.org] GPE Palmtop Environment, GTK-based
       alternative to OPIE
    3. [http://qpe.sourceforge.net] QTopia
    4. [http://www.trolltech.com/developer/download/qtopia.html]
       QTopia-Desktop
    5. The [http://www.uv-ac.de/ipaqhelp] iPAQ and Zaurus Development
       using QPE handbook by Werner Schulte describes how to install the
       Familiar Linux and Qtopia / OPIE on the Compaq iPAQ Handheld (and
       SHARP Zaurus) and how to develop applications for the iPAQ/Zaurus
       using the Familiar distribution and QPE desktop from Trolltech or
       OPIE (the free clone).
     ________________________________________________________________

6.3.7.5. Software Indexes

    1. [http://www.killefiz.de/zaurus/] Zaurus Software Index - ZSI
    2. [http://ipkgfind.handhelds.org] IPKGfind Software Index
     ________________________________________________________________

6.3.8. Conversion from Palm Pilot to Zaurus

   See my [http://tuxmobil.org/go2z.html] survey of applications and
   conversion tools between a conventional PDA operating system (only
   PalmOS yet, WinCE/Pocket PC and Epoc will follow hopefully) and a
   Linux PDA.
     ________________________________________________________________

Chapter 7. Non-Linux PDAs - Ports and Tools

7.1. HELIO

   Currently the HELIO is only available with the proprietary VT
   operating system. See [http://www.fms-computer.com] FMS for
   information about the Linux port.
     ________________________________________________________________

7.1.1. Resources

    1. The manufacturer of the HELIO is [http://www.vtech.com] VTech .
    2. [http://vhl-tools.sourceforge.net/] vhl-tools (dead link) , a
       SourceForge project, works on utilities, patches, documentation
       and integration of Open Source software for Linux on the VTech
       Helio PDA.
    3. PocketLinux has a port under the GPL, as well as Debian and
       Redhat packages. But the URL http://www.pocketlinux.com/ seems no
       longer available.
    4. [http://www.kernelconcepts.de/helio/] KernelConcepts
    5. [http://www.linux-mips.org/linux-vr/tools.html] VR Org cross
       compiler
    6. [http://www.linux-community.de/News/] Linux-Magazin

   Figure 7-1. Screenshot of the HELIO PDA.

   [home_helio_03.png]
     ________________________________________________________________

7.2. iPAQ

   Currently the iPAQ PDAs by COMPAQ/HP are distributed only with a
   WinCE operating system.
     ________________________________________________________________

7.2.1. Resources

    1. The manufacturer of the iPAQ PDAs is
       [http://www.compaq.com/products/handhelds/pocketpc/index.html]
       COMPAQ/HP.

   Figure 7-2. Screenshot of the iPAQ PDA.

   [h3650.png]
     ________________________________________________________________

7.2.2. Braille Terminal

   [http://pages.infinit.net/sdoyon/] Stephane Doyon wrote to the iPAQ
   mailing list: "We (Nicolas Pitre and myself) have successfully ported
   BRLTTY to the iPaq and tested the setup by interfacing with a
   BrailleLite 18 through the serial port. BRLTTY is a program that
   allows access to the Linux text-mode console using various brands of
   Braille displays. The BrailleLite is a small electronic Braille
   notetaker device which can act as a small refreshable Braille
   display. It also has keys so I can not only read but also type. So
   there's just the iPaq and the BrailleLite device (with a horrible
   cable in between) and that's all I need to fully use the console on
   the iPaq (in text-mode). A pretty powerful setup, yet very small. At
   the Ottawa Linux Symposium in July, using a network card in my iPaq
   and borrowing the internet connection they supplied, I was actually
   able to logon to the net and go read my E-mail, using ssh, pine and
   lynx! It should be possible to duplicate this setup with other
   Braille display models or other PDAs."
     ________________________________________________________________

7.3. Newton Message Pad

   The Newton Message Pad was one of the first PDAs.
     ________________________________________________________________

7.3.1. Resources

    1. Apple is the manufacturer of the [http://www.apple.com] Newton
       Message Pad.
    2. [http://privat.swol.de/ReinholdSchoeb/Newton/] Newton and Linux
       Mini-HOWTO .
     ________________________________________________________________

7.4. PALM-Pilot

7.4.1. Resources

    1. 3COM is the manufacturer of the [http://www.3com.com/]
       PALM-Pilot.
    2. [http://tldp.org/HOWTO/PalmOS-HOWTO/] PalmOS-HOWTO (former
       Pilot-HOWTO) by David H. Silber.
    3. [http://www.pilot-link.org/] 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.
    4. [http://www.uclinux.org/] ucLinux
    5. [http://www.icsi.berkeley.edu/~minenko/PalmVNC] 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.
    6. [http://tuxmobil.org/pda_linux_palm.html] Survey of Linux and BSD
       Applications for the Palm

   Figure 7-3. Screenshot of the PALM-Pilot emulator POSE.

   [pose.png]
     ________________________________________________________________

7.5. HandSpring VISOR

   The HandSpring VISOR is a clone of the PALM-Pilot PDA.
     ________________________________________________________________

7.5.1. USB

   From /usr/src/linux/Documentation/usb/usb-serial.txt:

   HandSpring Visor USB docking station. There is a
   [http://usbvisor.sourceforge.net/] webpage and mailing lists.

   Handspring VISOR Platinum serial port is tunneld through USB, so load
   usbserial.o with modul parameters vendor=0x82d product=0x100
   (usbmgr.conf) USB is made active by starting the HotSync
   synchronisation per: pilot-xfer /dev/ttyUSB0 -b -/visor/
     ________________________________________________________________

7.6. Psion 5

   Currently I have information about a port for the Psion 5 and nothing
   about the Psion 3 series.
     ________________________________________________________________

7.6.1. Resources

    1. [http://tldp.org/HOWTO/Psion-HOWTO.html] Psion-HOWTO.
    2. [http://plptools.sourceforge.net/] PLPtools is a set of libraries
       and utilities for enabling Unix (mainly Linux) systems to
       communicate with a Psion palmtop over a serial line. On Linux, a
       connection over IrDA, using the IrCOMM feature is also possible.
       A shared library encapsulates the highlevel protocol
       (PsionLinkProtocol) and thus makes it easy to write applications
       without extensive knowledge of the protocol itself. A daemon
       (ncpd) handles the serial connection and provides it's services
       on a local TCP socket.
    3. The [http://linux-7110.sourceforge.net/] OpenPsion (formerly
       PsiLinux/Linux7k) is a project to port the unix-like operating
       system Linux to a small group of palmtops.
     ________________________________________________________________

Chapter 8. Connectivity

8.1. From a Linux Box to a non Linux PDA

   [http://www.adaptive-enterprises.com.au/~d/software/xcerdisp/]
   Xcerdisp is an X Windows equivalent of Microsoft's Remote Display
   Control powertoy. It listens for connections from the Windows CE
   cerdisp client on your PocketPC, and lets you see and control your
   handheld via X. It may be necessary to use the
   [http://synce.sourceforge.net/] SynCE tools to get your handheld
   connected to the network.

   The purpose of the [http://synce.sourceforge.net/] SynCE project is
   to provide a means of communication with a Windows CE or Pocket PC
   device from a computer running Linux, *BSD, or another Unix system.

   [http://www.jardino.nildram.co.uk/] KDE Pocket PC Contacts Import
   lets you import your Windows CE (or PocketPC) contacts into KDE's
   address book.

   Some more information about connectivity and synchronisation tools,
   as well as emulators and other software you may find at
   [http://tuxmobil.org/pda_linux.html] TuxMobil - PDA and in the
   [http://tuxmobil.org/howtos.html] Linux-Infrared-HOWTO .

III. Tablet PCs / Pen PCs

   Table of Contents
   9. Tablet PCs / Pen PCs

        9.1. Introduction
        9.2. Display
        9.3. Handwriting Recognition
        9.4. Keyboard
        9.5. Wireless LAN
        9.6. Examples
     ________________________________________________________________

Chapter 9. Tablet PCs / Pen PCs

9.1. Introduction

   Tablet PCs are a special kind of notebooks. Usually without keyboard
   (or equipped with an external and remote keyboard), they feature a
   touchscreen (therefore they were also named Pen PCs) and access to
   wireless LAN. In a certain sense they can be compared with PDAs.
   Microsoft has created a special edition of their operating system for
   Tablet PCs and published a so-called specification. In 2003 the first
   Tablet PCs according to this specification entered the market. Though
   there have been appropriate devices with Linux many years before. See
   the [http://tuxmobil.org/touch_laptops.html] survey of Linux touch
   screen laptops and the [http://tuxmobil.org/detach_disp.html] survey
   of Linux laptops with detachable displays and finally a
   [http://tuxmobil.org/tablet_unix.html] survey about Linux on Tablet
   PCs, WebPads, NotePads and PenPCs. They are used for data acquisition
   in stores, in the field or in hospitals. Or as a book reader or
   webbrowser (therefore they are also named WebPads). Their hardware
   features require some dedicated Linux solutions.
     ________________________________________________________________

9.2. Display

9.2.1. Touchscreen

   The [http://www.tldp.org/HOWTO/XFree86-Touch-Screen-HOWTO.html]
   XFree86-Touch-Screen-HOWTO describes how to setup X11 for
   touchscreens. There is also a short
   [http://tuxmobil.org/touch_laptops.html] survey of Linux laptops,
   which feature a touchscreen and/or have a pen as an input device and
   a [http://tuxmobil.org/tablet_unix.html] survey about Linux on Tablet
   PCs.
     ________________________________________________________________

9.2.2. Screen Rotation

9.2.2.1. X-Windows

   Some XFree86 drivers support a rotation of the display content. Use
   this entry in the configuration file (DEGREE can become CW - 90
   degree clockwise , CCW - 90 degree counterclockwise , UD - 180 degree
   upside down, but which options actually work depends on the drivers:
Option "Rotate" "DEGREE"

   From version 4.3 on [http://xfree86.org/] XFree86 contains the RandR
   extension (X resize and Rotate Extension), which makes it possible to
   change the display resolution on the fly without restarting X11. The
   tool xrandr supports only resolution settings but no rotation. But
   the Tiny-X server by RandR developer Keith Packard (Xkdrive)
   implements all of the RandR features. But this is usually not
   included in the major distributions. Currently [http://x.org/] X.Org
   doesn't seem to support rotate and resize.
     ________________________________________________________________

9.2.2.2. Utilities

   There are some rotation utilities for Linux PDAs available, but I
   haven't tested them for Tablet PCs yet. Search the
   [http://killefiz.de/zaurus/] Zaurus Software Index - ZSI.
     ________________________________________________________________

9.3. Handwriting Recognition

   [http://handhelds.org/cgi-bin/cvsweb.cgi/apps/xstroke/] xstroke is a
   full-screen gesture recognition program written for the X Window
   System. It captures gestures that are performed with a pointer
   device, (such as a mouse, a stylus, or a pen/tablet), recognizes the
   gestures and performs actions based on the gestures. xstroke has been
   developed on Linux systems, (i386 and StrongARM), but should be quite
   portable to any UNIX-like system with X.

   [http://www.handhelds.org/projects/xscribble.html] Xscribble is an X
   application that allows a user of a touch screen to input characters
   into X applications, using a uni-stroke (Graffiti like) alphabet. It
   uses the X test extension to allow synthesis of characters as though
   they had been typed on a keyboard. Though it was designed for Linux
   on PDAs it might work with Tablet PCs as well.

   [http://www.yudit.org/] Yudit is a Unicode text editor for the X
   Window System. It can do True Type font rendering, printing,
   transliterated keyboard input, and handwriting recognition with no
   dependencies on external engines. Its conversion utilities can
   convert text between various encodings. Keyboard input maps can also
   act like text converters.
     ________________________________________________________________

9.4. Keyboard

9.4.1. Soft Keyboard / On Screen Keyboard

9.4.1.1. xvkbd

   [http://homepage3.nifty.com/tsato/xvkbd/] xvkbd is a virtual
   (graphical) keyboard program for X which provides a facility to enter
   characters onto other clients software by clicking a keyboard
   displayed on the screen. It also has facility to send characters
   specified as the command line option to other client.
     ________________________________________________________________

9.4.1.2. GNOME On-screen Keyboard (GOK)

   The [http://www.gok.ca/] GNOME On-screen Keyboard (GOK) is a dynamic
   on-screen keyboard for UNIX and UNIX-like operating systems. It
   features Direct Selection, Dwell Selection, Automatic Scanning and
   Inverse Scanning access methods and includes word completion.
     ________________________________________________________________

9.4.2. Remote Keyboard

   Some Tablet PCs are equipped with a remote keyboard. Data between
   keyboard and Tablet PC may be interchanged via InfraRed, BlueTooth or
   other means. If these solutions are hardware based only, they should
   work easily with Linux. Otherwise you probably need the technical
   specifications from the manufacturer.
     ________________________________________________________________

9.4.3. Virtual Keyboard

   There are different approaches for virtual (non physical) keyboards.
   Whether they work with Linux or not I could not verify yet.

     * [http://www.vkb.co.il/] Viki made by VKB
     * [http://www.canesta.com/] Keyboard Perception Chipset made by
       Canesta
     * [http://www.senseboard.com/] SenseBoard
     * [http://www.lightglove.com/] LightGlove
     * [http://www.sait.samsung.co.kr/] Scurry made by SAIT
     * [http://www.kittytech.com/] Kitty
     ________________________________________________________________

9.5. Wireless LAN

   Please see the chapter Section 12.35 Wireless LAN below.
     ________________________________________________________________

9.6. Examples

     * [http://www.softwarekombinat.de/linux-point510.html] Fujitsu:
       Point 510
     * [http://libxg.free.fr/point/point.htm] Fujitsu: Point 510
     * [http://www.paceblade.de/?a=2&p=1493] PaceBlade: PaceBook
     * [http://simpad.sourceforge.net] Siemens: SimPAD

   At TuxMobil there is a survey of
   [http://tuxmobil.org/tablet_unix.html] Linux installations on Tablet
   PCs, Pen PCs and WebPads.

IV. Mobile (Cellular) Phones, Pagers, Calculators, Digital Cameras,
Wearable Computing

   Table of Contents
   10. Mobile (Cellular) Phones, Pagers

        10.1. Mobile (Cellular) Phones
        10.2. Pagers - SMS Messages

   11. Calculators, Digital Cameras, Wearable Computing

        11.1. Digital Cameras
        11.2. Pocket Calculators
        11.3. Wearable Computing
        11.4. Watches
        11.5. Play Station Portable
     ________________________________________________________________

Chapter 10. Mobile (Cellular) Phones, Pagers

   You may find a [http://tuxmobil.org/phones_linux.html] Linux
   compatibility survey of mobile phones at TuxMobil. This survey
   contains also links to useful applications and to mobile phones
   driven by the Linux operating system.
     ________________________________________________________________

10.1. Mobile (Cellular) Phones

10.1.1. Connectivity to Mobile (Cellular) Phones with non-Linux Operating
System

   For NOKIA cellular phones see [http://www.gnokii.org/] GNOKII
   project. And Linux [http://www.version6.net/misc/nserver.html]
   Nserver. This project aims 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).

   [http://www.openwap.org/] 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.

   [http://www.pxh.de/fs/gsmlib/download/] 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.

   [http://www.kannel.org/] Kannel is an open source WAP gateway. It
   attempts to provide this essential part of the WAP infrastructure
   freely to everyone so that the market potential for WAP services,
   both from wireless operators and specialized service providers, will
   be realized as efficiently as possible.

   Kannel also works as an SMS gateway for GSM networks. Almost all GSM
   phones can send and receive SMS messages, so this is a way to serve
   many more clients than just those using a new WAP phone.
     ________________________________________________________________

10.1.2. Mobile (Cellular) Phones with a Linux Operating System

   There are some [http://tuxmobil.org/phones_linux.html] mobile phones
   with Linux operating system available. As well as
   [http://tuxmobil.org/mobile_phone_linux_distributions.html] Linux
   distributions for mobile (cell) phones.
     ________________________________________________________________

10.2. Pagers - SMS Messages

   [http://www.qpage.org/] 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).

   [http://daniel.haxx.se/projects/mail2sms/] 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.

   [http://www.new.ox.ac.uk/~adam/computing/email2sms/] 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 Lingua::EN::Squeeze 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.

   [http://smslink.sourceforge.net/] SMSLink implements a client/server
   gateway to the SMS protocol. 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 telnet. 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.

   [http://lide.pruvodce.cz/~wayne/] nmsms is a very simple program to
   announce incoming email to an SMS address (email address) defined at
   compile time. The original From: and Subject: header are included in
   each mail announced.
     ________________________________________________________________

Chapter 11. Calculators, Digital Cameras, Wearable Computing

   

   We are all cyborgs.
     probably from "Cyborg Manifesto" by Donna J. Haraway in Simians,
   Cyborgs, and Women. The Reinvention of Nature. New York: Routledge,
   1991

   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 [http://www.embedded.com] Embedded.com . For Linux
   information, see [http://elks.sourceforge.net/] ELKS and the
   [http://uclinux.org/] uCLinux project. See also the news group
   comp.arch.embedded
     ________________________________________________________________

11.1. Digital Cameras

11.1.1. Related Documentation

    1. [http://www.marblehorse.org/projects/documentation/kodak/]
       Kodak-Digital-Camera-HOWTO by David Burley
       <khemicals_AT_marblehorse.org> .
     ________________________________________________________________

11.1.2. Introduction

   For information about cellular phones and digital cameras see the
   [http://tuxmobil.org/ir_misc.html] Infrared Devices and Linux Survey
   and my [http://tuxmobil.org/howtos.html] InfraRed-HOWTO .

   Newsgroup: rec.photo.digital .

   The Flashpath adapter is a diskette like device which is used to
   transfer data from a digital camera to a computer. See
   [http://www.smartdisk.com/Downloads/FPDrivers/LinuxDownload.htm]
   Flashpath for Linux and James Radley's
   [http://www.susie.demon.co.uk/flashpath.html] flashpath homepage .
   Note: it is not officially certified and released under GPL.
     ________________________________________________________________

11.2. Pocket Calculators

   Information about calculators e.g. HP-48 is at
   [http://www.hpcalc.org/] HP-Calculator.Org, they are hosting the
   [http://www.hpcalc.org/hp48/docs/faq/48faq.html] HP-48 FAQ.
   [http://www.columbia.edu/kermit/hp48.html] 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
   [http://www.opensourcepartners.nl/~costar/hp48/] Linux terminal.

   See also at my pages about [http://tuxmobil.org/ir_misc.html] Linux
   with Infrared Devices and [http://tuxmobil.org/calculators_unix.html]
   Linux and Pocket Calculators .

   [http://www.multimania.com/rlievin/] 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.
     ________________________________________________________________

11.3. Wearable Computing

   Also related to Linux and mobile computers seems wearable computing.

   See also [http://www.media.mit.edu/wearables/] MIT ,
   [http://wearables.blu.org/] Wearables Central and
   [http://www.wearcomp.org/] WearComp .
     ________________________________________________________________

11.4. Watches

   The [http://datalink.fries.net/] datalink library allows sending
   information to the Timex DataLink watches. The original datalink
   library supports the DataLink models 70 , 150 and 150 S watch and 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).
     ________________________________________________________________

11.5. Play Station Portable

   [http://qpspmanager.sourceforge.net/] qpspmanager is a program to
   manage the files on a memorystick as used by a Sony Playstation
   Portable.

V. Mobile Hardware in Detail

   Table of Contents
   12. Hardware in Detail: CPU, Display, Keyboard, Sound and More

        12.1. Introduction
        12.2. BIOS
        12.3. CPU
        12.4. Centrino(tm), Centrino-Duo(tm)
        12.5. PCMCIA Controller
        12.6. Graphics Chip
        12.7. DVI Port
        12.8. Video Port / ZV Port
        12.9. LCD Display
        12.10. Sound
        12.11. Keyboard
        12.12. Extra Keys / Hot Keys
        12.13. Function Key
        12.14. Power Key
        12.15. Extra LEDs
        12.16. Numeric Keypad
        12.17. Pointing Devices - Mice and Their Relatives
        12.18. Advanced Power Management - APM
        12.19. ACPI
        12.20. Power Management Unit - PMU (PowerBook)
        12.21. Batteries
        12.22. Memory
        12.23. Plug-and-Play Devices (PnP)
        12.24. Docking Station / Port Replicator
        12.25. Network Connections
        12.26. Built-In Modem
        12.27. GPRS
        12.28. SCSI
        12.29. Universal Serial Bus - USB
        12.30. FireWire - IEEE1394 - i.Link
        12.31. Floppy Drive
        12.32. Optical Drives (CD/DVD)
        12.33. Hard Disk
        12.34. Hot-Swapping Devices (MultiBay, SelectBay, ..)
        12.35. WireLess Network - WLAN
        12.36. BlueTooth
        12.37. Infrared Port
        12.38. FingerPrint Reader

   13. Accessories: PCMCIA, USB and Other External Extensions

        13.1. PCMCIA Cards
        13.2. ExpressCards
        13.3. SmartCards
        13.4. SDIO Cards
        13.5. Memory Technology Devices - RAM and Flash Cards
        13.6. Memory Stick
        13.7. Card Readers for SD/MMC/Memory Stick
        13.8. USB Devices
        13.9. Printers and Scanners
        13.10. Serial Devices
        13.11. External Storage Devices
        13.12. Power and Phone Plugs, Power Supply
        13.13. Bags and Suitcases
     ________________________________________________________________

Chapter 12. Hardware in Detail: CPU, Display, Keyboard, Sound and More

12.1. Introduction

   The following text about mobile hardware, is applicable to all kinds
   of mobile devices running Linux: laptops, notebook, PDAs, handheld
   PCs, mobile phones, wearables and more. Though sometimes you have to
   make the appropriate changes.
     ________________________________________________________________

12.2. BIOS

   Before setting up any hardware you should have a look into the BIOS.
   Often you may find a solution already there, e.g. options to set up
   the display, APM or ACPI, DMA, IrDA, PCMCIA, sound, SpeedStep, and
   more.

   If you run into unresolvable trouble when configuring the hardware,
   try a BIOS upgrade from the manufacturer. For this task you usually
   need one of the Microsoft so-called operating systems. Or at least a
   DOS disk or CD.

   Flashing BIOSes has become often quite complex as both DOS and
   floppies are fading away. Things aren't any easier when running
   exclusively GNU/Linux. Luckily, it is possible to
   [http://freshrpms.net/docs/bios-flash/] create a bootable CD-ROM with
   GNU/Linux, which enables one to actually flash a BIOS using a DOS
   utility without requiring Windows, MS-DOS or a floppy drive.

   Some newer laptops e.g. ASUS M5200A are equipped with a BIOS, which
   is able to update itself.

   The [http://www.nenie.org/misc/flashbootcd.html] Motherboard Flash
   Boot CD from Linux Mini HOWTO gives a short summary of how to create
   a boot disk to flash a BIOS on a PC, from Linux (or another Unix)
   when one has no floppy drive and no access to a DOS/Windows machine.

   [http://www.linuxbios.org] LinuxBIOS aims to replace the normal BIOS
   found on PCs, Alphas, and other machines with a Linux kernel that can
   boot Linux from a cold start. LinuxBIOS is primarily Linux - about 10
   lines of patches to the current Linux kernel. Additionally, the
   startup code - about 500 lines of assembly and 5000 lines of C -
   executes 16 instructions to get into 32-bit mode and then performs
   DRAM and other hardware initialization required before Linux can take
   over. There are even two reports about LinuxBIOS on laptops.

   Alternative approaches are [http://openbios.org/] OpenBIOS and
   [http://freebios.sourceforge.net/] FreeBIOS.
     ________________________________________________________________

12.2.1. SMBios

   [http://www.dmtf.org/standards/dmi/] Desktop Management Interface
   (DMI) Standards generate a standard framework for managing and
   tracking components in a desktop pc, notebook or server. DMI was the
   first desktop management standard. The DMI Home Page is a repository
   of all DMI-related information from the specification to tools to
   support to the Product Registry of DMI-certified products.

   [http://www.nongnu.org/dmidecode/] Dmidecode reports information
   about your system's hardware as described in your system BIOS
   according to the SMBIOS/DMI standard (see a sample output). This
   information typically includes system manufacturer, model name,
   serial number, BIOS version, asset tag as well as a lot of other
   details of varying level of interest and reliability depending on the
   manufacturer. This will often include usage status for the CPU
   sockets, expansion slots (e.g. AGP, PCI, ISA) and memory module
   slots, and the list of I/O ports (e.g. serial, parallel, USB).

   There is also an alternative implementation of a DMI table decoder.
   [http://linux.dell.com/libsmbios/main/index.html] Libsmbios is a
   cross-platform library intended to be used to obtain common
   information available in a BIOS using a unified API. Currently, it
   can programmatically access any information in the SMBIOS tables. It
   also has the ability to obtain Dell system-specific information such
   as the Dell System ID number, service tag, and asset tag. Future
   plans include APIs for $PIR and mptable mapping. There is a C API for
   some of the more commonly used functions, and example binaries to
   show off most of the facilities.
     ________________________________________________________________

12.3. CPU

   You may find a survey about CPUs used in mobile devices, which are
   Linux-supported in the chapter Chapter 1 Which Laptop to Buy? above.
     ________________________________________________________________

12.3.1. SpeedStep

   Speedstep is a feature of recent CPUs made by Intel, which lets you
   set CPU frequency. There are different Linux tools to get this to
   work. Similar features are also available for other CPUs from AMD or
   the StrongARM CPU, I will describe this in a later issue (assistance
   welcome).

   Before configuring SpeedStep have a look into the BIOS options.
     ________________________________________________________________

12.3.1.1. SpeedStep Tool

   The [http://www.goof.com/pcg/marc/speedstep.html] SpeedStep tool
   works with Mobile Pentium-III CPUs only. See output from cat
   /proc/cpuinfo:
   model name : Intel(R) Pentium(R) III Mobile CPU 1000MHz

   It does not work with the mobile version of the Pentium-III:
   model name : Pentium III (Coppermine)
     ________________________________________________________________

12.3.1.2. CPUFREQ

   You might want to check into the
   [http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq.html]
   cpufreq patch for the linux-2.4/2.5 kernels: CPU clock frequency
   scaling for Linux, on x86 and ARM based processors. This module
   provides a user-space and standard kernel-space interface to this
   feature, along ARM system-on-a-chip devices to cope with processor
   clock changes. Since the power consumed by a processor is directly
   related to the speed at which it is running, keeping the clock speed
   as low as possible allows you to get more run-time out of your
   battery. Some people use this to adjust their clock speed many times
   a second to optimise performance vs battery life. See also the
   [http://www.arm.linux.org.uk/cvs/] CVS repository .
     ________________________________________________________________

12.3.1.2.1. cpufreqd

   [http://www.sf.net/projects/cpufreqd] cpufreqd is meant to be a
   replacement of the speedstep applet you can find on some other
   operating systems, it monitors battery level, AC state and running
   programs and adjusts the frequency governor according to a set of
   rules specified in the config file. It works both with APM and ACPI.
     ________________________________________________________________

12.3.1.2.2. cpudyn

   [http://mnm.uib.es/~gallir/cpudyn/] cpudyn controls the speed in
   Intel SpeedStep and PowerPC machines with the cpufreq compiled in the
   kernel. It saves battery and lowers temperature, without affecting
   the performance of interactive applications.
     ________________________________________________________________

12.3.1.2.3. cpuspeedy

   [http://cpuspeedy.sourceforge.net] cpuspeedy allows you to change the
   clock speed and voltage of CPUs using Linux's CPUFreq driver. It is a
   user space program, so it will work on every processor supported by
   the kernel's CPUFreq driver.
     ________________________________________________________________

12.3.1.2.4. powernowd

   [http://www.deater.net/john/powernowd.html] PowerNowd is a simple
   client daemon for the Linux cpufreq driver using the sysfs interface.
   It sits in the background and changes CPU speed in configurable
   "steps" according to usage. Written in C, its emphasis is on speed
   and simplicity. It is very configurable, and supports non-x86 and SMP
   systems.
     ________________________________________________________________

12.3.1.3. Laptop Mode

   [http://samwel.tk/laptop_mode/] Laptop mode is a kernel "mode" that
   allows you to extend the battery life of your laptop. It does this by
   intelligently grouping write activity on your disks, so that only
   reads of uncached data result in a disk spinup. It has been reported
   to cause a significant improvement in battery life (for usage
   patterns that allow it).

   The [http://samwel.tk/laptop_mode/] Laptop Mode Tools package spins
   down your hard drive like noflushd, but it works also on journalling
   filesystems. It integrates with apmd/acpid/pbbuttonsd to enable this
   behaviour only when you are running on battery power. It also adjusts
   some hdparm settings and remounts your filesystems noatime, and it
   can adjust your maximum CPU frequency.
     ________________________________________________________________

12.3.1.4. SONY VAIO SPIC Daemon

   The [http://spicd.raszi.hu/] SONY VAIO SPIC daemon is a fast and
   small hack to create a working apmd to Sony VAIO laptops. It uses the
   sonypi kernel module to detect the AC adapter status and the LCD
   backlight, and cpufreq for CPU frequency scaling.
     ________________________________________________________________

12.3.1.5. CPUIDLE

   A [http://www.heatsink-guide.com/cpuidle.htm] software utility that
   will make your CPU run cooler? Sounds pretty strange, huh? Let me
   explain: Have you ever thought of the fact that your CPU is idle most
   of the time when you're using your computer? For example, when you're
   using your word processor, writing emails, browsing the web, the CPU
   does nothing else than just wait for user input. In fact, it will use
   up to 30W and produce substantial amounts of heat doing nothing. Good
   operating systems, like Linux, NT and OS/2 have a so-called "idle
   loop" - a loop that's always executed when the CPU has nothing to do.
   This loop consists of halt (HLT) instructions. CPUs like the AMD K6,
   the Cyrix 6x86 and 6x86MX have a special feature called
   "suspend-on-halt". This means that everytime the CPU executes a hlt
   instruction, it will go into "suspend mode" for a short time. So,
   while the idle loop is being executed, the CPU will be in suspend
   mode, use much less power, and stay much cooler. Of course, this does
   not affect performance at all! The user won't even notice that his
   CPU is in suspend mode most of the time (unless he touches the
   heatsink).
     ________________________________________________________________

12.3.1.6. ACPI

   If you have enabled ACPI support in the Kernel you may also set the
   SpeedStep parameters via the /proc/apci/ interface, e.g. echo 1 >
   /proc/acpi/processor/CPU0/performance will make the CPU speed down.
   Note: the spaces in the command are important! Note also: this
   feature is deprecated for Kernel > 2.6.11. Or use this script
   provided by Sebastian Henschel.
#! /bin/sh

# /etc/init.d/slowcpu: slow down cpu or accelerate it via speedstep

test -e /proc/acpi/processor/CPU0/performance || exit 0

case "$1" in
    start)
    echo "Setting CPU0-Speed to: 733 MHz."
    echo 1 > /proc/acpi/processor/CPU0/performance
        ;;
    stop)
    echo "Setting CPU0-Speed to: 1133 MHz."
    echo 0 > /proc/acpi/processor/CPU0/performance
        ;;
    force-reload|restart)
        ;;

    *)
        echo "Usage: $0 {start|stop}"
        exit 1
esac

exit 0
     ________________________________________________________________

12.4. Centrino(tm), Centrino-Duo(tm)

   Intels Centrino(TM) technology consists of three parts: a Pentium M
   processor, a chipset, and a wireless module. Let's see how these
   parts are supported under Linux so far.

   Here you may find current information about
   [http://tuxmobil.org/centrino.html] Linux on Centrino laptops and
   notebooks.
     ________________________________________________________________

12.4.1. CPU: Pentium-M

   Robert Freund has written a concise [http://rffr.de/acpi] HOWTO about
   controlling ACPI Centrino(TM) features via software in Linux. He
   describes how to control CPU frequency and other energy saving modes,
   as well as how to get information about the battery state.
     ________________________________________________________________

12.4.2. Chipset: 855/915

   The Intel 855/915 chipset families are designed to deliver better
   performance at lower power. The chipsets are available as discrete
   memory controller hub (e.g. Intel 855PM). Or as an integrated
   graphics and memory controller hub (e.g. Intel 855GM). Intel provides
   the Extreme Graphics driver for Linux, which includes AGP GART and
   DRM kernel modules as a binary files. I have no experience with this
   drivers, because the chipsets work with XFree86/X.org drivers, too.
   The Pentium-M CPU may come accompanied with other graphics chipsets
   too, e.g. from ATI, nVIDIA or Trident.
     ________________________________________________________________

12.4.3. Wireless LAN: PRO/wireless 2100/2200 LAN Mini-PCI Adapter

   There are different solutions to get these cards running with Linux:
   drivers from Intel, NDIS wrapper and Linuxant driverloader
   (commercial).

   [http://ipw2100.sourceforge.net/] ipw2100, Intel's Open Source driver
   with included firmware, for the first Centrino generation (incl. WEP
   and WPA together with HostAP). For the second generation of Intel's
   miniPCI modules: PRO/Wireless 2200BG (802.11g/802.11i), the
   [http://ipw2200.sourceforge.net/] ipw2200 project provides a driver.
   Third generation PRO/Wireless 2915ABG (IEEE 802.11b, 802.11g und
   802.11a) miniPCI cards will be supported by the
   [http://ipw2200.sourceforge.net/] ipw2200 project, too.

   Intel didn't provide drivers, when the begun to sell their Centrino
   technology. During this time there have been other solutions: Some
   vendors refuse to release technical specifications or even a binary
   Linux driver for their WLAN cards. NDIS wrapper tries to solve this
   by making a kernel module that can load NDIS (Microsoft-Windows
   Network Driver Interface Specification) drivers. Currently there are
   two implementations available. The commercial
   [http://www.linuxant.com/driverloader/] Linuxant Driverloader
   supports a broad range of chipsets including Intel's PRO/Wireless
   2100 LAN Mini-PCI Adapter. There is also
   [http://ndiswrapper.sourceforge.net/] ndiswrapper an Open Source
   solution by Pontus Fuchs.

   As another workaround was the usage of a Linux-supported
   [http://tuxmobil.org/minipci_linux.html] miniPCI WLAN card. These
   cards are difficult to get, but some desktop WLAN PCI cards contain
   miniPCI cards. Often it is a tedious task to build them into a
   laptop. Kernel maintainer Theodore Tytso has written a
   [http://www.thunk.org/tytso/linux/t40.html] manual about achieving
   this task. You may also use a wireless PCMCIA or CF card instead.
   This solution may provide more flexibility, because you may use a
   PCMCIA or CF card in different devices and choose the Linux driver of
   your choice. You may also extend the wireless range by adding
   antennas to some cards. For Linux compatibility there is the
   [http://tuxmobil.org/pcmcia_linux.html] TuxMobil PCMCIA/CF Card
   Survey. In the future, manufacturers will probably offer alternative
   miniPCI solutions. DELL is already doing so for their Latitude D
   series.
     ________________________________________________________________

12.4.4. Conclusion

   Though Linux support is not yet complete, some features of the
   Centrino(TM) technology already make it worthwhile to take into
   account when buying your next laptop. Though the new CPUs are named
   so similarly to existing ones that some people mix them up, they are
   completely different inside. Compared to the Pentium-4 Mobile CPU,
   the Pentium-M will allow a smaller form factor for laptops, making
   them more portable and lighter. Because of their higher clockspeed,
   the Pentium-4 CPUs have produced too much heat to build them into
   slimline notebook cases. Therefore, very flat notebooks have only
   been available from Apple or with a Pentium III Mobile CPU. Also, the
   battery power the Pentium-M consumes for a given level of performance
   will decrease, but I do not have a benchmark about how much the
   savings actually are yet. PENN Computing offers a nice
   [http://www.upenn.edu/computing/provider/docs/centrinoprovider.html]
   comparison of Pentium-M and Pentium-4 Mobile. Note: The character M
   in Pentium-M suggests "mobile". Therefore some people mix this kind
   of CPU with the mobile versions of the Pentium-III/Pentium-4 CPU.

   Laptops based on the Centrino(TM) features are already very popular
   in the Linux community. [http://tuxmobil.org/centrino.html]
   Installation reports for almost all Centrino based laptops available
   at TuxMobil.
     ________________________________________________________________

12.5. PCMCIA Controller

12.5.1. Linux Compatibility Check

   With the probe command, which is included in the PCMCIA-CS package by
   David Hinds you can get the type of the PCMCIA controller. Also
   available by the command cat /proc/pci.
     ________________________________________________________________

12.5.2. Related Documentation

    1. PCMCIA-HOWTO
     ________________________________________________________________

12.5.3. PCMCIA Configuration - Survey

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

12.5.3.1. Software

    1. Install the newest available PCMCIA-CS package, if you take a rpm
       or deb package it is quite easy.
    2. Read the PCMCIA HOWTO, usually included in the PCMCIA-CS package.
    3. If necessary, install a new kernel.
    4. Make sure your kernel has module support and PCMCIA support
       enabled (and often APM support)
    5. Make sure your kernel also includes support for the cards you
       want to use, e.g. network support for a NIC card, serial support
       for a modem card, SCSI support for a SCSI card and so on.
    6. If you have a custom made kernel, don't forget to compile the
       PCMCIA-CS source against your kernel.
     ________________________________________________________________

12.5.3.2. PCMCIA Controller

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

12.5.3.3. PCMCIA Card

    1. Check your card with cardctl ident .
    2. If your card is not in /etc/pcmcia/config, edit the file
       /etc/pcmcia/<MYCARD>.conf appropriately. Take an entry in the
       first file as a model. You may try every driver, just in case it
       might work, for instance the pcnet_cs supports many NE2000
       compatible PCMCIA network cards. Note: it is a bad practice to
       edit /etc/pcmcia/config directly, because all changes will be
       lost with the next update.
    3. A list of supported cards is included in the PCMCIA-CS package.
       The current list you may find at
       [http://pcmcia-cs.sourceforge.net/ftp/SUPPORTED.CARDS]
       SUPPORTED.CARDS.
       Since there are not all cards mentioned I have set up a PCMCIA
       Cards Survey of Cards Supported by Linux .
    4. If you use a X11 GUI, you can use cardinfo to insert, suspend, or
       restart a PCMCIA card via a nice graphical interface.

   Figure 12-1. Screenshot of cardinfo

   [cardinfo.png]
     ________________________________________________________________

12.6. Graphics Chip

12.6.1. Linux Compatibility Check

12.6.1.1. Video Mode

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

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

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

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

12.6.1.2. Text Mode

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

12.6.2. Related Documentation

    1. First of all the [http://www.xfree86.org/] XFree86 documentation
       itself. Often locally available at /usr/share/doc/xfree86*. Or
       the [http://x.org/] X.Org documentation.
    2. [http://tldp.org/HOWTO/XFree86-HOWTO/] XFree86-HOWTO
    3. [http://tldp.org/HOWTO/XFree86-Video-Timings-HOWTO/]
       XFree86-Video-Timings-HOWTO
    4. [http://tldp.org/HOWTO/XFree86-XInside.html]
       XFree86-XInside-HOWTO
    5. [http://tldp.org/HOWTO/X-Big-Cursor.html] X-Big-Cursor-mini-HOWTO
       (useful when running X11 on a notebook with low contrast LCD)
    6. [http://tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html]
       Keyboard-and-Console-HOWTO
    7. [http://tldp.org/HOWTO/Framebuffer-HOWTO.html] Framebuffer-HOWTO
     ________________________________________________________________

12.6.3. Survey X11-Servers

   You might discover that some features of your laptop are not
   supported by [http://www.xfree86.org/] XFree86 or [http://x.org/]
   X.Org. , e.g. high resolutions, accelerated X or an external monitor.
   Therefore I give a survey of available X11 servers.

    1. [http://www.xfree86.org/] XFree86
    2. [http://x.org/] X.Org.
    3. VESA Frame-Buffer-Device, available with 2.2.x kernels and
       XFree86 3.3.2 or greater. See [http://linux-fbdev.org/] FBDev.ORG
       and [http://www.strusel007.de/linux/fb.html] FB FAQ and kernel
       source /usr/src/linux/Documentation .
       Please check the latest release of [http://directfb.org/]
       DirectFB for a dedicated Framebuffer Driver for the NeoMagic chip
       and other chipsets, with support for acceleration. DirectFB is a
       thin library that provides developers with hardware graphics
       acceleration, input device handling and abstraction, an
       integrated windowing system with support for translucent windows
       and multiple display layers on top of the Linux framebuffer
       device. It is a complete hardware abstraction layer with software
       fallbacks for every graphics operation that is not supported by
       the underlying hardware.
    4. [http://www.xig.com/] Xi Graphics , commercial, also known under
       their former names AcceleratedX or Xinside.
    5. [http://www.scitechsoft.com/] SciTech, commercial.
    6. [http://www.metrolink.com/] Metro-X, commercial.

   If you can't get an appropriate X11 server working, but cannot afford
   a commercial X11 server you may try the VGA16 or the mono server
   included in XFree86.
     ________________________________________________________________

12.6.4. Resources

   You may find a survey about current graphics chips used in laptops
   and notebooks at TuxMobil.
     ________________________________________________________________

12.6.5. External Monitors: LCD, CRT, TV, Projector

   There are several different methods to activate support for an
   external monitor: as a BIOS option or during runtime with a keystroke
   e.g. <Fn>+<F4>.

   Read the X11 docs about your graphics chip carefully, for instance
   for the NeoMagic NM20xx chips you have to edit /etc/XF86Config by
   configuring intern_disp and extern_disp. Note: As far as I know these
   options are only valid for XFree86 3.3.x, for XFree86 4.x I couldn't
   find a similar option.

   If you can't get the external monitor to work with XFree86, try a
   demo version of the commercial X11 servers mentioned above. Also
   check with the RedHat and SuSE WWW sites as they may have new,
   binary-only, X11 servers that may work with your laptop. Or check X11
   servers from [http://x.org/] X.Org.
     ________________________________________________________________

12.6.5.1. Tools

   The [http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout/]
   atitvout utility may be used for executing several configuration
   commands for the TV Out connector of ATI Rage Mobility P/M graphics
   boards under GNU/Linux on x86. It is intended primarily to enable TV
   Out support after bootup and for switching the used TV standard from
   NTSC to PAL.

   [http://www.probo.com/timr/savage40.html] s3switch will allow you to
   switch your display between the various output devices supported by
   the Savage (CRT, LCD, TV).

   [http://sourceforge.net/projects/nv-tv-out] nv-tv-out is a tool to
   enable TV-Out on Linux for NVidia cards. It does not need the kernel,
   supports multiple TV encoder chips. You may use all the features of
   the chip, down to direct register access, and all resolutions and
   sizes the chip supports.

   [http://www16.plala.or.jp/mano-a-mano/i810switch.html] i810switch is
   an utility for switching the LCD and external VGA displays on and
   off, with almost every graphics chip from Intel's i8xx family,
   including Centrino.

   [http://sourceforge.net/projects/i855crt] i855crt is an userspace
   driver that can enable the CRT out (port for external monitor) on
   Intel 855GM based laptops.
     ________________________________________________________________

12.6.5.2. Solutions

   Klaus Weidner has described a
   [http://mailman.linux-thinkpad.org/pipermail/linux-thinkpad/2003-Nove
   mber/013701.html] Dual monitor setup without using xinerama, but
   x2vnc instead. This approach allows to add and remove the second
   monitor dynamically without reconfiguring or restarting anything.
     ________________________________________________________________

12.6.6. Power Management for Graphics Cards

   The uptime on batteries can be improved by enabling the power
   management features of the graphics card. There are tools available
   to change the clock frequency and to shut down the backlight of the
   display. Usually these tools are specific for a graphics card or a
   graphics card manufacturer. Here are some techniques for graphics
   cards made by ATI.

   The proprietary fglrx driver from ATI needs to be enabled by adding
   the PowerState option to the Device Section in the /etc/X11/xorg.conf
   X11 configuration file:

Section "Device"
Identifier "aticonfig-Device[0]"
Driver "fglrx"
Option "PowerState" "1"
EndSection

   After rebooting or re-starting X11 you can start the power save mode
   with the command aticonfig --set-powerstate=1 --effective=now. Use
   aticonfig --list-powerstates to get all available powerstates.

   For ATI Radeon graphics cards the rovclock tool can be used to save
   power e.g. rovclock -c 80 -m 80 to use only 80MHz chip and memory
   frequency. The command radeontool light off switches the backlight
   off, if closing the lid or using an extra key is not an option.

   The [http://lkml.org/lkml/2006/10/9/83] ACPI backlight driver by
   Holger Macht in 2.6.x for IBM, Toshiba, ASUS laptops adds support for
   the generic backlight interface below /sys/class/backlight. The patch
   keeps the procfs brightness handling for backward compatibility. For
   this to archive, the patch adds two generic functions brightness_get
   and brightness_set to be used both by the procfs related and the
   sysfs related methods.
     ________________________________________________________________

12.6.7. Miscellaneous

   Sometimes you may encounter a display not working properly in text
   mode. Currently I don't have any recommendations, please see
   [http://tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html]
   Keyboard-and-Console-HOWTO .

   Take care of the backlight as far as I know 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.

   [http://www.srcf.ucam.org/~mjg59/vbetool/] vbetool uses LRMI in order
   to run code from the video BIOS. Currently, it is able to alter DPMS
   states, save/restore video card state, and attempt to initialize the
   video card from scratch. It exists primarily in order to increase the
   chances of successfully recovering video state after an ACPI S3
   suspend-to-RAM.
     ________________________________________________________________

12.7. DVI Port

   As far as I know DVI ports don't work with Linux yet. But anyway here
   are links to installation reports about
   [http://tuxmobil.org/laptop_dvi_linux.html] Linux on laptops and
   notebooks with DVI ports.
     ________________________________________________________________

12.8. Video Port / ZV Port

   Some high end laptops come with a video or ZV port (NTSC/PAL). Since
   I don't have a laptop with a ZV or video port yet, I can provide only
   some URLs [http://www.thp.uni-koeln.de/~rjkm/linux/bttv.html] BTTV
   (driver) [http://www.mathematik.uni-kl.de/~wenk/xwintv.html] xwintv
   (tvviewer). For further information see
   [http://www.exploits.org/v4l/] Video4Linux . To collect information
   about laptops with video port I have setup a page at
   [http://tuxmobil.org/hardware.html] TuxMobil - Hardware .
   Alternatively to the ZV port you might use the USB port.
     ________________________________________________________________

12.9. LCD Display

   This chapter isn't ready yet, it will contain information about the
   lifetime of backlights, differences between CRT and LCD displays,
   anti-aliasing with LCD displays, the ISO 13406-2 standard about pixel
   defects, a survey of common resolutions: VGA, SVGA, XGA and more
   soon. See also the screensaver chapter and the touchscreen section in
   the chapter Part III in Linux on the Road Tablet PC and PDA.
     ________________________________________________________________

12.9.1. Laptop Displays

12.9.1.1. Applications

   [http://www.brouhaha.com/~eric/software/lcdtest/] lcdtest is a
   utility to display LCD monitor test patterns. It may be useful in
   finding pixels that are stuck on or off. lcdtest uses the SDL
   library, and has only been tested on Linux with X, but may work on
   other platforms.

   [http://ddccontrol.sourceforge.net/] DDCcontrol is a program used to
   control monitor parameters, like brightness and contrast, by
   software, i.e. without using the OSD (On Screen Display) and the
   buttons in front of the monitor.
     ________________________________________________________________

12.9.1.2. Fonts

   [http://www.iki.fi/too/sw/fat8x16-x-font.readme] fat8x16-x-font is a
   8x16 pixel fixed width font to be used in physically small but high
   resolution displays. Such displays can be found for example in
   notebook computers with 1400x1050 and 1600x1200 14" displays.
     ________________________________________________________________

12.9.2. PDA Displays

   [http://userpage.fu-berlin.de/~cantsin/homepage/computing/hacks/pxl20
   00/README.html] pxl2000 is a free ISO 8859-15 (i.e. ISO 8859-1 with
   Euro symbol) encoded monowidth dot matrix typeface for the X Window
   system (X11). It is currently available in nine sizes: 4x8, 5x10,
   6x12, 7x14, 8x16, 9x18, 10x20, 11x22 and 12x24 pixels. It's design
   objectives are:

     * Readability; fitness to be used as a default screen font,
       especially on reverse-color X11 terminals
     * Optimization for program code through visually distinct
       characters L, l, 1, 7, |, I, i and 0, O and more.
     * Complete ISO 8859-15 character set.
     * Many point sizes to ensure optical consistency across different
       computers with different screen resolutions (encompassing
       anything from PDA displays to 20" screens).
     * Fitness for displaying ASCII art and codework/code poetry, from
       viewing graphics in aview, watching TV in ttv and DVDs in mplayer
       with -vo aa to reading mailinglists like _arc.hive_, 7-11 and
       writing in mutt.
     * Clean, minimalist visual design; no serifs, a square minuscule
       base matrix, rounded edges. This is a computer terminal font; it
       should not look like a low-res imitation of print type.

   The author Florian Cramer employs this font in his "anti-desktop"
   setup consisting of the ratpoison window manager and GNU screen
   inside an rxvt terminal (with reverse color and no scrollbars),
   similar to what is described in this
   [http://palm.freshmeat.net/articles/view/581/] FreshMeat article .
     ________________________________________________________________

12.10. Sound

12.10.1. Linux Compatibility Check

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

12.10.2. Related Documentation

    1. [http://www.tldp.org/] Sound-HOWTO
    2. [http://www.tldp.org/] Visual-Bell-mini-HOWTO
    3. You may find also some good sound HOWTOs at the
       [http://www.djcj.org/LAU/guide/] Linux Audio Users Guide - LAU
     ________________________________________________________________

12.10.3. Survey Sound Drivers

    1. ALSA [http://www.alsa-project.org/] Advanced Linux Sound
       Architecture . The Advanced Linux Sound Architecture aims to: be
       a fully-modularized sound driver which supports kerneld/kmod,
       ensure compatibility with most binary OSS/Lite applications,
       create an ALSA Library (C,C++) which covers the ALSA Kernel API
       for applications, and create ALSA Manager, an interactive
       configuration program for the driver. With Kernel 2.6 these
       modules will be part of the Linux Kernel.
    2. UNIX Sound System Lite / OSS provides commercial sound card
       drivers for most popular sound cards under Linux. These drivers
       support digital audio, MIDI, Synthesizers and mixers found on
       sound cards. These sound drivers comply with the Open Sound
       System API specification. OSS provides a user-friendly GUI which
       makes the installation of sound drivers and configuration of
       sound cards very simple. OSS supports over 200 brand name sound
       cards. OSS drivers provide automatic sound card detection,
       Plug-n-Play support, support for PCI audio soundcards and
       support.
    3. As a last resort you may try the speaker module pcsnd, which
       tries to emulate a soundcard.
     ________________________________________________________________

12.10.4. Additional Soundcards

   [http://www.digigram.com/products/VXpocket.html] VXPocket looks like
   a finally medium2high-end soundcard solution for onboardwise badly
   equipped laptops. Note: I didn't check whether this is a PCMCIA card
   or not. PCMCIA sound cards are probably not supported.

   Also USB may be an alternative. Most USB audio devices are supported
   by recent kernels. An example is Labtec Axis 712 Stereo Headset
   (headphones and microphone) which works in full-duplex mode. For more
   info about this and other Linux-compatible USB audio devices see the
   [http://www.qbik.ch/usb/devices/] USB Survey and my
   [http://tuxmobil.org/usb_linux.html] Mobile USB Linux Hardware Survey
   .
     ________________________________________________________________

12.10.5. External and Internal CD Drives

   For playing CDs/DVDs from an external or internal CD/DVD drive, see
   chapter Section 12.32 CD/DVD Drive below.
     ________________________________________________________________

12.11. Keyboard

12.11.1. Linux Compatibility Check

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

*** 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
     ________________________________________________________________

12.11.2. External (Second) Keyboard

   A second (or external) keyboard can be attached using the PS/2 port
   (I suppose this is not possible via the serial port, since there is
   no keyboard controller for the serial port) or via USB 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.
     ________________________________________________________________

12.11.2.1. External USB Keyboard Configuration

   You may not need any operating system support at all to use a USB
   keyboard if you have a PC architecture. There are several BIOS
   available where the BIOS can provide USB support from a keyboard
   plugged into the root hub on the motherboard. This may or may not
   work through other hubs and does not normally work with add-in
   boards, so you might want to add in support anyway. You definitely
   want to add keyboard support if you activate operating system
   support, as the Linux USB support will disable the BIOS support. You
   also need to use Linux USB keyboard support if you want to use any of
   the "multimedia" types keys that are provided with some USB
   keyboards.

   In the kernel configuration stage, you need to turn on USB Human
   Interface Device (HID) support and Keyboard support. Do not turn on
   USB HIDBP Keyboard support. Perform the normal kernel rebuild and
   installation steps. If you are installing as modules, you need to
   load the hid.o, input.o and keybdev.o modules.

   Check the kernel logs to ensure that your keyboard is being correctly
   sensed by the kernel.

   At this point, you should be able to use your USB keyboard as a
   normal keyboard. Be aware that LILO is not USB aware, and that unless
   your BIOS supports a legacy USB keyboard, you may not be able to
   select a non-default boot image using the USB keyboard. I have
   personally used a USB keyboard (and USB mouse) and experienced no
   problems.
     ________________________________________________________________

12.11.2.2. External PS/2 Keyboard

   Warning

   Don't plug the external keyboard in while the laptop is booted, or
   plug the mouse in the keyboard port and the keyboard in the mouse
   port. On a Toshiba, this caused one user to have to completely
   shutdown the laptop, remove the keyboard/mouse, and do a cold reboot.

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

   [http://linuxconsole.sourceforge.net/input/adapters.html] Parport to
   AUX port adapter In some cases one kbd port and one aux port is not
   enough and you may want to add another keyboard or mouse. You can use
   this adapter, together with the parkbd module for that.

   On some laptops a splitter works to allow both mouse and keyboard to
   be plugged in; on others it doesn't work at all. If you want to use
   both, you better check that it works.
     ________________________________________________________________

12.12. Extra Keys / Hot Keys

12.12.1. Related Documentation

    1. [http://tldp.org/HOWTO/Keyboard-and-Console-HOWTO.html]
       Keyboard-and-Console-HOWTO
     ________________________________________________________________

12.12.2. Utilities

   Some laptops offer extra buttons, e.g. - internet, mail keys, or zone
   keys. If the Linux kernel and XFree86/X.org generate key codes for
   them, hotkeys or just plain xmodmap (see the man page of this X11
   programm for details) may be helpful. If Linux doesn't know about the
   keys, you'll have to patch the kernel first. Though I'm not quite
   sure some tools don't seem to require this, I don't understand how it
   works yet. You may also use [http://www.geocities.com/wmalms/] xhkeys
   . This tool allows you to assign an action to any key that is
   otherwise unused in X (such as the "menu" key on a 105 key keyboard,
   extra keys on some keyboard models, or odd keys on laptops). The
   action assigned to a key or key combination (key and modifiers) can
   be a builtin operation, a call to an external application, the
   sending of a key event (simulating a key press/release), or the
   sending of a mouse button event (simulating a button press/release).

   Tip

   To get information about unknown keyboard or mouse events you may use
   showkey and mev (the last one is from the gpm package) on a console
   screen. But some of the extra keys are not found with these tools.

   [http://keytouch.sourceforge.net/] keyTouch makes it possible to
   easily configure the extra function keys of a keyboard (like
   multimedia keys). It allows the user to define which program will be
   executed when a key is pressed. By using keyTouch-editor the user can
   easily create a keyboard file for his or her laptop to get the laptop
   supported.

   akdaemon is a userland daemon to invoke "the fun keys" by accessing a
   dev node offered by the complementary
   [http://sourceforge.net/projects/akdaemon/] kernel patch or the
   [http://home.zonnet.nl/vanrein/linux/funkey/] funkey programm .

   The [http://ypwong.org/hotkeys/] hotkeys package is supposed to
   listen for those multimedia keys.

   Special ("easy access") buttons are supported by
   [http://lineak.sourceforge.net] LinEAK . Here is an example
   lineakd.conf file:
# LinEAK Configuration file for Compaq Easy Access Key 2800 (6 keys)

# Global settings
KeyboardType            = CIKP800
CdromDevice             = /dev/cdrom
MixerDevice             = /dev/mixer

# Specific keys of your keyboard
internet        = xosview
search          = kfind
mail            = kmail
multimedia      = "artsdsp xmms"
voldown         = "aumix -v -2"
volup           = "aumix -v +2"

# end lineakd.conf

   [http://hocwp.free.fr/xbindkeys/xbindkeys.html] xbindkeys is a
   program that associates keys or mouse buttons to shell commands under
   X. After a little configuration, it can start many commands with the
   keyboard (e.g. control+alt+x starts an xterm) or with the mouse
   buttons.

   [http://www.hadess.net/misc-code.php3] ACME is a small GNOME tool to
   make use of the multimedia buttons present on most laptops and
   Internet keyboards: Volume, Brightness, Power, Eject, My Home,
   Search, E-Mail, Sleep, Screensaver, Finance, WWW, Calculator, Record,
   Close Window, Shade Window, Play, Stop, Pause, Previous, Next,
   Groups, Media, Refresh, and Help buttons. It works on all the
   platforms GNOME supports (laptops and PCs). It uses either OSS or
   ALSA for Volume control.

   For some laptop series there are Linux utilities available to control
   special hotkeys and other features.

     * [http://www.buzzard.me.uk/toshiba/index.html] toshutils by
       Jonathan Buzzard for some Toshiba models.
     * [http://sourceforge.net/projects/tclkeymon/] Tclkeymon is a
       daemon for Toshiba laptops that use ACPI and the Toshiba ACPI
       extensions. It monitors function keys and Toshiba-specific
       buttons (including the CD player buttons and the state of the
       laptop lid) and responds appropriately.
     * [http://tpctl.sourceforge.net] tpctl IBM ThinkPad configuration
       tools for Linux by Thomas Hood.
     * [http://savannah.nongnu.org/projects/tpb/] ThinkPad Buttons
       enables the special keys that are found on the keyboard of an IBM
       ThinkPad. It is possible to bind a program to each of the
       buttons. It has an on-screen display (OSD) to show volume, mute,
       LCD brightness, and some other things.
     * [http://rsim.cs.uiuc.edu/~sachs/tp-scroll/] IBM ThinkPad Scroll
       Daemon
     * [http://people.debian.org/~dz/i8k/] i8k utils for DELL laptops.
     * [http://www.cakey.de/acerhk/] hotkey Linux driver for ACER
       laptops.
     * [http://www.blinkenlights.ch/cgi-bin/fm.pl?get=osle] OSL is a
       simple pbbuttonsd (used on Apple laptops to access the 'special
       keys' like volume, eject, etc.) client. It uses the xosd-lib to
       display the current values which makes it look a lot more like
       OSX than other pbbuttonsd-clients.
     * [http://pbbuttons.berlios.de/] PBButtons enables hotkeys on Apple
       iBook/PowerBook/TiBook. I have heard it works well on x86
       architectures, too.
     * [http://www.dreamind.de/ikeyd.shtml] ikeyd is a simple daemon
       which sets the volume or ejects a CDROM when hotkeys are pressed
       on an iBook/TiBook.
     * [http://perso.wanadoo.fr/pascal.brisset/vaio/] jogdiald for the
       Jog-Dial on SONY laptops offers support for extra keys, too.
     * [http://sourceforge.net/projects/omke/] omke is a set of small
       programs and patches to configure some advanced features of your
       HP OmniBook (usually things that HP has not documented) such as
       enabling/disabling the extra onetouch/multimedia keys. This tool
       works also for some Toshiba notebooks.
     ________________________________________________________________

12.13. Function Key

   The function key (often labelled Fn on the key) is usually used to
   switch on a simulated numeric keyboard, which is provided as a
   separate keypad on desktop keyboards. For those who don't want to use
   the simulation there are additional external numeric keypads
   available for PS/2 ports and I suppose USB ports. Also the function
   key may be used in combination with some F-keys to change display
   brightness, adjust the speaker volume or mute them, lock the
   keyboard, switch between external and internal display, use different
   suspend modes and more. Sometimes these key combinations work out of
   the box with Linux. Some require dedicated tools, for these tools see
   the Hotkey chapter above.
     ________________________________________________________________

12.14. Power Key

   The power key often has different functions, besides power on and off
   it may be used to wake up the machine from suspend mode. This is
   usually achieved by pressing the power button for just a few seconds
   only. If you press it longer (app. more than 5 seconds) it will power
   down fully.

   With modern laptops supporting ACPI it's also possible to achieve
   power off, with ACPI via the /proc/apci/ interface.
     ________________________________________________________________

12.15. Extra LEDs

   Some laptops offer extra LED, e.g. - mail - LEDs. The tool setleds
   (which is part of [http://lct.sourceforge.net/] Linux Console Tools)
   can be helpful to make use of them.
     ________________________________________________________________

12.16. Numeric Keypad

   On desktop keyboards the numeric keypad is usually separated from the
   character set, but laptops don't have a separated numeric keypad.
   There are different ways to emulate one, e.g. with the Fn key or with
   NUM-LOCK key. Also external numeric keyboards which connect to the
   PS/2 port (or USB, RS232) are available.

   As described above, the numeric keyboard has to be used if you want
   to change the X11 resolution by typing <CTL><ALT><+> or
   <CTL><ALT><->. If this doesn't work or is too complicated, you may
   use [http://www.dakotacom.net/~donut/programs/gvidm.html] gvidm
   Running gvidm will pop up a list of available modes and allows the
   user to select one if desired. This makes it perfect for running from
   an application menu or a hotkey, so you don't have to use ram for an
   applet constantly running. If you are running dual or multi-head
   displays, it will give you a list of screens so you can select the
   appropriate one. Also you may use xvidtune [-next | -prev ]. To check
   the current resolution you may use xwininfo -root, if xvidtune is not
   at hand.
     ________________________________________________________________

12.17. Pointing Devices - Mice and Their Relatives

12.17.1. Linux Compatibility Check

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

12.17.2. Related Documentation

    1. [http://tldp.org/HOWTO/3-Button-Mouse.html] 3-Button-Mouse-HOWTO
       for serial mice
    2. [http://tldp.org/HOWTO/Kernel-HOWTO/] Kernel-HOWTO
     ________________________________________________________________

12.17.3. Mice Species

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

12.17.4. PS/2 Mice

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

   Speaking of Emulate3Buttons, 100ms is usually better than the 50ms
   allowed in most default setups of /etc/X11/XF86Config for XFree86
   3.x:
Section "Pointer"
        ...
        Emulate3Buttons
        Emulate3Timeout    100
        ...
EndSection

   Or in /etc/X11/XF86Config-4 for XFree86 4.x:
Section "InputDevice"
        ...
        Option          "Emulate3Timeout"       "100"
        Option          "Emulate3Buttons"       "true"
        ...
EndSection
     ________________________________________________________________

12.17.5. Touchpad

   Usually a touchpad works with the PS/2 mouse device /dev/psaux and
   the PS/2 protocol (for GPM and X11, for X11 it seems also worth to
   check the GlidePointPS/2 protocol).

   The [http://w1.894.telia.com/~u89404340/touchpad/index.html]
   Synaptics TouchPad driver has the following functions (some functions
   require features from the touchpad that must be present, multifinger
   taps for example):

    1. Movement with adjustable, non-linear acceleration and speed
       (Options: MinSpeed, MaxSpeed, AccelFactor)
    2. Button events through short touching of the touchpad (Options:
       MaxTapTime, MaxTapMove)
    3. Double-Button events through double short touching of the
       touchpad
    4. Dragging through short touching and holding down the finger on
       the touchpad
    5. Middle and right button events on the upper and lower corner of
       the touchpad (Option: Edges)
    6. Scrolling (button four and five events) through moving the finger
       on the right side of the touchpad (Options: Edges,
       VertScrollDelta)
    7. The up/down button sends button four/five events
    8. Adjustable finger detection (Option: Finger)
    9. Ext Mouse repeater support - Alpha! (Option: Repeater)
   10. Multifinger taps: two finger for middle button and three finger
       for right button events
   11. Online configuration through shared-memory (in development)
       (Option: SHMConfig)

   The synclient command is provived with the driver sources (note it's
   not included in SuSE Linux, at least not until 9.3). The command
   queries and modifies the Synaptics TouchPad driver parameters on the
   fly.

   Tip

   Tipping with one, two or three fingers on the touchpad simultaneously
   results in pressing the left, middle and respectively the right
   mouse-button.

   There is also another touchpad driver available.
   [http://www.compass.com/synaptics/] The Synaptics Touchpad Linux
   Driver - tpconfig supports pointing devices used in notebooks by
   Acer, Compaq, Dell, Gateway, Olivetti, Texas Instruments, Winbook,
   and others.

   Dell and Sony have started incorporating a touchpad, touchstick from
   ALPS. They are in at least the Dell Latitude CPx and the Sony VAIO
   laptop lines. Maintainer Bruce Kall writes: "tpconfig does NOT
   support them at this time, but I am in the process of getting the API
   from ALPS and will be incorporating this in the next version of
   tpconfig. The Dell's also incorporate the ALPS GlideStick in the
   middle of the keyboard (like the stick pointer in some of the IBM
   Thinkpads). I also intend to support the disabling of "tapping" the
   GlideStick as well. Tapping of the touchpad/touchsticks drives me
   crazy, I'm not sure about you (causes the "selection" of things on
   the screen when you don't want to)!"

   tpconfig is a command-line utility to set options on Synaptics
   Touchpad and (now) ALPS Glidepad/ Stickpointers. Most people
   primarily use it to turn off the "tap mode" on laptop touchpads.

   How to use tpconfig: tpconfig is currently supported as a
   command-line configuration tool. The PS/2 port does not currently
   support sharing. Therefore the tpconfig utility will not work while
   any other mouse driver is loaded (e.g. gpm). This also means that you
   cannot use tpconfig while X Windows is running. The suggested use of
   tpconfig is to run it from a startup script before gpm is started.

   [http://rsim.cs.uiuc.edu/~sachs/tp-scroll/] IBM ThinkPad Scroll
   Daemon

   Not all touchpads are being from Synaptics, e.g some Gateways
   incorporate an EZ-Pad (Registered TM) and there might be other
   brands. The [http://www.synaptics.com/decaf/utilities/tprev.exe]
   TPREV.EXE utility will verify you have a Synaptics touchpad.

   The recent [ftp://ftp.prosa.it/pub/gpm/] gpm package (version >=1.8,
   maybe earlier versions contain touchpad support, too) includes the
   above mentioned Synaptics touchpad device driver. This device driver
   has been developed by H. Davies <hdavies_AT_ameritech.net>. Instead
   of using the PS/2 compatibility mode of touchpad devices, you can now
   use native touchpad mode with some pretty impressive features.

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

     * a "tap" on the TouchPad causes a left mouse click
     * a "tap" followed quickly by a finger motion causes a left button
       drag type action.
     * a "tap" 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
     * more pressure on the touch pad speeds the motion of the cursor
     * a "tap" with a motion component (default > 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).
     * 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).

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

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

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

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

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

12.17.6. Jog-Dial

   The "Jog-Dial" is an input device used in the SONY VAIO laptop
   series. You may find a
   [http://www004.upp.so-net.ne.jp/t-kinjo/vaio/index_e.html] Jog-Dial
   driver by Takaya Kinjo. Probably you have to change two things in the
   spicdriver/Makefile:

   CCFLAG has to be extended with -D_LOOSE_KERNEL_NAMES

   CCFLAG has to be extended with
   -I/usr/src/linux-<kernel-version>/include

   The README seems to be in Japanese, here is an English version.

$ tar xvzf jogutils.tar.gz
$ cd jogutils
$ make
$ su
# mknod /dev/spic c 60 0
# modprobe spicdriver/spicdriver
# exit
$ cp jogapp/rcfile ~/.jogapprc
$ jogapp/jogapp

   ISHIKAWA Mutsumi wrote the
   [http://perso.wanadoo.fr/pascal.brisset/vaio/] jogdiald driver, which
   runs entirely in user-space (no kernel modules required).

   [http://linuxbrit.co.uk/rsjog/] rsjog. is a modification of the
   [http://sjog.sourceforge.net/] sjog utility.
     ________________________________________________________________

12.17.7. Touchscreens

   The only modern laptops I know which include a touchscreen are the
   Fujitsu Biblo 112/142 (aka MC 30) and the Palmax PD 1000/1100 (aka
   IPC 1000/1100).

   The latest version of the [http://www.cs.nmsu.edu/~pfeiffer/#pen]
   Linux Compaq Concerto Pen Driver is available from Joe Pfeiffer's
   home page.

   A current survey of drivers you may find at my page
   [http://tuxmobil.org/touch_laptops.html] Touchscreen Laptops and
   Linux .
     ________________________________________________________________

12.17.8. Pen Devices, Mousepoints

   IBM and Toshiba laptops currently come with a pen devices instead of
   a mousepad or trackball.

   Tip

   It needs some time to get used to this kind of pointer device. It may
   help to rest your palm at the front rest. Also it's recommended to
   reduce the mouse speed.
     ________________________________________________________________

12.17.9. External Mouse

   For better handling, e.g. with a 3 button mouse you may use an
   external mouse. This is usually a serial mouse or a PS/2 mouse, or in
   our days a USB mouse, appropriate to the port your laptop offers.
   Usually this is no problem. The only thing I currently don't know a
   solution for is the automagic detection of a newly plugged in mouse
   from X11. To get it work you have to restart your X server.
     ________________________________________________________________

12.17.9.1. PS/2 Mouse

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

   Warning

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

12.17.9.2. Wheel Mouse

   [http://jonatkins.org/imwheel/] Imwheel makes the wheel of your
   Intellimouse (and other wheel and stick mice) work in Linux/X11 to
   scroll windows up and down, or send keys to programs. It runs in the
   background as a daemon and requires little reconfiguration of the
   XWindows setup. 4 or more button mice and Alps Glidepad 'Taps' may
   also be used. imwheel includes a modified gpm for an alternate method
   of wheel input.

   See also the [http://www.inria.fr/koala/colas/mouse-wheel-scroll/]
   WHEEL Mouse FAQ which describes how to get lots of X applications to
   recognise the scrolling action. For current instructions on XFree86
   4.x see [http://www.xfree86.org/current/mouse.html] XFree86 4.x -
   Mouse Docs.
     ________________________________________________________________

12.17.9.3. USB Mouse

   This part is taken from The Linux USB Sub-System by Brad Hards.
     ________________________________________________________________

12.17.9.3.1. USB Human Interface Device (HID) Configuration

12.17.9.3.1.1. General HID Configuration

   There are two options for using a USB mouse or a USB keyboard - the
   standalone Boot Protocol way and the full featured HID driver way.
   The Boot Protocol way is generally inferior, and this document
   describes the full featured way. The Boot Protocol way may be
   appropriate for embedded systems and other systems with resource
   constraints and no real need for the full keyboard and mouse
   capabilities.

   It is important to remember that the HID driver handles those devices
   (or actually those interfaces on each device) that claim to comply
   with the Human Interface Device (HID) specification. However the HID
   specification doesn't say anything about what the HID driver should
   do with information received from a HID device, or where the
   information that is sent to a device comes from, since this is
   obviously dependent on what the device is supposed to be doing, and
   what the operating system is. Linux (at the operating system kernel
   level) supports four interfaces to a HID device - keyboard, mouse,
   joystick and a generic interface, known as the event interface.
     ________________________________________________________________

12.17.9.3.1.2. HID Mouse Configuration

   In the kernel configuration stage, you need to turn on USB Human
   Interface Device (HID) support and Mouse Support Do not turn on USB
   HIDBP Mouse support. Perform the normal kernel rebuild and
   installation steps. If you are installing as modules, you need to
   load the input.o, hid.o and mousedev.o modules.

   Plug in a USB mouse and check that your mouse has been correctly
   sensed by the kernel. If you don't have a kernel message, look for
   the changes to /proc/bus/usb/devices.

   Since USB supports multiple identical devices, you can have multiple
   mice plugged in. You can get each mouse seperately, or you can get
   them all mixed together. You almost always want the mixed version,
   and that is what will be used together. You need to set up a device
   node entry for the mixed mice. It is customary to create the entries
   for this device in the /dev/input/ directory.

   Use the following commands:
mkdir /dev/input
mknod /dev/input/mice c 13 63

   Tip

   If you are unsure whether you are configuring the right mouse device,
   use cat /dev/input/mice (or other appropriate devices names). In case
   you do this for the correct mouse, you should see some bizarre
   looking characters as you move the mouse or click any of the buttons.

   If you want to use the mouse under X, you have various options. Which
   one you select is dependent on what version of XFree86 you are using
   and whether you are using only USB for your mouse (or mice), or
   whether you want to use a USB mouse and some other kind of pointer
   device.

   You need to edit the XF86Config file (usually
   /usr/X11R6/lib/X11/XF86Config or /etc/X11/XF86Config).

   If you are using XFree86 version 4.0 or later, add an InputDevice
   section that looks like the following:
Section "InputDevice"
     Identifier  "USB Mice"
     Driver      "mouse"
     Option      "Protocol"   "IMPS/2"
     Option      "Device"     "/dev/input/mice"
EndSection

   or, if you want to use a wheel mouse, something like this may be more
   useful:
Section "InputDevice"
     Identifier  "USB Mice"
     Driver      "mouse"
     Option      "Protocol"   "IMPS/2"
     Option      "Device"     "/dev/input/mice"
     Option      "ZAxisMapping"   "4 5"
     Option      "Buttons"        "5"
EndSection

   Consult the [http://www.xfree86.org/current/mouse.html] current
   XFree86 documentation for a detailed explanation and more examples.

   You also need to add an entry to each applicable ServerLayout
   Section. These are normally at the end of the configuration file. If
   you only have a USB mouse (or USB mice), then replace the line with
   the "CorePointer" entry with the following line:
InputDevice "USB Mice" "CorePointer"

   If you want to use both a USB mouse (or USB mice) and some other kind
   of pointer device, then add (do not replace) the following line to
   the applicable ServerLayout sections:
InputDevice "USB Mice" "SendCoreEvents"

   If you are using only a USB mouse (or USB mice) with XFree86 3.3,
   edit the Pointer section so that it looks like the following:
Section "Pointer"
    Protocol    "IMPS/2"
    Device      "/dev/input/mice"
EndSection

   If you are trying to use a USB mouse (or USB mice) in addition to
   another pointer type device with XFree86 3.3, then you need to use
   the XInput extensions. Keep the existing Pointer (or modify it as
   required for the other device if you are doing an initial
   installation), and add the following entry (anywhere sensible,
   ideally in the Input devices area):
Section "Xinput"
   SubSection "Mouse"
  DeviceName   "USB Mice"
  Protocol     "IMPS/2"
  Port         "/dev/input/mice"
  AlwaysCore
   EndSubSection
EndSection

   Restart the X server. If you don't have any mouse support at this
   point, remember that Ctrl-Alt-F1 will get you a virtual terminal that
   you can use to kill the X server and start debugging from the error
   messages.

   If you want to use the mouse under gpm, run (or kill and restart if
   it is already running) gpm with the following options. gpm -m
   /dev/input/mice -t imps2 (as superuser). You can make this the
   default if you edit the initialisation files. These are typically
   named something like rc.d and are in /etc/rc.d/ on RedHat
   distributions.

   If you have both a USB mouse (or USB mice) and some other kind of
   pointer device, you may wish to use gpm in repeater mode. If you have
   a PS/2 mouse on /dev/psaux and a USB mouse (or USB mice) on
   /dev/input/mice, then the following gpm command would probably be
   appropriate: gpm -m /dev/input/mice -t imps2 -M -m /dev/psaux -t ps2
   -R imps2. Note that this will make the output appear on /dev/gpmdata,
   which is a FIFO and does not need to be created in advance. You can
   use this as the mouse "device" to non-X programs, and both mice will
   work together.

   Table 12-1. Arguments for the -t and -R option of gpm.
   option description
   ms     MicroSoft compatible serial mouse
   ps2    PS/2 or C&T 82C710
   bm     Logitech bus mouse
   bm     ATI XL bus mouse
   mb     MicroSoft bus mouse
   msc    Mouse Systems serial mouse
   logi   older mouse
   mman   Mouse Man protocol, serial Logitech mouse
   sun    SUN mouse, three button
   ms3    Intellimouse with wheel, at serial port
   imps2  Intellimouse with wheel, at PS/2 port
   pnp    PnP mice, alternative to ms
   mm     MM series
   bare   oldest serial two button mouse
     ________________________________________________________________

12.17.9.4. Wrist Input Device - Twiddler

   The gpm contains a driver for the Twiddler device at the serial port.
   For information about the Twiddler see [http://www.handykey.com/]
   Handykey Corporation .
     ________________________________________________________________

12.17.10. Macintosh PowerBooks

   PowerBooks have a trackpad and only one button, although you can plug
   in external multi-button USB mice. The usual thing is to map a couple
   of keys on the keyboard to the middle and right mouse buttons; your
   Linux distribution should come with instructions on how to configure
   this (it's not specific to laptops, as all Apple mice are
   single-button).

   If you are using the Xpmac server, the default is option-1 and
   option-2, and you can change this by passing -middlekey <keycode>
   -rightkey <keycode> arguments to Xpmac, and -nooptionmouse if you
   don't want the option key to be needed.

   If you are using XFree86, you pass adb_buttons=<middlekey>,<rightkey>
   kernel arguments (no option is required). I use adb_buttons=58,55 to
   map the option and Apple/command keys (which are little-used in
   Linux); use e.g. xev to find out the keycode for a given key.
     ________________________________________________________________

12.18. Advanced Power Management - APM

12.18.1. Linux Compatibility Check

   Start by reading the
   [http://tldp.org/HOWTO/Battery-Powered/index.html]
   Battery-Powered-mini-HOWTO.

   For APM to work the machine's firmware must implement the APM
   Specification. Linux supports versions 1.0 through 1.2 of the
   standard. To work with Linux the APM BIOS must support 32-bit
   protected mode connections.

   To display information about the APM BIOS on your system you can run
   dmesg | grep apm command or look in the /proc/apm file.
     ________________________________________________________________

12.18.2. Introduction

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

12.18.2.1. Kernel Support

   You need a kernel that has the APM driver compiled in using the
   appropriate kernel configuration options. Currently most
   distributions do not ship kernels with the APM driver enabled so you
   may have to enable the driver using a boot option or to compile a
   custom kernel. Please see [http://tldp.org/HOWTO/Kernel-HOWTO/]
   Kernel-HOWTO or your distribution manual for details.

   The APM driver can be modularized but this is not recommended since
   many drivers will disable their APM features if the APM driver is not
   present when they initialize themselves.

   The available APM options are (please see
   Documentation/Configure.help in the kernel source tree for more
   details):

     * CONFIG_APM_IGNORE_USER_SUSPEND Just a workaround for some NEC
       Versa M series laptops.
     * CONFIG_APM_DO_ENABLE Enable APM features at boot time.
     * CONFIG_APM_CPU_IDLE Puts CPU in power save mode, if there is
       nothing to do for the kernel.
     * CONFIG_APM_DISPLAY_BLANK 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.
     * CONFIG_APM_POWER_OFF Turns the machine completely down, when
       using halt. This feature works with most laptops without
       problems.
     * CONFIG_APM_IGNORE_MULTIPLE_SUSPEND Just a workaround for IBM(TM)
       ThinkPad 560.
     * CONFIG_APM_IGNORE_SUSPEND_BOUNCE Just a workaround for Dell
       Inspiron 3200 and other notebooks.
     * CONFIG_APM_RTC_IS_GMT Stores time in Greenwich Mean Time format.
       It is in fact recommended to store GMT in your real time clock
       (RTC) in the BIOS.
     * CONFIG_APM_ALLOW_INTS Resolves some problems with Suspend to Disk
       for some laptops, for instance many newer IBM(TM) ThinkPads.
     * CONFIG_SMP Symmetric Multi-Processing support. This enables
       support for systems with more than one CPU. If you have a system
       with only one CPU, like most personal computers, say N. Though
       the default seems to be Y. So it may be enabled if you are
       unaware. I have got reports that SMP support enabled does
       interfere with APM. So with a single CPU machine like a laptop
       you are on the save side, when you N.

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

12.18.2.2. Userland Support

   The most important userland utility is
   [http://worldvisions.ca/~apenwarr/apmd/] apmd, a daemon that handles
   APM events.

   If you run a 2.2.x or later kernel and want to experiment, Gabor Kuti
   <seasons_AT_falcon.sch.bme.hu> has made a kernel patch that allows
   you to hibernate any Linux system to disk, even if your computers APM
   BIOS doesn't support it directly. In my humble opinion you don't need
   this features if your laptop provides a function key to invoke
   suspend mode directly.

   Please see the [http://tldp.org/HOWTO/Battery-Powered/] Battery
   Powered Linux Mini-HOWTO for detailed information.

   Here's what apmd can do:

     * apmd(8): logs the battery status to syslog every now and then and
       runs a proxy script that can take action before suspend or after
       resume
     * apm(1): prints the current battery status or suspends the
       computer
     * apmsleep(1): suspends the machine for a limited time
     * xapm(1x): provides a battery meter for X11
     * libapm.a: a library for writing APM applications

   Some APM firmware fails to restore mixer settings properly which can
   result in squeals of feedback in the music after the machine has
   resumed. A solution is to set up the proxy script so that it calls a
   mixer application after resume.

   From the apmsleep(1) man page: Some computers, especially laptops,
   can wake up from a low-power suspend to DRAM mode using the Real-time
   clock (RTC) chip. Apmsleep can be used to set the alarm time in the
   RTC and to go into suspend or standby mode. An interrupt from the RTC
   causes the computer to wake-up. The program detects this event, by
   waiting for a leap in the kernel time and terminates successfully. If
   no time leap occurs within one minute, or something goes wrong, the
   exit value will be non-zero. Apmsleep is part of the apmd package.

   In 2001 Richard Gooch wrote a simple apmd alternative which is
   available in the [http://www.atnf.csiro.au/~rgooch/linux/] pmutils
   package.

   Also, take a look at apmcd (apm based crontab) at
   [ftp://ftp.binary9.net/pub/linux/] ftp://ftp.binary9.net/pub/linux/ .
   This tool was written by [http://mrnick.binary9.net/] Nicolas J. Leon
   <nicholas_AT_binary9.net>.
     ________________________________________________________________

12.18.3. Caveats

   If you use another operating system at the same computer make sure
   that its "suspend" and "hibernate" features don't write to partitions
   that are used by Linux.
     ________________________________________________________________

12.18.4. Troubleshooting

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

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

   According to Kernel docs Documentation/Configure.help: "Some other
   things you should try when experiencing seemingly random, weird
   problems:

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

12.18.5. APM and PCMCIA

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

12.18.6. APM and Resuming X Windows

   Some machines have APM firmware that fails to save and restore
   display controller chip registers across a suspend. Earlier versions
   of the XFree86 X server did not restore the screen properly after
   resume, a problem which was addressed by
   [http://www.linuxlaptops.com/ll/xresume.html] Linux Laptops. However,
   contemporary versions of XFree86 mostly do the right thing.

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

12.18.7. Software Suspend

   [http://www.sourceforge.net/projects/swsusp] Software suspend enables
   the possibility of suspending a 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.

   Software suspends may even be better than hibernate, because now I
   can suspend my Linux system, boot into Microsoft Windows, perform a
   few illegal operations and be shut down, and then restart my Linux
   setup exactly where I left off! This is something that cannot be done
   with hibernation, since that always restores the last state that you
   suspended from, be it Microsoft Windows or Linux. So if I want to
   switch to Microsoft Windows to play games or do anything else, I can
   leave my Linux desktop exactly as it is and return to how I left it.

   In recent 2.6 kernels SoftWareSuspend is part of the kernel. You may
   find it in the section Power Management. But there are also backports
   to 2.4 available.

   Since the original Software Suspend code was written by Gabor Kuti
   and Pavel Machek back in 1998, three different implementations have
   been created for the 2.6 kernel, all forks of the same original
   codebase.

   [http://www.tuxonice.net/] TuxOnIce, former known as Software Suspend
   2, has a long feature list, including the ability to cancel a suspend
   by pressing Escape, image compression to save time and space, a
   versatile plugin architecture, and support for machines with Highmem,
   preemption and SMP.
     ________________________________________________________________

12.18.8. Tips and Tricks

12.18.8.1. Battery Status on Text Console

   You may use the following entry in .bashrc to show the battery level
   on the command prompt.
     ________________________________________________________________

12.18.8.1.1. When Using APM

export PS1="\$(cat /proc/apm | awk '{print \$7}') \h:\w\$ "
     ________________________________________________________________

12.18.8.1.2. When Using ACPI

# Color the bash prompt in function of the percentage of battery
# with acpi subsystem.
# Based on the originally apm based script that has been posted
# on debian-laptop by
# Jason Kraftcheck <kraftche at cae.wisc.edu>.
#
# This script is licensed under the GNU GPL version 2 or later,
# see /usr/share/common-licences/GPL on a Debian system or
# http://www.gnu.org/copyleft/gpl.html on the web.

# (c) 2003 Fabio 'farnis' Sirna <farnis at libero dot it>

function acpi_percent()
{
 if [ `cat /proc/acpi/battery/BAT0/state | grep present: |cut -d\  -f18` = "ye
s" ]; then
  {
   CAPACITY=`cat /proc/acpi/battery/BAT0/info |grep "design capacity:"|cut -d\
  -f11`
   LEVEL=`cat /proc/acpi/battery/BAT0/state | grep remaining|cut -d\  -f8`
   ACPI_PERCENT=`echo $(( $LEVEL * 100 / $CAPACITY ))`
   if [ "$LEVEL" = "$CAPACITY" ]; then
    echo FULL
   else
    echo $ACPI_PERCENT%
   fi
  }
 else echo "NO BATTERY"
 fi
}

function acpi_charge()
{
 ACPI_CHARGE=`cat /proc/acpi/ac_adapter/AC/state | cut -d\  -f20`
 case $ACPI_CHARGE in
       *on-line*)
         ACPI_CHARGE="+" ;;
       *off-line*)
         ACPI_CHARGE="-" ;;
     esac
     echo $ACPI_CHARGE
}

function acpi_color()
   {
     if  [  "$(acpi_charge)"  =  "+"  ];  then
      {
       if [ `cat /proc/acpi/battery/BAT0/state | grep present: |cut -d\  -f18`
 = "no" ]; then
        echo  "0;31"
       else echo  "1;32"
      fi
     }
     else
       case  $(acpi_percent)  in
          10?%)  echo  "0;32"  ;;
           9?%)  echo  "0;32"  ;;
           8?%)  echo  "0;32"  ;;
           7?%)  echo  "0;32"  ;;
           6?%)  echo  "0;32"  ;;
           5?%)  echo  "0;32"  ;;
           4?%)  echo  "0;33"  ;;
           3?%)  echo  "0;33"  ;;
           2?%)  echo  "0;33"  ;;
           1?%)  echo  "0;31"  ;;
            ?%)  echo  "0;31;5"  ;;
             *)  echo  "0;35"  ;;

       esac
     fi
   }

function  acpi_color_prompt
   {
     PS1='\[\e[$(acpi_color)m\][$(acpi_charge)$(acpi_percent)][\t] \u:\w\$>\[\
e[0;37m\] '
   }

   #  linux  console
   if  [  "$TERM"  =  "linux"  ];  then
     PROMPT_COMMAND=acpi_color_prompt
   fi

   function  echo_acpi
   {
     echo -n "($(acpi_charge)$(acpi_percent)) "
   }
     ________________________________________________________________

12.18.8.2. Debian GNU/Linux

   All "normal" Debian GNU/Linux kernels are APM capable, they just need
   an append line added to the boot loader configuration file (e.g.
   /etc/lilo.conf.
append="apm=on"

   You might use the following parameters (with the appropriate changes)
   in your boot loader configuration file (e.g. /etc/lilo.conf to
   experiment with ACPI and APM, when compiled in the same kernel. Usage
   of APM and ACPI at the same time doesn't work, see Kernel docs for
   details.
append="acpi=off apm=on"
     ________________________________________________________________

12.19. ACPI

12.19.1. Related Documentation

    1. [http://xtrinsic.com/geek/articles/acpi.phtml] ACPI-HOWTO I by
       Emma Jane Hogbin
    2. [http://www.columbia.edu/~ariel/acpi/acpi_howto.txt] ACPI-HOWTO
       II by Ariel Glenn. This document describes how to compile,
       install, and use the ACPI driver for Linux and its associated
       applications.
    3. [http://www.cpqlinux.com/acpi-howto.html] ACPI-HOWTO III
    4. [http://acpi.sourceforge.net/wiki] ACPI4Linux Project and its
       [http://acpi.sourceforge.net/wiki] Wiki
    5. [http://www.acpi.info/] ACPI Info provides the ACPI
       specification.
    6. Section 12.3 the CPU chapter of this guide
     ________________________________________________________________

12.19.2. ACPI Details

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

   You might use the following parameters (with the appropriate changes)
   in your boot loader configuration file (e.g. /etc/lilo.conf to
   experiment with ACPI and APM, when compiled in the same kernel. Usage
   of APM and ACPI at the same time doesn't work, see Kernel docs for
   details.
append="acpi=on apm=off"

   The [http://sourceforge.net/projects/acpi] Linux ACPI Project is
   committed to the development of fundamental ACPI (Advanced
   Configuration and Power Interface) components for Linux. This
   includes a generic ACPI table parser, AML interpreter, bus and device
   drivers, policy, user interface, and support tools.

   The [http://www.netego.de/hpc?p=acpipower&l=en] E-AcpiPower epplet is
   based on E-Power. It is modified to read battery status information
   using the new acpi kernel module, making it much more accurate and
   reliable than the old APM method.

   [http://rffr.de/acpi] TCL/TK script which allows setting the ACPI CPU
   performance state using a graphical interface under Linux.

   [http://grahame.angrygoats.net/acpi.shtml] Linux ACPI client is a
   command-line tool, similar to the apm command, that provides
   information on battery status, AC power, and thermal readings.
     ________________________________________________________________

12.20. Power Management Unit - PMU (PowerBook)

   PowerBooks don't support the APM specification, but they have a
   separate protocol for their PMU (Power Management Unit). There is a
   free (GPL) daemon called pmud that handles power management; it can
   monitor the battery level, put the machine to sleep, and set
   different levels of power consumption. It was written by Stephan
   Leemburg. There is also an older utility called snooze available from
   the same sites that just puts the PowerBook to sleep.
   [http://pbbuttons.berlios.de/] PBButtons now includes the
   functionality of pmud.

   Cron works fine on my laptop as I never shut it off completely. I
   only put it to sleep. When it wakes up, the unexecuted cron jobs from
   the sleep period all run.

   This part is a courtesy of Steven G. Johnson.
     ________________________________________________________________

12.21. Batteries

   

   May the batteries be with you.
     Unknown AuthorEss

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

   Please see the [http://tldp.org/HOWTO/Battery-Powered/] Battery
   Powered Linux Mini-HOWTO and the
   [http://tuxmobil.org/mobile_battery.html] TuxMobil battery page for
   further information. A survey of
   [http://tuxmobil.org/energy_laptops.html] other means to supply power
   for mobile computers e.g. solar energy is available at TuxMobil. For
   general information about batteries see the
   [http://www.technick.net/public/code/cp_dpage.php?aiocp_dp=guide_bpw2
   _00_toc] Battery FAQ.

   [http://www.canb.auug.org.au/~sfr/] Stephen Rothwell proposed a patch
   that will add multiple battery support to the kernel APM.

   From the mobile-update page (modified by WH): Discharge the battery.
   If your battery runs only for about 20 minutes, you probably suffer
   from memory effects. Most laptops do not discharge the battery
   properly. With low powered devices like old computer fans they can be
   discharged completely. This removes memory effects. You should do so
   even with LiIon batteries, though they don't suffer much from memory
   effect (the manual of an IBM(TM) 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.

   The [http://karl.jorgensen.com/battery-stats/] battery-stats package
   collects statistics about the (lack of) charge on laptop batteries.
   It also contains a simple graph utility to show the battery charge
   over time or detect a misbehaviour of the battery which might
   announce a coming end of batterylife. Battery-stats knows nothing
   about electrochemical stuff going on inside batteries - hence it will
   not try to make any predictions whatsoever. But somebody with
   knowledge of batteries should be able to tell whether they are
   behaving OK. This package uses APM; there is no support for ACPI yet.

   [http://ibam.sourceforge.net/] IBAM (Intelligent BAttery Monitor) is
   an advanced battery monitor for laptops, which uses statistical and
   adaptive linear methods to provide accurate estimations of minutes of
   battery left or of the time needed until full recharge. This package
   uses APM; there is no support for ACPI yet.

   [http://www-leland.stanford.edu/~bbense/toys/] A hacked rclock .
   Booker C. Bense has hacked the rclock program to include a simple
   battery power meter on the clock face.

   [http://www.jaist.ac.jp/~daisuke/Linux/xbatstat.html] xbatstat . A
   battery level status checker for Linux and X.
     ________________________________________________________________

12.21.1. Smart Battery Support

   The [https://sourceforge.net/projects/sbs-linux/] sbsutils package is
   a set of utilities programs to handle the Smart Battery on laptops,
   it offers Linux kernel & ACPI support for the Smart Battery System
   found in some laptop computers.
     ________________________________________________________________

12.21.2. How to Improve Battery Uptime

   These are the most important factors which have influence on the
   battery uptime. Please see the appropriate chapters for power saving
   tips:

     * Section 12.3 CPU
     * fan
     * Section 12.22 memory
     * Section 12.6graphics card
     * Section 12.33 hard disk drive
     * Section 12.32 optical drive

   Getting your computer to use the least amount of power can be
   problematic. Intel's [http://www.linuxpowertop.org/index.php]
   http://www.linuxpowertop.org/index.php project provides information
   on reducing power usage, tips, and tricks for Intel-based computers
   running Linux. As a first step, Intel has released PowerTOP, a tool
   that helps you find what software is using the most power. By fixing
   (or closing) these applications or processes, you can immediately see
   the power savings in the tool. You'll also see the estimated time
   left for battery power if you are running a laptop. The Tips & Tricks
   page has fixes for a lot of the issues that are already found.
     ________________________________________________________________

12.22. Memory

   Unfortunately some laptops come with proprietary memory chips. So
   they are not interchangeable between different models. But this seems
   changing. With some models it's very difficult to install the memory
   if you have to open the case in detail. But this is also changing.
   Places were the memory can be changed easily are dedicated
   maintenance cover on the backside or often if you only have to remove
   the keyboard.
     ________________________________________________________________

12.23. Plug-and-Play Devices (PnP)

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

   ISA PnP tools is another useful package.

   The latest PCMCIA driver package (>3.1.0) has utilities lspnp and
   setpnp to manipulate PNP settings.
     ________________________________________________________________

12.24. Docking Station / Port Replicator

12.24.1. Definitions

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

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

12.24.2. Other Solutions

   I don't use a docking station myself. They seem really expensive and
   I can't see any usefulness. Alright you have to deal 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 expansion bus slots (e.g. for some
   excotic SCSI device).

   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 [http://www.tekram.com/] Tekram . It
   supports these connectors: 10Base-T (RJ-45); PS/2 Keyboard; PS/2
   Mouse; 25-Pin Printer Port (LPT); IR Transceiver; Power (6 VDC). So
   it seems that a VGA port and a port to connect a desktop PC directly
   are missing. This device should work with Linux/IrDA®, though I
   couldn't check it out.

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

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

12.24.3. Docking Station Connection Methods

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

    1. SCSI port (very seldom)
    2. parallel port
    3. (proprietary) docking port (common)
    4. USB (often offered by third party manufacturers)

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

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

   1) Supporting additional disks on the docking station SCSI card

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

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

   2) Supporting additional network adaptors in the docking station

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

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

# check, if laptop is in docking-station (4 PCMCIA slots available)
# or if it is standalone (2 slots available)
# Start after cardmgr has started
#
# Friedhelm Kueck mailto:fk_AT_impress.de
# 08-Sep-1998
#
# Find No. of Sockets
SOCKETS=`tail -1 /var/run/stab | cut -d ":" -f 1`
case "$SOCKETS" in
"Socket 3")
echo Laptop is in Dockingstation ...
echo Disabeling internal LCD Display for X11
echo
cp /etc/XF86Config_extern /etc/XF86Config
#
# Setup of PCMCIA Network Interface after start of cardmgr
#
echo
echo "Setting up eth0 for use at Network ..."
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
;;

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

12.24.4. Universal USB Port Replicators

   I have used a Typhoon USB 2.0 7in1 Docking Station made by
   [http://www.anubisline.com/] Anubis P/N 83057 to check the Linux
   compatibility of such devices. Actually this device should be named
   port replicator, because it does not have any extension slots. This
   device doesn't have a VGA port to connect to an external display.
   Only a few USB docking stations have this feature. It would be nice
   to get a report whether a VGA port works or not. Tested with laptop
   COMPAQ M700 (USB 1.1) and custom made kernel 2.6.1. Note the port
   replicator didn't work with an Apple PowerBook G4.

   How does its different ports work with Linux:

     * USB 2.0 A-type downstream: works with external hard disk and
       mouse out of the box
     * USB 2.0 A-type downstream: see above
     * PS/2 keyboard: works out of the box
     * PS/2 mouse: works, but for 2.6 Kernels you have to specifiy the
       right mouse protocol psmouse_proto=imps (if psmouse is compiled
       as a module).
     * serial port: tested with serial mouse, doesn't seem to work,
       /dev/ttyUSB0 was assigned
     * parallel port: tested, device /dev/usb/usblp0 assigned, works
       e.g. with HP LaserJet 2100
     * LAN: usbnet loads, device eth1 was assigned, ifconfig or pump
       configures the network device
     * transfer port aka host link: works with usbnet module, use
       ifconfig usb0 to configure the network interface, (USB 1.1 host
       link B-type) untested

   Here is the output of dmesg for the Typhoon port replicator:
hub 1-0:1.0: new USB device on port 1, assigned address 26
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
hub 1-1:1.0: new USB device on port 3, assigned address 27
hub 1-1.3:1.0: USB hub found
hub 1-1.3:1.0: 4 ports detected
hub 1-1:1.0: new USB device on port 4, assigned address 28
eth1: register usbnet at usb-0000:00:07.2-1.4, ASIX AX8817x USB 2.0 Ethernet
hub 1-1.3:1.0: new USB device on port 1, assigned address 29
usb0: register usbnet at usb-0000:00:07.2-1.3.1, Prolific PL-2301/PL-2302
hub 1-1.3:1.0: new USB device on port 2, assigned address 30
drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 30 if 0 alt 1
 proto 2 vid 0x067B pid 0x2305
hub 1-1.3:1.0: new USB device on port 3, assigned address 31
pl2303 1-1.3.3:1.0: PL-2303 converter detected
usb 1-1.3.3: PL-2303 converter now attached to ttyUSB0 (or usb/tts/0 for devfs
)
hub 1-1.3:1.0: new USB device on port 4, assigned address 32
HID device not claimed by input or hiddev
hid: probe of 1-1.3.4:1.0 failed with error -5
input: Composite USB PS2 Converter USB to PS2 Adaptor  v1.09 on usb-0000:00:07
.2-1.3.4
HID device not claimed by input or hiddev
hid: probe of 1-1.3.4:1.1 failed with error -5
input: Composite USB PS2 Converter USB to PS2 Adaptor  v1.09 on usb-0000:00:07
.2-1.3.4
     ________________________________________________________________

12.25. Network Connections

12.25.1. Related Documentation

    1. [http://tldp.org/HOWTO/PLIP.html] PLIP-mini-HOWTO
    2. [http://tldp.org/HOWTO/NET3-4-HOWTO.html] Networking-HOWTO
    3. [http://tldp.org/HOWTO/Ethernet-HOWTO.html] Ethernet-HOWTO
     ________________________________________________________________

12.25.2. Connection Methods

   Almost all recent laptops are equipped with a built-in network card.
   This chapter shows some methods to connect older laptops without
   internal network cards.
     ________________________________________________________________

12.25.2.1. PCMCIA Network Card

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

12.25.2.2. Serial Null Modem Cable

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

12.25.2.3. Parallel Port NIC (Pocket Adaptor)

   [http://www.unix-ag.uni-siegen.de/~nils/accton_linux.html] 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.
     ________________________________________________________________

12.25.2.4. Parallel "Null" Modem Cable

   Offers more speed than a serial connection. Some laptops use chipsets
   that will not work with PLIP. Please see
   [http://tldp.org/HOWTO/PLIP.html] PLIP-HOWTO for details.
     ________________________________________________________________

12.25.2.5. Docking Station NIC

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

12.25.3. Wake-On-LAN

   Wake-On-LAN works with some laptops equipped with built-in network
   cards. [http://www.scyld.com/wakeonlan.html] Wake-On-LAN is the
   generic name for the AMD "Magic Packet" technology. It's very similar
   to the PCMCIA modem "wake on ring" signal line. The basic idea is
   that the network adapter has a very-low-power mode to monitor the
   network for special packet data that will wake up the machine. The
   [http://www.scyld.com/wakeonlan.html] etherwake package as well as
   the [http://gsd.di.uminho.pt/jpo/software/wakeonlan/] Wakeonlan Perl
   script are able to send 'magic packets' to wake-on-LAN enabled
   ethernet adapters and motherboards, in order to switch on remote
   computers. You may use ethtool to configure some special Wake-On-LAN
   settings.
     ________________________________________________________________

12.26. Built-In Modem

12.26.1. Modem Types

   There are three kinds of modems available: internal, PCMCIA card or
   external serial port modems. But some internal modems will not work
   with Linux these modems are usually called WinModem. This is caused
   by non-standard hardware. So you have to use either a PCMCIA card
   modem or an external modem (serial or USB). The
   [http://walbran.org/sean/linux/linmodem-howto.html] LinModem-HOWTO by
   Sean Walbran provides a detailed instruction how to deal with these
   kind of modems. My pages about [http://tuxmobil.org/modem_linux.html]
   Internal Modems in Laptops and
   [http://tuxmobil.org/minipci_linux.html] miniPCI Devices in Laptops
   provide a survey about the modem controllers used in different
   laptops.

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

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

   Anyway, I have set up a page collecting information on laptops with
   internal modems at [http://tuxmobil.org/hardware.html] TuxMobil -
   Hardware . Maybe it's possible to run such modems with
   MS-Windows9x/NT emulators like wine or VMware, but I don't know it.

   The [http://linmodems.org] Linux WinModem Support and
   [http://www.xmodem.org/] the Xmodem.org (former Gromit Winmodem) page
   are more or less the standard as to whether a modem is real or not,
   and also contain directions to getting drivers for the few winmodems
   that do have Linux drivers.

   There is a driver for Lucent WinModems available. LucentPCI (binary
   only) driver, for PCI driven internal modems, see
   [http://linmodems.org] Linux WinModem Support and the
   [http://www.close.u-net.com/ltmodem.html] LTModem diagnostic tool.
     ________________________________________________________________

12.26.2. Caveats

   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.

   Warning

   If your machine features an internal modem as well as an internal
   ethernet card, pay also attention to plug the right cable into the
   plug. Otherwise you may damage your hardware easily. It may even
   cause a fire.

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

12.27. GPRS

   GPRS is a General Packet Radio Service, an add-on to GSM and TDMA
   cellular telephone standards used all over the world. It allows
   (almost) always-on Internet connections using GSM (or TDMA)
   telephones. It makes mobile internet usage on laptops fairly
   inexpensive. The [http://turtiainen.dna.fi/GPRS-HOWTO] GPRS-HOWTO is
   written by Esa Turtianen etu_AT_dna.fi and Jari Arkko
   Jari_AT_arkko.com
     ________________________________________________________________

12.28. SCSI

12.28.1. Linux Compatibility Check

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

12.28.2. Related Documentation

    1. [http://tldp.org/HOWTO/SCSI-2.4-HOWTO/index.html] SCSI-2.4-HOWTO
     ________________________________________________________________

12.28.3. Survey

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

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

12.29. Universal Serial Bus - USB

12.29.1. Linux Compatibility Check

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

12.29.2. Miscellaneous

   Newer laptops come equipped with the Universal Serial Bus - USB. The
   following USB devices are available, not all of them are fully
   supported by Linux yet: keyboard, mouse, printer, tablet, camera,
   cpia, webcam, MP3 player, modem, wireless LAN, audio, jukebox,
   scanner, storage (hard drive, memory stick), floppydrive, ZIP, Super
   Disk - LS 120, compact flash reader, CD, BlueTooth, ethernet, serial,
   joystick, USB Host-to-Host Cable, hub .

   Visit the [http://www.linux-usb.org/] USB Linux home page. Also I
   have set up a page collecting information about laptops and mobile
   devices using USB at the [http://tuxmobil.org/hardware.html] TuxMobil
   - Mobile Hardware Survey .

   Warning

   Please note, I have got a report that the power by a laptop via USB
   is not enough for some kind of devices, e.g. Web Cams or hard disks.
   But it seems to depend on the laptop and the specific device. With
   desktop Linux machines these USB devices work flawlessly, but with
   mobile devices not.
     ________________________________________________________________

12.30. FireWire - IEEE1394 - i.Link

   Firewire, also known as IEEE-1394 and iLink, is a high-speed serial
   bus system that was originally developed by Apple Computer.
   Currently, its widest implementation is for digital video; however,
   it has a lot of other uses. Like USB, Firewire is a serial protocol
   that supports hot-swapping. Firewire supports much higher speeds than
   USB. The [http://linux1394.sourceforge.net/] Linux IEEE 1394
   Subsystem provides support for IEEE 1394 (FireWire, i.Link). It
   consists of a kernel subsystem as well as applications.

   Also I have set up a page collecting information about laptops and
   FireWire at [http://tuxmobil.org/hardware.html] TuxMobil - Mobile
   Hardware Survey .
     ________________________________________________________________

12.31. Floppy Drive

12.31.1. Linux Compatibility Check

   Usually there are no problems connecting a floppy drive to a Linux
   laptop. But with a laptop floppy drive you may sometimes not be able
   to use every feature. I encountered the superformat command (from the
   fdutils package) couldn't format more than 1.44MB with my HP OmniBook
   800. You may also have difficulty when the floppy drive and CD drive
   are mutually exclusive, or when the floppy drive is a PCMCIA device
   (as with the Toshiba Libretto 100). With older laptops, there might
   be a minor problem if they use a 720K drive. As far as I know 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(TM) ThinkPad. Or man bootparam .
     ________________________________________________________________

12.32. Optical Drives (CD/DVD)

12.32.1. CD-ROM

12.32.1.1. Related Documentation

     * [http://tldp.org/HOWTO/CDROM-HOWTO/] CDROM-HOWTO
     * [http://tldp.org/HOWTO/CD-Writing-HOWTO.html] CD-Writing-HOWTO
     ________________________________________________________________

12.32.1.2. Introduction

   Most notebooks today come with CD drives. If floppy and CD drive are
   swappable they are usually mutually exclusive, however many vendors
   (HP, Dell) provide cables which allow the floppy module to be
   connected to the parallel port. Sometimes the CD drives comes as
   external PCMCIA device (e.g. SONY), or as SCSI device (e.g. HP
   OmniBook 800), USB device (e.g. SONY), or as Firewire (e.g. SONY VAIO
   VX71P). Such an external devices might bear problems to install Linux
   from it.

   As far as I know there are SONY DiscMans available which have a port
   to connect them to a computer or even a SCSI port. I found an article
   published by Ziff-Davis Publishing Company (September 1996 issue, but
   missed to note the URL) written by Mitt Jones: "Portable PC Card
   CD-ROM drives transform laptops into mobile multimedia machines",
   which listed: Altec Lansing AMC2000 Portable Multimedia CD-ROM
   Center; Axonix ProMedia 6XR; CMS PlatinumPortable; EXP CDS420
   Multimedia Kit; H45 QuickPCMCIA CD; Liberty 115CD; Panasonic
   KXL-D740; Sony PRD-250WN CD-ROM Discman.

   To here music from internal CD drives usually works without problems.
   But note:

   Tip

   Some notebooks come with an external CD drive, you need an extra
   cable to connect the sound output of the drive to the sound input of
   the notebook.
     ________________________________________________________________

12.32.2. CD-RW

   Most notebooks today even come with internal or external CD writers.
   The internal usually work, see
   [http://tldp.org/HOWTO/CD-Writing-HOWTO.html] CD-Writing-HOWTO for
   details. But with the different external (PCMCIA, Firewire, USB)
   drives you probably need some tweaking.
     ________________________________________________________________

12.32.3. DVD Drive

   [http://linvdr.org/projects/regionset/] regionset adjusts and shows
   the region code of DVD drives.

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

   [http://www.linuxvideo.org/] DVD Video

   DVD formats:
Digital Versatile Disc
DVD-5  4.4GB 1side 1 coat ~ 2h video
DVD-9  8.5GB 1side 2 coat ~ 4h video
DVD-10 9.4GB 2side 1 coat ~ 4.5h video
DVD-18 17 GB 2side 2 coat ~ 8h video
     ________________________________________________________________

12.33. Hard Disk

12.33.1. Linux Compatibility Check

   Useful programms are hdparm, dmesg, fsck and fdisk .
     ________________________________________________________________

12.33.2. Utilities

   The [http://smartmontools.sourceforge.net/] smartmontools package
   contains two utility programs (smartctl and smartd) to control and
   monitor storage systems using the Self-Monitoring, Analysis and
   Reporting Technology System (SMART) built into most modern ATA and
   SCSI hard disks. In many cases, these utilities will provide advanced
   warning of disk degradation and failure.

   The [http://www.guzu.net/linux/hddtemp.php] hddtemp utility can read
   the temperature of S.M.A.R.T. hard disks.
     ________________________________________________________________

12.33.3. Solid-State-Disks - SSDs

   Solid-State-Disks (SSDS) need some optimization of the Linux file
   system before installing the operating system. Here are some
   [http://www.thomas-krenn.com/de/wiki/Partition_Alignment] tips and
   tricks for partition alignment. Also useful some tips from Theodore
   Ts'o about
   [http://thunk.org/tytso/blog/2009/02/20/aligning-filesystems-to-an-ss
   ds-erase-block-size/] aligning filesystems to an SSD's erase block
   size.
     ________________________________________________________________

12.33.4. Miscellaneous

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

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

12.33.5. Form Factors

   AFAIK there are only two form factors for harddisks used in laptops.
   Since 2003 there is the 1.8" format. But much older and still the
   most common format is the 2.5" format. The 2.5" format seems to be
   available in different heights (Please note I couldn't verify this
   information yet):

     * 18mm: laptops built before 1996 usually have drives 18mm high
     * 12.7mm: I got a report about such disks but without a notebook
       model or manufacturer name
     * 11mm: since 1996 the drives are 11mm high
     * 9mm: many laptops, including the subnotebooks, now use a 9mm-high
       disk drive. The largest available in this format in late 1999 is
       IBM(TM) 12GN.
     * 9.5mm: Toshiba Libretto L70 and L100 have a 9.5mm HD
     * 8.45mm: Toshiba Libretto 20, 30, 50 and 60 have 8.45mm tall HDs
     * 6.35mm: Toshiba Libretto L1000 has a 6.35mm HD

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

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

12.33.6. Manufacturer Tools

   Some hard disk manufacturers offer dedicated tools to change hard
   disk parameters. For example Hitachi offers
   [http://www.hitachigst.com/hdd/support/download.htm] Drive Fitness
   Test (DFT), which provides a quick, reliable method to test SCSI and
   IDE hard disk drives, including Serial-ATA IDE drives. The Drive
   Fitness Test analyze function performs read tests without overwriting
   customer data. (However, Drive Fitness Test is bundled with some
   restoration utilities that will overwrite data.) The
   [http://www.hitachigst.com/hdd/support/download.htm] Feature Tool is
   a DOS-bootable tool for changing various ATA features.
     ________________________________________________________________

12.34. Hot-Swapping Devices (MultiBay, SelectBay, ..)

   Some laptops (usually the more expensive ones) come with a free slot,
   which may bear a second hard disk or CD/DVD drive. Every manufacturer
   seems to name it differently, names like MultiBay(TM) and
   SelectBay(TM) are common. Different Linux tools are available to
   handle these hot-swapping devices.

   thotswap is part of the [http://www.buzzard.me.uk/toshiba/index.html]
   Toshiba(tm) Linux Utilities it makes it possible to hotswap devices
   in the SelectBay.

   [http://timstadelmann.de/hotswap.html] Hotswap is a utility to
   register and deregister hotswappable IDE hardware. It is written to
   be used on Laptops with some sort of hardware bay to remove the
   module from the machine without rebooting it. Note that this utility
   is not required to insert or remove batteries or floppy disk drives;
   only for IDE devices.

   The hard disk management tool hdparm also comes with a hot swap
   option.

   Some bays can (in some cases only) carry a second battery. Currently
   I don't know how Linux can handle this. For example are there any
   tools, which show battery stats for the second battery?
     ________________________________________________________________

12.35. WireLess Network - WLAN

   

   For this let us found a city/ And we will name it Mahagonny/ That
   means: Net City/ She shall be like a Net/ That is set out to catch
   edible birds./ Everywhere there is toil and labor/ But here there is
   amusement/ For it is the uninhibited lust of men/ Not to suffer and
   to be allowed all things/ That is the essence of gold
     Bertolt Brecht, 1929
     ________________________________________________________________

12.35.1. Related Documentation

    1. [http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/Linux.Wirel
       ess.drivers.html] Wireless-HOWTO I,
    2. [http://www.linux-wlan.org/] Wireless-HOWTO II and
    3. [http://www.fuw.edu.pl/~pliszka/hints/wireless.html]
       Wireless-HOWTO III.
     ________________________________________________________________

12.35.2. Introduction

   Many notebooks now come pre-equipped with wireless network support
   for the 802.11 protocol family. These devices are either based on
   [http://tuxmobil.org/minipci_linux.html] miniPCI or
   [http://tuxmobil.org/pcmcia_linux.html] PCMCIA. You may check that
   with either lspci or cardctl ident. External WLAN adapters are
   available as PCMCIA or CF-Cards and as USB devices. Details will
   follow in a later issue.
     ________________________________________________________________

12.36. BlueTooth

   Some laptops come pre-equipped with built-in BlueTooth support, but I
   had no time to investigate that any further. Actually I do not have
   such a machine to test Linux on it yet.
     ________________________________________________________________

12.37. Infrared Port

   

   Better red, than dead.
     Unknown AuthorEss
     ________________________________________________________________

12.37.1. Linux Compatibility Check

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

12.37.1.1. SIR

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

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

12.37.1.2. FIR

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

    1. Read the specification of the machine, though it is very rare
       that you will find enough and reliable information to use with
       Linux there.
    2. Try to find out whether the FIR chip is a PCI device. Do a cat
       /proc/pci . The appropriate files for 2.2.x kernels are in
       /proc/bus/pci . Though often the PCI information is incomplete.
       You may find the latest information about PCI devices and vendor
       numbers in the kernel documentation usually in
       /usr/src/linux/Documentation or at the page of
       [http://members.datafast.net.au/~dft0802/] Craig Hart . From
       kernel 2.1.82 on, you may use lspci from the pci-utils package,
       too.
    3. Use the DOS tool CTPCI330.EXE provided in ZIP format by the
       [http://www.heise.de/ct/ftp/ctsi.shtml] German computer magazine
       CT. The information provided by this program is sometimes better
       than that provided by the Linux tools.
    4. Try to get information about Plug-and-Play (PnP) devices. Though
       I didn't use them for this purpose yet, the isapnp tools, could
       be useful.
    5. If you have installed the Linux/IrDA® software load the FIR
       modules and watch the output of dmesg, whether FIR is detected or
       not.
    6. Another way how to figure it out explained by Thomas Davis
       (modified by WH): "Dig through the FTP site of the vendor, find
       the Windows9x FIR drivers, and they have (for a SMC chip):

-rw-rw-r--   1 ratbert  ratbert       743 Apr  3  1997 smcirlap.inf
-rw-rw-r--   1 ratbert  ratbert     17021 Mar 24  1997 smcirlap.vxd
-rw-rw-r--   1 ratbert  ratbert      1903 Jul 18  1997 smcser.inf
-rw-rw-r--   1 ratbert  ratbert     31350 Jun  7  1997 smcser.vxd

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

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

       Result 1:
       Irq Tag, Mask (bit mapped - ) = 0x0010 = 0000 0000 0000 0001 0000
       so, it's IRQ 4. (start at 0, count up ..), so this is a SIR only
       device, at IRQ=4, IO=x03e8.
       Example 2 (from an unknown machine)

In current devNode:
          Size      = 529
          Handle    = 14
          ID        = 0x10F0A34D = 'SMCF010' -- SMC IrCC
Types:  Base = 0x07, Sub = 0x00,  Interface = 0x02
Comm. Device, RS-232, 16550-compatible
Attribute = 0x80
               CAN be disabled
               CAN be configured
BOTH Static & Dynamic configuration

Allocated Resource Descriptor Block TAG's:
TAG=0x47, Length=7 I/O Tag, 16-bit Decode
Min=0x02F8, Max=0x02F8
Align=0x00, Range=0x08
TAG=0x22, Length=2 IRQ Tag, Mask=0x0008
TAG=0x47, Length=7 I/O Tag, 16-bit Decode
Min=0x02E8, Max=0x02E8
Align=0x00, Range=0x08
TAG=0x2A, Length=2 DMA Tag, Mask=0x02, Info=0x08
TAG=0x79, Length=1 END Tag, Data=0x00

       Result 2:
       a) it's a SMC IrCC chip
       b) one portion is at 0x02f8, has an io-extent of 8 bytes; irq = 3
       c) another portion is at 0x02e8, io-extent of 8 bytes; dma = 1
       (0x02 =0000 0010)

   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 Microsoft Word format. Linux users may read this with
   [http://www.fe.msk.ru/~vitus/catdoc/] catdoc.
    8. Use the Device Manager of the MicroSoft Windows9x/NT operating
       system.
    9. You may also use the hardware surveys mentioned below.
   10. And as a last resort, you may even open the laptop and look at
       the writings at the chipsets themselfs.
     ________________________________________________________________

12.37.1.3. Hardware Survey

   I have made an IrDA hardware survey at
   [http://tuxmobil.org/ir_misc.html] TuxMobil . This list also contains
   information about infrared capable devices which are not mentioned
   here (mice, printers, remote control, transceivers, etc.).

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

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

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

12.37.2. Related Documentation

    1. [http://tuxmobil.org/howtos.html] Linux-Infrared-HOWTO
     ________________________________________________________________

12.37.3. IrDA® Configuration - Survey

12.37.3.1. IrDA®

   The Linux infrared support is still experimental, but rapidly
   improving. I try to describe the installation in a short survey.
   Please read my [http://tuxmobil.org/howtos.html] Linux-Infrared-HOWTO
   for detailed information. And visit the [http://irda.sourceforge.net]
   Linux/IrDA Project.
     ________________________________________________________________

12.37.3.1.1. Kernel

    1. Get a 2.4.x kernel and the latest Linux/IrDA patches from the
       [http://irda.sourceforge.net] Linux/IrDA Project.
    2. Compile it with all IrDA® options enabled.
    3. Also enable experimental, sysctl, serial and network support.
     ________________________________________________________________

12.37.3.1.2. Software

    1. Get the Linux IrDA® software irda-utils at
       [http://irda.sourceforge.net/] The Linux IrDA Project .
    2. Untar the package.
    3. Do a make depend; make all; make install
     ________________________________________________________________

12.37.3.1.3. Hardware

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

12.37.3.2. Linux Infrared Remote Control - LIRC

   [http://www.lirc.org] Linux Infrared Remote Control LIRC is a package
   that supports receiving and sending IR signals of the most common IR
   remote controls. It contains a device driver for hardware connected
   to the serial port, a daemon that decodes and sends IR signals using
   this device driver, a mouse daemon that translates IR signals to
   mouse movements and a couple of user programs that allow to control
   your computer with a remote control. I don't have valid information
   about how much infrared remote control is working with laptop
   infrared devices.
     ________________________________________________________________

12.38. FingerPrint Reader

   UPEK, provider of popular fingerprint sensors to IBM's T42 notebooks
   and others, has announced that they will be providing a BioAPI
   compliant library to perform biometric authentication under Linux.
   There is also a proposed
   [http://linuxbiometrics.com/modules/news/article.php?storyid=16]
   FingerPrint Reade driver.
     ________________________________________________________________

Chapter 13. Accessories: PCMCIA, USB and Other External Extensions

13.1. PCMCIA Cards

13.1.1. Card Families

    1. Ethernet adapter
    2. Token Ring adapter
    3. Ethernet + Modem / GSM
    4. Fax-Modem / GSM adapter
    5. SCSI adapter
    6. I/O cards: RS232, LPT, RS422, RS485, GamePort, IrDA®, Radio,
       Video
    7. Memory cards
    8. harddisks
    9. 2.5" harddisk adapters

   For desktops there are PCMCIA slots for ISA and PCI bus available.
     ________________________________________________________________

13.1.2. Linux Compatibility Check

   With the command cardctl ident you may get information about your
   card. If your card is not mentioned in /etc/pcmcia/config, create a
   file /etc/pcmcia/<MYCARD>.conf appropriately. Take an entry in the
   first file as a model. You may try every driver, just in case it
   might work, for instance the pcnet_cs supports many NE2000 compatible
   PCMCIA network cards. Note: it is a bad practice to edit
   /etc/pcmcia/config directly, because all changes will be lost with
   the next update. After creating /etc/pcmcia/<MYCARD>.conf restart the
   PCMCIA services. 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 the developer of the PCMCIA-CS package David Hinds.
   Look at the current issue of
   [http://pcmcia-cs.sourceforge.net/ftp/SUPPORTED.CARDS]
   SUPPORTED.CARDS to get information about supported cards.

   Since not all cards are mentioned there, I have set up a Survey of
   PCMCIA/CardBus/CF Cards Supported by Linux.
     ________________________________________________________________

13.2. ExpressCards

   ExpressCard is the official standard for modular expansion for
   desktop and mobile systems based on PCI-Express. These cards offer a
   smaller and faster PC Card solution. Here is the Linux Hardware
   Compatibility List - HCL for ExpressCards, which includes a survey of
   [http://tuxmobil.org/expresscard_linux.html] Linux installations on
   laptops and notebooks which feature an ExpressCard slot.
     ________________________________________________________________

13.3. SmartCards

   SmartCard reader, see Project Muscle -
   [http://www.linuxnet.com/smartcard/index.html] Movement for the Use
   of Smart Cards in a Linux Environment and the
   [http://tuxmobil.org/smart_linux.html] Linux Hardware Compatibility
   List - HCL for SmartCards.
     ________________________________________________________________

13.4. SDIO Cards

   Looking for [http://tuxmobil.org/sdio_linux.html] Linux drivers for
   SDIO cards? There is almost nothing available yet. But here are at
   least some pointers.
     ________________________________________________________________

13.5. Memory Technology Devices - RAM and Flash Cards

   [http://www.linux-mtd.infradead.org/] 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.
     ________________________________________________________________

13.6. Memory Stick

   The Memory Stick is a proprietary memory device, in the beginning
   only used in devices made by SONY. But now they are available in
   mobile computers made by other manufacturers, too. The current sticks
   are USB devices and work with all recent kernels. After loading the
   usb-storage you may mount them as SCSI devices, often as /dev/sda or
   /dev/sdb. For older laptops see the appropriate pages at
   Linux-on-Laptops.

   There is also a SONY Memory Stick Floppy Adapter - MSAC-FD2M. I don't
   know whether this works with Linux.
     ________________________________________________________________

13.7. Card Readers for SD/MMC/Memory Stick

13.7.1. External Readers

   All external SD/MMC/CF-Card/Memory Stick readers are USB devices and
   work fine with the usb-storage module. The only caveat which might
   occur is that you may have difficulties to determine the device
   assignment. Just use dmesg after you have connected the reader. The
   command should show a SCSI device like /dev/sda1 assigned to the USB
   drive.
     ________________________________________________________________

13.7.2. Internal Readers

   Currently there are three kinds of devices available: USB, PCMCIA and
   PCI devices.

   USB devices are seldom, but usually work out of the box. They behave
   like the external readers mentioned above.

   Some readers are PCMCIA/CardBus devices. Often such a reader is
   located near the CardBus slot. The command cardctl ident will reveal
   these cards.

   For some laptops and notebooks a [http://projects.drzeus.cx/wbsd]
   driver for the Winbond's W83L518D and W83L519D SD/MMC card reader is
   available.

   Some proprietary devices are not yet known to work with Linux. Except
   the readers built into the SHARP Linux PDAs, but the driver is closed
   source and available as a binary only for the ARM CPU.
     ________________________________________________________________

13.8. USB Devices

   For more info about this and other Linux-compatible USB devices see
   the [http://www.qbik.ch/usb/devices/] USB Survey and my
   [http://tuxmobil.org/usb_linux.html] Mobile USB Linux Hardware Survey
   .
     ________________________________________________________________

13.8.1. Ethernet Devices

   From kernel source 2.4.4:

     * ADMtek AN986 Pegasus (eval. board)
     * ADMtek ADM8511 Pegasus II (eval. board)
     * Accton 10/100
     * Billington USB-100
     * Corega FEter USB-TX
     * MELCO/BUFFALO LUA-TX
     * D-Link DSB-650TX, DSB-650TX-PNA, DSB-650, DU-E10, DU-E100
     * Linksys USB100TX, USB10TX
     * LANEED Ethernet LD-USB/TX
     * SMC 202
     * SOHOware NUB Ethernet

   Any Pegasus II based board also are supported. If you have devices
   with vendor IDs other than noted above you should add them in the
   driver code and send a message to <petkan_AT_dce.bg> for update.
     ________________________________________________________________

13.8.2. BlueTooth Dongles

   There are many dongles around. I have made some experience with the
   [http://www.aircable.net/] AIRcable for laptops and PDAs (e.g.
   SHARP's Zaurus models SL-5x00 and C-7x0). This USB dongle kit
   provides a fast, convenient way of connecting mobile Linux computers
   to another personal computer or notebook computer or mobile phone
   without any cabling. The AIRcable uses a BlueTooth connection without
   the need to set up a complicated BlueTooth configuration. For
   example: The AIRcable Zaurus-USB can be used for syncing the Zaurus
   (ZaurusManager, Intellisync), for Qtopia desktop and for network
   connections through the PC (Linux, Windows and Apple) running pppd.
   You may find further details and a
   [http://tuxmobil.org/bluetooth_linux.html] survey of compatible
   mobile phones etc. at TuxMobil.
     ________________________________________________________________

13.8.3. Port Replicators/Docking Stations

   I do not have experience with these devices yet. But I expect that it
   will be difficult, if not impossible, to get them to run with Linux.
   For other kinds of port replicators and docking stations see the
   appropriate section in the laptop chapter.
     ________________________________________________________________

13.9. Printers and Scanners

13.9.1. Survey of Mobile Printers and Scanners

   For a survey of ports and protocol to print via a mobile or
   stationary printer see the Different Environments chapter below.

    1. [http://www.canon.com/] CANON : BJC-80 (this printer can also be
       used as a scanner with the optional scan head!) David F. Davey
       wrote: "I finally have a Canon BJC-80 printer working properly
       with IrDA®. By properly I mean as a pseudo-PostScript device by
       way of ghostscript and a modified lpd.
       How:
          + linux-2.2.7-ac2-irda6
          + /proc/sys/net/irda/slot_timeout increased to 10 (essential
            or discovery fails)
          + ghostscript DEVICE set to bjc600
          + printcap includes:

:xc#01777777:\
:fc#017:\
:fs#020000010002:

          + and lpd had to be modified to accept the ulong fs and to
            handle xc (which is documented but not coded in the lpd's I
            have looked at). "
       For further information look at his page
       [http://www.windclimber.net/linux/bjc-80.pcgi] BJC-80 .
       Tim Auckland wrote: Would my version of lpd help? unixlpr is a
       portable version of the lpr/lpd suite, compatible with
       traditional versions and [http://rfc.net] RFC 1179 and with a
       couple of minor extensions, including the :ms= field (also seen
       in SunOS 4) and the ability to print directly to TCP connected
       printers without needing special filters. ms allows you to
       configure the tty using stty arguments directly, so if stty can
       handle the extended flags, my lpd should handle IrDA® out of the
       box. You can find the latest unixlpr
       [http://www.geocities.com/CapeCanaveral/Hall/7203/Printing/] here
       .
    2. [http://www.canon.com/] CANON : BJC-50 65% of the size of the
       BJC-80, Li-Ion battery included, and basically the same features
       as the BJC-80.
    3. [http://www.canon.com/] CANON : BJ-30
    4. [http://www.citizen-america.com/] Citizen : CN-60
    5. [http://www.pentaxtech.com/] Pentax : Pocketjet
    6. 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.
    7. Olivetti: JP-90
    8. [http://www.maxpointgmbh.de] MaxPoint : TravelScan, mobile
       scanner for the PCMCIA port.

   AFAIK only the HP DeskJet 340Cbi 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. I couldn't check the scan
   functionalities with Linux yet.
     ________________________________________________________________

13.9.2. Scanner and OCR Software

   [http://www.mostang.com/sane/] SANE stands for Scanner Access Now
   Easy and is an application programming interface (API) that provides
   standardized access to any raster image scanner hardware (flatbed
   scanner, hand-held scanner, video- and still-cameras, frame-grabbers,
   etc.). The SANE standard is free and its discussion and development
   is open to everybody. The current source code is written for UNIX
   (including Linux) and is available under the GNU public license
   (commercial application and backends are welcome, too, however).

   [http://altmark.nat.uni-magdeburg.de/~jschulen/ocr/] GOCR is optical
   character recognition software. It converts PGM files into ASC files.

   For scanner drivers see [http://www.willamowius.de/scanner.html]
   Linux Drivers for Handheld Scanners.
     ________________________________________________________________

13.9.3. Connectivity

   There are different ways to connect a printer or scanner to a laptop.
   For printers usually: parallel port, serial port, USB and IrDA® port.
   For scanners usually: parallel port, SCSI (via PCMCIA or generic SCSI
   port), USB and PCMCIA port. All of them need the appropriate kernel
   drivers.
     ________________________________________________________________

13.10. Serial Devices

13.10.1. Keyspan PDA Serial Adapter

   Single port DB-9 serial adapter, pushed as a PDA adapter for iMacs
   (mostly sold in Macintosh catalogs, comes in a translucent
   white/green dongle). Fairly simple device.
     ________________________________________________________________

13.11. External Storage Devices

13.11.1. External Hard Disks

   There are external hard disk cases with different connectors
   available: PCMCIA, USB and FireWire. Cases are available for 2.5"
   (laptop hard disks), 3.5" (desktop hard disks) and 5.25" (CD-Writer).
   All of them work very well together with Linux. Especially I like the
   cases for 2.5" hard disks, you may upgrade your current laptop hard
   disk and use the old one to put it into the external box to extend
   your hard disk space.

   Caveat: After wake up from suspend mode, the external hard drive
   can't work. To cure this problem these remedies might help:
   Disconnect the external drive and then plug it in again. Or use an AC
   adapter to power the external drive. Though this seems unconvenient
   in a suspend situation. But since the external drive gets the power
   from the adapter, there is no disconnection from power as will be if
   power is provided from USB.

   Caveat: Take care that the jumpers are set to Master. Almost all
   external hard disk cases will not work when the jumpers are set to
   Slave or Cable Select.
     ________________________________________________________________

13.12. Power and Phone Plugs, Power Supply

   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:
                ____                                  _
               / () \     _   _       _       _     _(_)_
frontal view: |()  ()|   (_)=(_)     (_)     (_)   (_) (_)
               ------

abbrevation.:    C13       C8         ??     PS/2    C5

symbol......:    ??        ??        -O)-    N.N.    N.N.

   Warning

   Though some -O)- shaped plug may seem to be compatible with your
   laptop, because of the appropriate physical size, take extreme 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 appropriate symbols near the plug.

   More about laptop and PDA power supplies at
   [http://tuxmobil.org/energy_laptops.html] TuxMobil.
     ________________________________________________________________

13.13. Bags and Suitcases

   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.

   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.

   More laptops are lost to theft than damage, so camouflage is a wise
   too. Emerson, Tom # El Monte <TOMEMERSON_AT_ms.globalpay.com> wrote:
   "I use for a laptop travelling bag: a Pyrex casserole carrier bag.
   Yup, you might think it odd to use a casserole bag for a laptop, but
   it turns out it has several advantages:

     * 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 cold as desired. A secondary advantage to
       the - cooling pad - pad is that if you've - chilled - it before
       taking the computer out for the day, it will keep the CPU cooler
       while you're running the laptop...
     * the top of the bag has a zipper on three sides, so it - opens -
       the same way as my laptop - I don't even need to take it out of
       the carrier to use the laptop
     * there is enough room at the side of the bag to store the external
       power supply, a regular Logitech mouseman, and the network -
       dongle - with BNC/TP ports - and if I had it, the modem/phone
       port as well -
     * there is enough clearance on top of the machine to include a
       handful of CD's or diskettes, if needed.
     * when it's left - unattended - in a car, it's less likely to be
       stolen - think about it, if you were a thief walking through a
       parking lot and eyeing the contents of cars, a - laptop bag - is
       instantly recognizable as holding a laptop computer - something
       that can be fenced at a pretty hefty profit, but if you saw a
       casserole carrier in the front seat of a car, would you think it
       contained anything OTHER than a casserole? - and probably
       half-eaten, at that... - Unless you are a hungry thief, chances
       are you'll skip this and move on.
     * likewise, I've heard that keeping a laptop computer in a diaper
       bag is another good - camouflage - technique - who in their right
       mind is going to steal a bag of - dirty - diapers?"

VI. Kernel

   Table of Contents
   14. Kernel History

        14.1. Kernel 2.4
        14.2. Kernel 2.6
        14.3. Kernel Configuration for Laptops
     ________________________________________________________________

Chapter 14. Kernel History

   The kernel chapter isn't ready yet. Just some notes about important
   changes with kernel 2.4 and 2.6 related to mobile computers. As well
   as some notes about Kernel configurations for laptops.
     ________________________________________________________________

14.1. Kernel 2.4

14.1.1. PCMCIA

   From [http://www.pcmcia.org/] PCMCIA.ORG: " PCMCIA (Personal Computer
   Memory Card International Association) is an international standards
   body and trade association with over 200 member companies that was
   founded in 1989 to establish standards for Integrated Circuit cards
   and to promote interchangeability among mobile computers where
   ruggedness, low power, and small size were critical. As the needs of
   mobile computer users have changed, so has the PC Card Standard. By
   1991, PCMCIA had defined an I/O interface for the same 68 pin
   connector initially used for memory cards. At the same time, the
   Socket Services Specification was added and was soon followed by the
   Card Services Specifcation as developers realized that common
   software would be needed to enhance compatibility. " The cards are
   available in different formats: Type I, II, III.

   A quotation from the ../Documentation/Changes file: "PCMCIA (PC Card)
   support is now partially implemented in the main kernel source. Pay
   attention when you recompile your kernel. If you need to use the
   PCMCIA-CS modules, then don't compile the kernel's PCMCIA support. If
   you don't need to use the PCMCIA-CS modules (i.e. all the drivers you
   need are in the kernel sources), then don't compile them; you won't
   need anything in there. Also, be sure to upgrade to the latest
   PCMCIA-CS release." Further information you may get from the
   README-2.4 included with this package.

   You may find an example kernel configuration for laptops in the
   Section 14.3.
     ________________________________________________________________

14.1.2. Powermanagement

   At the moment there are two power management drivers in the linux
   kernel (AFAIK). They each have different userspace interfaces
   /proc/apm/ and /dev/apmctl/ and /proc/acpi/ or something.

   For further information see the page of
   [http://john.fremlin.de/linux/offbutton/index.html] John Fremlin . He
   has also written a program named powermanager.

   With kernel 2.4 there is ACPI available, see ACPI chapter below.

   The SuSE
   [http://forge.novell.com/modules/xfmod/cvs/cvsbrowse.php/powersave/]
   Powersave Daemon provides battery, temperature, AC, and CPU frequency
   control and monitoring along with proper suspend to disk/RAM and
   standby support with shell hooks that are easy to extend. It supports
   APM and ACPI machines and can control a hard disk's advanced power
   and acoustic management settings. It is perfect for laptops and
   workstations that need to run quietly with low power consumption, or
   switch to full performance mode if needed. Self definable power
   schemes give full control over power control features and allow easy
   and automatic switching between performance or power saving settings
   for each hardware component.
     ________________________________________________________________

14.1.3. Hotplug

   There is a new
   [http://lists.sourceforge.net/lists/listinfo/linux-hotplug-devel]
   mailing list for developers interested in any aspects of the Linux
   kernel hotplug ability and functionality. This would include (but is
   not restricted to) USB, PCMCIA, SCSI, Firewire, and probably PCI
   developers. There is an initial
   [http://sourceforge.net/projects/linux-hotplug/] SourceForge site.

   Kernel Support for Hot-Plugable Devices
CONFIG_HOTPLUG
  Say Y here if you want to plug devices into your computer while
  the system is running, and be able to use them quickly. In many
  cases, the devices can likewise be unplugged at any time too.

  One well known example of this is PCMCIA- or PC-cards, credit-card
  size devices such as network cards, modems or hard drives which are
  plugged into slots found on all modern laptop computers. Another
  example, used on modern desktops as well as laptops, is USB.

  Enable HOTPLUG and KMOD, and build a modular kernel. Get
  [http://linux-hotplug.sourceforge.net] agent software
  and install it. Then your kernel will automatically call out to a
  user mode "policy agent" (/sbin/hotplug) to
  load modules and set up software needed to use devices as
  you hotplug them.
     ________________________________________________________________

14.2. Kernel 2.6

14.2.1. PCMCIA

   [http://kernel.org/pub/linux/utils/kernel/pcmcia/pcmcia.html]
   PCMCIAutils contains hotplug scripts and initialization tools
   necessary to allow the PCMCIA subsystem to behave (almost) as every
   other hotpluggable bus system (e.g. USB, IEEE1394). Please note that
   the kernel support for this new feature is only present since
   2.6.13-rc1.
     ________________________________________________________________

14.3. Kernel Configuration for Laptops

   You may find an example for 2.4.x kernels
   [http://tuxmobil.org/kernel_config_laptop.html] here Please note:
   Don't use this file by default, please use always make config, make
   menuconfig or make xconfig to create a kernel configuration file. See
   [http://tldp.org/HOWTO/Kernel-HOWTO/] Kernel-HOWTO (from TLDP) for
   details. Thomas Hertweck has written another useful
   [http://www.thomashertweck.de/kernel.html] Linux-Kernel-HOWTO (but it
   is only available in German and Italian).

   [http://savannah.nongnu.org/projects/laptopkernel/] laptopkernel is a
   patchset for the Linux kernel containing several useful patches for
   laptop-users. It contains acpi, software suspend, supermount and some
   hardware compatibility patches. Unfortunately this project is not
   maintained anymore since 2003.

VII. On the Road

   Table of Contents
   15. Different Environments

        15.1. Related Documentation
        15.2. Configuration Tools
        15.3. E-Mail
        15.4. Data Transport Between Different Machines
                (Synchronization)

        15.5. Backup
        15.6. Connections to Servers
        15.7. Security in Different Environments
        15.8. Theft Protection
        15.9. Dealing with Down Times (Cron Jobs)
        15.10. Mobile Printing
        15.11. Noise Reduction

   16. Solutions with Mobile Computers

        16.1. Introduction
        16.2. Mobile Network Analyzer
        16.3. Mobile Router
        16.4. Hacking and Cracking Networks
        16.5. Mobile Data Collection
        16.6. Mobile Office
        16.7. Connection to Digital Camera
        16.8. Connection to QuickCam (Video)
        16.9. Connection to Television Set
        16.10. Connection to Cellular Phone
        16.11. Connection to Global Positioning System (GPS)
        16.12. Connection via Amateur Radio (HAM)
        16.13. Satellite Watching
        16.14. Aviation
        16.15. Blind or Visually Impaired Users
     ________________________________________________________________

Chapter 15. Different Environments

   

   Tell me and I might forget. Show me and I can remember. Involve me
   and I will understand.
     Confucius, 450 B.C.
     ________________________________________________________________

15.1. Related Documentation

    1. [http://tldp.org/HOWTO/Security-HOWTO/index.html] Security-HOWTO
    2. [http://tldp.org/HOWTO/Multiboot-with-LILO.html]
       Multiboot-with-LILO-HOWTO
    3. [http://tldp.org/HOWTO/Ethernet-HOWTO.html] Ethernet-HOWTO
    4. [http://tldp.org/HOWTO/NET3-4-HOWTO.html] Networking-HOWTO
    5. [http://tldp.org/HOWTO/Offline-Mailing.html]
       Offline-Mailing-mini-HOWTO
    6. [http://tldp.org/HOWTO/PLIP.html] Plip-HOWTO
    7. [http://tldp.org/HOWTO/SLIP-PPP-Emulator/]
       Slip-PPP-Emulator-HOWTO

   If you are using Debian GNU/Linux then you should refer to the Debian
   Reference chapter entitled "Network configuration". Debian contains a
   number of packages that help to make roaming among different networks
   effortless.
     ________________________________________________________________

15.2. Configuration Tools

15.2.1. NetEnv

   Do you use your laptop in different network environments? At home? In
   the office? At a customers site?

   If yes, the small package "netenv" might be useful for you. When
   booting your laptop it provides you with a simple interface from
   which you can choose the current network environment. The first time
   in a new environment, you can enter the basic data and save it for
   later reuse.

   Netenv sets up a file containing variable assignments which describe
   the current environment. This can be used by the PCMCIA setup scheme,
   e.g. like the one that comes with Debian/GNU Linux and perhaps
   others.

   The netenv data can be used for things like:

    1. Network Device: Configure the network device for different
       environments.
    2. Choose a proper XF86Config: Think of using your laptop standalone
       with touchpad vs. connected to a CRT monitor along with an
       external mouse. For example, a wheel mouse could be used when
       docked, but the driver is not compatible with the normal
       trackpoint or touchpad.
    3. Windowmanager: You can set up your windowmanager appropriate to
       the current location of your machine.
    4. Printing Environment: The netenv data can easily be used to set
       up the printing environment.

   Netenv is available at [http://netenv.sourceforge.net] netenv home.
   It depends on dialog(1) for its menu interface. Netenv was developed
   by Gerd Bavendiek.
     ________________________________________________________________

15.2.2. System Configuration Profile Management - SCPM

   SuSE's [http://forge.novell.com/modules/xfmod/project/?scpm] System
   Configuration Profile Management - SCPM software allows you to switch
   configuration profiles. You can boot directly into one profile and
   then switch to another profile at run time. This is the successor of
   SuSE's older "scheme" management software.
     ________________________________________________________________

15.2.3. ifplugd

   [http://0pointer.de/lennart/projects/ifplugd/] ifplugd is a
   lightweight Linux daemon which configures the network automatically
   when a cable is plugged in and deconfigures it when the cable is
   pulled. It is primarily intended for usage with laptops. It relies on
   the distribution's native network configuration subsystem, and is
   thus not very intrusive.
     ________________________________________________________________

15.2.4. divine

   [http://www.fefe.de/divine/] divine is an utility for people who use
   their machines in different networks all the time. "The idea is this:

     * you describe the possible networks in /etc/divine.conf, including
       one or more machines that are probably up (routers and NIS
       servers come to mind).
     * at boot time, you run divine.
     * divine starts a thread that injects fake arp requests into the
       network. The thread will try again up to three times, pausing 1
       second between retries. If the last try times out again, the
       thread will print an error message, leave the interface in the
       original state and exit cleanly.
     * the main thread just looks for arp replies and exits if one is
       found.
     * You have one resolv.conf per network, for example
       /etc/resolv.conf.default and /etc/resolv.conf.work. divine will
       symlink one of them to /etc/resolv.conf for you.
     * You can specify a proxy server plus port and divine will write
       the proxy server to /etc/proxy. This can be evaluated inside your
       shell startup script, like this (zsh):

export http_proxy="http://`</etc/proxy`/"

       The included perl script edit-netscape-proxy.pl will edit the
       proxy settings in your Netscape 4 preferences file.
     * You can even specify an additional script to be run for each
       selection. You can use this to edit /etc/printcap or /etc/issue
       or do something else I forgot.

   The point about divine in contrast to other solutions is that other
   solutions normally use ping or something like that. divine can check
   a large number of networks instantaneously, assuming that the
   machines you ping answer within one second (.4 seconds are normal on
   Ethernets). And pinging an unknown address will do an arp request
   anyway, so why not do an arp request in the first place?"
     ________________________________________________________________

15.2.5. Mobile IP

   From the [http://tldp.org/HOWTO/NET3-4-HOWTO.html] Networking-HOWTO :
   "The term IP Mobility describes the ability of a host that is able to
   move its network connection from one point on the Internet to another
   without changing its IP address or losing connectivity. Usually when
   an IP host changes its point of connectivity it must also change its
   IP address. IP Mobility overcomes this problem by allocating a fixed
   IP address to the mobile host and using IP encapsulation (tunneling)
   with automatic routing to ensure that datagrams destined for it are
   routed to the actual IP address it is currently using."

   [http://dynamics.sourceforge.net/] Dynamics Mobile IP is a dynamical,
   hierarchical Mobile IP system for Linux operating system. The
   implementation enables a hierarchical model for IP mobility, thus
   decreasing the location update times as a mobile host moves. Dynamics
   system has been designed Wireless LAN technology in mind, and the
   system has optimized functionality for mobility in WLAN.

   See also [http://tuxmobil.org/manet_linux.html] Linux and Mobile
   AdHoc Networks - MANETs.
     ________________________________________________________________

15.2.5.1. Resources

    1. [http://www.hpl.hp.com/personal/Jean_Tourrilhes/MobileIP/index.ht
       ml] Linux Mobile IP from HP Labs Bristol by Manuel Rodriguez.
    2. [http://mosquitonet.Stanford.EDU/software/mip.html] MosquitoNet
       Mobile IP
    3. [http://http.cs.berkeley.edu/~randy/Daedalus/BARWAN/] Bay Area
       Research Wireless Access Network - BARWAN

   Sources: Kenneth E. Harker and Dag Brattli
     ________________________________________________________________

15.2.6. DHCP/BootP

   DHCP and BootP are also useful for working in different environments.
   Please see the [http://tldp.org/HOWTO/DHCP/index.html] DHCP-HOWTO .
     ________________________________________________________________

15.2.7. PPPD Options

   The pppd command can be configured via several different files: pppd
   file /etc/ppp/<your_options> .
     ________________________________________________________________

15.2.8. /etc/init.d

   You may even choose to do your configuration by editing the
   /etc/init.d files manually.
     ________________________________________________________________

15.2.9. PCMCIA - Schemes

   How can I have separate PCMCIA device setups for home and work? This
   is fairly easy using PCMCIA scheme support. Use two configuration
   schemes, called home and work. For details please read the
   appropriate chapter in the PCMCIA-HOWTO.
     ________________________________________________________________

15.2.10. Bootloaders

15.2.10.1. LILO

   From Martin J. Evans I have taken this recommendation: The first
   point to note is that init will take any arguments of the form
   name=value as environment variable assignments if they are not
   recognized as something else. This means you can set environment
   variables from the LILO boot prompt before your rc scripts run. I set
   the LOCATION environment variable depending on where I am when I boot
   Linux. e.g.
LILO: linux LOCATION=home

   Or
LILO: linux LOCATION=work

   Or simply
LILO: linux

   where failing to set LOCATION means the same as LOCATION=home (i.e.
   my default). Instead of typing LOCATION=place each time you boot you
   can add an entry to your /etc/lilo.conf file and use the append
   instruction. e.g.
# Linux bootable partition for booting Linux at home
#
image = /vmlinuz
root = /dev/hda3
label = linux
read-only
# Linux bootable partition config ends
#
# Linux bootable partition for booting Linux at work
#
image = /vmlinuz
root = /dev/hda3
label = work
read-only
append="LOCATION=work"
# Linux bootable partition config ends

   With the example above you can use "linux" for booting at home and
   "work" for booting at work.

   Armed with the facility above, you can now edit the relevant rc
   scripts to test ENVIRONMENT before running ifconfig, setting up route
   etc.
     ________________________________________________________________

15.2.10.2. Other Bootloaders

   There are several other bootloaders which are often overlooked.
   Besides LILO, have a look at loadlin, CHooseOS (CHOS) (not GPL),
   GRand Unified Bootloader (GRUB), System Commander and take a look at
   [ftp://metalab.unc.edu/pub/Linux/system/boot/loaders/]
   ftp://metalab.unc.edu/pub/Linux/system/boot/loaders/ . The MicroSoft
   Windows-NT boot loader or OS/2 boot loader may even be used.
     ________________________________________________________________

15.2.11. X-Windows

   From Steve <steve_AT_cygnet.co.uk> I got a configuration for X
   Windows with an external monitor: Note that I have introduced a neat
   trick! For my nice 17" monitor I start X11 with no options and get
   the default 16-bit 1152x864 display - but when using the LCD screen I
   specify a 15-bit display (startx -- -bpp 15) and get the correct
   800x600 resolution automatically. This saves having to have two X11
   config files.
     ________________________________________________________________

15.2.12. More Info

   [http://www.ssc.com/lg/issue20/laptop.html] Using a Laptop in
   Different Environments by Gerd Bavendiek . This article appeared in
   the August, 1997 issue of the [http://www.ssc.com/lg/] Linux Gazette
   . This is an excellent, short technical article describing an easy
   way to setup your Linux notebook to boot into different network and
   printing configurations, especially useful for those who use their
   machines at home as well as other locations such as in the office, at
   school, or at a customer site.
     ________________________________________________________________

15.3. E-Mail

15.3.1. Introduction

   A short introduction about how to setup email on a laptop used at
   home (dial-up) and work (ethernet) by Peter Englmaier
   <ppe_AT_pa.uky.edu>:
     ________________________________________________________________

15.3.1.1. Features

   As a laptop user, I have special demands for my email setup. The
   setup described below, enables me to:

     * Read my email from home using a POP email server, which is
       supplied by my university, but could also be setup on a work
       place computer.
     * Write email from home with the right return address in the email
       (which does not mention my computer name).
     * Read/write my email while working on a workstation without access
       to my laptop or the POP email server (as a backup).
     * Read my email while working on my laptop connected to the
       ethernet of our institut.
     * Direct email while connected via ethernet (faster than the
       fetchmail method).
     * Indirect email (over pop mail server) while not connected to the
       ethernet at work (either at home via modem or somewhere else via
       ethernet).
     * Use any emailer, e.g. elm or the simple mail command.
     * Sort incoming email, delete spam, split email-collections
       (digests) into seperate emails

   The configuration is based on sendmail, fetchmail, and a remote pop
   account for email.
     ________________________________________________________________

15.3.1.2. Configuration of sendmail

   This is the most complicated part. Having installed the sendmail-cf
   package, I created a file named /usr/lib/sendmail-cf/laptop.mc:

divert(-1)
include(`../m4/cf.m4')
define(`confDEF_USER_ID',''8:12'')
define(`confBIND_OPTS',`-DNSRCH -DEFNAMES')

# here you define your domain
define(`confDOMAIN_NAME',''pa.uky.edu'')
OSTYPE(`linux')
undefine(`UUCP_RELAY')
undefine(`BITNET_RELAY')

# there we send outgoing email
define(`SMART_HOST',`server1.pa.uky.edu')

# there we send mail to users my laptop does not know
define(`LUSER_RELAY',`server1.pa.uky.edu')

# again the domain, we want to be seen as
MASQUERADE_AS(pa.uky.edu)
FEATURE(allmasquerade)
FEATURE(nouucp)
FEATURE(nodns)
FEATURE(nocanonify)
FEATURE(redirect)
FEATURE(always_add_domain)
FEATURE(use_cw_file)
FEATURE(local_procmail)
MAILER(procmail)
MAILER(smtp)
HACK(check_mail3,`hash -a@JUNK /etc/mail/deny')
HACK(use_ip,`/etc/mail/ip_allow')
HACK(use_names,`/etc/mail/name_allow')
HACK(use_relayto,`/etc/mail/relay_allow')
HACK(check_rcpt4)
HACK(check_relay3)

   This looks more complicated as it is. All it does is, that it
   redirectes outbound mail to server1 (SMART_HOST) and also mail for
   local users which are not known (LUSER_RELAY). That way, I can write
   email to my colleques without using their full email address. More
   important: the From line in my email points back to my MASQUARADE_AS
   domain and not directly to my laptop. If this where not the case,
   email returned with the reply button might not reach me. You must
   restart sendmail for changes to take effect. Note: this configuration
   is for Redhat 5.2 systems. You may have to change some details.

   Now, all what is needed is to generate the /etc/sendmail.cf file m4
   laptop.mc >/etc/sendmail.cf and to add all possible domain names my
   laptop should respond to in /etc/sendmail.cw:

# sendmail.cw - include all aliases for your machine here.
laptop
laptop.pa.uky.edu
128.17.18.30
guest1
guest1.somewhere.org

   It is important to have all aliases in this file, otherwise sendmail
   will not accept the mail (and will reply we don't relay to the
   sender). Finally, you must now test the setup by sending email,
   replying to mail for all possible configurations. Any
   missconfiguration can result in loss of email.
     ________________________________________________________________

15.3.1.3. Configuration for fetchmail on Laptop

   One method to get the email into your machine is through fetchmail.
   Fetchmail periodically checks for new email at one or more remote
   mail servers. I use the following fetchmail configuration file (in my
   user home directory): fetchmailrc

set postmaster "myusername"
set daemon 900
poll pop.uky.edu with proto POP3
user "mypopusername" there with password "mypoppassword" is mylaptopusername h
ere

   Fetchmail will just get the email and send it to sendmail which will
   it deliver into your /var/spool/mail/$USER file.
     ________________________________________________________________

15.3.1.4. Forward E-Mail to the Laptop

   On my work station I have the following .forward file:

me@pop.acount.edu,me@server1

   Here server1 is the machine where I keep my mailbox. All email is
   send to the pop account to be picked up later by my laptop (using
   fetchmail). However, when my laptop is connected via ethernet, I want
   my email to go directly to the laptop, instead of pop:

me@laptop,me@server1

   In both cases, a backup of my email is send to server1 (where I also
   can read it, in case I cannot get my laptop). I keep/store all email
   on the laptop.

   Switching is done by three script files and a crontab file (on the
   workstation):

   forward_pop

#!/bin/sh
echo "me@pop.acount.edu,me@server1" > ${HOME}/.forward

   forward_laptop

#!/bin/sh
echo "ppe@laptop,ppe@server1" > ${HOME}/.forward
crontab ${HOME}/mycrontab
${HOME}/utl/check_laptop

   check_laptop

#!/bin/sh
if /usr/sbin/ping -c 1 laptop  >/dev/null 2>&1 ; then
   :
else
   # redirect mail to pop
   ${HOME}/utl/forward_pop
   sleep 10
if /usr/sbin/ping -c 1 laptop  >/dev/null 2>&1 ; then
      # back to normal
      ${HOME}/utl/forward_laptop
else
# deactivate crontab check
/bin/crontab -l | grep -v check_laptop >${HOME}/tmp/mycrontab.tmp
      /bin/crontab ${HOME}/tmp/mycrontab.tmp
      rm -f ${HOME}/tmp/mycrontab.tmp
fi
fi

   mycrontab

# mycrontab
0,10,20,30,40,50 * * * * ${HOME}/utl/check_laptop

   Each time I connect the laptop to the ethernet, I have to run
   forward_laptop, and each time I disconnect I run forward_pop. In case
   I forget to run forward_pop, the crontab job runs it for me less then
   10 minutes later. To do all that automatically, I change the network
   script files on my laptop as follows:

   /sbin/ifdown (this script runs, whenever a network device is stopped,
   new stuff between BEGIN and END)

...
fi
# BEGIN new stuff
# turn off forwarding email
mail ppe <<EOF
turning off forwarding email
device = ${DEVICE}
hostname = `hostname`
EOF
if [ "${DEVICE}" = "eth0" -a "`hostname`"
= "laptop" ]; then
su -lc "ssh -l myusername server1
utl/forward_pop" myusername >& /dev/null
fi
# END new stuff

ifconfig ${DEVICE} down
exec /etc/sysconfig/network-scripts/ifdown-post $CONFIG

   Note, that the script checks for the value of hostname. In case, I am
   connected to a foreign ethernet, my hostname and ip-address will be
   something else, e.g. guest1.

   /etc/sysconfig/network-scripts/ifup-post (this script is run,
   whenever a network device is started)

# Notify programs that have requested notification
do_netreport
# BEGIN new stuff
# check for email -- I'm using fetchmail for this
if [ "${DEVICE}" = "eth0" -o "${DEVICE}"
= "ppp0" ]; then
su -lc fetchmail myusername >& /dev/null &
fi
# set clock if connected to ethernet, redirect email
if [ "${DEVICE}" = "eth0" -a "`hostname`" = "zaphod" ]; then
( rdate -s server1 ; hwclock --systohc --utc ) >& /dev/null &
# forward email
su -lc "ssh -l myusername gradj utl/forward_laptop" myusername >& /dev/null &
fi
# END new stuff

exit 0
     ________________________________________________________________

15.3.1.5. Processing Incoming E-Mail with procmail

   This step is completely optional. The above described sendmail
   configuration calls procmail for each received email, but you could
   have called procmail using the .forward file (see the procmail man
   page). Procmail is a handy tool to block spam and to sort incoming
   email.

   You need to setup a .procmailrc file to use procmail. See the man
   page for procmail, procmailrc, and procmailex (examples). My setup
   demonstrates, how to ignore certain email messages and split
   email-collections (digest) into pieces:

# -- mail filtering -- procmail is called by sendmail --
PATH=/bin:/usr/bin
MAILDIR=$HOME/Mail
LOGFILE=$MAILDIR/from
# keep in mind:
# use ":0:" when writing to a file
# use ":0"  when writing to a device, e.g. /dev/null, or send email

# - make a backup of *all* incoming mail, but ignore mail tagged below -
:0 c:
*! ^Sissa-Repro
backup

# - keep only last 50 messages
:0 ic
| cd backup && rm -f dummy `ls -t msg.* | sed -e 1,50d`

# - delete email coming through the 'postdocs' email list, when
# it is not of any interest
:0
* ^From.*postdocs
* ^From.*Ernst Richter /dev/null :0
* ^From.*postdocs
* ^Subject.*card charge
/dev/null
# Split mailing list from the sissa preprint server into individual emails
# - this is quite complicated :(   I can flip through the list much
#   faster and ignore preprints which have uninteresting titles. Instead of
#   having to browse through the whole list, my mailer will just present a
#   list of papers.
# 1. split it in individual messages
:0
* ^From no-reply@xxx.lanl.gov
| formail +1 -de -A "Sissa-Repro: true" -s procmail
# 2. reformat messages a bit
# 2.1. extract 'Title:' from email-Body and add to email-header
as 'Subject:'
:0 b
* ^Sissa-Repro
*! ^Subject
TITLE=| formail -xTitle:
:0 a
|formail -A "Subject: $TITLE " -s procmail

# 2.2. store in my incoming sissa-email folder. Here, we could
#      also reject (and thereafter delete) uninteresting 'Subjects'
#      we could also mark more interesting subjects as urgend or send a copy
#      to regular mail box.
:0:
* ^Sissa-Repro
* ^Subject
*! ^replaced with
sissa

   By the way, there is a tk GUI tool to configure procmail (I think it
   is called dotfiles).
     ________________________________________________________________

15.3.2. Email with UUCP

   Another possible solution for Email is to use UUCP. This software was
   made for disconnected machines, and is by far the easiest solution if
   you have several users on your laptop (we are talking about UNIX,
   remember?), each with his/her own account.

   Unlike what most people think, UUCP does not need a serial
   connection: it works fine over TCP/IP, so your UUCP partner can be
   any machine on the Internet, if it is reachable from your network
   attachment point. Here is the UUCP sys for a typical laptop:
system mylaptop
time any
chat "" \d\d\r\c ogin: \d\L word: \P
address uucp.mypartner.org
port TCP
     ________________________________________________________________

15.3.3. MailSync

   [http://mailsync.sourceforge.net/] Mailsync is a way of synchronizing
   a collection of mailboxes. The algorithm is a 3-way diff. Two
   mailboxes are simultaneously compared to a record of the state of
   both mailboxes at last sync. New messages and message deletions are
   propagated between the two mailboxes. Mailsync can synchronize local
   mailbox files in many formats and remote mailboxes over IMAP, POP,
   and IMAPS.
     ________________________________________________________________

15.4. Data Transport Between Different Machines (Synchronization)

   I don't have experience with this topic yet. So just a survey about
   some means of data transport and maintaining data consistency between
   different machines.
     ________________________________________________________________

15.4.1. Useful Hardware

    1. external harddisks
    2. ZIP drive

   Wade Hampton wrote: "You may use MS-DOS formatted ZIP and floppy
   discs for data transfer. You may be able to also use LS120. If you
   have SCSI, you could use JAZ, MO or possibly DVD-RAM (any SCSI disc
   that you could write to). I have the internal ZIP for my Toshiba
   700CT. It works great (I use automount to mount it). I use VFAT on
   the ZIP disks so I can move them to Windows boxes, Linux boxes, NT,
   give them to coworkers, etc. One problem, I must SHUTDOWN to swap the
   internal CD with the ZIP."
     ________________________________________________________________

15.4.2. Useful Software

15.4.2.1. Version Management Software

   Although it is certainly not their main aim, version management
   software like CVS (Concurrent Version System) are a perfect tool when
   you work on several machines and you have trouble keeping them in
   sync (something which is often called "disconnected filesystems" in
   the computer science literature). Unlike programs like rsync, which
   are asymmetric (one side is the master and its files override those
   of the slave), CVS accept that you make changes on several machines,
   and try afterwards to merge them. Asymmetric tools are good only when
   you can respect a strict discipline, when you switch from one machine
   to another. On the contrary, tools like CVS are more forgetful.

   To synchronize two or more machines (typically a desktop and a
   laptop), just choose a CVS repository somewhere on the network. It
   can be on one of the machines you want to synchronize or on a third
   host. Anyway, this machine should be easily reachable via the network
   and have good disks.

   Then, cvs co the module you want to work on, edit it, and cvs commit
   when you reached a synch point and are connected. If you made changes
   on both hosts, CVS will try to merge them (it typically succeeds
   automatically) or give in and ask you to resolve it by hand.

   The typical limits of this solution: CVS does not deal well with
   binary files, so this solution is more for users of vi or emacs than
   for GIMP fans. CVS has trouble with some UNIX goodies like symbolic
   links.

   For more information on CVS, see the
   [http://www.loria.fr/~molli/cvs-index.html] Web page . The CVS
   documentation is excellent (in info format).
     ________________________________________________________________

15.4.2.2. CODA Filesystem

   The [http://www.coda.cs.cmu.edu/] CODA File System is a descendant of
   the Andrew File System. Like AFS, Coda offers location-transparent
   access to a shared UNIX file name-space that is mapped on to a
   collection of dedicated file servers. But Coda represents a
   substantial improvement over AFS because it offers considerably
   higher availability in the face of server and network failures. The
   improvement in availability is achieved using the complementary
   techniques of server replication and disconnected operation.
   Disconnected operation proven especially valuable in supporting
   portable computers .
     ________________________________________________________________

15.4.2.3. unison

   [http://www.cis.upenn.edu/~bcpierce/unison/] unison is a
   file-synchronization tool for Unix and Windows. It allows two
   replicas of a collection of files and directories to be stored on
   different hosts (or different disks on the same host), modified
   separately, and then brought up to date by propagating the changes in
   each replica to the other. Unison was written by researchers with an
   eye for well-defined replication semantics: they were very fussy
   about safety, and made sure to handle gracefully things like
   premature termination etc. Unison is symmetric/bidirectional (unlike
   rsync), works fine with binaries (unlike cvs), and is a user-level
   program (unlike most distributed filesystems). It also makes a
   reasonable attempt to synchronize transparently between Unix/Linux
   and Windows filesystems, which is no small feat. Drawbacks: it does
   not do version control, and does not handle synchronization among
   more than 2 file trees. unison shares a number of features with tools
   such as configuration management packages (CVS, PRCS, etc.)
   distributed filesystems ( [http://www.coda.cs.cmu.edu/] CODA , etc.)
   uni-directional mirroring utilities (rsync, etc.) and other
   synchronizers ( Intellisync, Reconcile, etc). However, there are a
   number of points where it differs:

     * unison runs on both MicroSoft-Windows (95, 98, NT, and 2k) and
       Unix (Solaris, Linux, etc.) systems ( for ARM based Linux PDAs
       see the [http://tuxmobil.org/feed.html] TuxMobil IPK feed .
       Moreover, unison works across platforms, allowing you to
       synchronize a Microsoft-Windows laptop with a Unix server, for
       example.
     * Unlike a distributed filesystem, unison is a user-level program:
       there is no need to hack (or own!) the kernel, or to have
       superuser privileges on either host.
     * Unlike simple mirroring or backup utilities, unison can deal with
       updates to both replicas of a distributed directory structure.
       Updates that do not conflict are propagated automatically.
       Conflicting updates are detected and displayed.
     * unison works between any pair of machines connected to the
       internet, communicating over either a direct socket link or
       tunneling over an rsh or an encrypted ssh connection. It is
       careful with network bandwidth, and runs well over slow links
       such as PPP connections.
     * unison has a clear and precise specification.
     * unison is resilient to failure. It is careful to leave the
       replicas and its own private structures in a sensible state at
       all times, even in case of abnormal termination or communication
       failures.
     * unison is free; full source code is available under the GNU
       Public License.
     ________________________________________________________________

15.4.2.4. OpenSync, MultiSync

   [http://www.opensync.org/] OpenSync is the successor of KitchenSync
   and MultiSync. OpenSync is a synchronization framework that is
   platform and distribution independent. It consists of a powerful
   sync-engine and several plugins that can be used to connect to
   devices. OpenSync is very flexible and capable of synchronizing any
   type of data, including contacts, calendar, tasks, notes and files.

   [http://multisync.sourceforge.net] MultiSync is a free modular
   program to synchronize calendars, address books, and other PIM data
   between programs on your computer and other computers, mobile
   devices, PDAs or cell phones. Currently MultiSync has plugins for
   Ximian Evolution calendars and IrMC Mobile Client calendars
   (supported by the Sony/Ericsson T68i) via Bluetooth, IrDA, or a cable
   connection.
     ________________________________________________________________

15.4.2.5. Funambol

   [http://www.funambol.com/opensource/] Funambol is an open source
   mobile application server software that provides push email, address
   book and calendar (PIM) data synchronization, application
   provisioning, and device management for wireless devices and PCs,
   leveraging standard protocols. For users, this means BlackBerry-like
   capabilities on commodity handsets. Funambol is also a software
   development platform for mobile applications. It provides client and
   server side Java APIs, and facilitates the development, deployment
   and management of any mobile project. Funambol is the de facto
   standard implementation of the Open Mobile Alliance Data
   Synchronization and Device Management protocols (OMA DS and DM,
   formerly known as SyncML). Funambol is replaces the former sync4J
   tools.
     ________________________________________________________________

15.4.2.6. Tsync

   [http://sourceforge.net/projects/tsyncd/] Tsync (Transparent)
   Synchronization is a user-level daemon that provides transparent
   synchronization amongst a set of computers. Tsync uses a peer-to-peer
   architecture for scalability, efficiency, and robustness.
     ________________________________________________________________

15.4.2.7. InterMezzo

   [http://inter-mezzo.org/] InterMezzo is a new distributed file system
   with a focus on high availability. InterMezzo is an Open Source
   project, currently on Linux (2.2 and 2.3). A primary target of
   development is to provide support for flexible replication of
   directories, with disconnected operation and a persistent cache. For
   example, we want to make it easy to manage copies of home directories
   on multiple computers, and solve the laptop/desktop synchronization
   problems. On a larger scale we aim to provide replication of large
   file repositories, for example to support high availability for
   servers. InterMezzo was deeply inspired by the Coda File System, but
   totally re-designed and re-engineered.
     ________________________________________________________________

15.4.2.8. WWWsync

   [http://www.alfie.demon.co.uk/wwwsync/] WWWsync/ is a program written
   in Perl that will update your web pages by ftp from your local pages.
   This was originally written for updating Demon home-pages, but will
   work with other providers which provide direct FTP access to your web
   pages. I didn't check this for laptop purposes yet.
     ________________________________________________________________

15.4.2.9. rsync

   rsync is a program that allows files to be copied to and from remote
   machines in much the same way as rcp. It has many more options than
   rcp, and uses the rsync remote-update protocol to greatly speedup
   file transfers when the destination file already exists. The rsync
   remote-update protocol allows rsync to transfer just the differences
   between two sets of files across the network link.
     ________________________________________________________________

15.4.2.10. Xfiles - file tree synchronization and cross-validation

   Xfiles is an interactive utility for comparing and merging one file
   tree with another over a network. It supports freeform work on
   several machines (no need to keep track of what files are changed on
   which machine). Xfiles can also be used as a cross-validating disk
   <-> disk backup strategy (portions of a disk may go bad at any time,
   with no simple indication of which files were affected.
   Cross-validate against a second disk before backup to make sure you
   aren't backing up bad data).

   A client/server program (GUI on the client) traverses a file tree and
   reports any files that are missing on the server machine, missing on
   the client machine, or different. For each such file, the file
   size/sizes and modification date(s) are shown, and a comparison
   (using UNIX diff) can be obtained. For files that are missing from
   one tree, similarly named files in that tree are reported.
   Inconsistent files can then be copied in either direction or deleted
   on either machine. The file trees do not need to be accessible via
   nfs. Files checksums are computed in parallel, so largely similar
   trees can be compared over a slow network link. The client and server
   processes can also be run on the same machine. File selection and
   interaction with a revision control system such as RCS can be handled
   by scripting using jpython. Requirements Java1.1 or later and
   JFC/Swing1.1 are needed. [http://www.idiom.com/~zilla] Xfiles.
     ________________________________________________________________

15.4.2.11. sitecopy

   Sitecopy is for copying locally stored websites to remote web
   servers. The program will upload files to the server which have
   changed locally, and delete files from the server which have been
   removed locally, to keep the remote site synchronized with the local
   site, with a single command. The aim is to remove the hassle of
   uploading and deleting individual files using an FTP client.
   [http://www.lyra.org/sitecopy] sitecopy.
     ________________________________________________________________

15.4.3. DataConversion: AddressBooks, BookMarks, Todo-Lists, LDAP, Webpages

   Transfering user data from one mobile device to another one, often
   requires some tools to extract the data from the source device before
   importing them into the target device, for example if you want to
   change your favorite mobile phone. Or if you want to use the
   addressbook from your mobile with your PDA, too. Here are some tools
   for [http://dataconv.org/apps_bookmarks.html] bookmark conversion,
   [http://dataconv.org/apps_addresses.html] addressbook migration,
   [http://dataconv.org/apps_vcard.html] vCard extraction,
   [http://dataconv.org/apps_ldap.html] LDAP merging and
   [http://dataconv.org/apps_pda.html] data conversion for PDAs and
   HandHeld PCs.
     ________________________________________________________________

15.5. Backup

   To me data on mobile computers are even more likely to be damaged or
   lost than on desktop computers. So backups are even more important.
   There are different solutions for backups in mobile environments. I
   will describe them in one of the next issues.

   For backups on removable media like CD-R/RW or DVD-R/RW you may boot
   from a Knoppix Live CD/DVD using the toram boot option. This way
   Knoppix will be completely loaded into RAM and you may remove the
   Knoppix CD/DVD from the drive to replace it with the backup media.
   Note: this will only work if your laptop provides more than 1GB RAM.
     ________________________________________________________________

15.6. Connections to Servers

   From Dirk Janssen <dirkj_AT_u.arizona.edu>: Here are several good
   ways of working on your laptop from your desktop machine. If you have
   a separate desktop machine at work, you might want to use that as a
   terminal server to your laptop. This means you get the larger screen
   and the better keyboard, without having to worry about syncing files.
   The easiest way to do this is to install ssh on both sides, and ssh
   from your desktop (running X) to the laptop. Ssh will provide a
   secure connection and, crucially, a secure X connection between the
   two machines. If you type, for example, emacs & in the ssh shell,
   emacs will start a window on your desktop machine while running on
   your laptop.

   There are various ways in which you can make this situation more
   productive/complicated. Emacs, for one thing, can open windows
   (called frames by emacs) on separate displays by using
   make-frame-on-display. This way, you can have the same emacs
   displaying on your desktop and your laptop: A dual headed system is
   born.

   For other programs, you usually have to decide at startup time on
   which screen you want them. To run them on the laptop screen, start
   them as usual. To run them on the desktop screen, start them from the
   ssh shell on the desktop or redirect their screens using the DISPLAY
   variable. Some programs also accept a -display option. Read the
   documentation on xauth on how to set this up. An easy way out is to
   find out which pseudo display ssh has created for you by typing echo
   $DISPLAY in the ssh shell. Assuming your desktop is called olli and
   your laptop stan, this will usually produce something like stan:10.
   This means that processes on stan (the laptop) display on what they
   think is the 10th screen of stan, which by some ssh magic is actually
   relayed (in a secure way) to the screen of olli.

   There are some ways in which you can dynamically move windows from
   one machine to another. A very interesting approach is taken by
   xmove, but this program lacks a good user interface (any
   volunteers?). Xmove creates a pseudo screen (similar to the stan:10
   that ssh creates) and windows that have their DISPLAY set to this
   pseudo screen can be moved back and forth between real screens
   (provided all screens use the same color depth).

   Alternatively, you can run an one of the several programs that open a
   virtual root window: A window on your desktop that contains other
   windows. It looks a lot like running an emulator. With these
   programs, you can start your processes on stan, then move all their
   windows to olli, then work for a while, and then move them back so
   you can continue working on stan. Hibernate your laptop and repeat ad
   infinitum. Check out xmx and VNC for this.

   If this is all too complicated for you, but you like to use the two
   screens at the same time, consider at least installing x2x. This
   little tool makes it possible to move your mouse from one screen to
   the other, and the keyboard focus goes with it. To run it, you need
   another ssh going from stan (the laptop) to olli (the desktop): ie.
   type ssh olli in a stan xterm. Keep this shell running and find out
   which pseudo screen was created with echo $DISPLAY. This will return
   something like olli:10 (see above for explanation). Now, type this in
   any shell on olli: x2x -west -to olli:10 (and I mean, in a shell that
   runs on olli and displays on olli, not an ssh shell) This creates a
   little black band to on the left (west) side of your desktop's
   screen. Whenever you move the mouse over this, the mouse on screen
   olli:10 will move. Because olli:10 is just an ssh-created alias for
   the screen of stan, the mouse on your laptop will move and you can
   type there by only moving your head, not your hands.

   A note on X-security: Playing around with various screen programs is
   much easier if you issue an xhost + on either computer. But this is
   extremely unsafe. Do this only when you are not connected to any
   larger network. If you have everything working, spend some time on
   getting xauth to work. If you use xdm, it is usually easy. Otherwise,
   consider starting your Xserver with the same magic cookie all the
   time. This is less safe, but still pretty safe, and it means that you
   have to copy the cookies only once. Check the startup scripts
   (.xserverrc, .xinitrc, .xsession, etc) for something like
   cookie="MIT-MAGIC-COOKIE-1 `keygen`" and change that into (invent
   your own cookie here): cookie="MIT-MAGIC-COOKIE-1
   12345678901234567890abcdefabcdef"
     ________________________________________________________________

15.7. Security in Different Environments

15.7.1. Introduction

   I am not a computer security expert, but I think that security
   associated with mobile devices requires specific attention. Please
   read the [http://www.linuxsecurity.com/Security-HOWTO] Security-HOWTO
   by Kevin Fenzi and Dave Wreski for more information. I just collected
   some information below. Note, these means are just small steps to
   additional security, though I recommend that you use them.

   Please read also the [https://www.seifried.org/lasg/] Linux
   Administrator's Security Guide (LASG) - FAQ by Kurt Seifried.
     ________________________________________________________________

15.7.2. Means of Security

    1. Antivirus policy: For Linux there are some anti virus programms
       available. Check the BIOS for an option to disable writing at the
       boot sector.
    2. Laptop as a security risk itself: Since a laptop can easily be
       used to intrude a network, it seems a good policy to ask the
       system administrator for permission before connecting a laptop to
       a network.
    3. Secure Protocol: When connecting to a remote server always use a
       secure protocol (for instance ssh) or tunneling tunnelv , pptp
       and APOP for POP accounts.
     ________________________________________________________________

15.8. Theft Protection

15.8.1. Means to Protect the Data

    1. Encryption: the Linux Kernel offers different options. This
       [http://shappyhopper.co.uk/b2154/sharedencryptedhowto.cgi]
       Encrypted dual boot single hard drive system HOWTO, explains how
       to secure your system using nothing but Free Software. It was
       primarily written for people with a dual boot laptop, describing
       free tools to encrypt Microsoft Windows as well as Linux
       partitions.
    2. Here are some [http://tuxmobil.org/smart_linux.html] Linux guides
       for laptops with built-in SmartCard-Reader.
    3. User passwords: can be easily bypassed if the intruder gets
       physical access to your machine.
    4. Hard Disk Passwords:
    5. BIOS passwords: are easily crackable at least with older laptop
       models. Some manufacturers have now a second boot password (IBM).
       If you use a BIOS password/boot loader security, ADVERTISE IT!
       Paste a sticker (or tape a piece of paper) on the top of your
       laptop, saying something like:

                           WARNING

This laptop is password protected. The password can only be removed
by an authorized [manufacturer's name] technician presented with
proof of ownership. So don't even think of stealing it, because
it won't do you any good.

    6. Before you buy a second hand machine, check whether the machine
       seems to be stolen. I have provided a survey of
       [http://tuxmobil.org/stolen_laptops.html] databases for stolen
       laptops.
     ________________________________________________________________

15.8.2. Means to Protect the Hardware

    1. Laptop lock: Almost all (if not all) of the new laptops come with
       a slot for the lock, and if yours doesn't have one, most locks
       come with a kit to add a slot. One of Targus' Defcon locks even
       has a motion sensor, so you don't have to lock it up to a secure
       place, if you don't have one around.
       The only drawback that I can think of is that it takes a couple
       extra seconds to set up or pack up your laptop. It takes about 30
       seconds to snap into place and makes it impossible to quickly
       walk away with the laptop. It won't stop a determined thief with
       the time to unscrew the legs of the desk or one that wanders
       around with a substantial pair of wire cutters in hand, but I
       feel pretty secure leaving the laptop on my desk while I go to
       meetings or lunch.
       Well known manufacturers of dedicated laptop locks are
       [http://www.kensignton.com] Kensignton and TARGUS.
    2. Name plates: to reduce the possibility of theft, you may want to
       have a nameplate (name, phone, e-mail, address) made and affixed
       to the cover of the laptop. A nice one will cost you about $12,
       and can be made by any good trophy shop. They'll glue it on for
       you too. You could use double-sided tape instead, but glue is
       more permanent. So it's easy to return, but will look beaten and
       abused if these are removed. You may even make an engravement
       into the laptop cover (inside). And even better into every
       removable part (hard disk, battery, CD/DVD drive, power unit). If
       this machine ever gets to a repair office, I might get the
       machine back. Make sure you remember to update the plates if you
       move.
       If you don't mind marking up a piece of equipment worth several
       thousand dollars, make sure your laptop has some distinguishing
       feature that is easily recognizable, e.g. a bunch of stickers
       pasted on it. Not only does it make your laptop easier to
       recognize, my guess is that people would be less likely to steal
       it.
       It might even be useful to have a sticker that clearly says "Does
       Not Run Windows". This is at least an argument for having your
       bootloader stop at the bootloader prompt, rather than mosey
       onwards into a colorful XDM login.
    3. Link xlock to apm services. What about setting a system such as
       when the laptop is unused for a while, instead of using normal
       apm service and suspend the machine, makes it run an xlock,
       disable the apm services in a way such that they do not suspend
       the machine automatically and start a 'laptop-protection daemon'.
       When the xlock disappears, the daemon is stopped and the apm
       services are restarted (so you might use the apm services
       yourself).
       In the case somebody unplugs the machine while under the xlock
       (without giving the password), then the daemon would detect it
       and could start doing some preventive action, such as: - playing
       a sound with maximum volume saying "I am getting stolen". - this
       daemon could also register to a fixed local server and do a ping
       every now and then. If the ping stops before the daemon
       unregister to the server, then server then can take other
       actions, such as sending SMS message, starting a video camera, in
       the room, etc. The apm services down would make the stealer
       unable to use the hot keys to suspend/stop the machine, isn't it?
    4. You can change the "pollution preventer" logo at startup on AWARD
       BIOSES. See instructions from
       [http://geggus.net/sven/linux-bootlogo.html] Sven Geggus. For IBM
       ThinkPads there is a dedicated DOS utility for burning your
       bizcard data into the BIOS boot screen.
    5. Boot loader: a boot loader may be used to put your name and phone
       number (or whatever text you choose) into the boot sequence
       before the operating system is loaded. This provides a label that
       can't be removed by editing files or even doing a simple format
       of the harddisk. Some boot loaders (e.g. LILO) offer a password
       option, which is highly recommend (note without it's very easy to
       get root access).
    6. Camouflage: if you carry a dedicated laptop bag, this can be
       spotted by a thief easily. So think about getting another kind of
       bag.
    7. Serial Number: note the serial number in a secure place. This
       will be necessary if your laptop gets stolen.
    8. Insurance: There are some dedicated insurances, see my page
       [http://tuxmobil.org/stolen_laptops.html] Database of Stolen
       Laptops.
    9. Use of software that connects and identifies itself: As far as I
       know there was an old DOS utility that did something like this.
       It embedded itself into the bootsector and upon a certain
       keycombination it would throw a serial number onto the screen and
       play an audio code through the speaker (in case th monitor was no
       longer usable for whatever reason). You were supposed to register
       the serial number with the company that produced the utility.
       The laptop can send a mail with its real IP address if connected
       (mail with a print of ifconfig started by /etc/ppp/ip-up or by a
       cron job (if connected at a company-network).
   10. Always remove the external devices and secure them in another
       place/room. Set the BIOS to boot on the hard disk first as a
       default setting and remove boot on other devices if possible.
       Also try to plug the power supply in the least accessible plug.
       So if your machine get stolen in your office the 'quick way'
       (e.g. during a 5 sec. cigarette break), the stealer won't perhaps
       have time to get the power supply, neither the time to get the
       drives. Perhaps he/she will end up with a less useful laptop and
       you may recover it.
   11. Electronic Devices (Transponders): There are also devices
       available, which can be detected remote via satellites, see my
       page [http://tuxmobil.org/stolen_laptops.html] about stolen
       laptops for a survey.
     ________________________________________________________________

15.8.3. The Day After

   Your primary goal is to prevent your laptop from being stolen in the
   first place. Your secondary goal is to recover it after it is stolen.
   Report it to the police station ASAP. Check the local newsgroup (in
   case...) or even post in it.

   I have provided a [http://tuxmobil.org/stolen_laptops.html] survey of
   databases for stolen laptops.
     ________________________________________________________________

15.8.4. Resources

   The chapter about theft protection has taken some advantages of ideas
   of Lionel "Trollhunter" Bouchpan-Lerust-Juery and a discussion, which
   has taken place in the [http://www.debian.org/MailingLists/subscribe]
   debian-laptop mailing list in January 2001.
     ________________________________________________________________

15.9. Dealing with Down Times (Cron Jobs)

   A cron-like program that doesn't go by time: anacron (like
   "anac(h)ronistic") is a periodic command scheduler. It executes
   commands at intervals specified in days. Unlike cron, it does not
   assume that the system is running continuously. It can therefore be
   used to control the execution of daily, weekly and monthly jobs (or
   anything with a period of n days), on systems that don't run 24 hours
   a day. When installed and configured properly, anacron will make sure
   that the commands are run at the specified intervals as closely as
   machine-uptime permits.

   [http://metalab.unc.edu/pub/Linux/system/daemons/cron] hc-cron is a
   modified version of Paul Vixie's widely used cron daemon. Like the
   original program it runs specified jobs at periodic intervals.
   However, the original crond relies on the computer running
   continuously, otherwise jobs will be missed. This problem is
   addressed by hc-cron, that is indended for use on home-computers that
   are typically turned off several times a day; hc-cron will remember
   the time when it was shut down and catch up jobs that have occurred
   during down time when it is started again.
     ________________________________________________________________

15.10. Mobile Printing

   There are different techniques to print from mobile computers. You
   may use mobile printer hardware (see chapter Printers and Scanners
   above) or print via a stationary printer. To connect to a mobile or
   stationary printer or printer server you may use many protocols:

    1. InfraRed - IrLPT/IrCOMM: See the
       [http://tuxmobil.org/howtos.html] InfraRed-HOWTO.
    2. InfraRed - IrOBEX: See the [http://tuxmobil.org/howtos.html]
       InfraRed-HOWTO.
    3. BlueTooth: See the
       [http://www.holtmann.org/linux/bluetooth/cups.html] Bluetooth
       printing backend for CUPS At the moment this backend only
       provides native printing for Bluetooth serial port enabled
       printers, but for the future the support of Basic Printing (BPP)
       and Hardcopy Cable Replacement (HCRP) is planned.
    4. wireless network - WLAN
    5. network - LAN
    6. rlpr - remote line printer
    7. Server Message Block - SMB, via SAMBA
    8. parallel port
    9. serial port
   10. USB port
     ________________________________________________________________

15.11. Noise Reduction

   Due to the proliferation of cellular phones and walkmans it's not
   quite common in our days to take care of a quiet environment. Anyway
   I want to give some recommendations for the polite ones.

   Computer noises are caused by hardware (fan, optical drive, hard
   disk) and applications.
     ________________________________________________________________

15.11.1. Console (Shell) and X11

   The beeping of X11 windows can be configured to a shorter and lower
   pitched tone or even to a blunt "thump" with xset b ... options (a
   lower pitched tone is usually less annoying and distracting).
   Independently of that, most xterm-compatible windows and shells can
   be configured to make "visual bell" instead of "audio bell". For the
   console setterm -blength 0 and for X11 xset b off turns the bell off.
   See also the PCMCIA-HOWTO and much more details in the
   [http://tldp.org/HOWTO/Visual-Bell.html] Visible-Bell-Howto.
     ________________________________________________________________

15.11.2. PCMCIA

   When starting your laptop with PCMCIA-CS configured correctly, this
   will be shown by two high beeps. If you want to avoid this put
   CARDMGR_OPTS="-q" into the PCMCIA configuration file, e.g.
   /etc/default/pcmcia for Debian/GNU Linux.

   To avoid the dialtones during the modem dialing add

module "serial_cs" opts "do_sound=0"

   to /etc/pcmcia/config.opts (from man serial_cs). This will disable
   speaker output completely, but the AT M command should let you
   selectively control when the speaker is active, e.g. AT M0 turns off
   the modem's speaker.
     ________________________________________________________________

15.11.3. USB

   usbmgr configuration file /etc/usbmgr.conf.
### BEEP
# beep off
# beep on
     ________________________________________________________________

15.11.4. Hotplug

   Add an entry into the configuration file /etc/sysconfig/hotplug.
HOTPLUG_BEEP="no"
     ________________________________________________________________

15.11.5. Fan

   Warning

   Please make sure what you are doing, when configuring the fan. Your
   laptop may overheat and die, in case you have done something wrong.
   Just in case you want to check the fan try to cause a heavy CPU load,
   for example by issueing md5sum /dev/urandom. Now top will show an
   increased CPU load and the fan should began to run eventually. Note:
   usually you need to have been connected to power, otherwise the CPU
   might reduce load by itself. Also watch for the CPU temperature acpi
   -bt or cat /proc/acpi/thermal_zone/*.

   For some laptop series there are Linux utilities available to control
   the fan and other features.

     * [http://www.buzzard.me.uk/toshiba/index.html] Toshutils by
       Jonathan Buzzard for some Toshiba models.
     * [http://tpctl.sourceforge.net] tpctl IBM ThinkPad configuration
       tools for Linux by Thomas Hood.
     * [http://people.debian.org/~dz/i8k/] i8k utils for DELL laptops.
     ________________________________________________________________

15.11.5.1. Known Problems

   With some laptops the fan is always on or at least very often. Here
   are some remedies.
     ________________________________________________________________

15.11.5.1.1. Reduction of CPU Frequency

   In some cases the fan is always on because the CPU is working with
   highest frequency. You may use either
   [http://sourceforge.net/projects/cpufreqd] cpufreqd or
   [http://mnm.uib.es/~gallir/cpudyn/] cpudyn to cure this.
     ________________________________________________________________

15.11.5.1.2. IRQ Problems with ParPort Module

   Sometimes the parport causes the fan to be always on. You may edit
   the /etc/modules.conf to cure this:
 alias parport_lowlevel parport_pc
 options parport_pc io=378 irq=7

   The IO address and the IRQ number depend on the hardware settings or
   the BIOS configuration. Often the IRQ does not need to be given. The
   problem and its solution was discussed in the
   [http://lists.opensuse.org/opensuse-mobile-de/2002-11/msg00174.html]
   SuSE Laptop Mailing List (in German).
     ________________________________________________________________

15.11.5.1.3. ACPI

   Sometimes a setting in the /proc/acpi/ might also help.
     ________________________________________________________________

15.11.5.1.4. Miscellaneous

   Pressing the Fn+z key kombination tells the BIOS to recheck the
   sensors and stops the fan, for DELL laptops.
     ________________________________________________________________

15.11.6. Harddisk

   To avoid unnecessary hard disk noise you may use the same techniques
   as described in the power saving chapter above. Modern laptop and
   notebook hard drives come with a so-called "Acoustic Management",
   just have a look into the manual to get an overview about the
   possible settings.

   Some hard disk manufacturers offer dedicated tools, e.g. Hitachi's
   [http://www.hitachigst.com/hdd/support/download.htm] Feature Tool
   allows to change the drive Automatic Acoustic Management settings to
   the Lowest acoustic emanation setting (Quiet Seek Mode), or Maximum
   performance level (Normal Seek Mode). Also hdparm -M offers some
   Acoustic Management options.
     ________________________________________________________________

15.11.7. Miscellaneous Applications

   You may configure vi with the flash option, so it will use a flash in
   case of an error, instead of a bell. So just put this line into your
   .vimrc or at the vim prompt:
set flash

   or try
set visualbell
     ________________________________________________________________

Chapter 16. Solutions with Mobile Computers

16.1. Introduction

   The power and capabilities of laptops and PDAs are sometimes limited
   as described above. But in turn, they have a feature which desktops
   don't have their mobility. I try to give a survey about applications
   which make sense in connection with mobile computers.
     ________________________________________________________________

16.2. Mobile Network Analyzer

   I'm not an expert in this field, so I just mention the tools I know.
   Please check also for other applications. Besides the usual tools
   tcpdump, netcat, there are two applications I prefer, which may be
   used to analyze network traffic:

   The [http://www.ee.ethz.ch/stats/mrtg/] Multi Router Traffic Grapher
   (MRTG) is a tool to monitor the traffic load on network-links. MRTG
   generates HTML pages containing GIF images which provide a LIVE
   visual representation of this traffic. MRTG is based on Perl and C
   and works under UNIX and Windows NT.

   [http://ntop.org/] Network Top - ntop is a UNIX tool that shows the
   network usage, similar to what the popular top UNIX command does.
   ntop is based on libpcap and it has been written in a portable way in
   order to virtually run on every UNIX platform and on Win32 as well.
   ntop can be used in both interactive or web mode. In the first case,
   ntop displays the network status on the user's terminal. In web mode
   a web browser (e.g. netscape) can attach to ntop (that acts as a web
   server) and get a dump of the network status. In the latter case,
   ntop can be seen as a simple RMON-like agent with an embedded web
   interface.
     ________________________________________________________________

16.3. Mobile Router

   Though designed to work from a single floppy, the Linux Router
   Project (LRP) , seems useful in combination with a laptop, too.
     ________________________________________________________________

16.4. Hacking and Cracking Networks

   When thinking about the powers of laptops, hacking and cracking
   networks may come into mind. I don't want to handle this topic here,
   but instead recommend the
   [http://www.linuxsecurity.com/Security-HOWTO] Security-HOWTO .
     ________________________________________________________________

16.5. Mobile Data Collection

16.5.1. Related Documentation

    1. [http://tldp.org/HOWTO/Coffee.html] Coffee-HOWTO
    2. [http://tldp.org/HOWTO/AX25-HOWTO/] AX-25-HOWTO
    3. [http://tldp.org/HOWTO/Serial-HOWTO.html] Serial-HOWTO
    4. [http://tldp.org/HOWTO/Serial-Programming-HOWTO/]
       Serial-Programming-HOWTO
     ________________________________________________________________

16.5.2. Applications

   A Linux laptop can be used to collect data outside an office, e.g.
   geodesy data, sales data, network checks, patient data in a hospital
   and others. There is support for wireless data connections via
   cellular phone modems and amateur radio. I am not sure whether PCMCIA
   radio cards are supported, see [http://www.aironet.com/] Aironet
   Wireless Communications.
     ________________________________________________________________

16.5.3. Specific Environments

   There are laptops available with cases build for a rugged environment
   (even waterproof laptops). In some environments, for instance in
   hospitals, take care of the Electro-Magnetic-Compatibility of the
   laptop. This is influenced by many factors, for instance by the
   material used to build the case. Usually magnesium cases shield
   better than the ones made of plastics.
     ________________________________________________________________

16.6. Mobile Office

   With [http://www.kde.org] KDE (K-Office), [http://www.gnome.org/]
   Gnome and the commercial products WordPerfect, Staroffice and
   [http://www.applix.com/] Applixware Linux has more and more business
   software applications. With the corresponding hardware, e.g. a
   portable printer and a cellular phone which connects to your laptop,
   you will have a very nice mobile office.
     ________________________________________________________________

16.7. Connection to Digital Camera

   AFAIK there are currently three methods to connect a digital camera
   to a laptop: the infrared port (IrDA®), serial port and maybe USB.
   There are also some auxiliary programs for conversion of pictures,
   etc.

   Eric <dago_AT_tkg.att.ne.jp> wrote: "I finally succeeded in
   downloading pictures from my digital camera, but not exactly the way
   I expected, i.e. not through USB port but using PCMCIA card port and
   memory stick device, part of digital camera hardware. Anyway, some
   interesting things to mention:

   Sony (pretending using a standard) uses the msdos format to store
   images as JPEG files ; so the best way to have your OS recognizing
   them is to mount the raw device like a msdos filesystem; using mount
   directly doesn't work (don't know why) but an entry in the /etc/fstab
   file allows you to mount the device correctly. i.e.:
/dev/hde1    /mnt/camera    msdos     user,noauto,ro    0    0

   Of course, newfs before mount works too, but there is nothing to see
   at all ;-) I think both noauto and ro are important flags; I tried
   without it and it didn't work. Somehow the mount I got seems buggy .
   And if ro is missing, the camera doesn't recognize back the memory
   stick and it needs to be msdos-formatted.

   Appropriate to the camera documentation , both PCMCIA and USB port
   behave the same (for Mac and Windoze - i.e. you see a file system
   auto mounted) - I deduce for Linux it should be the same thing too,
   as long as the USB driver is installed. I think now that mounting USB
   raw device the way I did with PCMCIA should work, but I still
   couldn't find which device to use."

   [http://digitalux.netpedia.net/] OpenDiS (Open Digita Support) is a
   library and utility program for cameras such as the Kodak DC-220,
   DC-260, DC-265, and DC-280, that run Flashpoint's Digita operating
   system. The library is a unix implementation of the Digita Host
   Interface Specification, intended for embedding Digita support in
   other products such as gPhoto. The utility is a simple command-line
   program for standalone downloading of photos from the cameras.

   [http://www.gphoto.org/] gPhoto enables you to take a photo from any
   digital camera, load it onto your PC running a free operating system
   like GNU/Linux, print it, email it, put it on your web site, save it
   on your storage media in popular graphics formats or just view it on
   your monitor. gPhoto sports a new HTML engine that allows the
   creation of gallery themes (HTML templates with special tags) making
   publishing images to the world wide web a snap. A directory browse
   mode is implemented making it easy to create an HTML gallery from
   images already on your computer. Support for the Canon PowerShot A50,
   Kodak DC-240/280 USB, and Mustek MDC-800 digital cameras.

   [http://www.lightner.net/lightner/bruce/ppc_use.html] photopc is a
   library and a command-line frontend to manipulate digital still
   cameras based on Fujitsu chipset and Siarra Imaging firmware. The
   program is known to work with Agfa, Epson and Olympus cameras. Should
   also work with Sanyo, but this is untested. The cameras typically
   come with software for Windows and for Mac, and no description of the
   protocol. With this tool, they are manageable from a UNIX box. Bruce
   D. Lightner <lightner_AT_metaflow.com> has added support for Win32
   and DOS platforms. Note that the program does not have any GUI, it is
   plain command-line even on Windows. For a GUI, check out the phototk
   program.

   [http://kdc2tiff.sourceforge.net/] kdc2tiff is software to convert
   .kdc images from Kodak's DC120 digital camera to .tiff or .jpg files.
   This software pays particular attention to aspect ratio, high quality
   scaling, contrast adjustment, gamma correction, and image rotation.

   [http://www.netspace.net.au/~bmiller/linux/rdc2e/] rdc2e is a command
   line tool that downloads images from a Ricoh RDC-2E digital camera.
   It is available as either a source tar ball or a RedHat 6.1 i386 RPM.

   [http://www.debian.org/Packages/unstable/graphics/fujiplay.html]
   fujiplay Interface for Fuji digital cameras.
     ________________________________________________________________

16.8. Connection to QuickCam (Video)

   AFAIK there are three methods to connect a video camera to a laptop:
   a ZV port, FireWire and maybe USB, but I don't know how this works
   with Linux. I have heard rumors about using a sound card for video
   data transfer to a Linux box, see [http://worldvisions.ca/~apenwarr/]
   apenwarr . I have heard rumors about a Linux-QuickCam-mini-HOWTO, but
   couldn't find a reliable URL yet. Check the sane package which is
   build for scanner support, this should contain support for
   still-grabbers as well.

   [http://kmc-utils.sourceforge.net/] kmc_remote provides a graphical
   interface for controlling Kodak Motion Corder fast digital cameras
   over a serial connection. kmc_remote is built on the kmc_serial
   library, part of the kmc_utils package. kmc_remote provides a virtual
   button panel and simple one-touch commands for changing system
   variables which would involve multiple button operations on the real
   camera button console. Buttons, record settings (image size, record
   rate, shutter speed, trigger mode, burst mode), and playback rate
   control should be fully functional. All camera models are supported,
   as well as both PAL and NTSC video.

   [http://www.intel.com/PCcamera/] Intel PC Camera Pro Pack is one of
   the first webcams with USB ports. Also SONY has announced a webcam
   with USB port. See a survey at
   [http://www.steves-digicams.com/text_navigator.html] Steve's Digicams
   .
     ________________________________________________________________

16.9. Connection to Television Set

   If you have a ZV port in the laptop, it should be easy to connect it
   to a TV set, using either NSCA or PAL, but I don't know whether
   either works with Linux.
     ________________________________________________________________

16.10. Connection to Cellular Phone

   AFAIK there are two methods to connect a cellular phone to a laptop:
   via the infrared port (IrDA®) or via the serial port. See the
   Linux/IrDA® project for the current status of IrDA® connections. As
   far as I know only the Ericsson SH888, the Nokia 8110 and the Siemens
   S25 provide infrared support.
     ________________________________________________________________

16.11. Connection to Global Positioning System (GPS)

   From the [http://tldp.org/HOWTO/Hardware-HOWTO/] Hardware-HOWTO I
   know there is Trimble Mobile GPS available for Linux. You may also
   connect a GPS via a serial port. Most GPS receivers have a data port
   and can connect to a PC with a special serial cable.

     * Differential GPS is a technique to apply a correction factor from
       a known location to a GPS signal. This can substantially reduce
       the uncertainity in the GPS location. Normally the correction
       signal is acquired using a special radio receiver: dgpsip allows
       you to receive a DGPS signal via TCP/IP, and send it to the GPS
       connected to your serial port.
     * [http://www.wombat.ie/gps/] DGPS is a project to put together a
       low cost hardware and software solution for Differential GPS (in
       both real time mode using RTCM correction format and in post
       processed mode).
     * [http://www.mayko.com/gpsd.html] gpsd is a daemon that listens to
       a GPS or Loran receiver and translates the positional data to
       simplified format that can be more easily used by other programs,
       like chart plotters. The package comes with a sample client that
       plots the location of the currently visible GPS satellites (if
       available) and a speedometer. Added support for the DeLame
       EarthMate as well as a new 'speedometer' mini client.
     * The [http://www.gbdirect.co.uk/] QtGPS package contains a piece
       of software for UNIX/Linux/X and a GPS receiver. It performs
       logging and replaying of a journey, supporting a moving-map
       display. QtGPS works with Lat/Long and British OSGB (Ornance
       Survey) co-ordinate systems.
     * [http://www.geog.uni-hannover.de/grass/index.php] GRASS
       (Geographic Resources Analysis Support System) is a free software
       raster and vector based GIS, image processing system, graphics
       production system, and spatial modeling system.
     * [http://www.eazy.net/users/fgiannan/xaprs/] XASTIR is a free APRS
       (Automatic Position Reporting System) program. APRS(tm) was
       developed to track mobile GPS stations with two-way radio to
       convey position reports, messaging, weather and more. XASTIR
       plots this information on a map on your screen where you can see
       the entire world or zoom down to street level.
     * [http://www.amphibious.org/gps.html] as-gps contains a basic
       support library for accessing the inexpensive ($20) Aisin-Seiki
       GPS Module previously available at mavin.com. The package also
       includes several simple console utilities for dumping satellite
       status, location, and time and for synchronizing the system
       clock.
     * [http://academy.cas.cz/~gis/] gmap is a map viewer with emphasis
       on temporal data. It hopes to evolve into a free and powerful
       Geographical Information System.
     * [http://www.mgix.com/gps3d/] gps3d is a set of utilities that
       lets you manipulate your GPS from your Linux box. One nice
       feature is the ability to view GPS data (track, waypoints, fix,
       etc.) on an OpenGL, 3D texture-mapped model of earth.
     ________________________________________________________________

16.12. Connection via Amateur Radio (HAM)

   As far as I know laptops are used in amateur radio contests. Please
   see HAM-HOWTO by Terry Dawson, VK2KTJ,
   <terry_AT_perf.no.itg.telstra.com.au>.

   [http://www.eazy.net/users/fgiannan/xaprs/] XASTIR is a free APRS
   (Automatic Position Reporting System) program. APRS(tm) was developed
   to track mobile GPS stations with two-way radio to convey position
   reports, messaging, weather and more. XASTIR plots this information
   on a map on your screen where you can see the entire world or zoom
   down to street level.
     ________________________________________________________________

16.13. Satellite Watching

   Together with an antenna and software like seesat or sattrack you can
   use a laptop to locate a satellite for visual observation. You could
   also use xephem on a laptop when stargazing. See also the
   [http://tldp.org/HOWTO/Astronomy-HOWTO/] Astronomy-HOWTO .
     ________________________________________________________________

16.14. Aviation

   Many people are using laptops for aviation related topics. The
   [http://metalab.unc.edu/fplan/Aviation-HOWTO/] Aviation HOWTO
   provides pointers to software packages that run under the Linux
   operating system and are useful to private, commercial, or military
   pilots. The ultimate goal is to enable pilots to use the Linux
   operating system for all their aviation related computing needs.
     ________________________________________________________________

16.15. Blind or Visually Impaired Users

   There are some groups of which could gain a specific profit by using
   laptops. For instance blind or visually impaired people (I explicitly
   avoid to say handicapped people). See
   [http://tldp.org/HOWTO/Accessibility-HOWTO/] Accessibility-HOWTO and
   [http://leb.net/blinux/] Blinux - Linux for blind people for more
   information. brltty is a program which supports different braille
   terminals. Festival is a speech synthesis system. Screen and cursor
   magnifiers are available. See TuxMobil for a
   [http://tuxmobil.org/mobile_blind.html] small survey of laptop
   installation reports by or for blind people.

VIII. Appendix

   Table of Contents
   A. Other Operating Systems

        A.1. Microsoft DOS and Windows
        A.2. BSD UNIX
        A.3. OS/2
        A.4. NOVELL Netware
        A.5. Debian GNU/Hurd (hurd-i386)

   B. Other Resources

        B.1. Main WWW Resources
        B.2. Mailing Lists
        B.3. USENET Newsgroups
        B.4. Newsletters, RSS Channels
        B.5. Magazines, Blogs Newsletters
        B.6. General Laptop Information

   C. Repairing the Hardware
   D. Survey about Micro Linuxes
   E. Dealing with Limited Resources or Tuning the System

        E.1. Related Documentation
        E.2. Introduction
        E.3. Small Space
        E.4. Hard Disk Speed
        E.5. Small Memory
        E.6. Low CPU Speed
        E.7. Power Saving Techniques
        E.8. Kernel
        E.9. Tiny Applications and Distributions
        E.10. Hardware Upgrade

   F. Ecology and Laptops

        F.1. Ecological Comparisons of Computers

   G. NeoMagic Graphics Chipset Series NM20xx

        G.1. Introduction
        G.2. Textmode 100x37

   H. Annotated Bibliography: Books For Linux Nomads
   I. Resources for Specific Laptop Brands

        I.1. COMPAQ
        I.2. DELL
        I.3. IBM/Lenovo(TM) ThinkPad
        I.4. Sony VAIO
        I.5. Toshiba

   J. Credits
   K. Copyrights

        K.1. Copyrights
        K.2. GNU Free Documentation License - GFDL
     ________________________________________________________________

Appendix A. Other Operating Systems

A.1. Microsoft DOS and Windows

A.1.1. Introduction

   There are a few reasons which might make it necessary to put
   Micorosoft DOS/Windows and Linux together on one laptop. Often the
   support for the flash ROM of PCMCIA cards and modems is not available
   for Linux, or you have to retrieve hardware information, which is not
   visible with Linux, due to a lack of support by some hardware
   manufacturers. I'm not sure whether these tasks can be performed
   under an emulation like DOS-EMU, WINE or VMware.

   If you want Linux with X11, Netscape, etc., and
   Microsoft-Windows9x,NT,2000,XP things will be tight in a 1GB
   harddisk. Though I did so with a 810MB disk.
     ________________________________________________________________

A.1.2. DOS Tools to Repartition a Hard Disk

   Often you get a preinstalled version of Microsoft-Windows on your
   laptop. If you just want to shrink the Windows partition, you need a
   tool to resize the partition. Or you can remove the partition first,
   repartition, then reinstall. Most of the following information I
   found at the page of [http://libweb.sonoma.edu/mike/fujitsu/] Michael
   Egan <Michael.Egan_AT_sonoma.edu>.

   A well known and reliable commercial product is
   [http://www.powerquest.com/] Partition Magic from Power Quest.

   [http://www.bootitng.com] BootitNG is a shareware programm, which is
   capable of resizing NTFS, EXT2, EXT3 and ReiserFS partitions.

   System Commander 2000 by Symantec? resizes FAT32 partitions, unlike
   Partition Magic, SC2000 seems to be able to work without the presence
   of an installed Microsoft operating system (tough you may use
   Partition Magic from two standalone floppy disks).

   One more "newer" utility for repartitioning and resizing FAT
   partitions is Ranish Partition Manager/Utility (FAT-32 support is
   claimed for this as well, Linux support is taken into account.)
   [http://www.ranish.com/part/] Ranish Partition Manager/Utility .

   Many people have used FIPS 15c (which may support FAT-32)
   [http://bmrc.berkeley.edu/people/chaffee/fips/fips.html] FIPS for
   repartitioning FAT partition sizes.) Also, another version from a
   different source is FIPS 2.0 (claims to support FAT-32)
   [http://www.igd.fhg.de/~aschaefe/fips/] FIPS 2.0 for repartitioning
   FAT partition sizes.)
     ________________________________________________________________

A.1.3. Partition Sharing

   You may share your swap space between Linux and Windows. Please see
   "Dealing with Limited Resources" section.

   With Linux you can mount any kind of DOS/Windows partition of the
   type msdos, vfat and even compressed drives (Drivespace, etc.). For
   long file names use vfat and if you like autoconversion ( a nice
   feature for text files), you may do so by using the conv=auto option.
   I have used this in my /etc/fstab, but be aware this might cause some
   strange behaviour sometimes, look at the kernel docs for further
   details.

/dev/hda8    /dos/d    vfat    user,exec,nosuid,nodev,conv=auto    0    2

   The other way round there are also
   [http://www.chrysocome.net/projects] some tools, which provide a
   means to read and write ext2 partitions from Windows9x/NT.

   [http://www.it.fht-esslingen.de/~zimmerma/software/ltools.htm] LREAD
   is a tool suite for Windows 9x and Windows NT (or DOS or Windows 3.x
   for those who still have it) for accessing files on Linux harddisks
   (Linux's native Extended 2 filesystem).

   The tools allow to list directories, to copy files from Linux to DOS
   and to copy files from DOS to Linux. You also can delete files or
   modify access rights of Linux files from DOS/Windows.

   In combination with an included simple server program, you can also
   access your files from a remote client over the net (however, this
   might be a security risk, as access protection in this case is rather
   simple).
     ________________________________________________________________

A.1.3.1. LINE Is Not an Emulator

   [http://line.sourceforge.net] LINE executes unmodified Linux
   applications on Windows by intercepting Linux system calls. The Linux
   applications themselves are not emulated. They run directly on the
   CPU just like all other Windows applications.
     ________________________________________________________________

A.1.4. Installation without CD Drive

   You may use the CD drive of a desktop (or copy the content of the CD
   to the hard disk) and connect both machines with a null modem cable.
   Then use a DOS boot floppy and the program INTERLNK.EXE to connect
   both machines.
     ________________________________________________________________

A.1.5. Miscellaneous

   [http://www.travsoft.com/] TravSoft

   Windows/NT offers: RAS - Remote Access Service

   Windows/9x/NT offers the PPTP protocol to connect to remote sites via
   a TCP/IP tunnel. This protocol is also supported by Linux.
   [http://www.moretonbay.com/vpn/pptp.html] PoPToP is the PPTP server
   solution for Linux allowing Linux servers to function seamlessly in
   the PPTP VPN environment. This enables administrators to leverage the
   considerable benefits of both Microsoft clients and Linux servers.
   The current pre-release version supports Windows 95/98/NT PPTP
   clients and PPTP Linux clients. The PoPToP pre-release server is not
   yet fully optimised. On release, PoPToP will be fully compliant with
   IETF PPTP Internet Draft and it will seamlessly support Windows PPTP
   clients with the full range of encryption and authentication
   features.
     ________________________________________________________________

A.2. BSD UNIX

   FreeBSD is a version of the UNIX operating system that runs on PC
   hardware. It uses a different set of support for PCMCIA devices, APM,
   and other mobility related issues.

    1. [http://www.freebsd.org/~picobsd/] PicoBSD is a one floppy
       version of FreeBSD 3.0-current, which in its different variations
       allows you to have secure dialup access, small diskless router or
       even a dial-in server. And all this on only one standard 1.44MB
       floppy. It runs on a minimum 386SX CPU with 8MB of RAM (no HDD
       required!). You probably may also use it to install BSD on a
       laptop as described with micro Linuxes above.
    2. [http://www.jp.FreeBSD.org/PAO/] PAO: FreeBSD Mobile Computing
       Package
    3. [http://www.monarch.cs.cmu.edu/] The CMU Monarch Project offers
       implementations of Mobile-IPv4 and Mobile-IPv6 for FreeBSD.
    4. [http://www.yy.cs.keio.ac.jp/~sanpei/note-list.html] XF86Config
       Archive . A database of XF86Config files used by Linux and
       FreeBSD users. If you need an XF86Config file for your notebook
       or laptop, check out this site. (Some documents available in
       Japanese only.)
    5. AFAIK there is no IrDA® support yet.
    6. [http://lists.openresources.com/FreeBSD/freebsd-mobile/] Archive
       of the FreeBSD-Mobile mailing list . Sorry don't know how to
       subscribe yet.
    7. [http://www.jp.freebsd.org/PAO/LAPTOP_SURVEY/] Laptop Survey /
       FreeBSD - LTS is a project to collect information of laptop and
       NOTE-PC environments running FreeBSD. It provides information in
       English and Japanese. Please support this project.
     ________________________________________________________________

A.3. OS/2

   At [http://www.os2ss.com/users/DrMartinus/notebook.htm] The
   Notebook/2 Site by Dr. Martinus you may find information about
   different notebooks and PCMCIA cards working with OS/2.
     ________________________________________________________________

A.4. NOVELL Netware

   The client side with DOS/Windows9x style operating systems seems to
   be no problem, since there are many PCMCIA cards with drivers for
   Netware available. For Linux connections see the mars_nwe package.
   Also the Caldera Linux distribtion is well known for its Novell
   support.

   I hadn't time to build a Netware server on a laptop yet and couldn't
   check whether there are network connections possible (PCMCIA driver
   for Netware server).
     ________________________________________________________________

A.5. Debian GNU/Hurd (hurd-i386)

   The GNU Hurd is a totally new operating system being put together by
   the GNU group. In fact, the GNU Hurd is the final component which
   makes it possible to built an entirely GNU OS -- and Debian GNU/Hurd
   is going to be one such (possibly even the first) GNU OS. The current
   project is founded on the i386 architecture, but expect the others to
   follow soon.

   The
   [http://www.urbanophile.com/arenn/hacking/hurd/hurd-hardware.html]
   GNU Hurd Hardware Compatibility Guide states that Hurd should work on
   laptops, but PCMCIA support isn't ready yet.
     ________________________________________________________________

Appendix B. Other Resources

B.1. Main WWW Resources

   Kenneth E. Harker maintains a quite valuable database at
   [http://www.linux-on-laptops.com/] Linux on Laptops . Please have a
   look at his site to get current information about laptop related
   mailing lists, newsgroups, magazines and newsletters, WWW sites and a
   big and up-to-date database about many different laptop pages.

   The author of this guide maintains the TuxMobil Linux Laptop and
   Notebook Installation Survey and a Linux compatibility database about
   different laptop, notebook and PDA hardware, such as
   [http://tuxmobil.org/pcmcia_linux.html] PCMCIA/CardBus/CF-Cards,
   [http://tuxmobil.org/graphic_linux.html] graphics cards,
   [http://tuxmobil.org/sound_linux.html] sound chips,
   [http://tuxmobil.org/ir_misc.html] IrDA devices, and more.
     ________________________________________________________________

B.2. Mailing Lists

   A survey of laptop mailing lists. Some of the addresses are taken
   from Kenneths page. All comments are by me:
     ________________________________________________________________

B.2.1. General Lists

   To join the Linux-Laptop-Mailing-List at TuxMobil visit the
   subscription page. There you may find the list archive, too. This is
   a new list, but offers a reasonable amount of members already.

   To join the Linux-Laptop-Mailing-List from Kernel.Org write a mail to
   <majordomo_at_vger.kernel.org> with subscribe linux-laptop in the
   subject. You will get a confirmation message than, which you have to
   reply appropriately. Note: This is the list formerly admininstrated
   by <majordomo_at_vger.rutgers.edu>. This was a list with much
   traffic, current traffic seems to be very low. The list seems to have
   lost most of its members since changing the address.

   A searchable mailing list archive (of the predecessor) is hosted in
   the miscellaneous section of [http://www.geocrawler.com] GeoCrawler.

   The [http://www.egroups.com/group/linuxonlaptop] eGroups Discussion
   Forum (linuxonlaptop) is dedicated to Linux on laptop issues. It has
   almost no traffic and is archived.

   Also the [http://www.egroups.com/group/linuxlaptop] eGroups
   Discussion Forum (linuxlaptop) is dedicated to Linux on laptop
   issues. It has almost no traffic and is archived.

   The
   [http://www.eecs.umich.edu/~steveh/linux-notebook/discussion.html]
   Linux Notebook HQ Discussion Forum is dedicated to Linux on laptop
   issues. It has almost no traffic and is archived.
     ________________________________________________________________

B.2.2. Lists Dedicated to a Linux Distribution

   There is now a debian-laptop mailing list. Any questions or
   discussions concerning running the Debian/GNU Linux operating
   system(s) on laptops are welcome. Send mail to
   <debian-laptop-request_at_lists.debian.org> with a subject of
   subscribe. Or visit the
   [http://www.debian.org/MailingLists/subscribe] Debian/GNU Linux site
   and use the online form. The list is archived and has a reasonable
   amount of traffic and a good quality.

   SuSE offers a mailing list for discussion about mobility in the
   openSUSE distribution <opensuse-mobile_AT_opensuse.org>. You may
   subscribe at the [http://en.opensuse.org/Communicate] SuSE mailing
   list portal. Before asking questions there have a look into the
   [http://en.opensuse.org/HCL/Laptops] OpenSuse Hardware Compatibility
   List - HCL: Laptops, the [http://lists.opensuse.org/opensuse-mobile/]
   opensuse-mobile mailing list archive and the
   [http://en.opensuse.org/Documentation] OpenSuSE documentation portal.
     ________________________________________________________________

B.2.3. Lists Dedicated to a Laptop or Manufacturer

   The [http://www.egroups.com/group/linux-dell-laptops]
   linux-dell-laptops is dedicated to Linux on DELL laptop issues. It
   has almost no traffic and is archived.

   The linux-thinkpad list is dedicated to Linux on IBM ThinkPads
   issues. It

   The linux-thinkpad list is dedicated to Linux on IBM ThinkPads
   issues. It has almost no traffic. Write a mail to
   <majordomo_at_bm-soft.com>.

   Also the [http://www.topica.com/lists/linux-thinkpad/] linux-thinkpad
   is dedicated to Linux on IBM ThinkPads issues. It has almost no
   traffic and is archived.

   The [http://www.onelist.com/subscribe.cgi/linux-on-portege]
   linux-toshiba-portege is dedicated to Linux on Toshiba Porteges
   issues. It has almost no traffic and is archived.

   The linux-tosh-40xx list is dedicated to Linux on Toshiba Satellite
   40xx issues. It has almost no traffic. Write a mail to
   <majordomo_at_geekstuff.co.uk>.
     ________________________________________________________________

B.3. USENET Newsgroups

   The USENET newsgroups can provide a source of information about
   aspects of running Linux on notebooks that haven't yet been
   documented. If you are unable to find the information you are looking
   for here or on any of the pages linked to from this site, a post to
   the USENET newsgroups may turn up an answer from someone that can
   help you.
     ________________________________________________________________

B.3.1. Linux Newsgroups

     * [news:comp.os.linux.portable] comp.os.linux.portable As far as I
       know there is no archive of this group yet.
     * [news:comp.os.linux.announce] comp.os.linux.announce
     * comp.sys.mac.portables
     * [news:comp.os.linux.answers] comp.os.linux.answers
     * [news:comp.os.linux.development.apps]
       comp.os.linux.development.apps
     * [news:comp.os.linux.development.system]
       comp.os.linux.development.system
     * [news:comp.os.linux.hardware] comp.os.linux.hardware
     * [news:comp.os.linux.misc] comp.os.linux.misc
     * [news:comp.os.linux.networking] comp.os.linux.networking
     * [news:comp.os.linux.setup] comp.os.linux.setup
     * [news:comp.os.linux.x] comp.os.linux.x
     ________________________________________________________________

B.3.2. PDA Newsgroups and IRC Channels

     * comp.sys.handhelds
     * comp.sys.newton.misc
     * comp.sys.palmtops
     * comp.sys.pen
     * #zaurus@irc.freenode.net
     * irc.freenode.net #opie #opie.de
     ________________________________________________________________

B.3.3. X Window System Newsgroups

     * [news:comp.windows.x] comp.windows.x
     * [news:comp.windows.x.announce] comp.windows.x.announce
     * [news:comp.windows.x.apps] comp.windows.x.apps
     * [news:comp.windows.x.i386unix] comp.windows.x.i386unix
     ________________________________________________________________

B.3.4. Hardware Newsgroups

     * [news:comp.sys.laptops] comp.sys.laptops
     * [news:alt.periphs.pcmcia] alt.periphs.pcmcia
     * [news:comp.sys.ibm.pc.hardware.chips]
       comp.sys.ibm.pc.hardware.chips
     * [news:comp.sys.ibm.pc.misc] comp.sys.ibm.pc.misc
     ________________________________________________________________

B.4. Newsletters, RSS Channels

     * The [http://tuxmobil.org/newsfeed.html] TuxMobil News (RDF/RSS)
       is also available as a [http:tuxmobil.org/mobile_news.html]
       monthly digest via e-mail.
     ________________________________________________________________

B.5. Magazines, Blogs Newsletters

   Magazines, blogs and newsletters about mobile computing in general.

     * [http://laptopical.com/] Laptopical: Laptops Weblog
     ________________________________________________________________

B.6. General Laptop Information

   These are sources of information of general use to laptop and
   notebook owners, regardless of the operating system used.

   [http://www.fcc.gov/oet/fccid/] Federal Communications Commission
   On-line Equipment Authorization Database 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.
     ________________________________________________________________

Appendix C. Repairing the Hardware

   There are several different reasons that could make it necessary to
   open the case of a laptop, notebook or PDA.

    1. repair broken hardware
    2. get some hardware info, which isn't available otherwise, e.g.
       reading the sticker on an undetected chipset
    3. remove the speakers (speakerektomy, as described in
       [http://tldp.org/HOWTO/Visual-Bell.html] Visual-Bell-HOWTO )
    4. install overdrive for CPU
    5. reflash the BIOS
    6. change BIOS battery
    7. upgrade harddisk
    8. upgrade memory
    9. implement additional hardware, e.g. an internal wireless LAN
       miniPCI card

   Repairing a laptop can be quite expensive if you don't have a
   manufacturer's warranty. Sometimes professional support is bad. But
   opening a laptop case can be difficult. Often the procedures to
   upgrade the memory and the harddisk are described in the manual. For
   further details, you should try to get the maintenance/technical
   manual. Just be extremely careful and make notes as to where each
   screw goes. You must get most of them back in the right hole or you
   could ruin the machine by damaging the system board. Also after you
   get all the screws to an assembly out (some will be hidden) the parts
   are usually held together with plastic clips molded in, so you still
   must exercise care to separate them. Sometimes you need certain
   tools, for instance TORX screw drivers or a solder kit. Good luck.

   Warning

   Usually laptop and PDA manufacturers declare the warranty to be void
   if the case was opened by people other than their own staff. If you
   want to try it anyway you may find some interesting links about how
   to [http://repair4laptop.org/] repair, disassemble, upgrade or mod
   laptops or notebooks, [http://repair4pda.org/] dissect, repair and
   upgrade broken PDAs and HandHelds, as well as
   [http://repair4mobilephone.org/] take apart, repair and upgrade
   mobile (cell) phones, [http://repair4player.org/] open, repair and
   upgrade mobile audio and video players and
   [http://repair4printer.org/] repair and upgrade printers.
     ________________________________________________________________

Appendix D. Survey about Micro Linuxes

   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 Microsoft-Windows9x/NT. Or for
   installation purposes using another non Linux machine. There are
   several micro Linux distributions out there that boot from one or two
   floppies or CD/DVD.

   Also a [http://tldp.org/HOWTO/Bootdisk-HOWTO/index.html]
   BootDisk-HOWTO is available. Thanks to Matthew D. Franz maintainer of
   [http://www.trinux.org/] Trinux for this tips and collecting most of
   the following URLs. Search also for "mini distribution" at
   [http://freshmeat.net/] FreshMeat.

    1. [http://www.knopper.net/knoppix/index-en.html] Knoppix by Klaus
       Knopper is a bootable CD with a collection of GNU/Linux software,
       automatic hardware detection, and support for many graphics
       cards, sound cards, SCSI and USB devices and other peripherals.
       KNOPPIX can be used as a Linux demo, educational CD, rescue
       system, or adapted and used as a platform for commercial software
       product demos. It is not necessary to install anything on a hard
       disk. Due to on-the-fly decompression, the CD can have up to 2 GB
       of executable software installed on it. A kix (Knoppix mini CD)
       is now available in the contrib directory.
    2. [http://sunsite.auc.dk/mulinux/] MuLinux by Michele Andreoli.
    3. [http://www.toms.net/~toehser/rb/] tomsrbt "The most Linux on one
       floppy. (distribution or panic disk)." by Tom Oehser.
    4. Trinux [http://www.trinux.org/] Trinux "A Linux Security Toolkit"
       by Matthew D. Franz.
    5. [http://www.psychosis.com/linux-router/] LRP "Linux Router
       Project"
    6. [http://home.sol.no/~okolaas/hal91.html] hal91
       [http://chris.silmor.de/hal91/] hal91 is a very small Linux
       distribution that fits on one floppy disk. You need at least a
       386 machine (FPU not necessary) with 8 mb ram to run HAL91. The
       entire system runs in ram, so you can remove the floppy after
       booting. The kernel supports IDE hard disks and ATAPI cdrom
       drives. Supported filesystems are ext2, iso9660 and vfat,
       optional encryption using AES is possible. Limited support for
       ethernet cards (NE2000 only) is also included. Support for scsi
       adapters, parallel zip drive and other ethernet cards is possible
       by loading kernel modules from an optional package.
    7. [http://www.zelow.no/floppyfw/] floppyfw by Thomas Lundquist.
    8. [http://www.kiarchive.ru/pub/linux/mini-linux/] minilinux:
       Minimal linux package. UMSDOS filesystem (no repartition), TCP/IP
       and SLIP/PPP, X Windows including Xmosaic. Support Soundblaster,
       mouse, modem, SCSI.
    9. [http://sunsite.bilkent.edu.tr/pub/linux/monkey/docs/english.htm]
       Monkey Linux is a minimal Linux ELF distribution in 7.5MB archive
       (5 diskettes) designed to be used within MSDOS and to allow the
       user to experiment with Linux anywhere he/she wants.
   10. [http://web.archive.org/web/*/http://www.wu-wien.ac.at/usr/h93/h9
       301726/dlx.html] DLX by Erich Boehm is a full featured linux
       system running on Intel PC's. The special thing is that DLX comes
       with only one 3,5" floppydisk. DLX boots with a kernel >= 1.3.89
       and starts a ramdisk image. In addition to that DLX also has a
       writeable ext2 filesystem of about 130 kb on the same disk to
       easily store configuration scripts (survives booting, is not on
       the ramdisk !). Further is DLX fully prepared for the
       paralell-port ZIP-Drive which allows you to mount 100 mb disks.
       You can even put large programs like perl5 on the disk because a
       special directory on the ZIP-disk is mounted as /usr/local/*!
   11. [http://metalab.unc.edu/pub/Linux/kernel/images/] C-RAMDISK
       creates a bootable X Windows system that fits on two 1.44 MB
       floppies. The kernel (2.0.26) includes networking (PPP and dialin
       script, NE2000, 3C509) and the driver for the parallel port ZIP
       drive as modules. The file system contains pppd, rlogin, tar and
       ncftp and a small X Windows system. Requires a Linux system (with
       2.0.0 kernel or above) to create the 2 floppies. The cramdisk
       floppy set will boot to "xdm" on a 486/pentium with 16MB RAM. For
       networking, the IP addresses and/or ppp dialin sequence need to
       be set. A method for modifying the floppy image is included.
   12. [http://pocket-linux.coven.vmh.net/] pocket-linux
   13. [http://www.linuxlots.com/~fawcett/yard/] YARD
   14. [http://linux.apostols.org/guru/wen/] ODL
   15. [http://www.superant.com/smalllinux/] SmallLinux by Steven
       Gibson. Three disk micro-distribution of Linux and utilities.
       Based on kernel 1.2.11. Root disk is ext2 format and has fdisk
       and mkfs.ext2 so that a harddisk install can be done. Useful to
       boot up on old machines with less than 4MB of RAM.
   16. [ftp://ftp.blueznet.com/pub/colorg] cLIeNUX by Rick Hohensee
       client-use-oriented Linux distribution
   17. [http://metalab.unc.edu/pub/Linux/kernel] linux-lite by Paul
       Gortmaker for very small systems with less than 2MB RAM and 10MB
       harddisk space (1.x.x kernel)
   18. See also the packages at
       [http://metalab.unc.edu/pub/Linux/system/recovery/!INDEX.html]
       MetaLab formerly known as SunSite and the
       [http://tldp.org/HOWTO/Bootdisk-HOWTO/index.html] Boot-Disk-HOWTO
       .
   19. You may also consider some of the boot floppies provided by
       various distributions falling into this category, e.g. the
       boot/rescue floppy of Debian/GNU Linux.
   20. If you like to build your own flavour of a boot floppy you may do
       so manually, as described in the
       [http://tldp.org/HOWTO/Bootdisk-HOWTO/index.html] Boot-Disk-HOWTO
       or using some helper tools, for instance mkrboot (provided at
       least as a Debian/GNU Linux package) or pcinitrd, which is part
       of the PCMCIA-CS package by David Hinds.
   21. Also you might try to build your Linux system on a ZIP drive.
       This is described in the [http://tldp.org/HOWTO/ZIP-Install.html]
       ZIP-Install-HOWTO .
     ________________________________________________________________

Appendix E. Dealing with Limited Resources or Tuning the System

E.1. Related Documentation

    1. [http://www.tldp.org/HOWTO/LBX.html] LBX-HOWTO
    2. [http://tldp.org/HOWTO/Small-Memory/] Small-Memory-HOWTO
    3. [http://www-128.ibm.com/developerworks/linux/library/l-lwl1/]
       Lightweight Linux, Part 1: Hardware is only as old as the
       software it runs: a modern operating system and up-to-date
       applications return an older system to productivity. This article
       provides best practices and step-by-step guidance on how to build
       a working Linux system on older hardware or on modern hardware
       with limited memory and storage.
     ________________________________________________________________

E.2. Introduction

   As mentioned in the introduction laptops sometimes have less
   resources if you compare them to desktops. To deal with limited
   space, memory, CPU speed and battery power, I have written this
   chapter.
     ________________________________________________________________

E.3. Small Space

E.3.1. Introduction

   There are different types of techniques to gain more disk space, such
   as sharing of space, freeing unused or redundant space, filesystem
   tuning and compression. Note: some of these techniques use memory
   instead of disk space. As you will see, there are many small steps
   necessary to free some space.
     ________________________________________________________________

E.3.2. Techniques

    1. Stripping: Though many distributions come with stripped binaries
       today it is useful to check this. For details see man strip. To
       find every unstripped file you can use the file command or more
       convenient the tool findstrip. Attention: don't strip libraries,
       sometimes the wrong symbols are removed due to a bad programming
       technique. Or use the --strip-unneeded option.
    2. Perforation: zum(1) reads a file list on stdin and attempts to
       perforate these files. Perforation means, that series of null
       bytes are replaced by lseek, thus giving the file system a chance
       of not allocating real disk space for those bytes. Example: find
       . -type f | xargs zum
    3. Remove Odd Files and Duplicates: Check your system for core
       files, emacs recovery files <#FILE#> vi recovery files
       <FILE>.swp, RPM recovery files <FILE>.rpmorig and patch recovery
       files. Find duplicates, you may try finddup. Choose a system to
       name your backup, temporary and test files, e.g. with a signature
       at the end.
    4. Clean Temporary Files: , e.g. /tmp, there is even a tool
       tmpwatch.
    5. Shorten the Log Files: usually the files in /var/log. You may use
       logrotate to achieve this task.
    6. Remove Files: Remove files which are not "necessary" under all
       circumstances such as man pages, documentation /usr/doc and
       sources e.g. /usr/src .
    7. Unnecessary Libraries: You may use the binstats package to find
       unused libraries (Thanks to Tom Ed White).
    8. Filesystem: Choose a filesystem which treats disk space
       economically e.g. rsfs. Tune your filesystem e.g. tune2fs. Choose
       an appropriate partition and block size.
    9. Reduce Kernel Size: Either by using only the necessary kernel
       features and/or making a compressed kernel image bzImage.
   10. Compression: I didn't check this but as far as I know you may
       compress your filesystem with gzip and decompress it on the fly.
       Alternatively you may choose to compress only certain files. You
       can even execute compressed files with zexec
   11. Compressed Filesystems: - For e2fs filesystems there is a
       compression version available [http://e2compr.sourceforge.net/]
       e2compr.
       - [http://cmp.felk.cvut.cz/~pisa/dmsdos/] DMSDOS which enables
       your machine to access Windows95 compressed drives (drivespace,
       doublestacker). If you don't need DOS/Windows95 compatibility,
       i.e. if you want to compress Linux-only data, this is really
       discouraged by the author of the program.
   12. Partition Sharing: You may share swap-space (see
       [http://tldp.org/HOWTO/Swap-Space.html] Swap-Space-HOWTO) or data
       partitions between different OS (see mount). For mounting MS-DOS
       Windows95 compressed drives (doublespace, drivespace) you may use
       dmsdos
       [http://metalab.unc.edu/pub/Linux/system/filesystems/dosfs/]
       dosfs/ .
   13. Libraries: Take another (older) library, for instance libc5 ,
       this library seems to be smaller than libc6 also known as glibc2
       .
   14. Kernel: If your needs are fitted with an older kernel version,
       you can save some space.
   15. GUI: Avoid as much Graphical User Interface (GUI) as possible.
   16. Tiny Distributions: There are some distributions available which
       fit from one 3.5" floppy to 10MB disk space and fit for small
       memories, too. See Appendix A Appendix D and below.
   17. External Storage Devices (Hard Disks, ZIP Drives, NFS, SAMBA):
       Since many notebooks may be limited in their expandability, using
       the parallel port is an attractive option. There are external
       hard disks and ZIP Drives available. Usually they are also
       connectable via PCMCIA. Another way is using the resources of
       another machine through NFS or SAMBA etc.
   18. Purging of uneeded locales: localepurge for Debian is just a
       simple script to recover disk space wasted for unneeded locale
       files and localized man pages. Depending on your installation, it
       is possible to save some 200, 300, or even more megabytes of disk
       space usually dedicated for locales you'll probably never have
       any usage for.
     ________________________________________________________________

E.4. Hard Disk Speed

   Use the tool hdparm to set up better harddisk performance. Though I
   have seen laptop disk enabled with striping, I can't see a reason to
   do so, because in my humble opinion also known as RAID0 striping
   needs at least two different disks to increase performance. Before
   using hdparm check the BIOS settings for harddisk parameters like DMA
   or ATA4 or 32bit transfer. The bad thing is that if something is
   disabled there - it can not be enabled with hdparm!

   See UNIX and LINUX Computing Journal:
   [http://www.diverge.org/ulcj/199910tfsp.shtml] Tunable Filesystem
   Parameters in /proc How to increase, decrease and reconfigure
   filsystem behavior from within /proc.
     ________________________________________________________________

E.5. Small Memory

E.5.1. Related Documentation

    1. [http://tldp.org/HOWTO/Small-Memory/index.html]
       Small-Memory-HOWTO
    2. [http://tldp.org/HOWTO/Module-HOWTO/] Module-HOWTO
    3. [http://tldp.org/HOWTO/Kerneld/] Kerneld-HOWTO
     ________________________________________________________________

E.5.2. Techniques

   Check the memory usage with free and top.

   [http://www.complang.tuwien.ac.at/ulrich/mergemem/] Mergemem Project
   . Many programs contain memory areas of the same content that remain
   undetected by the operating system. Typically, these areas contain
   data that have been generated on startup and remain unchanged for
   longer periods. With mergemem such areas are detected and shared. The
   sharing is performed on the operating system level and is invisible
   to the user level programs. mergemem is particularily useful if you
   run many instances of interpreters and emulators (like Java or
   Prolog) that keep their code in private data areas. But also other
   programs can take advantage albeit to a lesser degree.

   You may also reduce the kernel size as much as possible by removing
   any feature which is not necessary for your needs and by modularizing
   the kernel as much as possible.

   Also you may shutdown every service or daemon which is not needed,
   e.g. lpd, mountd, nfsd and close some virtual consoles. Please see
   [http://tldp.org/HOWTO/Small-Memory/] Small-Memory-HOWTO for details.

   And of course use swap space, when possible.

   If possible you use the resources of another machine, for instance
   with X11, VNC or even telnet. For more information on Virtual Network
   Computing (VNC), see [http://www.realvnc.com/] VNC.
     ________________________________________________________________

E.6. Low CPU Speed

   You may want to overdrive the CPU speed but this can damage your
   hardware and I don't have experience with it. For some examples look
   at [http://www.silverace.com/libretto/] Adorable Toshiba Libretto -
   Overclocking.
     ________________________________________________________________

E.7. Power Saving Techniques

    1. If you don't need infrared support, disable it in the BIOS or
       shutdown the IrDA® device driver. There are also some IrDA®
       features of the kernel which are useful for saving power.
    2. PCMCIA services consume much power, so shut them down if you
       don't need them.
    3. I'm not sure to which extend the backlight consumes power.

       Warning

   As far as I know this device can only bear a limited number of uptime
   circles. So avoid using screensavers, which turn off the backlight.
       If you want do it anyhow, you may use xset +dpms and xset dpms 0
       0 300 This turns the screen off after 5 minutes of inactivity.
       Works only if the display is DPMS capable.
    4. For some examples to build batteries with increased uptime up to
       8 hours look at [http://repair4laptop.org/notebook_battery.html]
       Repair4Laptop: Battery .
    5. For information about APM look at the chapter APM above.
    6. The "noatime" option when mouting filesystems tells the kernel to
       not update the access time information of the file. This
       information, although sometimes useful, is not used by most
       people. Therefore, you can safely disable it, then preventing
       disk access each time you cat a file. Here is an example of a
       /etc/fstab with this power-saving option: /dev/hda7 /var ext2
       defaults,noatime 0 2
    7. [http://sourceforge.net/projects/hdparm/] hdparm hdparm is a
       Linux disk utility that lets you set spin-down timeouts and other
       disk parameters.
    8. [http://www.complang.tuwien.ac.at/ulrich/linux/tips.html] Mobile
       Update Daemon This is a drop-in replacement for the standard
       update daemon, mobile-update minimizes disk spin ups and reduces
       disk uptime. It flushes buffers only when other disk activity is
       present. To ensure a consistent file system call sync manually.
       Otherwise files may be lost on power failure. mobile-update does
       not use APM. So it works also on older systems.
    9. [http://noflushd.sourceforge.net/] noflushd : noflushd monitors
       disk activity and spins down disks that have been idle for more
       than <timeout> seconds. It requires a kernel >=2.2.11 . Useful in
       combination with hdparm and mount with noatime option to bring
       down disk activity.
       Here are some comments and thoughts by Nat Makarevitch about a
       possible approach which may reduce the disk activity under Linux
       (sparing energy, especially with noflushd) the file
       Documentation/filesystems/proc.txt of the Linux sourcetree
       documents some useful features, esp. in the /proc/sys/vm section.
       Under Linux 2.2 I used:

echo "100 5000 8 256 500 60000 60000 1884 2" > /proc/sys/vm/bdflush

       especially under Linux 2.4 which uses its spare time to
       'pre-save' the less-used memory pages into the swap, increasing
       the disk activity I tried to figure the more adequate parameters
       (Linux 2.4.9, 192 MB RAM, Toshiba 3480 laptop) beware: some of
       those parameters may be dangerous or useless (I have not gathered
       serious data about the practical efficiency). moreover do not
       forget that delaying disk writes of data is intrinsically
       dangerous

echo 99 512 32 512 0 300000 60 0 0 > /proc/sys/vm/bdflush
# is '60' the max value for age_super?
echo 1 1 96 > /proc/sys/vm/buffermem
echo 512 128 32 > /proc/sys/vm/kswapd
echo 1 10 96 > /proc/sys/vm/pagecache

   10. The [http://www.buzzard.me.uk/toshiba/index.html] Toshiba Linux
       Utilities are a set of Linux utilities for controlling the fan,
       supervisor passwords, and hot key functions of Toshiba Pentium
       notebooks. There is a KDE package Klibreta, too.
   11. At Kenneth E. Harker's page there is a recommendation for LCDproc
       [http://lcdproc.omnipotent.net/] LCDProc . "LCDproc is a small
       piece of software that will enable your Linux box to display live
       system information on a 20x4 line backlit LCD display. This
       program shows, among other things, battery status on notebooks."
       I tried this package and found that it connects only to the
       external [http://www.matrixorbital.com/] Matrix-Orbital LCD 20x4
       display , which is a LCD display connected to a serial port. I
       can't see any use for a laptop yet, but you might use it to build
       a wearable.
   12. The [http://sourceforge.net/projects/diald/] Diald Dial Daemon
       provides on demand Internet connectivity using the SLIP or PPP
       protocols. Diald can automatically dial in to a remote host when
       needed or bring down dial-up connections that are inactive.
   13. [http://www.kde.org] KDE provides KAPM, Kbatmon and Kcmlaptop.
       Written by Paul Campbell kcmlaptop is a set of KDE control panels
       that implements laptop computer support functions, it includes a
       dockable battery status monitor for laptops - in short a little
       icon in the KDE status bar that shows how much battery time you
       have left. It also will warn you when power is getting low and
       allows you to configure power saving options. Similar packages
       you may find at the GNOME project [http://www.gnome.org/] GNOME .
       See the software maps at both sites.
   14. Please see the [http://tldp.org/HOWTO/Battery-Powered/]
       Battery-Powered-HOWTO for further information.

   Some more words about disks spin down with noflushd or hdparm
   utilities. The objective is to reduce hard disk usage to minimum,
   because on most laptops it is the primary source of noise and energy
   consumption. The "noflushd" daemon is a replacement of "update" which
   makes buffer updates on disk only when some other data is being read
   from the disk (the behavior of "update" is to flush buffers every 5
   seconds, and it usually generates constant disk activity, so that the
   disk never becomes idle). "noflushd" also sets the disk spindown time
   and automatically calls "sync" before spindown. The syntax is
   something like "noflushd -n 5 /dev/hda". Using "noflushd" may cause
   loss of data if some files were edited while the disk was parked and
   not sync'ed, e.g. if the power was suddenly lost.

   The hdparm utility can set the sleep time too, and also tune the IDE
   disk parameters for better performance. Make sure that the kernel IDE
   parameter "Use DMA by default when available" (section "Block
   devices") is enabled.

   However, it is not enough to enable noflushd or IDE disk sleep time
   to make the disk effectively silent, because the system in most
   default installations is running many cron jobs, writes to log files,
   uses swap and so on. This activity is not always desirable,
   especially if the computer is standalone (not on network) and is used
   mostly by one user. Here are some recommendations.

   First, the cron daemon and friends (anacron, atd, logrotate, sendmail
   / exim / ...) could be removed from the system if the services they
   run (such as, cleaning /tmp directories and logs, checking email
   etc.) are not needed.

   Secondly, the syslogd configuration file /etc/syslog.conf should be
   modified to reduce the number of log files and messages logged, and
   also to have "-" signs before every file name (which means that the
   system will not have to sync the disk every time a message is
   logged).

   Also, it is advisable to add "mark:none;" to the "syslog" strings, so
   that the "strich strich strich MARK strich strich strich" messages do
   not get written to the log files every half an hour. Typical Linux
   installations today have too many log files for the home user.

   Finally, the disk may not go to sleep when a lot of swap space is in
   use. Type "free" and see how much swap is being used and how much
   free RAM is available. If you think there is enough free RAM to work
   without swap, or if there is a lot of swap used AND also a lot of
   free RAM, consider freeing the swap space ("su; swapoff -a; swapon
   -a") or switching the swap space off altogether ("su; swapoff -a").
   Working without swap should be fine on systems with 64MB or more of
   RAM. (Working without swap will reduce the available memory, of
   course, and some software crashes without warning when it runs out of
   memory. But, adding swap will not prevent the crash resulting from
   some runaway memory consumuing software, it will only delay it, and
   it will make the system swap a lot before it happens.)

   With these changes in the system, one could get the laptop to work
   for extended periods of time with its hard disk switched off.

   The kernel can be configured with "Yes" to "APM Support" and "Enable
   console blanking using APM" (section "General setup"). Then the LCD
   screen lamp will shut off in console mode (so not just the screen
   goes black, but also the lamp). In X mode, the same effect can be
   obtained with "xset +dpms" (enable DPMS function) and "xset s blank"
   (enable screen blanking). One can add these commands to the X window
   session or window manager initialization scripts.

   The computer's BIOS energy savings options (hard disk sleep time,
   video blanking time and so on) are probably not useful and in some
   cases may even cause crashes. Therefore they could be disabled in the
   laptop's BIOS.
     ________________________________________________________________

E.8. Kernel

E.8.1. Related Documentation

     * [http://tldp.org/HOWTO/Kernel-HOWTO/] Kernel-HOWTO
     * [http://tldp.org/HOWTO/BootPrompt-HOWTO.html] BootPrompt-HOWTO

   Many kernel features are related to laptops. For instance APM, IrDA®,
   PCMCIA and some options for certain laptops, e.g. IBM(TM) ThinkPads.
   In some distributions they are not included by default. And the
   kernel is usually bigger than necessary. So it's seems a good idea to
   customize the kernel. Though this task might seem difficult for the
   beginner it is highly recommended. Since this involves dangerous
   operations you need to be careful. But, if you can install a better
   kernel successfully, you've earned your intermediate Linux sysadmin
   merit badge. - I will not handle this here, because this topic is
   already covered in other documents.

   Compile a modular kernel with modules for CDROM, floppy, pcmcia,
   sound and any other peripherals. It will allow to delay loading of
   these modules until these devices are actually used, and it may help
   recover the system after a hardware failure, e.g. a bad CDROM,
   because a module can be removed and re-inserted without restarting
   the system.
     ________________________________________________________________

E.9. Tiny Applications and Distributions

   A small collection yet, but I'm looking for more information.

    1. BOA - "Lightweight and High Performance WebServer. boa is a
       single-tasking HTTP server. That means that unlike traditional
       web servers, it does not fork for each incoming connection, nor
       does it fork many copies of itself to handle multiple
       connections. It internally multiplexes all of the ongoing HTTP
       connections, and forks only for CGI programs (which must be
       separate processes.) Preliminary tests show boa is capable of
       handling several hundred hits per second on a 100 MHz Pentium."
    2. MGR - a graphical windows system, which uses much less resources
       than X.
    3. Low Bandwidth X:
       Alan Cox in LINUX REDUX February 1998 " .. there are two that
       handle normal applications very nicely. LBX (Low Bandwidth X) is
       the official application of the X11 Consortium (now
       [http://www.opengroup.org/] OpenGroup.
       [http://www.vigor.nu/dxpc/] Dxpc is the alternative most people
       prefer. These systems act as proxy X11 servers and compress
       datastreams by well over 50 percent for normal requests, often
       reaching a reduction to 25 percent of the original bandwidth
       usage. With dxpc, X Windows applications are quite usable over a
       28.8 modem link or across the Internet."
    4. [http://blackboxwm.sf.net/] blackbox - "This is a window manager
       for X. It is similar in many respects to such popular packages as
       Window Maker, Enlightenment, and FVWM2. You might be interested
       in this package if you are tired of window managers that are a
       heavy drain on your system resources, but you still want an
       attractive and modern-looking interface."
       Figure E-1. Screenshot of blackbox.
       [blackbox.png]
    5. [http://www.xfce.org] xfce is a lightweight and stable desktop
       environment for various UNIX systems.
    6. linux-lite - distribution based on a 1.x.x kernel for systems
       with only 2MB memory and 10MB harddisk. URL see above.
    7. [http://www.superant.com/smalllinux/] SmallLinux is a three disk
       micro-distribution of Linux and utilities. Based on kernel
       1.2.11. Root disk is ext2 format and has fdisk and mkfs.ext2 so
       that a harddisk install can be done. Useful to boot up on old
       machines with less than 4MB of RAM.
    8. cLIeNUX - client-use-oriented Linux distribution.
    9. [http://www.cs.vu.nl/~ast/minix.html] minix , not a Linux but a
       UNIX useful for very small systems, such as 286 CPU and 640K RAM
       . There is even X11 support named mini-x by
       [ftp://ftp.linux.org.uk/pub/linux/alan/] David I. Bell .
   10. screen - tiny but powerful console manager. John M. Fisk
       <fiskjm_AT_ctrvax.vanderbilt.edu> in
       [http://www.linuxgazette.com/issue01to08/lg_issue7.html#screen]
       LINUX GAZETTE :"It's a GUI, GUI, GUI, GUI world! " -- or so the
       major OS manufacturers would have you belief. Truth is, that
       while this is increasingly the case, there are times when the
       command line interface (CLI) is still a very good choice for
       getting things done. It's fast, generally efficient, and is a
       good choice on memory or CPU constrained machines. And don't
       forget that there are still a lot of very nifty things that can
       be done at the console."
   11. tinyirc - "A tiny, stripped down IRC Client. Doesn't have most of
       the more advance commands in the ircII family of IRC Clients, nor
       does it have any color, but it works, and it's tiny."
   12. JOVE Jonathans Own Version of Emacs, a small but powerful editor.
       .
     ________________________________________________________________

E.10. Hardware Upgrade

   You may also take into account to upgrade the hardware itself, though
   this may have some caveats, see chapter Open a Laptop Case above. If
   you need a survey about the possibilities, you can take a look at
   [http://repair4laptop.org/] Repair4Laptop: repair, disassemble,
   upgrade or mod laptops or notebooks.
     ________________________________________________________________

Appendix F. Ecology and Laptops

F.1. Ecological Comparisons of Computers

   Scientists of [http://www.reuse-computer.de/] ReUse project located
   at the [http://tu-berlin.de/] Technical University of Berlin recently
   compared the energy consumption of different computer types along the
   life cycle. The production of computers actually needs 535 kWh which
   is 10 % less than 4 years ago. Most of the energy will be consumed
   while the computer is used for example at work for 8 hours/day. The
   energy consumption of new computers with 2,5-3 GHz processors is even
   in the stand-bye-mode still 100 Watt, whereas a 1,4 GHz PC needs 80
   Watt and a 4 year old PC only needed 60 Watt. Therefore from the
   ecological point of view it is better to buy an old computer that
   didn't need the energy for a new production and which consumes less
   electricity while it is being used.

   LCD displays need less energy than other monitors. For this reason
   laptops are the most ecological types of the compared computers. They
   need the smallest amount of energy when they are used. And 3 year old
   laptops are better than new ones since their processors need less
   energy than new ones. There is also an article in the German computer
   magazine [http://heise.de/ct/] C't 21/ 2003.

   Some more stuff about Linux as a means to save our environment is
   included in the [http://computerecology.org/] Linux-Ecology-HOWTO.
     ________________________________________________________________

Appendix G. NeoMagic Graphics Chipset Series NM20xx

G.1. Introduction

   The NeoMagic graphics chipset series NM20xx has been popular in
   laptops build around 1996. For a long time this graphics chip was
   only supported by commercial X11 servers, since the middle of 1998
   RedHat provided a binary X11 server manufactured by PrecisionInsight.
   Since version 3.3.3 the appropriate X11 server is also available in
   XFree86.
     ________________________________________________________________

G.2. Textmode 100x37

   This chapter is a courtesy of Cedric Adjih , though I have changed
   some minor parts. Please note: Another method to achieve a better
   resolution in text mode is the use of the framebuffer driver (as
   explained in the X-Windows chapter above). This method requires
   kernel reconfiguration (some Linux distributions include an
   appropriate kernel already) and a new entry (vga=NNN) in
   /etc/lilo.conf. In text mode it works even with VESA BIOSes before
   version 2.0, at least on the models I could test it. Though the
   SVGATextMode method could be faster (couldn't check this yet).

   An apparently little known fact about the Neomagic chipset NM20xx is
   that you can run text mode in 100x37 (i.e. 800x600). This text mode
   is very nice (as opposed to the 80x25 which is ugly). I tried this
   with a HP OmniBook 800 and suppose it might work with other laptops
   using the NeoMagic chip, too.

   The main problem is that is a bit difficult to set up, and if you're
   going wrong with the commands SVGATextMode or restoretextmode some
   results on the LCD might be frightening. Although I didn't manage to
   break my LCD with many attempts going wrong, DISCLAMER: THIS MIGHT
   DAMAGE YOUR HARDWARE. YOU HAVE BEEN WARNED. FOLLOW THE FOLLOWING
   INSTRUCTIONS AT YOUR OWN RISKS. I'M NOT RESPONSIBLE IF SOMETHING BAD
   HAPPENS.
     ________________________________________________________________

G.2.1. Survey

   You need to do three main steps:

    1. Enable Linux to boot in 800x600 textmode. The problem is that you
       won't see any text before the following two steps aren't done.
    2. Automatically run restoretextmode with correct register data.
    3. Automatically run SVGATextMode.
     ________________________________________________________________

G.2.2. More Details

   All the files I have modified, are available for now on
   [http://starship.python.net/crew/adjih/data/cda-omni-trick.tar.gz] my
   pages
     ________________________________________________________________

G.2.2.1. Enabling Linux to Boot in 800x600

   Recent kernels (2.2.x) need to be compiled with CONFIG_VIDEO_GFX_HACK
   defined. Default is off. (look in
   /usr/src/linux-2.2.x/arch/i386/boot/video.S)

   This is done by passing the parameter vga=770 to older kernels or
   vga=7 to 2.2.x kernels. Example with lilo.conf:

image=/boot/bzImage-modif
label=22
append="svgatextmode=100x37x8_SVGA" #explained later
vga=7
read-only
     ________________________________________________________________

G.2.2.2. Running restoretextmode and SVGATextMode at Boot Time

   Running restoretextmode and SVGATextMode at Boot Time. You must
   arrange to run restoretextmode <name of some textreg.dat file> and
   SVGATextMode 100x37x8_SVGA at boot time.

   An example textreg.dat for restoretextmode (obtained using
   savetextmode) is in my tar archive in tmp/, and an example
   /etc/TextConfig.

   Since I'm lazy, I've simply put SVGATextMode and restoretextmode in
   the /etc/rc.boot/kbd file from my Debian/GNU Linux which get executed
   at boot time (also available in the tar archive).
     ________________________________________________________________

G.2.2.3. Now the Key Point

   Annoying things will be displayed if you don't use the right
   SVGATextMode in the right video text mode: this is why I also pass
   the environmental variable "svgatextmode=100x37x8_SVGA" (arbitrary
   name) to the kernel (using append=xxx in lilo.conf) when I also set
   vga=7: the script /etc/rc.boot/kbd tests this variable and calls
   restoretextmode and SVGATextMode IF AND ONLY IF.
     ________________________________________________________________

G.2.3. Road Map

    1. Recompile the kernel 2.2.x with CONFIG_VIDEO_GFX_HACK
    2. Insert the restoretextmode with the correct parameter in the
       initialisation script, with no other changes.
    3. Boot with normal text mode (80x25) but restoretextmode: you
       should see the screen going to 100x37, but with only 80x25
       usable. Don't use SVGATextMode yet.
    4. It is much better to conditionnalize your initialize code as I
       did, to keep the possibility of booting in both modes: you may
       test this now with some reboots (starting restoretextmode or
       not).
    5. Boot with 100x37 text mode using parameter vga=7 (lilo.conf), you
       should see white background at some point, but the characters
       will be black on black. This is ok. You'll have to reboot blindly
       now.
    6. Insert the <path>/SVGATextMode 100x37x8_SVGA after the
       restoretextmode in initialization scripts.
    7. Reboot with vga=7 (lilo.conf)
    8. Should be OK now. Enjoy.
     ________________________________________________________________

Appendix H. Annotated Bibliography: Books For Linux Nomads

   Scott Mueller: Upgrading and Repairing Laptops, 2003

   From the publisher: "Scott Mueller goes where no computer book author
   has gone before right past all the warranty stickers, the hidden
   screws, and the fear factor to produce a real owner's manual that
   every laptop owner should have on his desk. This book shows the
   upgrades users can perform, the ones that are better left to the
   manufacturer, and how to use add-on peripherals to make the most of a
   laptop. The CD contains one-of-a-kind video showing just what's
   inside a portable PC."
   [http://www.amazon.com/exec/obidos/ASIN/0789728001/lilaclinuxwithla]
   Amazon Order.

   Other resources:

     * [http://repair4laptop.org/] upgrading, repairing and modding
       laptops or notebooks
     * [http://repair4pda.org/] upgrading, repairing and modding PDAs
       and HandHelds
     * [http://repair4mobilephone.org/] upgrading, repairing and modding
       mobile (cell) phones
     * [http://repair4player.org/] upgrading, repairing and modding
       mobile media players

   Chris Hurley, Michael Puchol, Russ Rogers, Frank Thornton: WarDriving
   - Drive, Detect, Defend, A Guide to Wireless Security, 2004

   From the Publisher: "Wardriving has brought some of the top people in
   the wireless industry together to put together a truly informative
   book on what wardriving is and the tools that should be part of any
   IT department's arsenal that either has wireless or is looking to
   deploy it." -John Kleinschmidt, Michiganwireless.org Founder The
   practice of WarDriving is a unique combination of hobby, sociological
   research, and security assessment. The act of driving or walking
   through urban areas with a wireless-equipped laptop to map both
   protected and un-protected wireless networks has sparked intense
   debate amongst lawmakers, security professionals, and the
   telecommunications industry. This first ever book on WarDriving is
   written from the inside perspective of those who have created the
   tools that make WarDriving possible and those who gather, analyze,
   and maintain data on all secured and open wireless access points in
   very major, metropolitan area worldwide. These insiders also provide
   the information to secure your wireless network before it is
   exploited by criminal hackers. Wireless networks have become a way of
   life in the past two years. As more wireless networks are deployed
   the need to secure them increases. This book educates users of
   wireless networks as well as those who run the networks about the
   insecurities associated with wireless networking. This effort is
   called WarDriving. In order to successfully WarDrive there are
   hardware and software tool required. This book covers those tools,
   along with cost estimates and recommendations. Since there are
   hundreds of possible configurations that can be used for WarDriving,
   some of the most popular are presented to help readers decide what to
   buy for their own WarDriving setup. Many of the tools that a
   WarDriver uses are the same tools that could be used by an attacker
   to gain unauthorized access to a wireless network. Since this is not
   the goal of a WarDriver, the methodology that users can use to
   ethically WarDrive is presented. In addition, complete coverage of
   WarDriving applications, such as NetStumbler, MiniStumbler; and
   Kismet, are covered."
   [http://www.amazon.com/exec/obidos/ASIN/1931836035/lilaclinuxwithla]
   Amazon Order.

   TuxMobil Resources:

     * [http://tuxmobil.org/wireless_unix.html] Linux and Wireless LANs
     * [http://tuxmobil.org/manet_linux.html] Linux and Mobile AdHoc
       Networks - MANETs
     * [http://tuxmobil.org/wireless_community.html] Linux and Wireless
       Communities Around the World
     * [http://tuxmobil.org/linux_wireless_access_point.html] Linux and
       Wireless Access Points - WLAN APs
     * [http://tuxmobil.org/linux_wireless_sniffer.html] Linux and
       Wireless Sniffer Applications

   Isidor Buchmann: Batteries in a Portable World - A Handbook on
   Rechargeable Batteries for Non-Engineers, 2001

   From the Publisher: "Batteries in a Portable World fills a definite
   need for practical information about rechargeable batteries. Quite
   often, performance specifications for batteries and chargers are
   based on ideal conditions. Manufacturers carry out battery tests on
   brand new equipment and in a protected environment, removed from the
   stress of daily use. In Batteries in a Portable World, Mr. Buchmann
   observes the battery in everyday life in the hands of the common
   user. By reading Batteries in a Portable World, you will acquire a
   better understanding of the strengths and limitations of the battery.
   You will learn how to prolong battery life; become familiar with
   recommended maintenance methods and discover ways to restore a weak
   battery, if such a method is available for that battery type. Knowing
   how to take care of your batteries prolongs service life, improves
   reliability of portable equipment and saves money. Best of all,
   well-performing batteries need replacement less often, reducing the
   environmental concern of battery disposal."
   [http://www.amazon.com/exec/obidos/ASIN/0968211828/lilaclinuxwithla]
   Amazon Order.

   TuxMobil Resources:

     * [http://tuxmobil.org/energy_laptops.html] Power Supplies for
       Laptops and PDAs
     * [http://tuxmobil.org/mobile_battery.html] Linux Tools for Laptop,
       Notebook and PDA Batteries

   [http://www.verysecurelinux.com/] Bob Toxen: Real World Linux
   Security: Intrusion Detection, Prevention, and Recovery 2nd Ed., 2002

   This book contains a chapter about mobile security.
   [http://www.amazon.com/exec/obidos/ASIN/0130464562/lilaclinuxwithla]
   Amazon Order.

   TuxMobil Resources:

     * [http://tuxmobil.org/mobile_security.html] Security for Mobile
       Linux Computers
     * [http://tuxmobil.org/stolen_laptops.html] Theft and Loss
       Protection for Linux Laptops, Notebooks and PDAs
     ________________________________________________________________

Appendix I. Resources for Specific Laptop Brands

   Certain laptops have found some more enthusiastic Linux users, than
   other models. This list is probably not comprehensive:
     ________________________________________________________________

I.1. COMPAQ

   [http://www.zenspider.com/~pwilk/aero_stuff.html] COMPAQ Contura
   Aero-FAQ.

   The latest version of the
   [http://www.cs.nmsu.edu/~pfeiffer/index_old.html#linux] Linux Compaq
   Concerto Pen Driver is available from Joe Pfeiffer's home page.
     ________________________________________________________________

I.2. DELL

   Mailing list at [http://www.egroups.com/group/linux-dell-laptops]
   linux-dell-laptops

   Manufacturer Linux information:
   [http://linux.dell.com/desktops.shtml] DELL
     ________________________________________________________________

I.3. IBM/Lenovo(TM) ThinkPad

   ThinkPad Configuration Tool for Linux by Thomas Hood
   [http://tpctl.sourceforge.net/] tpctl

   Running Linux on IBM(TM)ThinkPads, to join send an email to
   linux-thinkpad-subscribe_at_topica.com, to post send mail to
   linux-thinkpad_at_topica.com . See
   [http://www.topica.com/lists/linux-thinkpad/] here for details.

   [http://www.slac.stanford.edu/~strauman/pers/tp4utils/] TrackPoint
   driver by Till Straumann.
     ________________________________________________________________

I.4. Sony VAIO

   For installation on VAIOs via external CD drive, see chapter
   Installation above. Some hints for the Jog-Dial you may find in the
   chapter Mice Species. The SONY VAIO C1 series includes some models,
   which are based on the first dedicated mobile CPU, the CRUSOE. The
   CRUSOE is manufactured by [http://www.transmeta.com/] TransMeta . At
   TransMeta you may find information about the binary compatibility of
   the CRUSOE. The [http://samba.org/picturebook/] Sony PCG-C1XS
   Picturebook Camera Capture program captures images and movies on a
   Sony VAIO picturebook PCG-C1XS, taking advantage of the built in CCD
   camera and hardware JPEG encoder. It features PPM capture, JPEG
   capture (hardware JPEG), AVI capture of MJPEG, MJPEG capture of
   separate frames (for MPEG encoding), setting of
   brightness/contrast/etc., and a 1:4 sub-sampling option.

   There is also a VAIO C1 related Linux mailing list, too
   <linux-c1_at_gnu.org>.

   [http://frijoles.com/c1-info/faq.html] Sony Vaio C1 FAQ mostly
   MS-Windows related, but contains useful hardware information and a
   mailing list.

   The [http://spicd.raszi.hu/] SONY VAIO SPIC daemon is a fast and
   small hack for create a working apmd to Sony VAIO laptops. It uses
   the sonypi kernel module to detect the AC adapter status and the LCD
   backlight, and cpufreq for CPU frequency change.

   [http://www.alcove-labs.org/en/software/sonypi/] spicctrl uses the
   sonypi interface provided by /dev/sonypi and the Linux kernel.
     ________________________________________________________________

I.5. Toshiba

   [http://www.buzzard.me.uk/toshiba/index.html] Toshiba Linux Utilities
   are a set of Linux utilities for controlling the fan, supervisor
   passwords, and hot key functions of Toshiba Pentium notebooks.
   Utilities to change supervisor passwords and adjust power/battery
   modes are included. There is a KDE package Klibreta, too.

   Mailing lists:
   [http://www.onelist.com/subscribe.cgi/linux-on-portege]
   linux-on-portege , Linux on Toshiba Satellite 40xx linux-tosh-40xx
   <majordomo_at_geekstuff.co.uk>.

   Toshiba itself offers now
   [http://linux.toshiba-dme.co.jp/linux/index.htm] Toshiba Linux
   Support (Japanese branch) and
   [http://newsletter.toshiba-tro.de/main/index.html] Toshiba Linux
   Support (German branch) .
     ________________________________________________________________

Appendix J. Credits

   I would like to thank the many people who assisted with corrections
   and suggestions. Their contributions have made this work far better
   than I could ever have done alone. Especially I would like to thank:

     * First of all Kenneth E. Harker , from his page
       [http://www.linux-on-laptops.com/] Linux on Laptops I have
       included much material into this HOWTO, but didn't always quote
       him verbatim.
     * The other authors from [http://tldp.org/] THE LINUX DOCUMENTATION
       PROJECT - TLDP .
     * The members of the Linux/IrDA® Project .
     * The members of the Linux-Laptop Mailing List.
     * The members of the Debian-Laptop Mailing List.
     * The members of the SuSE-Laptop Mailing List.
     * The visitors and contributors of my [http://tuxmobil.org/]
       TuxMobil project.
     * Cedric Adjih , wrote the chapter about the NeoMagic chipset.
     * Amlaukka
     * Michele Andreoli, maintainer of [http://sunsite.auc.dk/mulinux/]
       muLinux.
     * [http://www.procyon.com/~pda/lphdisk/] Patrick D. Ashmore
     * Ben Attias .
     * Gerd Bavendiek , [http://netenv.sourceforge.net] netenv
     * John Beimler , provided the URL of photopc.
     * [http://www.nemein.com] Henri Bergius
     * Ludger Berse .
     * Stephane Bortzmeyer for his suggestions about email with UUCP,
       the use of CVS or related tools to synchronize two machines, and
       the noatime mount option.
     * Lionel, "trollhunter" Bouchpan-Lerust-Juery
     * Felix Braun .
     * David Burley
     * David Chien
     * Sven Crouse for information about touchpads
     * Eric wrote how to transfer pictures from a digital camera.
     * [http://home.snafu.de/ingo.dietzel/] Ingo Dietzel , for his
       patience with the project.
     * Brian Edmonds
     * Peter Englmaier , provided the chapter about a sophisticated
       email setup.
     * Joel Eriksson , for information about Atari laptops.
     * Heiko Ettelbrueck
     * Gledson Evers , started the Portuguese translation.
     * Klaus Franken .
     * [http://www.guido.germano.com] Guido Germano , for information
       about the Macintosh Powerbook 145B.
     * Bill Gjestvang .
     * [http://splitbrain.org/] Andreas Gohr prepared some sections of
       the PDA chapter and more
     * Alessandro Grillo , started the Italian translation.
     * Sven Grounsell [http://tuxhilfe.de/] TuxHilfe
     * Mikael Gueck
     * Marcus Hagn has written some powersaving tweaks
     * W. Wade, Hampton , did much of spell, grammar and style checking
       and added many valuable information.
     * Sebastian Henschel prepared some sections of the PDA chapter and
       more
     * David Hinds, the maintainer of the PCMCIA-CS package.
     * Karsten Hopp
     * Scott Hurring
     * JK
     * Uwe SV Kubosch , hints about Amiga
     * Jeremy D. Impson provided instructions about installing on a
       Toshiba Libretto 50CT [http://nwc.syr.edu/~jdimpson] Jeremy D.
       Impson
     * Adrian D. Jensen , provided some notes on removable hard disks
     * Steven G. Johnson , provided most of the information about
       Apple/Macintosh m68k machines and LinuxPPC on the PowerBook.
     * Dan Kegel , pointed me to the Toshiba Linux page.
     * [http://www.mk-stuff.de/] Michael Kupsch
     * Gilles Lamiral for providing the PLIP Install-HOWTO.
     * Sian Leitch , suggestions on style
     * [http://www.leo.org/~loescher/] Stephan Loescher
     * [http://home.pages.de/~lufthans/] LuftHans , announced this HOWTO
       to the maintainer of the [http://tldp.org/HOWTO/Hardware-HOWTO/]
       Hardware-HOWTO.
     * Anderson MacKay , [http://linux.rice.edu] RLUG - Rice University
       Linux User Group , gave many different detailed recommendations.
     * Nat Makarevitch gave suggestions how to use noflushd
     * Jari Malinen, for support with HUT Mobile IP (now Dynamics Mobile
       IP).
     * Paul Mansfield , ICQ:13391313 information about removable hard
       disks
     * Stefan Martig .
     * Marco Michna , from [http://www.suse.de] SuSE
     * Harald Milz , from [http://www.suse.de] SuSE provided numerous
       additions.
     * Emerson, Tom # El Monte , for his idea about laptop bags.
     * Dan Mueth author of the [http://kmc-utils.sourceforge.net/]
       kmc_utils
     * Louis A. Mulieri , information about removable hard disks
     * Nathan Myers , from [http://www.linuxlaptops.com] LL -
       LinuxLaptops for numerous additions.
     * Leandro Noferin , for proofreading the italian parts.
     * Ulrich Oelmann , gave valuable additions about the installation
       with muLinux.
     * Michael Opdenacker, for tips and tricks about PDAs and moral
       support [http://free-electrons.com/] Free-Electrons
     * Federico Pellegrin , provided the chapter about installation from
       a parallel port CD drive
     * Sean 'Shaleh' Perry, , Debian maintainer of anacron and other
       packages, for Debian support.
     * Igor Pesando .
     * Benjamin C. Pierce
     * Lucio Pileggi , provided information about the Siemens S25
       cellular phone.
     * Jacek Pliszka , provided information about miscellaneous topics,
       e.g. USB devices, external floppy and CD drives.
     * Lorn 'ljp' Potter (Qtopia Community Liaison) gave some
       improvements for the PDA chapter
     * Steve Rader .
     * Bruce Richardson
     * [http://jaime.robles.nu] Jaime Robles , gave me some information
       about the HAM-HOWTO.
     * Pete Rotheroe
     * Simon Rowe
     * Frank Schneider .
     * Hans Schou , FlashPath for Linux
     * Martin "Joey" Schulze
     * Chandran Shukla .
     * Fabio Sirna provided a script to show the battery status in
       console mode with ACPI
     * Adam Spiers .
     * Peter Sprenger .
     * Bill Staehle
     * Leon Stok
     * Christian Stolte
     * Peter Teuben , for some suggestions about hard disks.
     * Bob Toxen .
     * Thomas Traber .
     * Geert Van der Plas , provided information about the touchpad
       driver included in the GPM.
     * Marcel Ovidiu Vlad .
     * Michael Wiedmann , [http://www.in-berlin.de/User/miwie/pia/] PIA
       - X11 based PalmPilot Address Manager , found many spelling
       errors and more.
     * Tim Williams , pointed me to System Commander 2000 partition
       manager
     * Serge Winitzki wrote some recommendations for noise reduction
       and/or energy saving
     * Richard Worwood

   Sorry, but probably I have forgotten to mention everybody who helped.
     ________________________________________________________________

Appendix K. Copyrights

   

   GNU GPL "The source will be with you ... always!"
     N.N.
     ________________________________________________________________

K.1. Copyrights

   For all chapters except "Lectures, Presentations, Animations and
   Slideshows" permission is granted to copy, distribute and/or modify
   this document under the terms of the GNU Free Documentation License,
   Version 1.1 or any later version published by the Free Software
   Foundation; with the Invariant Sections being "Preface" and
   "Credits", with the Front-Cover Texts being "Linux on the Road - the
   First Book on Mobile Linux", and with the Back-Cover Texts being the
   section "About the Author". A copy of the license is included in the
   section entitled "GNU Free Documentation License".

   Copyright for the included pictures belongs to their respective
   owners.
     ________________________________________________________________

K.2. GNU Free Documentation License - GFDL

   Version 1.1, March 2000

   Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place,
   Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy
   and distribute verbatim copies of this license document, but changing
   it is not allowed.
     ________________________________________________________________

K.2.1. 0. PREAMBLE

   The purpose of this License is to make a manual, textbook, or other
   written document "free" in the sense of freedom: to assure everyone
   the effective freedom to copy and redistribute it, with or without
   modifying it, either commercially or noncommercially. Secondarily,
   this License preserves for the author and publisher a way to get
   credit for their work, while not being considered responsible for
   modifications made by others.

   This License is a kind of "copyleft", which means that derivative
   works of the document must themselves be free in the same sense. It
   complements the GNU General Public License, which is a copyleft
   license designed for free software.

   We have designed this License in order to use it for manuals for free
   software, because free software needs free documentation: a free
   program should come with manuals providing the same freedoms that the
   software does. But this License is not limited to software manuals;
   it can be used for any textual work, regardless of subject matter or
   whether it is published as a printed book. We recommend this License
   principally for works whose purpose is instruction or reference.
     ________________________________________________________________

K.2.2. 1. APPLICABILITY AND DEFINITIONS

   This License applies to any manual or other work that contains a
   notice placed by the copyright holder saying it can be distributed
   under the terms of this License. The "Document", below, refers to any
   such manual or work. Any member of the public is a licensee, and is
   addressed as "you".

   A "Modified Version" of the Document means any work containing the
   Document or a portion of it, either copied verbatim, or with
   modifications and/or translated into another language.

   A "Secondary Section" is a named appendix or a front-matter section
   of the Document that deals exclusively with the relationship of the
   publishers or authors of the Document to the Document's overall
   subject (or to related matters) and contains nothing that could fall
   directly within that overall subject. (For example, if the Document
   is in part a textbook of mathematics, a Secondary Section may not
   explain any mathematics.) The relationship could be a matter of
   historical connection with the subject or with related matters, or of
   legal, commercial, philosophical, ethical or political position
   regarding them.

   The "Invariant Sections" are certain Secondary Sections whose titles
   are designated, as being those of Invariant Sections, in the notice
   that says that the Document is released under this License.

   The "Cover Texts" are certain short passages of text that are listed,
   as Front-Cover Texts or Back-Cover Texts, in the notice that says
   that the Document is released under this License.

   A "Transparent" copy of the Document means a machine-readable copy,
   represented in a format whose specification is available to the
   general public, whose contents can be viewed and edited directly and
   straightforwardly with generic text editors or (for images composed
   of pixels) generic paint programs or (for drawings) some widely
   available drawing editor, and that is suitable for input to text
   formatters or for automatic translation to a variety of formats
   suitable for input to text formatters. A copy made in an otherwise
   Transparent file format whose markup has been designed to thwart or
   discourage subsequent modification by readers is not Transparent. A
   copy that is not "Transparent" is called "Opaque".

   Examples of suitable formats for Transparent copies include plain
   ASCII without markup, Texinfo input format, LaTeX input format, SGML
   or XML using a publicly available DTD, and standard-conforming simple
   HTML designed for human modification. Opaque formats include
   PostScript, PDF, proprietary formats that can be read and edited only
   by proprietary word processors, SGML or XML for which the DTD and/or
   processing tools are not generally available, and the
   machine-generated HTML produced by some word processors for output
   purposes only.

   The "Title Page" means, for a printed book, the title page itself,
   plus such following pages as are needed to hold, legibly, the
   material this License requires to appear in the title page. For works
   in formats which do not have any title page as such, "Title Page"
   means the text near the most prominent appearance of the work's
   title, preceding the beginning of the body of the text.
     ________________________________________________________________

K.2.3. 2. VERBATIM COPYING

   You may copy and distribute the Document in any medium, either
   commercially or noncommercially, provided that this License, the
   copyright notices, and the license notice saying this License applies
   to the Document are reproduced in all copies, and that you add no
   other conditions whatsoever to those of this License. You may not use
   technical measures to obstruct or control the reading or further
   copying of the copies you make or distribute. However, you may accept
   compensation in exchange for copies. If you distribute a large enough
   number of copies you must also follow the conditions in section 3.

   You may also lend copies, under the same conditions stated above, and
   you may publicly display copies.
     ________________________________________________________________

K.2.4. 3. COPYING IN QUANTITY

   If you publish printed copies of the Document numbering more than
   100, and the Document's license notice requires Cover Texts, you must
   enclose the copies in covers that carry, clearly and legibly, all
   these Cover Texts: Front-Cover Texts on the front cover, and
   Back-Cover Texts on the back cover. Both covers must also clearly and
   legibly identify you as the publisher of these copies. The front
   cover must present the full title with all words of the title equally
   prominent and visible. You may add other material on the covers in
   addition. Copying with changes limited to the covers, as long as they
   preserve the title of the Document and satisfy these conditions, can
   be treated as verbatim copying in other respects.

   If the required texts for either cover are too voluminous to fit
   legibly, you should put the first ones listed (as many as fit
   reasonably) on the actual cover, and continue the rest onto adjacent
   pages.

   If you publish or distribute Opaque copies of the Document numbering
   more than 100, you must either include a machine-readable Transparent
   copy along with each Opaque copy, or state in or with each Opaque
   copy a publicly-accessible computer-network location containing a
   complete Transparent copy of the Document, free of added material,
   which the general network-using public has access to download
   anonymously at no charge using public-standard network protocols. If
   you use the latter option, you must take reasonably prudent steps,
   when you begin distribution of Opaque copies in quantity, to ensure
   that this Transparent copy will remain thus accessible at the stated
   location until at least one year after the last time you distribute
   an Opaque copy (directly or through your agents or retailers) of that
   edition to the public.

   It is requested, but not required, that you contact the authors of
   the Document well before redistributing any large number of copies,
   to give them a chance to provide you with an updated version of the
   Document.
     ________________________________________________________________

K.2.5. 4. MODIFICATIONS

   You may copy and distribute a Modified Version of the Document under
   the conditions of sections 2 and 3 above, provided that you release
   the Modified Version under precisely this License, with the Modified
   Version filling the role of the Document, thus licensing distribution
   and modification of the Modified Version to whoever possesses a copy
   of it. In addition, you must do these things in the Modified Version:

   A. Use in the Title Page (and on the covers, if any) a title distinct
   from that of the Document, and from those of previous versions (which
   should, if there were any, be listed in the History section of the
   Document). You may use the same title as a previous version if the
   original publisher of that version gives permission.

   B. List on the Title Page, as authors, one or more persons or
   entities responsible for authorship of the modifications in the
   Modified Version, together with at least five of the principal
   authors of the Document (all of its principal authors, if it has less
   than five).

   C. State on the Title page the name of the publisher of the Modified
   Version, as the publisher.

   D. Preserve all the copyright notices of the Document.

   E. Add an appropriate copyright notice for your modifications
   adjacent to the other copyright notices.

   F. Include, immediately after the copyright notices, a license notice
   giving the public permission to use the Modified Version under the
   terms of this License, in the form shown in the Addendum below.

   G. Preserve in that license notice the full lists of Invariant
   Sections and required Cover Texts given in the Document's license
   notice.

   H. Include an unaltered copy of this License.

   I. Preserve the section entitled "History", and its title, and add to
   it an item stating at least the title, year, new authors, and
   publisher of the Modified Version as given on the Title Page. If
   there is no section entitled "History" in the Document, create one
   stating the title, year, authors, and publisher of the Document as
   given on its Title Page, then add an item describing the Modified
   Version as stated in the previous sentence.

   J. Preserve the network location, if any, given in the Document for
   public access to a Transparent copy of the Document, and likewise the
   network locations given in the Document for previous versions it was
   based on. These may be placed in the "History" section. You may omit
   a network location for a work that was published at least four years
   before the Document itself, or if the original publisher of the
   version it refers to gives permission.

   K. In any section entitled "Acknowledgements" or "Dedications",
   preserve the section's title, and preserve in the section all the
   substance and tone of each of the contributor acknowledgements and/or
   dedications given therein.

   L. Preserve all the Invariant Sections of the Document, unaltered in
   their text and in their titles. Section numbers or the equivalent are
   not considered part of the section titles.

   M. Delete any section entitled "Endorsements". Such a section may not
   be included in the Modified Version.

   N. Do not retitle any existing section as "Endorsements" or to
   conflict in title with any Invariant Section.

   If the Modified Version includes new front-matter sections or
   appendices that qualify as Secondary Sections and contain no material
   copied from the Document, you may at your option designate some or
   all of these sections as invariant. To do this, add their titles to
   the list of Invariant Sections in the Modified Version's license
   notice. These titles must be distinct from any other section titles.

   You may add a section entitled "Endorsements", provided it contains
   nothing but endorsements of your Modified Version by various parties
   for example, statements of peer review or that the text has been
   approved by an organization as the authoritative definition of a
   standard.

   You may add a passage of up to five words as a Front-Cover Text, and
   a passage of up to 25 words as a Back-Cover Text, to the end of the
   list of Cover Texts in the Modified Version. Only one passage of
   Front-Cover Text and one of Back-Cover Text may be added by (or
   through arrangements made by) any one entity. If the Document already
   includes a cover text for the same cover, previously added by you or
   by arrangement made by the same entity you are acting on behalf of,
   you may not add another; but you may replace the old one, on explicit
   permission from the previous publisher that added the old one.

   The author(s) and publisher(s) of the Document do not by this License
   give permission to use their names for publicity for or to assert or
   imply endorsement of any Modified Version.
     ________________________________________________________________

K.2.6. 5. COMBINING DOCUMENTS

   You may combine the Document with other documents released under this
   License, under the terms defined in section 4 above for modified
   versions, provided that you include in the combination all of the
   Invariant Sections of all of the original documents, unmodified, and
   list them all as Invariant Sections of your combined work in its
   license notice.

   The combined work need only contain one copy of this License, and
   multiple identical Invariant Sections may be replaced with a single
   copy. If there are multiple Invariant Sections with the same name but
   different contents, make the title of each such section unique by
   adding at the end of it, in parentheses, the name of the original
   author or publisher of that section if known, or else a unique
   number. Make the same adjustment to the section titles in the list of
   Invariant Sections in the license notice of the combined work.

   In the combination, you must combine any sections entitled "History"
   in the various original documents, forming one section entitled
   "History"; likewise combine any sections entitled "Acknowledgements",
   and any sections entitled "Dedications". You must delete all sections
   entitled "Endorsements."
     ________________________________________________________________

K.2.7. 6. COLLECTIONS OF DOCUMENTS

   You may make a collection consisting of the Document and other
   documents released under this License, and replace the individual
   copies of this License in the various documents with a single copy
   that is included in the collection, provided that you follow the
   rules of this License for verbatim copying of each of the documents
   in all other respects.

   You may extract a single document from such a collection, and
   distribute it individually under this License, provided you insert a
   copy of this License into the extracted document, and follow this
   License in all other respects regarding verbatim copying of that
   document.
     ________________________________________________________________

K.2.8. 7. AGGREGATION WITH INDEPENDENT WORKS

   A compilation of the Document or its derivatives with other separate
   and independent documents or works, in or on a volume of a storage or
   distribution medium, does not as a whole count as a Modified Version
   of the Document, provided no compilation copyright is claimed for the
   compilation. Such a compilation is called an "aggregate", and this
   License does not apply to the other self-contained works thus
   compiled with the Document, on account of their being thus compiled,
   if they are not themselves derivative works of the Document.

   If the Cover Text requirement of section 3 is applicable to these
   copies of the Document, then if the Document is less than one quarter
   of the entire aggregate, the Document's Cover Texts may be placed on
   covers that surround only the Document within the aggregate.
   Otherwise they must appear on covers around the whole aggregate.
     ________________________________________________________________

K.2.9. 8. TRANSLATION

   Translation is considered a kind of modification, so you may
   distribute translations of the Document under the terms of section 4.
   Replacing Invariant Sections with translations requires special
   permission from their copyright holders, but you may include
   translations of some or all Invariant Sections in addition to the
   original versions of these Invariant Sections. You may include a
   translation of this License provided that you also include the
   original English version of this License. In case of a disagreement
   between the translation and the original English version of this
   License, the original English version will prevail.
     ________________________________________________________________

K.2.10. 9. TERMINATION

   You may not copy, modify, sublicense, or distribute the Document
   except as expressly provided for under this License. Any other
   attempt to copy, modify, sublicense or distribute the Document is
   void, and will automatically terminate your rights under this
   License. However, parties who have received copies, or rights, from
   you under this License will not have their licenses terminated so
   long as such parties remain in full compliance.
     ________________________________________________________________

K.2.11. 10. FUTURE REVISIONS OF THIS LICENSE

   The Free Software Foundation may publish new, revised versions of the
   GNU Free Documentation License from time to time. Such new versions
   will be similar in spirit to the present version, but may differ in
   detail to address new problems or concerns. See
   http://www.gnu.org/copyleft/.

   Each version of the License is given a distinguishing version number.
   If the Document specifies that a particular numbered version of this
   License "or any later version" applies to it, you have the option of
   following the terms and conditions either of that specified version
   or of any later version that has been published (not as a draft) by
   the Free Software Foundation. If the Document does not specify a
   version number of this License, you may choose any version ever
   published (not as a draft) by the Free Software Foundation.