TuxMobil - Linux on Laptops, Notebooks, PDAs and Mobile Phones

Linux on a Compaq Presario 905EA

by Vicente Aguilar <bisente@bisente.com>

NOTE:
This page hasn't been update in a LONG time. Any recent distribution should support all the hardware on the Presario 905 out of the box. Nowadays I'm using Ubuntu without problems.
Evenso, if you still need an updated guide on running Linux on a Presario 905, you could try with the Compaq page at TuxMobil.

Introduction

This document describes how to get Linux up and running on a Compaq Presario 905EA, but these instructions should also work with any Presario laptop of the 900 series, maybe even others too (Evo). The guide is a little bit Debian-oriented as that's the distribution I'm using, but I'll try to give as much tips for other distros as I can. With all the information shown here, anyone with a medium knowledge of GNU/Linux systems should be able to get any other Linux distribution working on these laptops. There've been reports of people getting RedHat,Mandrake,SuSE,Gentoo and Morphix (among others) installed on one of these laptops.

I have tried lately a SuSE 8.2 Live-CD on this laptop and it worked like a charm out of the box. If you're a newbie (no pun intended) and don't want/know how to fiddle with the kernel, XFree86 and so on, maybe you should take a look at this distro before trying to follow the instructions on my page.

In case this page hasn't been updated in a couple of weeks, you should take a look at any of the other Linux on a Presario 900 resources, specially the Presario 900 mailing list.

Some info about the hw/sw


  • Technical Specs:
    • AMD Mobile Athlon XP 1800+ (1.53 GHz)
    • 256 Mb RAM
    • 30 Gb HD
    • 15" TTF Display
    • ATI Mobility Radeon U1/IGP320M
    • DVD-ROM/CD-RW combo unit
    • 3 1/2" floppy drive
    • Synaptics TouchPad
    • 56K mini-PC Modem (WinModem)
    • 1 PCMCIA type I, II slot (with 32 bit card support)
    • 2 USB ports
    • 1 IEEE 1394 port
    • 1 infrared port
    • 2 audio ports (headphones + mic)
    • 1 MultiPort
    • 1 PS2 port, 1 parallel (SPP/ECP), 1 VGA and 1 S-VIDEO ports
 

Status

WORKING
NOT WORKING
NOT TESTED
  • Network
  • DVD-ROM/CD-RW
  • Video (2D + XVideo)
  • TouchPad + 4way pad
  • USB
  • PCMCIA
  • SVGA port
  • ACPI
  • Inet/MMedia keys
  • Modem
  • Sound
  • Multiport
  • AMD PowerNow!
  • 3D Accel
  • IEEE-1394
  • InfraRed Port
  • PS/2
  • Parallel
  • S-VIDEO
  • Compaq Wireless W200

Revision history


Basic configuration

    Basic things you'll need to get working in order to be able to do some actual work with the laptop. In most cases, you won't even need to recompile the kernel. If you have to recompile your kernel in order to get something working and you've never done that before, don't panic: it's not half as hard as it seems. Read The Linux Kernel HOWTO and don't be afraid to mess with your kernel anymore.
Works out of the box. It's an RTL8139 C+ based card, fully supported by the standard kernel. It'll be likely compiled into your distro's kernel or available as a module (look for 8139cp or 8139too in Debian). I even did a full network install using one of these netinst CD images.
The drive is a TEAC DW-28E, which also works with the standard kernel without problems. If you want to burn CDs, you'll need to enable SCSI emulation. This will likely mean that you'll need to recompile the kernel... check your distro's docs and the CD-Writing HOWTO.The drive has BURN-Free support, a BURN-Proof-like technology, and it's fully supported by cdrecord. DVD playback also works, I like Ogle.
If you want graphics on the console, use the VESA framebuffer driver included in recent kernels, as the radeon driver doesn't work.
Getting this to work is only important if you really need to use some framebuffer programs or if you plan to use the fbdev driver in XFree86 (see below).
There is a (2D+XVideo only) XFree86 driver for the card by Hui Yu, but only works with XFree86 4.3.x and it is not included (AFAIK) on the "vanilla" X 4.3.0 distribution. Some recent distros seem to have already included it, though (Gentoo, maybe the latests RH and SuSE).

So, if your distro ships with X 4.3 and the radeon driver just works (and you can watch movies decently with mplayer, xine or whatever program you use), you can be happy and forget about this. If it doesn't, you'll have to install the driver yourself. It's available from Ian's page (direct link to the drivers).

If your distro still ships with X 4.2, you'll have to upgrade to 4.3 by compiling it from the sources or looking for some updated packages for your distro, and then install the new driver. Another option is using the VESA driver or the fbdev one (of course, you'll need to get the framebuffer working before using the fbdev driver). They both work and are quite easy to setup, but don't provide any kind of 2D or 3D accel.

Debian still doesn't ship with X 4.3, not even the "unstable" branch (SID), so if you want 2D/Video accel you'll have to update your XFree86 distribution. Fortunately, there are several apt repositories out there with updated packages:

Woody (I haven't tried it):
deb http://ktown.kde.org/~nolden/X11 stable main

Sid:
deb http://penguinppc.org/~daniels/sid/i386/ ./

(There may be other repositories too... YMMV)

They may or may not have the new driver included, so if the driver doesn't work or XVideo doesn't seem to be supported, download and install the driver yourself after upgrading to 4.3.

More info on the graphics card:

The graphics card on this laptop is part of a new, integrated chipset by ATI called U1 or IGP320M. This chipset is a combination of a northbridge with a Radeon 7000-compatible graphics card. You can find more info about this chip at this article at The Inquirer and this other one at Tom's Hardware Guide.
In X-Window it works as a PS/2 device, so just remember to include PS/2 support into the kernel (comes with all distros) and set in XF86Config the PS/2 protocol. This is the easiest way to get the TouchPad working, but it'll work in a very simple mode and the 4-way-pad bellow it won't work at all.

If you want the 4-way pad to work and have extra features on the TouchPad (like scrolling by moving your finger on the right edge of the pad, and 1, 2 or 3 finger tapping acting like left, right or center mouse clicks), you'll have to install a recent gpm version. The version currently distributed with Debian SID (1.19.something) WON'T WORK. You'll have to use at least 1.20.0, while I've done all my tests with 1.20.1rc1 + patches. Here is what you have to do:
Alternativelly, if you don't want to patch/compile gpm yourself, you can download my pre-packaged .deb archives of gpm-1.20.1rc1 with Peter's Synaptics patchs.

You can also try tpconfig (it comes with Debian), an utility for tweaking some options of the TouchPad. I haven't messed with it much, so I'm not sure about what can it do.

Another option, if you don't want to fiddle with gpm, is using this Synaptics Touchpad driver for XFree86. It woks great, but of course, it's a X-only solution. You won't have all the nifty features while you work on the console with gpm.
There are three ways to get the sound working:
  1. Use the kernel drivers (OSS/free). You shouldn't have any problems with a kernel >= 2.4.21-pre4. On kernel versions <= 2.4.21-pre3 there was a bug which hanged the computer after loading the sound drivers.  If for some obscure reason you're stuck with an older kernel, you can fix the bug by appliying this patch by Fedor Karpelevitch.
  2. Use the ALSA drivers. These drivers had a similar bug on versions <= 0.9.0rc5, from rc6 on it's fixed. You shouldn't have problems with the current releases (I'm using 0.9.3c).
  3. Use the OSS/Commercial drivers. They cost $35 ($20 for the base drivers + $15 for this card's driver), but they work like a charm, the installation is very straight-forward and they come with a built-in audio mixer (like esd or arts, but in the driver itself).

I/O ports

Use the OHCI kernel driver. It loads and detects the USB bus, and then the hotplug daemon detects any USB devices upon insertion. I've tried this with two devices:
So, despite the WebCam issue, I think that the USB support works.
exclude port 0x380-0x3ff
The controller for the FireWire port is a Texas Instruments TSB43AB22 1394a-2000 one. The kernel ohci1394 driver loads and seems to detect the hw, but I don't have any 1394 devices so I haven't actually tested it.
I still haven't looked at this. Don't have anything to test it with.
If the external monitor is plugged in while the computer is on, it shows nothing. If it's plugged while the computer is off and then you turn it on, you get a copy of the laptop screen on the external one. Don't know if it's possible to "activate" the external SVGA if plugged while the computer is on.

On windows, you have nothing on the external screen at first if you plug it in while the computer is running, but you can activate it using the extended display settings on ATI's drivers. Then, you can set the external monitor as a exact copy of the laptop's one, or make it work in a "xinerama-like" mode where it acts as an "extension" of the laptop's screen.

Haven't tried to set up Xinerama in Linux.
I still haven't looked at these. I think that the PS/2 and parallel ports should work, though, as they are quite common and supported hw.

Other stuff

The default kernel ACPI driver doesn't seem to work well with this laptop. For ACPI to work, you have to instal the latest ACPI patch from here. After that, al the relevant ACPI information (including the battery status) is available on /proc/acpi/*. The computer can be powered off by software, but suspended mode doesn't seem to work (but of course, you can use software suspend).

You can check the ACPI status (battery charge and all that) with the ACPI command line utility. If you're using Gnome 2, you should take a look at my improved Gnome 2 Battery Applet (a simmilar patch is likely going to be included in Gnome 2.2's batstat applet).

Another interesting program is the acpid daemon. This daemon captures all the ACPI events and lets you set an action to be run for each event. For example, you could lock your screen everytime you close the laptop's lid, or stop any superfluous, CPU-consuming software (whatever@home) when you disconnect the laptop from AC power and start running on batteries.
PowerNow! is the technology in AMD's Mobile K6/Athlons which allows the CPU to run slower under low load conditions, thus saving battery power and reducing the overall system temperature. There's a project working on adding support to the Linux kernel for this kind of technologies called cpufreq. The project was lead by Dominik Brodowski and you could download patches from his page for both the 2.4 and the 2.5 kernel series, but since March Dave Jones has taken on the project and moved all the development into the 2.5.x kernel series. I haven't found a 2.4 backport of cpufreq since then, so we must stuck for now to the latest cpufreq release (cpufreq-2.4.21-pre3-4, which works anyway with newer releases too).

But the PowerNow! driver by itself is useless, as it won't do any cpu throttling automatically. The driver only provides an interface to the user, and it must be the user himself (or a user-land daemon) who controls the CPU speed accordingly to the system load. One of such programs is cpudyn, by Ricardo Galli. It monitors the CPU load every X mseconds and switchs the CPU speed as needed. It also monitors the HD's use and sets them on stand-by mode if they're not used after a period of time. If you're going to use this daemon, you should also apply this patch, as it improves its functionality on an Athlon XP CPU.
The modem is a Conexant HSF 56k HSFi Modem. There is a linux driver for this modem available here. As I'm using Debian, which is not RPM-based, I downloaded the source .tgz package and compiled it. If you're using other distro, check their list of pre-compiled packages.

After some weeks of fighting with the modem's drivers, I've finally been able to make it work. All the problems I was having were due to me forgetting how to configure a dial-in connection, after two years of using an ADSL line. Luckily enough, I found gkdial and it did all the dirty work for me. :)

NOTE: The modem drivers DON'T WORK with a PREEPTIVE kernel. So, if you've installed rml's patches, recompile the kernel without them if you want to use the modem.
Install LinEAK (the version that comes with Debian SID is ok). Copy this lineakkb.def file over the one you'll have in /etc/, launch lineakd and configure your keys with lineakconfig. For more information about installing/configuring/using LinEAK, check its docs.

There are other ways to manage these keys. For example, GNOME 2.2 provides its own multimedia-keys daemon with a nifty graphic interface. KDE may include a similar program, too.
The MultiPort is a special expansion slot in Compaq's laptops. It's located at the back of the screen, i.e., on the top of the lid when you close it. The most useful application for this expansion slot is getting a wireless card, as it won't use the ONLY PCMCIA slot of the laptop and, besides that, it allows a larger antenna and the antenna is more protected (it's inside the laptop's lid). The MultiPort technology itself is derived from USB's, there's more info about it on this Compaq web page.

I've got a Compaq Wireless Lan W200 Multiport card. This card was unsupported until a cople of weeks. There's now a driver by Manuel Estrada Sainz available here. The drivers compile and seem to work, but unfortunatelly I don't have a wireless AP at the moment so I haven't tested if they work (they should).

Anyway, the laptop's MultiPort slot itself seems to work without problems. The multiport slot is just a hacked USB port, and after installing the wireless card and pressing Fn+F2 to turn it on, the hotplug daemon detects a new USB device and all its information is shown in the logs (/var/log/syslog). So the system detects the module as an USB device correctly, and after loading the drivers I can configure the card. So I guess everything works (the port and the card).

Thanks to Al Stone of the debian-laptops list for all the info on the MultiPort technology.
I want to give this patch a try one of these days but still haven't had the time, so I'll mention it here just in case you don't know about it.

The whole idea behind the Software Suspend project is to save a "snapshot" of the running system (memory, processes states, etc) into the swap partition before turning the system down. This way, when it's bought up again, it can recover this "snapshot" and the whole system will be in the same state you left it (say, with an X session, Mozilla browsing some web, and an xterm compiling the kernel).

The patch has been around for a while now and has already been included on the 2.5 development kernel, so I think it can be considered mature enough for use.

Tips and Trics

    Some tips in case you're still having problems getting Linux installed on your system:

On dual booting

    It's possible to set up a dual booting Win/Linux system using lilo, but keep this in mind: The computer comes with WinXP, Norton Internet Security 2002 (personal proxy + AntiVirus), MS Word 2002 and MS Works 2002, but you only get on CD Windows and Norton IS, there are no Word o Works CDs to install them at a later time. There are 4 QuickRestore System Recovery CDs, but they won't let you select which programs to reinstall or the partition size, they just format the whole disk and make a full restore of the original installation.

    So there are two options here if you need to dual boot:
    If you act fastest than you think (like I sometimes do O:) ) and after removing Windows you realize that you've lost Word and Works and want them back, you'll have to do something with the QuickRestore CDs. Here is a guide on making those CDs restore the system into an existing partition, instead of chewing up all the HD. I've followed it and failed, but I think I know the reason: I prepared a NTFS partition for Windows, but the QuickRestore procedure uses FAT for the installation and, at the end of the process, converts it to NTFS. So I think it went mad when it found an unknown partition format and ... well. I had again a 30Gb Windows installation. Luckily, this time I had Partition Magic and a backup of my linux system. ;)

Final customization steps

    Get some Linux stickers to put on top of that "Designed for Microsoft® Windows® XP" one. ;D

Related links

General

Drivers & software

Docs & HOW-TOs

Other "Linux on <some_laptop>" pages I've found useful

Other "Linux on a Presario 9xx" resources