Table of contents
- 1. Introduction
- 2. Hardware
- 3. Software
- 4. Using a 2.4.x kernel
- 5. Using a 2.6.x kernel
- 6. Conclusion
Note: this guide will no longer be updated, as I have sold my N1015v laptop.
This document describes my experiences with Compaq’s Evo N1015v laptop a.k.a. notebook computer. I originally bought it because of it’s, at that time, unbeatable price/quality ratio. All Compaqs are now actually manufactured by HP. I use my laptop as a dual-boot system between Debian Linux and Windows XP Professional, even though I spend about 90% of my time in Linux.
1.2. Revision history
|Revision v0.1.4||23. November 2004||By: Jani Reinikainen|
|Added table of contents and hardware notes.|
Use the information in this document at your own risk. I disavow any potential
liability for the contents of this document. Use of the concepts, examples,
and/or other content of this document is entirely at your own risk.
All copyrights are owned by their owners, unless specifically noted otherwise.
Use of a term in this document should not be regarded as affecting the
validity of any trademark or service mark.
Naming of particular products or brands should not be seen as endorsements.
You are strongly recommended to make a backup of your system before major
installation and should make backups at regular intervals.
2.1. Initial state
Originally the laptop contained the following hardware; 15″ TFT screen, 256MB RAM (one stick), 40GB Fujitsu hard drive (in “hard drive manufacturers’ bytes”, in “real” bytes about 37GB) and a Teac combo CD-RW/DVD-ROM.
2.2. Tested hardware upgrades
My original Fujitsu hard drive has since then broke down, after only about one and a half years of light use. I replaced it temporarily with a 20GB Hitachi Travelstar, which also broke down on me, and only after two months! Not recommended! Looks like Hitachi/IBM still haven’t gotten their drives sorted out. Reminds me of those “click-of-death” IBM Deskstar drives.
I’ve added a 256mb Kingston (product code KTC-P2800/256) stick of RAM, bringing to total memory to 512MB.
I have also updated the optical drive with a NEC ND6500A dual layer DVD+/- burner. NEC’s drive fits inside the laptop fine, but it leaves a small space on all sides at the front panel (see photo), due to the fact that the original Teac drive has a curved front panel. This does not however affect performance in any way.
2.3. Disassembly crash course
Getting the old optical drive out is a bit tricky though, as you have to partially disassemble the laptop, so here’s a crash-course:
- Remove AC power cord and battery.
- Flip the laptop up-side-down and remove the two Torx screws that hold the optical drive in place. They are the ones on each side of the memory expansion bay (see photo). They are also marked with small arrows, at least on my laptop.
- Remove the two Torx screws that hold the silver panel in place (see photo).
- Turn the laptop right side up again and remove the silver panel which surrounds the power, volume control, etc. buttons using a flat-head screwdriver to pry it up (see photo).
- Remove the keyboard by lifting slightly and sliding it gently towards the screen. Don’t pull too hard, as the keyboard is attached to the motherboard using a small cable. You can grab the cable and pull it out.
- You will need to remove the heatsink construction on the left side. Remove the four big Torx screws that hold it in place. Also remove one Torx screw near the fan and one that connects the grounding wire. Remove one more near the touchpad and the heatsink can be removed by lifting slightly and sliding it towards right (see photo).
- You should now see one edge of the optical drive under the cover. Push gently on that edge, and the drive will slide out (see photo).
- Remove the metal guides that are attached to each side of the optical drive and install them on the new drive.
- Slide the new drive inside the laptop and assemble in opposite order; heatsink, keyboard, silver panel, Torx screws at the bottom. You’re done!
You can also use the above guide to change other parts. For example, simply remove the left side metal casing under the keyboard (which is actually a heatsink of sorts) to get to the processor and processor fan.
2.4. Finding out what hardware the laptop contains
Once you get Linux installed and running, it’s trivial to use the ‘lspci‘ utility to find our what hardware the laptop contains, so that you’d know what to compile into your custom kernel. The compilation of a custom kernel is pretty much inevitable if you wish to take full advantage of the Linux system.
On my laptop, the output of ‘lspci‘ is as following:
00:00.0 Host bridge: ATI Technologies Inc: Unknown device cab0 (rev 13) 00:01.0 PCI bridge: ATI Technologies Inc U1/A3 AGP Bridge [IGP 320M] (rev 01) 00:02.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03) 00:07.0 ISA bridge: ALi Corporation M1533 PCI to ISA Bridge [Aladdin IV] 00:08.0 Multimedia audio controller: ALi Corporation M5451 PCI AC-Link Controller Audio Device (rev 02) 00:0a.0 CardBus bridge: Texas Instruments PCI1410 PC card Cardbus Controller (rev 02) 00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 20) 00:0c.0 Communication controller: Conexant HSF 56k HSFi Modem (rev 01) 00:0f.0 USB Controller: ALi Corporation USB 1.1 Controller (rev 03) 00:10.0 IDE interface: ALi Corporation M5229 IDE (rev c4) 00:11.0 Bridge: ALi Corporation M7101 PMU 01:05.0 VGA compatible controller: ATI Technologies Inc Radeon Mobility U1
3.1 Initial state
The laptop comes pre-installed with Windows XP Professional, on a NTFS partition, that it occupies the entire hard drive. This is clearly not desirable for a dual-boot system. Additionally, Linux can only read NTFS without problems, and enabling write support is not recommended at the moment; thus FAT32 would make a more sensible choice, as Linux safely can both read and write to FAT32 partitions.
I asked my retailer if I could get the laptop without the pre-installed Windows, but I couldn’t. Seems like I HAD to buy the bundled Windows, even though I didn’t really want it. Unfortunately, this seems to be the case world-wide. Anyway, I decided to re-install the bundled Windows XP on a small FAT32 partition. so that I could boot into Windows in case I needed to do some testing, and so that I could read and write to the FAT32 partition from Linux.
3.2. Re-installing Windows XP
In the following steps, I will remove Windows, re-partition and re-install Windows on a smaller partition. These steps could probably have been avoided by using some sort of partitioning software, like Partition Magic.
First, I booted using an old Windows 98 SE boot disk I had lying around. I have copied a small DOS program called ‘hardcure’ to the floppy. Hardcure is an utility that wipes the 0-track of the hard drive, thus effectively removing the partition table. Get boot disks at, for example, bootdisk.com.
Next, I used DOS’ fdisk utility (also found on my boot floppy) to create a new 5GB FAT32 partition for Windows.
After that, I put in the Windows XP OEM CD that came with my laptop, rebooted and re-installed Windows on the newly created 5GB FAT32 partition.
Congratulations, the laptop is now ready for Linux.
4. Using a 2.4.x kernel
4.1. Booting the Debian installation using 2.4.x
I put in my Debian GNU/Linux 3.0r2 CD and started the Linux installation. I noticed, that the “bf24” kernel flavor won’t boot. It halts with “Kernel panic”. However, the standard 2.2.x kernel boots fine. I really wanted to boot using the 2.4.x kernel, as it gives you the possibility to use the ext3 file system. And lets face it, 2.2 is staring to be really old.
After some more hacking, I discovered, that if you run “bf24 nomce“, the 2.4 kernel will boot, but once you get to the “Choose The Language” menu, the menu has not fully loaded, and the keyboard will not respond. Your only option is to power off and then power back on. I finally managed to get the Debian with the 2.4 kernel installation on it’s way, by booting using the “bf24 nomce noapic pci=off” boot options. Using “pci=biosirq” seems to work also.
4.2. IRQ woes
When I had Linux running, I sometimes got a cryptic “spurious 8259A interrupt: IRQ7″ (Google for more info) message in the console, usually at boot time. The error is apparently harmless, but annoying. I solved the issue by disabling APIC completely in my kernel configuration. Eventually, I ended up compiling 2.4.22, as it has a bunch of APIC fixes compared to 2.4.20, and does not produce this error, even when APIC is compiled in the kernel. Feel free to download my 2.4.22 .config file.
4.3. Mouse madness
Getting the touchpad to work in XFree is a bit tricky. The approach I chose was, to install and run GPM. Feel free to download my XF86Config-4 configuration file. This configuration file allows the use of the Synaptics touchpad and a USB mouse at the same time(!). I prefer a USB mouse to the touchpad, which is why I always have a USB mouse plugged in when using the laptop at home. However, I seldom carry a USB mouse with me while on the road, hence the configuration.
While you could also use the Synaptics touchpad driver for a 2.4.x kernel, it is not wise, if you wish to use GPM for mouse control in the virtual consoles (the Synaptics driver and GPM will conflict in X). I did, and that’s why I chose this method.
4.4. DMA for the hard drive
You need to set the transfer mode for the primary master to a DMA mode in the laptop’s BIOS in order for this to work. Also, you’ll need to set the following kernel options:
Without the proper chipset (what lspci reports as ’00:07.0 ISA bridge: ALi Corporation M1533 PCI to ISA Bridge [Aladdin IV]‘) driver (ALI15X3), hdparm will simply spit out a ‘HDIO_SET_DMA: Operation not permitted’ error message if you try to do a ‘hdparm -d 1 /dev/hda‘. I also prefer to have the following option, so that DMA is automatically turned on at boot time:
Now I can simply use ‘hdparm -c 1 -k 1 /dev/hda‘ in my startup scripts.
The correct module is ’8139cp’.
The soundcard and internal speakers work flawlessly under OSS. The correct OSS sound module is called ‘trident’.
5. Using a 2.6.x kernel
Now that the 2.6 kernel series has been marked as stable, I tried to compile it. First, I downloaded the kernel sources from from http://www.kernel.org/ and extracted them to /usr/src. I also needed to do a ‘apt-get install module-init-tools‘, as otherwise the new kernel’s modules will not load.
5.1. Using CPUFreq and sysfs
There is one particularly interesting feature in this new kernel, namely ‘cpufreq’, which can be used to lower the CPU’s frequency, thus saving battery power. You will need to activate the following kernel options for cpufreq:
CONFIG_CPU_FREQ=y CONFIG_CPU_FREQ_GOV_POWERSAVE=Y CONFIG_CPU_FREQ_GOV_USERSPACE=y CONFIG_CPU_FREQ_TABLE=y CONFIG_X86_POWERNOW_K7=y
These options can be found under ‘Power management options (ACPI, APM) -> CPU Frequency scaling’ in the kernel configuration. You will also need to enable the new sys-type filesystem if you wish to use cpufreq. This is trivial; first, mkdir /sys. Then, edit your /etc/fstab and add a line such as this:
none /sys sysfs defaults 0 0
After that, issue a ‘mount -a‘ in order to mount the new file system. Finally, ‘apt-get install cpufreqd‘. The daemon will automatically throttle the CPU frequency as needed. You can do a ‘grep MHz /proc/cpuinfo‘ to see at what frequency the processor is currently running on.
5.2. Mouse madness
In order to get the Synaptics touchpad working under 2.6.x, you need to enable the following kernel options:
These settings are found under ‘Device Drivers -> Input device support’ in the kernel configuration. Modules are just fine too, just remember to load them before starting the X server (they’re called ‘evdev’ and ‘psmouse’). After you’ve compiled the kernel, download and compile the Synaptics touchpad driver for XFree86 from http://w1.894.telia.com/~u89404340/touchpad/. You will also need to ‘apt-get install xlibs-dev‘ in order for the compilation to succeed. Copy the generated synaptics_drv.o to /usr/X11R6/lib/modules/input/. Now you’ll have to edit /etc/X11/XF86Config-4 to reflect the changes.
Feel free to take a look at my XF86Config-4. This configuration file allows the use of the Synaptics touchpad and a USB mouse at the same time(!). I prefer a USB mouse to the touchpad, which is why I always have a USB mouse plugged in when using the laptop at home. However, I seldom carry a USB mouse with me while on the road, hence the configuration.
NOTE: I was unable to use the touchpad and a PS/2 mouse at the same time. I am told that this is due to the fact that the laptop lacks a working multiplexer, thus resulting in a conflict between the touchpad and a PS/2 mouse (resulting in plenty of ‘Touchpad lost sync at byte 1′ error messages in the console).
You can still run GPM if you wish to use the touchpad or a USB mouse in the console, there is no conflict when running a 2.6.x kernel.
5.3. DMA for the hard drive
This is done exactly the same way as for a 2.4-series kernel. Please see the previous section.
The correct module is ’8139cp’.
I decided to upgrade from OSS to ALSA, as OSS is deprecated nowadays. The ALI M5451 sound chip has it’s own ALSA driver (CONFIG_SND_ALI5451); it can be found under ‘Device Drivers -> Sound -> Advanced Linux Sound Architecture -> PCI devices’ in the kernel configuration. I also did a ‘apt-get install alsa-utils‘, so that I could easily adjust the volume from the console using ‘alsamixer‘. Note that the master and PCM channels are muted by default!
Note: this is not to be confused with APIC, which we discussed in the previous section regarding Debian’s 2.4.x installation kernel. ACPI is related to power management. There is a good how-to on what ACPI actually is, how to get it working (with focus on Debian!), over at The Linux Documentation Project’s website.
In order to use ACPI with a 2.6.x kernel, you need to enable the following kernel options:
CONFIG_PM=y CONFIG_ACPI=y CONFIG_ACPI_AC=y CONFIG_ACPI_BATTERY=y CONFIG_ACPI_FAN=y CONFIG_ACPI_PROCESSOR=y CONFIG_ACPI_THERMAL=y
These options can be found under ‘Power management options (ACPI, APM)’ in the kernel configuration. Next, do a ‘apt-get install acpid acpi‘ in order to get the proper daemon and client softwares.
5.7. CD-RW/DVD-ROM drive
You can burn CDs without SCSI emulation under a 2.6.x kernel! I’ve used k3b for all my burning needs without any problems. However, I needed to apt-get cdrdao from unstable.
Hope you found the guide useful. A donation wouldn’t hurt (even if it’s only a euro or two – everything helps), as this site is getting so many hits it’s getting a bit expensive. There’s a link to PayPal at the lower left corner of this site. Thanks!
6.1. Further Documentation
- ACPI: Advanced Configuration and Power Interface