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.
- IRdA My infrared port is working only sometimes. The main problem seems to be the heat of the battery charger. If the laptop has been in use for some time, it's impossible to detect any infrared devices like mobile phones. This problem also occurs under Windows. I decided not to use the infrared port anymore.
- Omnibook Kernel Module Slightly Unstable Sometimes, the battery status monitor will show very weired values during a few minutes, and also the remaining functions of the OmKe module will go crazy. It's only temporary and goes away after a while. I have this problem since I first installed the moduel and it won't go away.
- Screen Backlight Problem Sometimes, the LCD backlight remains off at boot time. It is already off during the BIOS boot messages. I found the following way to bring it on: I wait until my display manager (GDM) has been loaded, then I press Ctrl-Alt-F1 to switch to console mode and magically, the screen backlight is switched on. Then, I go back to GDM with Ctrl-Alt-F7 and I can use my machine normally. This always works.
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 |
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:
- Remove power adapter and battery.
- Close the screen.
- Remove the two tiny screws holding the covers of the screen anchors.
- Open the screen and bend it backwards as far as you can.
- Remove the plastic plate that holds the one-touch- and power-buttons. Don't be afraid to use a screwdriver. It will pop off eventually.
- Open the four screws that hold the keyboard. They will remain attached to the keyboard.
- Remove the keyboard carefully. Don't touch anything else, especially not if the computer is warm.
- Unplug the keyboard connector.
- Take the new keyboard and do the same things in the reverse order.
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