Debian GNU Linux on HP XE3 Laptop

Introduction

I own a Hewlett Packard Omnibook XE3-GF laptop (product number F3956HT), and I have spent quite some time to install and configure Debian Linux on it. I will describe how I got most of the hardware to work, what kind of problems I encountered and how I tried to solve them.

Click these links to find information about migrating from WinXP to Linux and installing different USB devices.

To see the old version of this page, click here.

Contents

Problems
First Setup
Compile a new Kernel
XFree86
Sound
CD-RW
Modem
Omnibook Module
Onetouch Buttons
Power Management
Synaptics Touchpad
3D support for the Intel i830 Grafics Card
Removing the Internal Keyboard
Links

Problems

At this moment, there are the following problems with my linux-laptop installation. Almost all of these problems seem to be hardware problems.

Any help with these problems would greatly be appreciated.
top

First Setup

I downloaded the woody network-install-iso-image from www.debian.org and burned it onto a CD. Then I tried to shrink my WinXP partition using PowerQuest Partition Magic 8. Unfortunately, it managed to destroy my WinXP partition, so I had to delete all my harddisk-partitions. So, if you try to resize partitions, make sure to backup all your important data such as mail-folders, address books, MP3s etc.. before you start.

Next, I first re-installed WinXP, cause it's always good to have a running version of it. But I only made a partition of about 10 GBytes for WinXP. (Actually, it is safer to reserve a 10 GByte partition for Windows and to first install Linux. Windows XP can then be installed into the empty partition. This will avoid problems with changed Windows driver letters.) Then, I booted from the Debian Woody netinst CD. Everything works fine, one can easily specify the partitions one likes, for instance:

Name Flags Part Type FS Type Size (MB) Use
hda1 Primary IBM Thinkpad Hibernation 24.68 Whatever..
hda2 Boot Primary NTFS 10487.24 Windows XP
hda3 Primary Linux ext2 16.46 /boot partition for Debian
hda5 Logical Linux swap 254.99 swap partition for Debian
hda6 Logical Linux ext2 3997.49 The main Linux partition
Logical free space 15000
Note that it is often a good idea to make an own partition for the /home directory. This has the advantage that if you need to re-install Linux, you can leave this partition untouched and all your personal user settings will be conserved.

The networking adapter is not automatically recognised. Choose manually the driver "EtherExpressPro/100" from the section "Ethernet (10 or 100 Mbit)".
In order to get the soundcard (ESS Technology ES1988 Allegro-1) working, be sure to say YES to experimental kernel options and choose "Maestro3" in menuconfig's "Sound" section.
From there, you can install via network whatever packets you like. For a start, it's a good idea to use tasksel and pick the "X-server and window managers" set.
top

Compile a new Kernel

Now, in case you want to use the touchpad, some USB-mice, the winmodem, and other cool stuff like IrDA, WLAN PCMCIA cards, Bluetooth dongles ..., you will be forced to compile a new kernel for your system. Get the newest Kernel source using dselect. Now, change to the directory where the kernel-source has been put, e.g. /usr/local/src/kernel-source/kernel-source-2.4.18 (you can see here that I am currently using kernel 2.4.18). Then, configure the kernel-source using make menuconfig. You can find my actual kernel configuration here. Next, compile the kernel source. It is very handy to use the make-kpkg command. This will construct a Debian package containing the new kernel image, which makes the task of installing the new kernel image very easy. To be able to use make-kpkg and make menuconfig, you will need the following additional Debian packages: kernel-package ncurses-dev Type make-kpkg --revision=custom.1.0 kernel-image and if everything goes well, a .deb file will be created in the parent directory. Thus, type cd .. and then you may install the new kernel image using dpkg -i kernel-image-2.4.18_custom.1.0_i386.deb.
During the installation of this home-made package, the system asks you if want to change anything with lilo or the master boot record. The best way is to say "no" everywhere, but: you need to run lilo manually after that. (Run it in superuser mode.) This will cause lilo to re-scan for kernel images, so it will recognize the changes you have made. If you are installing a new version of the kernel, the current version of the kernel will be saved (using the .old notation), and you will still be able to boot it from lilo. If you are re-compiling the existing kernel version, it will be overwritten. Of course, according to what hardware you are using, you won't need all of the kernel options I have activated. (You may also need some more kernel options.) So be careful if you simply load my configuration file. You will find more details concerning several of the kernel options in the following sections.
top

XFree86

If you simply install XFree86, you will enter a guided configuration application. Enter the following values: X server driver: vesa (not i810, this only works if your kernel supports the intel grafix chip, or if you have the intel chip driver installed) User kernel framebuffer device interface: YES

Keyboard: pc104 -- whatever you want -- nodeadkey -- [no options]
Mouse: /dev/psaux -- PS/2
Monitor _is_ LCD: Medium -- 1024x768 @ 60Hz
1024, 800, 640 -- 16 bit

After this, you will need to edit the file /etc/X11/XF86Config-4 manually. Remove the option "DPMS" from the section "Monitor". Now, XFree86 should work. You will see later how to optimize it for using all the mouse buttons, an external USB mouse, and the 3D- and Powersaving-options of the Intel grafix card.
top

Sound:

If the soundcard does not work, make sure you have activated the following kernel options:
Code maturity level options --> Prompt for development and/or incomplete code/drivers
sound --> maestro3: M

Then, add the new module maestro3 using modconf. Then, add the following line to /etc/modules.conf: alias sound maestro3. Also add the users that are supposed to use the soundcard to the "audio" group.
top

CD-RW

To use the Toshiba CD-R/CD-RW combo drive to burn CDs, do the following:
Recompile the kernel with the following options:
Block devices --> IDE/ATAPI CDROM support Y
Block devices --> SCSI emulation support Y
SCSI support --> SCSI support Y
SCSI support --> SCSI disk support Y
SCSI support --> SCSI CD-ROM support Y
SCSI support --> SCSI generic support Y


Add the following line to /etc/lilo.conf:
append="hdc=ide-scsi"
then execute lilo in su mode to load the modified lilo.conf
Then type:
su
cd /dev
ln -s sr0 cdrom
ln -s sr0 dvd

Add the following lines to /etc/fstab:
/dev/cdrom /cdrom iso9660 ro,user,noauto 0 0
/dev/dvd /dvd iso9660 ro,user,noauto 0 0


top

Modem

The XE3 laptop contains a winmodem by ESS. Winmodems are, as one might suggest, modems designed for MS Windows. They are very cheap, because a big part of the communication tasks is fullfilled by the driver software instead of the modem itself. But that's exactly what makes writing a driver for these modems so difficult. These circumstances and the fact that ESS doesn't publish the hardware specifications are the reasons why there is no open-source driver for the ESS winmodems.

However, sometime, some guy at ESS had written a Linux-driver for kernel 2.2.x, but he only published the binary module file. Some guys have hacked that file to work also with more recent kernels (see links section). The module works, but it is very experimental and often causes the system to freeze. So be careful while using it and make sure you're using a journalling filesystem to avoid data-loss due to system freezes.

Take the driver ess-modem-1989.tar.gz from here and untar it to some directory. Use fixscript on it to change the kernel version number in the file esscom.o. This will allow you to have the module installed without having to force the insertion (the system will believe that you compiled this module for your current kernel).
./fixscript18 esscom.o essmodem.o
There will be a new file called essmodem.o that is the new, modified module binary. If fixscript complains about unknown symbols or displays error messages containing new="", recompile the kernel with the following option:
Loadable module support --> Set version information on all module symbols

cp essmodem.o /lib/modules/2.4.18/misc/
where 2.4.18 should be replaced with the version number of your current kernel.

Start modconf, choose the essmodem module under misc and insert it into the standard boot configuration.

Create links /dev/ttyS15 --> /dev/essmodem and /dev/modem --> /dev/essmodem (e.g. ln -s /dev/essmodem /dev/ttyS15).

Finally compile networking devices --> ppp_asynch into kernel. The modem is now ready to work.

To avoid system crashes: I had the best results when plugging the phone cable before starting the machine, and only unplugging it after having shut down the machine. Like this, system freezes happen only very rarely. Attention: if the phone rings while the phone cable is plugged into the modem, my system freezes almost certainly.

Configure PPPD:
As super-user, run pppconfig
add connection
modem not identified automatically
as a device-name, choose /dev/ttyS15
Go to "advanced options", select "add user" and enter your standard username. This will allow your standard user to establish ppp connections.

To establish a ppp connection: type pon.
To disconnect: type poff.

In case you want to use an application or applet to establish connections and to monitor the modem traffic, it's useful to know that the lock file of the modem is at /var/lock/LCK..ttyS15 and that the device-name is ppp0.
top

Omnibook Module

There exists a quite nice kernel module that has been designed explicitly for omnibook laptops. It is useful for several things: the screen turns off when the console is blanked by a power saving deamon, the omnibook module can emulate APM support, which allows you to have an applet that displays the battery status, and the onetouch buttons on the keyboard will work. To get this kernel module, download the latest release from http://sourceforge.net/projects/omke and install it easily with
make
make install


One drawback is that on my computer, the module sometimes stops working during a few seconds or up to several minutes. This happens especially while I am using the keyboard. I have no idea why this happens. It does not seem to be a common problem, and the guys from the OMKE project have never replied to my posting in the newsgroup. Note: with the latest version of the module, this problem has disappeared.
top

Onetouch Buttons

Simply install the Debian package hotkeys. Use xev to find the keycode of the extra buttons, and create an own .def file in /usr/share/hotkeys/. You can even use the play, forward, backward buttons on the front of the laptop (the ones for the CD-drive) and configure them to use XMMS.
Click here for an example of a .def file.
Sometimes, a few changes to the file /etc/hotkeys.conf are necessary. Click here for an example.

To start hotkeys in the background, execute hotkeys -b.
top

Power Management

There are two different standards for power management: APM and ACPI. APM does not work unless you have installed the omnibook kernel modules. Some of the ACPI functionalities work, but only a few. However, it's still worth installing ACPI. The main advantage ACPI brought to me was that the machine would turn itself off automatically when shut down and that one could switch from the X-server to the console and still see something.

To activate ACPI support, recompile the kernel with the following options:
General setup --> Power management Y
General setup --> ACPI support Y
General setup --> "all acpi options" Y

Then make sure that the debian package acpid is installed.

The Omnibook module is able to emulate APM battery status monitoring. For using this option, make sure to have
General setup --> Advanced Power Management N
i.e., you need to disable the kernel APM support.
When inserting the omnibook kernel module with modconf, add following command-line arguments:
apmemu=1 user=1

top

Synaptics Touchpad

The built-in Synaptics touchpad works with it's basic functions if you use the standard PS/2 driver of XFree86. But there exists an excellent driver for this touchpad that supports all the buttons, and has some additional options, like scrolling on the right edge of the pad or middle-click if you tap with two fingers, right-click if you tap with three fingers.
Download synaptics-0.11.3.tar.gz from this website. In the beginning, the scroll-buttons between the two touchpad-buttons did not work. The authors of the driver sent me a patch named synaptics.c.firmware-major-check-fix.diff that solved this problem.
Unfortunately, in case you can't get a driver for your version of XFree86, you need to download the source code of your XFree86 version, because you need it to compile the driver. You find the source code (of version 4.1.0) at /debian/pool/main/x/xfree86/xfree86_4.1.0.orig.tar.gz from a debian FTP mirror. The source code is over 50 MBytes large.
Recompile the synaptics_drv module as described in the synaptics-driver INSTALL file. Copy the module synaptics_drv.o into the XFree86-module folder, that is /usr/X11R6/lib/modules/input. Edit /etc/X11/XF86Config-4:
Section Module, add
Load "synaptics"
Section InputDevice:
see the my XF86Config-4 file.
top

3D support for the Intel i830 Grafics Card

There is a nice open-source driver for the intel grafics adaptor. You can find it on intel.com.
For compiling the driver modules, you need the agpgart module to exist on your machine:
Recompile the kernel with the options
character devices --> agpgart support M.
But make sure the agpgart module is NOT loaded (rmmod agpgart, you may have to start your machine in non-graphical mode to do this) when compiling the driver.
Download the file i830-20030120-i386-linux.tar.gz (or a newer version), unpack it and run install.sh. This will compile the driver modules. It will also replace the agpgart module by a different version. If the installation succeeds, use modconf to insert both agpgart and i830. Finally, set Driver in section Device of /etc/X11/XF86Config4 to "i810".

To run 3D-games, you need the opengl-libraries installed. For debian, I installed the package libglu1-mesa and all it's dependencies.
top

Removing the Internal Keyboard

I recently got myself a new keyboard because I broke a key on the old one. One wouldn't believe how sensitive these keys are (I dropped my webcam on it, and it broke). The new keyboard is a US layout keyboard, while the old one was Swiss german. In case you want to change keyboard, here is a description about how to do it:

The keyboard that was inside my laptop was labeled
Model MP-99886CH-698
P/N PK1332N1700
My new keyboard is labeled:
Model MP-99883US-698
P/N PK1332N1000
You can check out the HP Partsurfer and enter the product number of your laptop to see what hardware fits inside it.
top

Links

TuxMobil - The first place to look for information about Linux on mobile computers
MINI-FAQ for the ESS modem driver
Omnibook Kernel Module
CVS2VCard - Conversion Tool for Address Books
support.intel.com - Intel grafics drivers for Linux
HP Partsurfer Site.
Linux-USB Device Overview
top