Linux on the Road

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

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
    and PDAs
   

-----------------------------------------------------------------------------
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 criticisms 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.
   
      Note also that readers should *not* go to [http://www.linuxppc.org/]
    LinuxPPC for hardware compatibility with 68k laptops, as the name
    implies, LinuxPPC is only for PowerPC machines. The proper place to go
    for information on running Linux on m68k Macintoshes is [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.   PowerPC (PPC): Although some driver support present in Intel based
    Linux is still missing for Linux PPC, it is a fully usable system for
    Macintosh PowerBooks. See [http://www.linuxppc.org/hardware/] LinuxPPC
    for a current list of supported machines.
   
      By the way: The team at [http://www.imaclinux.net] iMac Linux has
    managed to get the iMac DV to boot Linux to a usable point. You may get
    information about the iBook there as well.
   
 5.   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.
   
 6.   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 Road
    Handheld Devices part below.
   
 7.   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.
   
 8.   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 .
   
 9.   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?? 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??'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, 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?? 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.

  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 Machine With a 2.5" 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 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 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.
-----------------------------------------------------------------------------

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://
sole.infis.univ.trieste.it/~drzeus/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.
-----------------------------------------------------------------------------

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

  [http://www.ens-lyon.fr/~schaumat/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. bpbatch

  Also [http://www.bpbatch.org] bpbatch seems to be a good alternative.
-----------------------------------------------------------------------------

3.4.15.7. 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.uk.research.att.com/vnc] VNC .
   
 3.   PDAs and infrared remote control, see [http://hp.vector.co.jp/authors/
    VA005810/remocon/remocone.htm] Hiromu Okada .
   
 4.   AFAIK you can run Linux on the IBM?? PC110 (a tiny PC handheld that's
    no longer manufactured). There's a HOWTO on it running around somewhere
    but I don't have an URL, instead I found a description in [http://
    www.isp-planet.com/mag/97/jul/bwm70.html] LINUX REDUX July 1997 by Alan
    Cox.
   
 5.   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/ .
   
 6.   I have setup a page about [http://tuxmobil.org/pda_linux.html] Linux
    with PDAs and Handheld PCs , too.
   
 7.   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.   Samsung is the manufacturer of the [http://www.sem.samsung.com/eng/
    product/digital/pda/index.htm] YOPY.
   
 2.   The German [http://www.linux-magazin.de/News/index_html?newsid=519]
    Linux-Magazin about the YOPY.
   
 3.   [http://www.theyopy.de] An alternative YOPY site.
   
 4.   [http://www.yopy.cc] The official YOPY site.
   

 


Figure 6-1. Screenshot of the YOPY PDA

[yopy]
-----------------------------------------------------------------------------

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]
-----------------------------------------------------------------------------

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/cgi-bin/twiki/view/Main/WebHome]
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://www.zauruszone.farplanet.net/howtos/] 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/cgi-bin/twiki/view/Main/WebHome] 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. Or check the instructions from [http://opie.handhelds.org/
wiki/index.php?SourceCode] OPIE.
-----------------------------------------------------------------------------

6.3.5.3. Tool Chains

  Werner Schulte provides an [http://www.handhelds.org/pub/linux/dists/
opiedev/] OPIE development Live CD. The CD contains an ISO image with the
tools and methods described in his [http://www.uv-ac.de/opiedev] 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://more.sbc.co.jp/slj/linux.asp] Sharp Linux/Java PDA Linux
    Information
   
 2.   [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/cgi-bin/twiki/view/Main/WebHome]
    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&file=
    index] Unofficial Sharp Zaurus SL-5500 FAQ
   
 3.   [http://www.zauruszone.farplanet.net/howtos/] 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://www.zaurusoft.com/] ZaurusSoft
   
 3.   [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.myhelio.com] VTech .
   
 2.   [http://vhl-tools.sourceforge.net/] vhl-tools , 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-vr.org/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]
-----------------------------------------------------------------------------

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]
-----------------------------------------------------------------------------

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]
-----------------------------------------------------------------------------

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.itee.uq.edu.au/~leonard/personal/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://www.east.isi.edu/projects/DSN/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. 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://www.styx.demon.co.uk/smslink/] 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.

  [http://www.hof-berlin.de/mepl/] mepl is a software for 3COM/USRobotics
Messagemodems to control the self-employed-mode. This program can be used for
downloading the messages and saving or mailing them in gsm or fax-format.
-----------------------------------------------------------------------------

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

  Information about calculators e.g. HP-48 is at [http://www.hpcalc.org]
HP-Calculator.Org and Keith's [http://www.gmi.edu/~madd0118/hp48/] HP-48 Page
. [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://panic.et.tudelft.nl/~costar/hp48] Linux
terminal .

  See also at my page about [http://tuxmobil.org/ir_misc.html] Linux with
Infrared Devices .

  [http://www.tunbury.demon.co.uk/casio/] Backup utility for the CASIO diary
. It is a package ported from DOS to allow communication to the CASIO series
of hand-held organizers. It allows backup from CASIO to your computer and
restore a backup file from your computer to the CASIO. It can also output
human readable file from CASIO. Currently supports: phone, calendar,
schedule, memo, and reminder. See also [http://www.aloha.net/alank/] Alank,
[http://www.casioworld.com] CASIO World , [http://home.t-online.de/home/
Milan.Urosevic/] Milan Urosevic and [http://sunsite.unc.edu/pub/Linux/apps/]
SunSite Archiv .

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

  [http://wearables.essex.ac.uk/sulawesi/] Sulawesi was developed due to the
problems running a desktop GUI on a wearable computer. It has been designed
and implemented to tackle what has been considered to be important challenges
in a wearable user interface, the ability to accept input from any number of
input devices, such as machine vision, speech recognition, portable
keyboards, GPS devices, infra-red, etc. and to allow services to manipulate
the information and generate a suitable output such as speech generation,
graphics using a headmounted display, vibrotactile stimuli, etc. The Gili
user interface has been updated, more documentation has been added, and the 
Spatial Reminder has been introduced.
-----------------------------------------------------------------------------

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 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
    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.brodo.de/cpufreq/index.html]
cpufreq patch for the linux-2.4/2.5 kernels, maybe it works for your machine:
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://www.xs4all.nl/~bsamwel/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://www.xs4all.nl/~bsamwel/laptop_mode/tools] 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. autospeedstep

  [http://gpsdrive.kraftvoll.at/] autospeedstep is a daemon that controls
power consumption and processor speed depending of the CPU load. It works
with Intel Speedstep CPUs and Linux kernels running the 2.5 ACPI backport.
-----------------------------------------------------------------------------

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

  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. For an official statement from Intel about
Linux support, see their [http://www.intel.com/support/notebook/centrino/
os.htm] OS compatibility survey.

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

12.4.1. CPU: Pentium-M

  According to [http://www.intel.com/support/notebook/centrino/os.htm]
Intel's OS compatibility survey , the Pentium M processor family is
supported. 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]
-----------------------------------------------------------------------------

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-November/013701.html] Dual monitor setup without using
xinerama, but x2vnc instead. This approach allows to dymamically add and
remove the second monitor without reconfiguring or restarting anything.
-----------------------------------------------------------------------------

12.6.6. 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://roadrunner.swansea.uk.linux.org/v4l.shtml]
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/pxl2000/
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://www.suse.cz/development/input/] 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://freshmeat.net/projects/xbindkeys/] 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.org.uk/toshiba/] 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.informatik.hu-berlin.de/~tauber/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.sourceforge.net/index.html] 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. I have found two
programms, which might help to get them to work (but I couldn't test it): 
getmail, fujled. Both are available from the [http://tuxidum.stack.nl/led]
The Led Project. The tool setleds might also be helpful (part of [http://
lct.sourceforge.net/] Linux Console Tools).
-----------------------------------------------------------------------------

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.azstarnet.com/
~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?? ThinkPad and Toshiba laptops
   
 5.   3 Button Mice, e.g. IBM?? 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://www05.u-page.so-net.ne.jp/tc4/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). It is also available as an [http://hanzubon.org/Linux/Debian/
jogdiald] unofficial Debian package.

  [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 explaination 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/] Battery-Powered-mini-HOWTO.

  For APM to work the machine's firmware must implement the [http://
www.intel.com/IAL/powermgm] 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?? 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?? 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. Here is a [http:
//www.suspend2.net/features] quick comparison between the two that still
exist.

  [http://www.suspend2.net/] 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` = "yes" ]; 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/index.html] 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://www.iapp.de/~riemer/projects/acpi.py/] acpi.py provides an uniform
and platform-independent interface to ACPI.

  [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.sourceforge.net/index.html] 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?? 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.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.

  And there is a project at [http://www.redhat.com/pnp/overview.html] RedHat
.

  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/Hot_Products.asp?Product=IR-660] 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/english/eindex.htm] 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.
-----------------------------------------------------------------------------

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.idir.net/
~gromitkc/winmodem.html] the 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 (alpha) available at [http://
www.suse.cz/development/ltmodem/] SuSE - Labs and [http://
www.close.u-net.com] LTModem diagnostic tool . LucentPCI (binary only)
driver, for PCI driven internal modems, see [http://linmodems.org] Linux
WinModem Support .
-----------------------------------------------------------------------------

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. The home of pload is [http://www.engr.utk.edu/~mdsmith/pload
/] here .
-----------------------------------------------------------------------------

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

  The Linux Video and DVD Project has made great headway since its start.
Also provided on the site are links to various documents discussing DVD
chipset specifications. The Linux Video and DVD Project is avidly seeking
help from the opensource community for development. See also [http://tldp.org
/HOWTO/DVD-Playback-HOWTO/index.html] DVD-Playback-HOWTO .

  [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. 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.4. Form Factors

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

 

  *   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?? 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.5. 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.org.uk/toshiba/] Toshiba(tm)
Linux Utilities it makes it possible to hotswap devices in the SelectBay.

  [http://users.ox.ac.uk/~univ1377/] 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.Wireless.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 German
    computer magazine CT [ftp://www.heise.de/pub/ct/ctsi/ctpci330.zip] ftp://
    www.heise.de/pub/ct/ctsi/ctpci330.zip . 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 [http://www.smsc.com/
    ftppub/chips/appnote/ir_utils.zip] 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)
   
      [http://www.jps.net/tadavis/irda/devids.txt] Thomas Davis has placed
    some device information.
   
    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.ccsi.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.ccsi.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.ccsi.canon.com/] CANON : BJ-30
   
 4.   [http://www.citizen-america.com/products/index.htm] 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 (Syncronization)
    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://www.cs.hut.fi/Research/Dynamics] HUT 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. There is now a mailing list available. You can join it
by sending subscribe on the subject line to <
dynamics-user-request_at_cs.hut.fi> - or you can simply check the [http://
www.cs.hut.fi/Research/Dynamics/mail/user] mail archive.
-----------------------------------------------------------------------------

15.2.5.1. Resources

 

 1.   [http://anchor.cs.binghamton.edu/~mobileip/] Linux Mobile-IP
   
 2.   [http://hplbwww.hpl.hp.com/people/jt/MobileIP/index.html] Linux Mobile
    IP from HP Labs Bristol by Manuel Rodriguez.
   
 3.  [http://mosquitonet.Stanford.EDU/software/mip.html] MosquitoNet Mobile
    IP
   
 4.   [http://mip.ee.nus.sg/] Mobile IP at NUS
   
 5.   [http://anchor.cs.binghamton.edu/~mobileip/] Linux Mobile-IP
   
 6.   [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 [http://www.mjedev.demon.co.uk/index.html] 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 here 

  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 (Syncronization)

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

  [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.5. MultiSync

  [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.6. mirrordir

  [http://www.obsidian.co.za/mirrordir/] Mirrordir is a suite of functions in
one package. It contains a remote login utility and daemon that provides a
secure shell, a cp equivalent which additionally copies to and from ftp
servers, a tool to mirror filesystems over ftp or locally, and another
utility you can pass a C script to recursively perform operations on files.

  mirrordir forces the mirror directory to be an exact replica of the control
directory tree in every possible detail suitable for purposes of timed
backup. Files whose modification times or sizes differ are copied. File
permissions, ownerships, modification times, access times, and sticky bits
are duplicated. Devices, pipes, and symbolic and hard links are duplicated.
Files or directories that exist in the mirror directory that don't exist in
the control directory are deleted. It naturally descends into subdirectories
to all their depths.
-----------------------------------------------------------------------------

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.2.12. KBriefcase

  The KDE tool [http://netnow.micron.net/~mrolig/kbriefcase/] Kbriefcase
tries to achieve a similar goal as the Windows briefcase, but in a different
way. Rather than pulling your files from the desktop, they are pushed to the
laptop. You drag a file from the local location to the briefcase. You are
then asked for the remote path to copy it to. It will then copy the file to
the remote location and make the original read-only. When you restore and
remove, the file is copied back and write permissions are given back. The
read-only status, of course, makes sure you don't start editing the file
again before you've brought your changes back from the remote location.
-----------------------------------------------------------------------------

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.
   
 2.   [http://tuxmobil.org/smart_linux.html] SmartCards: the only available
    laptop with a SmartCard built-in is the Siemens Scenic Mobile 800. And
    some ACER models.
   
 3.   User passwords: can be easily bypassed if the intruder gets physical
    access to your machine
   
 4.   Hard Disk Passwords:
   
 5.   BIOS passwords: are also easily crackable, though sometimes harder than
    with desktops. But how to do so is beyond the scope of this guide :) 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.org.uk/toshiba/] 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.suse.com/archive/suse-laptop/
2002-Nov/0205.html] SuSE Laptop Mailing List.
-----------------------------------------------------------------------------

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://www-serra.unipi.it/~ntop/] 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://members.xoom.com/kavalsky/dc20.htm] DC20 is a user friendly package
for the Kodak DC20 camera. It consists of two programs, a low-level driver
for manipulating the camera from the command line and a TCL/Tk front-end
which uses the driver. You can use the internal viewer, or choose any
standard external viewer.

  [http://www.bus.ualberta.ca/cstudhol/unix/software/kdc2tiff/] 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/welcome.html] 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
    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 Concerto Aero
    I.2. DELL
    I.3. IBM?? 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/
product/pm/index.html] 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://uranus.it.swin.edu.au/~jn/linux
/] 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.
It has an [http://www.mail-archive.com/linux-laptop_at_vger.rutgers.edu]
archiv now. 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.

  [http://www.suse.de/] SuSE offers a suse-laptop list (mostly in German).
You may subscribe at the [http://www.suse.de/de/private/support/online_help/
mailinglists/index.html] SuSE mailing list pages .
-----------------------------------------------------------------------------

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

  The [http://www.gweep.ca/mailman/listinfo.cgi/linux-tp240]
linux-ibm-thinkpad-tp240-portege is dedicated to Linux on IBM ThinkPad 240
issues.
-----------------------------------------------------------------------------

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://mobile_news.html] monthly digest via e-mail .
   

-----------------------------------------------------------------------------
B.5. Magazines

  Magazines and newsletters about PCs or laptops in general, about mobile
computing, about UNIX® in general, or about Linux.

 

  *     [http://www.pclaptop.com/] pcLaptop Magazine
   
  *     [http://www.mobilecomputing.com/] Mobile Computing and Communications
   
  *     [http://warrior.com/rwsub1.html] Road Warrior News
   
  *     [http://www.pc-card.com/pcmcia8.htm] PCMCIA Update Newsletter
   
  *     [http://www.linuxjournal.com/lj/] The Linux Journal
   
  *    [http://www.linuxgazette.com] The Linux Gazette
   
  *     [http://echo-linux.alienor.fr/] L'echo de Linux (in French)
   
  *     [http://www.unixreview.com/] UNIX Review
   
  *     [http://www.wcmh.com/uworld/] UNIXWorld Online
   
  *     [http://www.sigs.com/publications/txjr/] The X Journal
   
  *     [http://www.heise.de/ix] iX Multiuser Multitasking Magazin (in
    German)
   
  *     [http://www.zdnet.com/~cshopper/] Computer Shopper
   

-----------------------------------------------------------------------------
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.laptopworldwide.com/laptops.html] Laptop Soup This site offers
a lot of information about what companies produce which machines sold under
which brand names. If you need to know what company made your machine, this
site may help you find out.

  [http://snapple.cs.washington.edu/mobile/] The WWW Virtual Library: Mobile
and Wireless Computing This site provides a world of information about
scientific journals, conferences, academic projects, and more that relate to
state-of-the-art mobile computing. There are also many references to
developing standards, non-profit and governmental organizations, and an index
of vendors, including wireless service providers.

  [http://www.fcc.gov/fcc-bin/ead] 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.

  See [http://www.linuxhq.com] LinuxHQ or [http://www.txdirect.net/users/
mdfranz/tinux.html] Tinux for details. You may find a FAQ and a mailing list
about boot-floppies at [http://os.inf.tu-dresden.de/~sr1/boot-floppies/
faq.html] Boot-Floppies-FAQ . Also a BootDisk-HOWTO is available. Thanks to
Matthew D. Franz maintainer of Trinux for this tips and collecting most of
the following URLs. See also the content of Console/Mini Distributions at
[http://ma.us.mirrors.freshmeat.net/appindex/console/mini-distributions.html]
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
   
 7.   [http://www.zelow.no/floppyfw/] floppyfw by Thomas Lundquist.
   
 8.   [http://alberti.crs4.it/softw are/mini-linux/] minilinux (seems no more
    valid) or [http://www.kiarchive.ru/pub/linux/mini-linux/] minilinux
   
 9.   [http://www.spsselib.hiedu.cz/monkey/docs/english.htm] monkey
   
10.   [http://www.wu-wien.ac.at/usr/h93/h9301726/dlx.html] DLX by Erich Boem
   
11.   [http://metalab.unc.edu/pub/Linux/kernel/images/] C-RAMDISK
   
12.   [http://celsius-software.hypermart.net/babel/] babel "A
    mini-distribution to run games"
   
13.   [http://xdenu.tcm.hut.fi/] Xdenu , quotating Alan Cox: "Xdenu is a
    small distribution program that installs as a set of DOS zips onto a DOS
    partition and gives you a complete X11 client workstation."
   
14.   [http://www.ecks.org/loaf/] LOAF
   
15.   [http://pocket-linux.coven.vmh.net/] pocket-linux
   
16.   [http://www.upce.cz/~kolo/fluf.htm] FLUF
   
17.   [http://www.croftj.net/~fawcett/yard/] YARD
   
18.   [http://members.xoom.com/ror4/tlinux/] TLinux
   
19.   [http://linux.apostols.org/guru/wen/] ODL
   
20.   [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.
   
21.   [ftp://ftp.blueznet.com/pub/colorg] cLIeNUX by Rick Hohensee
    client-use-oriented Linux distribution
   
22.   [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)
   
23.   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 .
   
24.   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.
   
25.   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.
   
26.   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://debs.fuller.edu/e2compr/] e2compr.
   
      - 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. See [http://
    fb9nt-ln.uni-duisburg.de/mitarbeiter/gockel/software/dmsdos/] dmsdos .
   
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.  [ftp://tsx-11.mit.edu/pub/linux/sources/sbin/] hdparm hdparm is a Linux
    IDE disk utility that lets you set spin-down timeouts and other disk
    parameters. It works also for some SCSI features.
   
 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://www.tuebingen.linux.de/kobras/noflushd/] 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://www2.prestel.co.uk/hex/toshiba.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://www.loonie.net/~eschenk/diald.html] 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?? 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://ccwf.cc.utexas.edu/~zvonler/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]
   
 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 Concerto Aero

  [http://www.inetdirect.net/stg/pen/chris/concerto.html] COMPAQ Concerto
Fan's Home Page and [http://www.reed.edu/~pwilk/aero/aero.faq] Aero-FAQ .

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

I.2. DELL

  Mailing list at [http://www.egroups.com/group/linux-dell-laptops]
linux-dell-laptops

  Manufacturer Linux information: [http://www.dell.com/us/en/dhs/topics/
linux_peripherals.htm] DELL
-----------------------------------------------------------------------------

I.3. IBM?? ThinkPad

  ThinkPad Configuration Tool for Linux by Thomas Hood [http://
tpctl.sourceforge.net/] tpctl

  Running Linux on IBM??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-hft.ee.TU-Berlin.DE/~strauman/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 are two HOWTOs available: [http://www.cadic.com/VAIO-HOWTO] The Linux
SONY Vaio PCG-C1XD HOWTO by Philippe CADIC <ccadic_AT_cadic.com>. And the
VAIO-HOWTO at the LDP.

  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://www2.prestel.co.uk/hex/toshiba.html] Toshiba Linux Utilities This
is 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.

  See also [http://www.buzzard.org.uk/toshiba/] Toshiba Linux Utilities

  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://www.tce.co.jp/linux/] Toshiba Linux
Support (Japanese branch) and [http://newsletter.toshiba-tro.de] Toshiba
Linux Support (German branch) .

  Linux replacements for Toshiba laptop utilities. The [http://
www.buzzard.org.uk/toshiba/] Toshiba Linux Utilities package contains some
Toshiba laptop goodies. Utilities to control the fan, change supervisor
passwords, adjust power/battery modes and reassign the function key <FN> are
included.
-----------------------------------------------------------------------------

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 .
   
  *  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
   
  *  [http://www.cs.hut.fi/~jtm] Jari Malinen , for support with HUT 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
   
  *  [http://sole.infis.univ.trieste.it/~drzeus/rh_pcd.html] 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.

Комментариев нет:

Отправить комментарий