Linux on Compaq Presario 2800t

Revision history

20020803 - inital revision.

20021004 - added usb information. Minor formatting changes. added radeontool information.

20030220 - updaing acpi info and keyboard notes.

Introduction/Impressions

In July of 2002 I decided to look for a replacement for my aging dell inspiron 5000 (since it was going out of warentee. My requirements were simple, but strict: Reasonably fast processor, very high resolution screen (1600x1200 prefered), and as light as possible with those two first restrictions.

The dell inspiron 4100 seemed like a good match, but the price went up after I started looking at it. Then before I could order one they pulled that model and replaced it with the 4150. The 4150 looked ok, but the price went up again and the battery life was terrible.

Looking around more on the net I saw the compaq presario 2800t. Looked like a nice machine. Good power, nice screen, light, good battery life. I decided to order one and try it out.

The laptop came in about a week and a half. Not bad. the listed ship date was about 2 weeks, so they beat their timeline by a few days.

The laptop has a nice look. Grey/silver on the outside, with some black highlights. I got the optional usb based wireless (more below) witch only took a few minutes to install. It fits on the right side of the lid (kinda bulging out). After installing that, I poped a limbo (redhat beta) cd into the drive and booted.

The bios is pretty bare, but doesn't really need to be doing too much. You can enable various devices and change the boot order. After booting from the cd, the install went forward. Video was detected just fine, and the install took about an hour from 3 700mb cds.

Once I figured out the power management and wireless issues, I am pretty happy with the laptop. It's fast, the screen (1600x1200 - 15") is super nice, it's light, the battery life is good.

Video

The video works fine out of the box with XFree86-4.2.0. It uses the radeon driver and sees 1600x1200 just fine. You can also do other resolutions fine (640x480, 800x600, 1024x768, 1280x1024). I did have to use the radeon driver hack from dri_reinit_kludge to get suspend to work right. The 3d DRI doesn't understand suspend/resume by default. The screen is very nice!

I get about 1050 frames per second with glxgears.

Since ACPI depends on the OS to do lots of things, and the XFree86 radeon driver doesn't support dpms yet, I installed at utility from radeontool-1.0 to allow me to turn off the screen. I tied this to the lid button with acpid so it turns off the screen when the lid is closed.

Audio

The audio works fine out of the box. It uses the i810_audio. No problems at all with audio. The speakers on the front seem to produce typical audio for a laptop.

Mouse

The trackpad is detected and works fine as a PS/2 mouse. The 2 mouse buttons work fine with that setting. Not satisfied with that, I looked into the gpm synaptic's touchpad patch at: gpm_synaptics_hack With this patch and X reading mouse data from gpm, everything works and all kinds of features are available. You can do edge control, tapping on the touchpad, and most importantly you can get the 'scroll button' under the touchpad working. By default it maps left to left mouse button, up to middle mouse button, and right to right mouse button. The middle mouse button setting is very nice, since there is no middle mouse button next to the trackpad.

Keyboard

The keyboard has a nice feel to it, seems more clicky than the dell keyboard. I wish the "Fn" and "control" keys were swapped, but after some getting used to I can deal with that ok. The "Fn-F2" to enable/disable the wireless comes in handy (see below). The brightness up and down keys seem to work fine in the bios screen, but don't function once linux is booted. Will have to look into that more. All the "internet" keys generate keycodes, so they should be trivial to map to things in X. NOTE: This laptop is very much the same as the evo 800. I tried to take a evo 800 keyboard , with pointing stick built in and install it. However it requires a diffrent touchpad board in order for it to work. I tried to install one of those, but it won't fit in the 2800. ;(

Wireless (multiport)

The multiport is a port on the top right of the lid where you can put a expansion device. Compaq has a 802.11b and bluetooth modules so far. I got my laptop with the 802.11b. It turns out that it's a USB interface to a prism2 chipset USB wireless. The latest wavelan-ng drivers support this card with some issues. Drivers at: linux-wlan If you power the laptop up, the device is by default powered on. If you then load the wlan modules, the machine will be unable to init the device. If you unload them then or try and power off the device the machine will panic or lock up. If you disable the device and then load the modules, and re-enable the device, everything works and the device loads fine. On software suspend the device reloads fine.

Power Management

The laptop doesn't support APM at all, it uses ACPI, the new power management standard. I first tried patching a 2.4.18 kernel with the latest 2.4.18-acpi patch. This saw the ACPI stuff, but nothing worked. It couldn't detect anything. Checking with the ACPI linux devel list resulted in some very helpfull information. Seems that the ACPI bios compaq has in the laptop is not right, so the ACPI linux drivers don't see it. In order to get it working, first you need to dump the tables from the bios to something we can edit, using: pacpidump once you have a acpi.asl file, edit it and replace all "*PNP" with "PNP" and change "C11C" to "BAT1" and "C11B" to "BAT2" and "C11A" to "ACAD". Once you have that get the iasl util from intel at: iasl-linux-20020725 and run it on the asl file: iasl -tc -bb -i dsdt.asl This will produce a dsdt.hex file. Apply the following kernel diff to your kernel source: 2800-acpi.patch

New info: Here is a step by step for getting 2.4.21-pre4 working with acpi on this laptop or on the evo 800:

unpack 2.4.20

unpack 2.4.21-pre4 patch

cd /usr/src/linux-2.4.20

zcat patch-2.4.21-pre4.gz | patch -p1

From: swsusp

zcat acpi-20030125-2.4.21-pre3.diff.gz | patch -p1

zcat linux-2.4.18-acpi-20020709-dsdt.patch.bz2 | patch -p1

From: http://developer.intel.com/technology/iapc/acpi/downloads.htm

Get the latest iasl package, and run:

pacpidump once you

pacpidump > dsdt.asl

edit the dsdt.asl and replace all * with nothing.

iasl -tc dsdt.asl

This is produced dsdt.hex

mv dsdt.hex /usr/src/linux/drivers/acpi/

apply the custom dsdt patch.

make and install your kernel as normal.

Recompile and reboot and you should have ACPI support. Infromation is available from /proc/acpi/ after loading the acpi modules. One other item I needed to get working was some kind of suspend or hibernate. Since I use my laptop all the time, I need a way to put it in a lower power mode while I move from place to place. ACPI doesn't support any kind of suspend or sleep by itself, that is done in the OS now. So, I looked into software suspend. There is a nice patch for software suspend against an ACPI patched kernel available at: swsusp With that patch installed, software suspend works great. You just 'echo 4 > /proc/acpi/sleep" and it writes your information out to your swap partition and powers down your machine. You need to be carefull to take down the wireless and unload the wireless modules before hibernating. It takes about 15 seconds to suspend, and about 30 all total to come back up.

ACPI seems to provide some nice additional information that apm never did. For example you can find out the current power usage and discharge rate on battery. The following information is available from ACPI: if you are on the ac adapter or not, if 0, 1 or 2 batteries are present, what their capacity is in mAh, lid power and sleep buttons if they are pressed, if any fans are on, CPU throttling, 3 temp readings (case, cpu, video?) and what critical readings are for them.

Builtin ethernet

The built in ethernet works fine out of the box. It uses the intel eepro100 driver.

Builtin Modem

The builtin modem is a Conexant HSF 56k HSFi Modem. This is a winmodem, but there is a linux driver for it at: cnxtlindrv This driver works fine, and sees the modem just fine.

Processor

The processor is a 1.8ghz Intel P4M. It's quite zippy. Seems to handle compiles just great.

USB

The laptop comes with 2 USB 2.0 ports. They work fine as 1.0 with older kernels and with 2.4.19 or beyond work great with USB2.0 as well. With a external USB hard drive I get about 1-2MB/sec with 1.0 USB, and about 12-14MB/sec from USB 2.0. Quite nice.


Kevin Fenzi
Last modified: Thu Feb 20 20:38:56 MDT 2003