\documentclass[a4paper, 12pt]{article}
\usepackage[english]{babel}
\usepackage{t1enc}
\usepackage{verbatim}
\usepackage{fullpage}
\usepackage[ps2pdf=true, colorlinks=true, urlcolor=blue,
bookmarks=true, pdftitle={Acer Aspire 1601LC Howto EN},
pdfauthor={Jean Lepropre}]{hyperref}
\newcommand{\command}[1]{\\\indent{\tt\$ #1}\\}
\newcommand{\commandroot}[1]{\\\indent{\tt\# #1}\\}
\newcommand{\commandnospace}[1]{\\\indent{\tt\$ #1}}
\newcommand{\commandrootnospace}[1]{\\\indent{\tt\# #1}}
\begin{document}
\title{Acer Aspire 1601LC Howto\footnote{This document has been made
    with \LaTeXe . An up to date version of this document is available at
    the following address: http://home.gna.org/aspire1601lc/.}}
\author{Jean Lepropre\\lepropre AT student.montefiore.ulg.ac.be}
\date{v0.5.2, \today}
\maketitle{}
\tableofcontents{}
\newpage
\noindent Copyright (c)  2004  Jean Lepropre.\\
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts.  A copy of the license is included in the section entitled "GNU
Free Documentation License".

\newpage
\setcounter{section}{-1}
\section{History}
\begin{itemize}
\item v0.5.2 : some minor changes and the document is now licensed
  under the Gnu Free Documentation License (GFDL) (2004-02-21).
\item v0.5.1 : an important note about APIC was added and the howto
  was updated for the new version of the synaptics driver.
\item v0.5.0 : the section about the PCMCIA ports was added and
  reorganization of the sections.
\item v0.4.3-1 : end of the translation. I raise the version number to
  the same of the French version.
\item v0.3 : the graphic card and screen sections were added.
\item v0.2 : the touchpad section was added.
\item v0.1 : beginning of the translation.
\end{itemize}

\section{Introduction}
When I bought this laptop, I realized how difficult it was to find
correct informations about the compatibility with GNU/Linux. I created
this howto in order to centralise the information I collected.

As I have a Debian Sid, it's this distribution which was used to
test the laptop. This doesn't mean that the others distributions won't
work with the laptop ! You will just have to adapt some things to your
distribution.

The goal of this document is to help people to configure the hardware
of this laptop. This means that I will not give any information on the
installation of the Debian...

It's possible that there are mistakes and oversights in this
howto. Help me to improve it : report them. In the same way, my
English is not very good. Send me a mail if you see spelling
mistakes. Thanks.

\textbf{Important note : if you use the ACPI patch or not, the kernel
  won't boot without the ``noapic'' option which disables the APIC
  (the APIC is different from the ACPI).}

\section{Organisation of the document}
Each following section treats of a particular piece of hardware. In
appendix, you will find some files like ``modules.conf'' that you can
use to configure your installation.

The lines beginning with {\tt\$} are commands that you can run as
user. Those beginning with {\tt\#} have to be run as root.

\section{Keyboard and launch buttons}
\subsection{Keyboard}
No problem with the keyboard. I just noticed a bug (?) : the
combinations of keys \textit{Fn+x} where x is a digit don't work
neither in the console nor in X. However, the combinations
\textit{Fn++}, \textit{Fn+-} and \textit{Fn+*} work
perfectly. Moreover, if you activate ``NumLock'', the digits will work
without any problem !
\subsection{Launch buttons}
For the launch buttons, it's a bit more complicated... Three of the
five launch buttons work : P1, P2 and P3. The ``Email key'' seems to be
in conflict with P1. The ``Internet key'' doesn't work at all.

You have to compile
\href{http://www.informatik.hu-berlin.de/~tauber/acerhk/}{this
  driver}. For that, the sources of your kernel have to be
installed\footnote{If it's a kernel from a Debian distribution, a
  package \textit{kernel-headers} would be sufficient. If it's a
  kernel from a Mandrake, you have to install the package
  \textit{kernel-source}.}. This kernel must have the following
properties :
\begin{itemize}
\item Loadable module support (Y).
\item Set version information on all module symbols (Y).
\item /proc file system support (Y)\footnote{This is recommended but
    not necessary according to the driver's author. I advise you to
    activate it as it serves for other things.}.
\item Input core support (Y or M).
\item Keyboard support (Y or M)\footnote{These two last things, which
    lie in the \textit{Input Core Support} section, aren't
    necessary. However, they will permit you to use softwares like
    hotkeys or acme to configure the launch buttons. Thus they are
    important.}.
\end{itemize}
If your kernel is a kernel from a distribution, it's likely that these
options are already correctly configured.\\

Before you compile the driver, change \textit{KERNELSRC} in the
makefile to your path to the kernel sources. Then compile the driver
with the command :\command{make} Copy the created driver
\textit{acerhk.o} to the path
/lib/modules/<kernel\_version>/kernel/dri\-vers/char/. Finally, load the
module with the command :\commandroot{insmod acerhk poll=1} If
\textit{procfs} is activated, then run :\command{cat
  /proc/driver/acerhk/info} You should obtain something like that :
\begin{verbatim}
Acer hotkeys version 0.4.2
Model(Type)     : (1)
request handler : 0xc00fdc60
CMOS index      : 0x60
kernel polling  : active
events pending  : 0
preg400         : 0xe09e1400
\end{verbatim}

It remains to configure the keys. Personally, I use acme (a software
delivered with Gnome) that I find very convenient. If you wish to use
hotkeys, here are \textbf{apparently} the keycodes (\textbf{not tested
!}) :
\begin{itemize}
\item P1 : 153.
\item P2 : 144.
\item P3 : 171.
\end{itemize}

\section{Touchpad}
The touchpad works without any problem. If you don't use the
horizontal and vertical scrolling, the driver called
\textit{mouse} included in XFree will be sufficient. Otherwise, you
have to install a driver available
\href{http://w1.894.telia.com/~u89404340/touchpad/index.html}{here}.
I tested the version 0.12.1.

Here is the part of the file /etc/X11/XF86Config-4 about the touchpad
if you don't use the horizontal and vertical scrolling :
\begin{verbatim}
Section "InputDevice"
    Identifier "TouchPad"
    Driver "mouse"
    Option "Protocol"   "PS/2"
    Option "Buttons" "3"
    Option "Device"     "/dev/psaux"
    Option "Emulate3Buttons"
EndSection
...
Section "ServerLayout"
...
    InputDevice "TouchPad" "CorePointer"
...
EndSection
\end{verbatim}
If you wish to use the horizontal and vertical scrolling, download the
driver. Then, unpack the file and run the following commands :
\commandnospace{make}
\commandroot{make install}
You also have to modify your file /etc/X11/XF86Config-4 like that :
\begin{verbatim}
Section "Module"
...
    Load "synaptics"
...
EndSection
...
Section "InputDevice"
  Driver        "synaptics"
  Identifier    "TouchPad"
  Option        "Device"        "/dev/psaux"
  Option        "Protocol"      "auto-dev"
  Option        "LeftEdge"      "1900"
  Option        "RightEdge"     "5400"
  Option        "TopEdge"       "1900"
  Option        "BottomEdge"    "4000"
  Option        "FingerLow"     "25"
  Option        "FingerHigh"    "30"
  Option        "MaxTapTime"    "180"
  Option        "MaxTapMove"    "220"
  Option        "VertScrollDelta" "100"
  Option        "MinSpeed"      "0.02"
  Option        "MaxSpeed"      "0.18"
  Option        "AccelFactor" "0.0010"
  Option        "SHMConfig"     "on"
EndSection
...
Section "ServerLayout"
...
    InputDevice "TouchPad" "CorePointer"
...
EndSection
\end{verbatim}
Finally, restart the X server.

\section{Graphic card}
Two different drivers are available for the graphic card :
\begin{enumerate}
\item A free driver included in XFree 4.3 (or greater). This driver
  gives apparently bad performance in 3D.
\item A proprietary driver provided by ATI and available
  \href{http://www.ati.com}{here}. This driver gives better
  performance in 3D but is less stable.
\end{enumerate}
At the moment, the version of XFree included in the Debian Sid is
4.2.1-9. So I didn't test the free driver and I'm not sure of what I
wrote above. If you have XFree 4.3 (or greater), choose according to
your requirements and your taste. Nevertheless you must know that the
installation of the ATI drivers is not so easy (in comparison with
the Nvidia drivers).

As I didn't test the free driver, I will not describe his
installation. The version of the ATI drivers I tested is 3.2.5. The
third version of the ATI drivers enables the TV out and there are less
graphic bugs. Nevertheless, some people noted a reduction in the
performances.

First, download the drivers \href{http://www.ati.com}{here} (pay
attention at the version of XFree for which the drivers are made).

If you don't have a distribution with a package system based on rpm
(Debian, Knoppix, etc.), you have to convert the provided \textit{rpm}
file into a \textit{deb} file. For that, use \textit{alien}
:\command{alien -d fglrx-glc22-4.2.0-2.9.13.i586.rpm} This should give
you a file called
\textit{fglrx-glc22\_4.2.0-3.9\_i386.deb}\footnote{The version numbers
  can of course be different.}. Then, you have to install the
package. If you use Debian, run :\commandroot{dpkg -i
  fglrx-glc22\_4.2.0-3.9\_i386.deb} If \textit{dpkg} complains because
the package \textit{xlibmesa3} already provides a file called
\textit{libGL.so.1.2}, then use :\commandroot{dpkg -i
  -\--force-overwrite fglrx-glc22\_4.2.0-3.9\_i386.deb} If you have a
distribution with a package system based on rpm, use :\commandroot{rpm
  -Uvh fglrx-glc22-4.2.0-2.9.13.i586.rpm} If this doesn't work because
of a conflict, try :\commandroot{rpm -i -\--force
  fglrx-glc22-4.2.0-2.9.13.i586.rpm}

Then, run the following command :\commandroot{fglrxconfig} Answer the
different questions. When you don't know what to answer, choose the
default answer. Anyhow, you can change your answers by modifying the
file XF86Config-4. Here is the portion of my XF86Config-4 referring to
the graphic card :
\begin{verbatim}
# === ATI device section ===

Section "Device"
    Identifier                          "ATI Graphics Adapter"
    Driver                              "fglrx"
# === disable PnP Monitor  ===
    #Option                              "NoDDC"
# === disable/enable XAA/DRI ===
    Option "no_accel"                   "no"
    Option "no_dri"                     "no"
# === FireGL DDX driver module specific settings ===
# === Screen Management ===
    Option "DesktopSetup"               "0x00000100" 
    Option "MonitorLayout"              "AUTO, NONE"
    Option "IgnoreEDID"                 "off"
    Option "HSync2"                     "unspecified" 
    Option "VRefresh2"                  "unspecified" 
    Option "ScreenOverlap"              "0" 
# === TV-out Management ===
    Option "NoTV"                       "no"     
    Option "TVStandard"                 "PAL-B"     
    Option "TVHSizeAdj"                 "0"     
    Option "TVVSizeAdj"                 "0"     
    Option "TVHPosAdj"                  "0"     
    Option "TVVPosAdj"                  "0"     
    Option "TVHStartAdj"                "0"     
    Option "TVColorAdj"                 "0"     
    Option "GammaCorrectionI"           "0x00000000"
    Option "GammaCorrectionII"          "0x00000000"
# === OpenGL specific profiles/settings ===
    Option "Capabilities"               "0x00000000"
# === Video Overlay for the Xv extension ===
    Option "VideoOverlay"               "on"
# === OpenGL Overlay ===
# Note: When OpenGL Overlay is enabled, Video Overlay
#       will be disabled automatically
    Option "OpenGLOverlay"              "off"
    Option "CenterMode"                 "off"
# === QBS Support ===
    Option "Stereo"                     "off"
    Option "StereoSyncEnable"           "1"
# === Misc Options ===
    Option "UseFastTLS"                 "1"
    Option "BlockSignalsOnLock"         "on"
    Option "UseInternalAGPGART"         "yes"
    Option "ForceGenericCPU"            "no"
# === FSAA ===
    Option "FSAAScale"                  "1"
    Option "FSAADisableGamma"           "no"
    Option "FSAACustomizeMSPos"         "no"
    Option "FSAAMSPosX0"                "0.000000"
    Option "FSAAMSPosY0"                "0.000000"
    Option "FSAAMSPosX1"                "0.000000"
    Option "FSAAMSPosY1"                "0.000000"
    Option "FSAAMSPosX2"                "0.000000"
    Option "FSAAMSPosY2"                "0.000000"
    Option "FSAAMSPosX3"                "0.000000"
    Option "FSAAMSPosY3"                "0.000000"
    Option "FSAAMSPosX4"                "0.000000"
    Option "FSAAMSPosY4"                "0.000000"
    Option "FSAAMSPosX5"                "0.000000"
    Option "FSAAMSPosY5"                "0.000000"
    BusID "PCI:1:0:0"    # vendor=1002, device=4c66
    Screen 0
EndSection
...
Section "Screen"
    Identifier  "Screen0"
    Device      "ATI Graphics Adapter"
...
EndSection
...
Section "ServerLayout"
...
    Screen "Screen0"
...
EndSection
\end{verbatim}
It remains to compile/load the \textit{fglrx} module. Indeed, as with
the \textit{Nvidia} drivers, there is a kernel module which is needed
to support AGP, DMA transfers, etc. This module has to be loaded at
the boot time or when launching the X server. Except if you have
a RedHat 7.3 or 8.0 with the original kernel, you have to compile your
own module. See the file \textit{fglrx\_info.txt} located in
/lib/modules/fglrx for more details. Before to go further, check that
the sources of your kernel are in /usr/src/linux (a symbolic link is
authorised). Run the following commands :\commandnospace{cd
  /lib/modules/fglrx/build\_mod}\commandrootnospace{./make.sh}\commandnospace{cd 
  ..}\commandroot{./make\_install.sh} Some errors can appear, in
particular about some sort of pointer conversion. These errors aren't
``important'' (they won't affect the compilation). It remains to load
the created module by running :\commandroot{modprobe fglrx} Normally,
everything is now installed. You just have to run
:\commandnospace{startx}

\section{Screen}
Nothing special with the screen... Here is just the portion of my
XF86Config-4 referring to the screen\footnote{The horizontal and
  vertical sync range were given by the Knoppix 3.2.} :
\begin{verbatim}
Section "Monitor"
    Identifier  "Monitor0"
    HorizSync   28.0 - 96.0
    VertRefresh 50.0 - 76.0
    Option      "DPMS"
EndSection
...
Section "Screen"
    Identifier  "Screen0"
    Device      "ATI Graphics Adapter"
    Monitor     "Monitor0"
...
EndSection
...
Section "ServerLayout"
    Identifier  "Server Layout"
    Screen "Screen0"
...
EndSection
\end{verbatim}

\section{Sound card}
You can use the drivers included in the kernel (use the module
\textit{i810\_audio}) or install the
\href{http://www.alsa-project.org}{ALSA drivers}. For that, follow
this
\href{http://www.alsa-project.org/alsa-doc/doc-php/template.php3?company=SiS&card=&chip=ad1816a&module=intel8x0}{guide}.
Except if you use \textit{devfs}, I advise you to run the script
\textit{snddevices}.

\section{Network card}
The network card will work without any problem with the driver
\textit{8139too}. Here is the portion of my file .config referring to
the network card :
\begin{verbatim}
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
...
CONFIG_NET_PCI=y
...
# CONFIG_8139CP is not set
CONFIG_8139TOO=m
# CONFIG_8139TOO_PIO is not set
# CONFIG_8139TOO_TUNE_TWISTER is not set
CONFIG_8139TOO_8129=y
# CONFIG_8139_OLD_RX_RESET is not set
...
\end{verbatim}

\section{CD burner}
The SCSI emulation will permit you to burn CD. See a guide
referring to the SCSI emulation for more details.

\section{ACPI}
To enable the ACPI, you have to use the ACPI patch or use the kernel
2.4.22 (or greater).
\begin{enumerate}
\item Download the ACPI patch
  \href{http://sourceforge.net/project/showfiles.php?group_id=36832}{here}.
  The file is called \textit{acpi-20030619-2.4.21.diff.gz}.
\item Download the sources of the kernel 2.4.21
  \href{http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.bz2}{here}.
\item Unpack the sources (as root) :
  \begin{enumerate}
  \item {\tt cp <download\_directory>/linux-2.4.21.tar.bz2 /usr/src}
  \item {\tt cd /usr/src}
  \item {\tt tar jxvf linux-2.4.21.tar.bz2}
  \item {\tt rm -f linux-2.4.21.tar.bz2}
  \end{enumerate}
\item Apply the patch (as root) :
  \begin{enumerate}
  \item {\tt cd linux-2.4.21}
  \item {\tt make mrproper}
  \item {\tt gunzip -c <path to
  acpi-patch>/acpi-20030619-2.4.21.\\diff.gz | patch -p1}
  \end{enumerate}
\item Configure and compile the kernel : for more details, see the
  \textit{README} file in \textit{/usr/src/linux-2.4.21} and/or make a
  research on Internet.
\item Don't forget to modify \textit{/etc/lilo.conf} and then to run
  {\tt lilo} as root. 
\end{enumerate}
Here is the portion of my file .config referring to the ACPI :
\begin{verbatim}
CONFIG_PM=y
# CONFIG_APM is not set

#
# ACPI Support
#
CONFIG_ACPI=y
# CONFIG_ACPI_HT_ONLY is not set
CONFIG_ACPI_BOOT=y
CONFIG_ACPI_BUS=y
CONFIG_ACPI_INTERPRETER=y
CONFIG_ACPI_EC=y
CONFIG_ACPI_POWER=y
CONFIG_ACPI_PCI=y
CONFIG_ACPI_SLEEP=y
CONFIG_ACPI_SYSTEM=y
CONFIG_ACPI_AC=m
CONFIG_ACPI_BATTERY=m
CONFIG_ACPI_BUTTON=m
CONFIG_ACPI_FAN=m
CONFIG_ACPI_PROCESSOR=m
CONFIG_ACPI_THERMAL=m
# CONFIG_ACPI_ASUS is not set
# CONFIG_ACPI_TOSHIBA is not set
# CONFIG_ACPI_DEBUG is not set
...
\end{verbatim}
For more details about the installation and the configuration of the
ACPI, I advise you to read this
\href{http://xtrinsic.com/geek/articles/acpi.phtml}{guide}.\\

If you are not so much motivated to configure/compile a kernel, you
can use my .config file,
or you can use my Debian
package (see the Web page of the howto). In the second case, you must
have a Debian system. In the
first case, you have to copy the file in
\textit{/usr/src/linux-2.4.21}. Next, run :\commandroot{make
  menuconfig} Then, save the configuration even if you don't change
anything.

\textbf{Notes :}
\begin{enumerate}
\item The files are adapted to my configuration. You will have to
  perhaps modify them !
\item \textbf{The kernel won't boot without the parameters
  ``pci=noacpi'' and ``noapic''}.
\end{enumerate}

\section{PCMCIA ports}
Gregory Auzanneau <greg AT gregory5.sytes.net> reported me that PCMCIA
ports work. You have to activate the following options in the
kernel :
\begin{itemize}
\item General setup $\rightarrow$ PCMCIA/CardBus support $\rightarrow$
  PCMCIA/CardBus support
\item General setup $\rightarrow$ PCMCIA/CardBus support $\rightarrow$
  CardBus support
\item General setup $\rightarrow$ ISA bus support\footnote{This last
    option is required only to use 16 bits PCMCIA cards.}
\end{itemize}
There is also a package to install. If you have a Debian or a
Mandrake, the name of this package is \textit{pcmcia-cs}. This package
will install a card manager daemon that can respond to card insertion
and removal events.

\textbf{Note :} the package \textit{pcmcia-cs} is installed by default
if you use a Debian system. So, it should already be installed except
if you remove it by your self or if you ask the Debian setup program
to remove it for you.

\section{Acknowledgements}
I would like to thank all the persons who contributed to the design of
this document and in particular:
\begin{itemize}
\item François Valenduc <Francois.Valenduc AT skynet.be>.
\item Gregory Auzanneau <greg AT gregory5.sytes.net>.
\end{itemize}

\newpage
\appendix
\section*{Appendices}
\section{modules}
\verbatiminput{/etc/modules}
\section{modules.conf}
\verbatiminput{/etc/modules.conf}
\section{lilo.conf}
\verbatiminput{/home/moi/backup/lilo.conf}
\section{GNU Free Documentation License}
\input{../../archives/fdl}
\end{document}