devel.reinikainen.net
HomeDocumentsCodeBugtrackerSearchreinikainen.netJB Consulting
Home arrow Technical Documents arrow Linux on Laptops arrow Study of HP's nx7400 'business' laptop with focus on Ubuntu Linux
Study of HP's nx7400 'business' laptop with focus on Ubuntu Linux PDF Print
User Rating: / 4
PoorBest 
Written by Jani Reinikainen   
Mar 20, 2007 at 09:37 PM
Revision 0.1.0, 13. January 2007

Table of contents

1. Introduction
1.1. Concepts
1.2. Revision history
1.3. Copyright
1.4. Disclaimer
1.5. Acknowledgments and Thanks
2. Hardware
2.1. Initial state
2.2. Tested hardware upgrades
2.3. Finding out what hardware the laptop contains
3. Software
3.1. Initial state
3.2. Re-installing Windows XP
4. Installing and Configuring Gentoo
4.1. noapic
4.2. Graphics
4.3. TV-out
4.4. Network
4.5. Sound
4.6. WLAN
4.7. ACPI
5. Hardware hacks
5.1. Heat/noise
5.2. Logitech wireless keyboard + mouse
6. Conclusion
6.1. Further Documentation

1. Introduction

1.1. Concepts

This document describes my experiences with HP's Compaq nx7400 'business' laptop a.k.a. notebook computer. I use my laptop as a dual-boot system between Ubuntu Linux and Windows XP Professional, even though I spend about 90% of my time in Linux.

1.2. Revision history

Revision v0.1.0 16. January 2005 By: Jani Reinikainen
Initial revision.


1.3. Copyright

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License".

1.4. Disclaimer

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.

1.5. Acknowledgments and Thanks

Thanks to everyone who gave comments as I was writing this, and especially all of you who have donated. We couldn't be here without your support.

2. Hardware

2.1. Initial state

Originally the laptop contained the following hardware; wide 15,4" WXGA TFT screen, 512MB RAM (one stick, one free slot), 80GB SATA hard drive (in "hard drive manufacturers' bytes"), a combo CD-RW/DVD-RW. The laptop is quite light for the price and not too big either.

2.3. 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:

0000:00:00.0 Host bridge: Intel Corporation Mobile Memory Controller Hub (rev 03)
0000:00:02.0 VGA compatible controller: Intel Corporation Mobile Integrated Graphics Controller (rev 03)
0000:00:02.1 Display controller: Intel Corporation Mobile Integrated Graphics Controller (rev 03)
0000:00:1b.0 0403: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)
0000:00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
0000:00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 01)
0000:00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 01)
0000:00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 01)
0000:00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 01)
0000:00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 01)
0000:00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 01)
0000:00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)
0000:00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1)
0000:00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 01)
0000:00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
0000:00:1f.2 0106: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controllers cc=AHCI (rev 01)
0000:02:06.0 CardBus bridge: Texas Instruments: Unknown device 8039
0000:02:06.1 FireWire (IEEE 1394): Texas Instruments: Unknown device 803a
0000:02:0e.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)
0000:10:00.0 Network controller: Intel Corporation: Unknown device 4222 (rev 02)

3. Software

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.

I proceeded with the install of Xubuntu Edgy Eft (6.10).

4. Installing and Configuring Ubuntu

4.1. Wifi

Does not work out-of-box. You'll need to get the Intel PRO/Wireless 3945ABG Driver for Linux from http://ipw3945.sourceforge.net/. You will need to run the included daemon.

Make sure you remember to compile in support for the appropriate chipers in your kernel:

--- Networking support
 <*>   Generic IEEE 802.11 Networking Stack
 <*>     IEEE 802.11 WEP encryption (802.1x)
 <*>     IEEE 802.11i CCMP support
 <*>     IEEE 802.11i TKIP encryption

Failure to do so will result in odd "ioctl[SIOCSIWENCODEEXT]: Operation not permitted" or "ioctl[SIOCSIWENCODEEXT]: Invalid argument" errors in wpa_supplicant when attempting to connect to encrypted networks. Support for other IPW-based Wifi chipsets in the kernel are not required.

I keep moving my laptop pretty much each day between different wifi-networks, sometimes networks with static IPs, sometimes with DHCP, sometimes with WEP, sometimes with WPA2 and so on. Thus, I wanted to use some sort of mechanism of detecting when to use which settings, preferrably automatically. This is where guessnet and ifplugd come in. This is a bit tricky, because there are daemons flying all over the place.


# apt-get install ifplugd guessnet

Some guides will point you to install waproamd, but it has been obsoleted by wpa_supplicant. Below is my .config for wpa_supplicant:

CONFIG_DRIVER_WEXT=y
CONFIG_CTRL_IFACE=y
CONFIG_WIRELESS_EXTENSION=y

$ make
# cp wpa_supplicant wpa_cli /sbin/

Next, configure wpasupplicant as you normally would. Then, make it auto-start at boot by copying the scipt below to /etc/init.d/wpasupplicant and link it to, for example, /etc/rc2.d/01wpasupplicant. Don't forget to chmod /etc/init.d/wpasupplicant to 755.

#!/bin/sh
# Start/stop the wlan_supplicant daemon.

WPA_BIN=/sbin/wpa_supplicant
WPACLI_BIN=/sbin/wpa_cli

test -f $WPA_BIN || exit 0

#LSBNAMES='-l'  # Uncomment for LSB name support in /etc/cron.d/

. /lib/lsb/init-functions

case "$1" in
start)  log_begin_msg "Starting wpa_supplicant..."
        $WPA_BIN -w -c /etc/wpa_supplicant.conf -Dwext -i eth1 -d > /var/log/wpa_supplicant.log &
        log_end_msg $?
        ;;
stop)   log_begin_msg "Stopping wpa_supplicant..."
        $WPACLI_BIN terminate
        log_end_msg $?
        ;;
restart)
        $0 stop
        $0 start
        ;;
*)      log_success_msg "Usage: /etc/init.d/wpa_supplicant 
start|stop|restart"
        exit 1
        ;;
esac
exit 0

Now, you need to configure your /etc/network/interfaces accoring to the test you wish to run. See the guessnet documentation for more info. Below is a sample file:

mapping eth1
        script guessnet-ifupdown
        map default: foreign
        map timeout: 5
        map verbose: true

auto lo
iface lo inet loopback

noauto eth1

iface home inet static
        address 10.0.0.2
        netmask 255.0.0.0
        gateway 10.0.0.1
        dns-nameservers 10.0.2.8
        test wireless mac 00:00:00:00:00:00 essid mywifi

iface school inet dhcp
        dns-search mydomain.com
        dns-nameservers 123.123.123.123 123.123.123.124
        test wireless mac 00:00:00:00:00:00 essid school

iface foreign inet dhcp

Obviously, change the tests and addresses to reflect your setup. "Foreign" is sort of a catch-all setup I mostly use for public wifi-hotspots. Basically, wpa_supplicant does all the hard work of connecting to an access point, ifplugd monitors wpa_supplicant and informs guessnet when a connection to an access point has been established, and guessnet in turn runs ifup/ifdown accordingly.

4.2. Graphics

Works fine out-of-box with Xorg i810 driver. VGA-out works fine also.

4.3. Modem

Untested.

4.4. Network

Works fine, correct module is 'b44'.

4.5. Sound

Works out-of-box. 'snd_hda_intel' is the correct driver.

4.6. Bluetooth

The built-in Bluetooth chip shows up as an USB device and works fine with Bluez.

4.7. ACPI

ACPI works perfectly. Tested button, lid, video and fan.

6. Conclusion

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


User Comments

Comment by GUEST on 2007-07-18 01:50:00
I have problems with the integrated bluetooth device, the only thing I know is that it is a Broadcom one. 
Could you tell me what kernel module you use for the device? 
antornix -A - --T- gmail -d-o-t- -c-o--m- 
 
Thanks! 
Gracias! 

Security Check. Please enter this code.

Last Updated ( Nov 10, 2007 at 07:38 PM )
Copyright © 2007 Jani Reinikainen. All rights reserved.
Permission granted to replicate information found on these pages, provided that all copyright headers/footers remain intact.