The following is a brief description of what you need to do to get a working Debian (AMD 64 port) system on the HP nx6125. This page was written partly to document what I've done so far to set up my HP nx6125, so that I have something to reference should I need to do it again, and partly to help out other users who might find this information useful. I should add that I did not figure out all I describe below myself. I learned most of this from sources on the web and from the Debian newsgroups. (The Debian AMD 64 newsgroup is particularly active and people are keen to help. My thanks to all who helped out with my queries.) Further, I do not claim to be an expert on this machine. It is my first laptop and it has been a steep learning curve, so if there are any innaccuracies in what I've written below, then you can email me at: macerl at telkomsa dot net.
You will probably need to boot with vga=771 if you are
using the Sarge (3.1) Debian installer, otherwise you won't see
anything and the installer will hang. I haven't tried the more recent
beta etch Debian installer, but if I were to do all this again, that
would be my starting point (the old 2.6.8 kernel in Sarge doesn't
enable DMA for your HD, resulting in a slow install -- be forewarned).
You can get a copy of the latest Debian Installer at www.debian.org/devel/debian-installer.
(UPDATE: Anthony Butler sent me a message with his experiences using this approach. You can find it here.)
Bearing in mind the bugs outlined below, you might also wish to boot with the option no_timer_check, but I didn't do this.
At the time of writing (January 2006), there are two kernel bugs that affect the HP nx6125. The first is the annoying double timer interrupt bug (kernel bug #3927), which can be worked around easily. The second is a much more serious ACPI bug (kernel bug #5534), which causes erratic fan behaviour and consequent overheating of the CPU. The cumulative effects of overheating can be shorten the life of your electronics, so be vigilant of your fan usage.
The ACPI bug (#5534) results in erratic (read almost no) processing of thermal events/notifications. These notifications tell the system to turn on/off a fan in response to a thermal trip point being crossed. Unfortunately, for reasons which no-one currently understands, these thermal events are not being processed. However, you can coerce the kernel into processing them by issuing either a
$ cat /proc/acpi/thermal_zone/TZ?/temperature
or an
$ acpi -t
For a more detailed description of this behaviour see the discussion and links at bugzilla.kernel.org (bug #5534).
There is one further thing I'd like to add. The source of the double
timer problem has a further effect which you will notice. Initially,
i.e., without the workaround I describe below, all your thermal trip
points will be set to 16 degrees Celsius. This will make your fans blow
at full speed. If you have acpid installed your CPU
frequency will scale to a glacially slow 800MHz. (So avoid installing
acpid until you do the workaround for #3927 I describe below.)
The workaround for bug #3927 is to use the boot parameter disable_timer_pin_1
if you are using anything as recent as kernel 2.6.14 (and more recent
kernels). If you are using an older kernel then you could try the boot
parameter no_timer_check. I've used both, but I find fewer bootup warnings/errors with disable_timer_pin_1,
which is the option I prefer. When you boot with either of these
parameters your fans should stop blowing as hard and at the same time,
your thermal trip points for TZ1 (and TZ2, TZ3) will be correctly set
to 58 C, 65C, etc. A cat /proc/acpi/thermal_zone/TZ1/trip_points should give you output which looks something like this
critical (S5): 95 C passive: 88 C: tc1=1 tc2=2 tsp=100 devices=0xffff810037fc8dc0 active[0]: 80 C: devices=0xffff810037f93f00 active[1]: 75 C: devices=0xffff810037f93dc0 active[2]: 65 C: devices=0xffff810037f93cc0 active[3]: 58 C: devices=0xffff810037f93bc0
UPDATE: bug #3927 is fixed in kernel 2.6.16-rc5. I have verified that this kernel does not exhibit the double timer problem on the HP nx6125.
UPDATE: bug #5534 is now (May 2006) fixed.There are two patches available. One by Peter Wainwright who single-handedly tracked down the source of this bug to a single threaded kacpid (the DSDT in the HP nx6125 assumes a multi-threaded kacpid). The other patch is by Alexey Starikovskiy, which i am currently using (see comment #112 at http://bugzilla.kernel.org/show_bug.cgi?id=5534).
To get X working with your ATI graphics adapter you need to use the radeon driver and have a section like this in
your /etc/X11/xorg.conf.
Section "Device"
Identifier "Generic Video Card"
Driver "radeon"
Chipset "ATI Radeon Mobility M300 (M22) 5460 (PCIE)"
Option "no_accel" "no"
# Option "MonitorLayout" "LVDS,CRT"
BusID "PCI:1:5:0"
EndSection
The lines coloured red are important if you are using X.org 6.8. X.org
6.8 fails to detect the correct chipset for the ATI X300, so you need to
override this with the chipset line. Also, the next line is
important (thanks to some wiki, which is unfortunately not available anymore).
For those interested, here is my complete /etc/X11/xorg.conf
UPDATE: As of X.org 6.9 you no longer need the lines coloured red in the above xorg.conf stanza. The ATI adapter is correctly recognised and configured in X.org 6.9.
You could also download the proprietary accelerated driver fglrx
from
ATI and install that. I have succeeded in installing version 8.22.5 on kernel
version 2.6.15.1 and X.org 6.9. I followed method 2 listed
here.
The accelerated ATI driver seems to work reasonably well. Most importantly for
me, it drove a second monitor attached to my external VGA port "out of the
box". I could not get this to work using the X.org radeon driver no matter how
much I tweaked. One disadvantage of using fglrx is that the LCD brightness
control keys don't function using the fglrx driver and I could not get fglrx to
work (with 3D acceleration) using kernel 2.6.16-rc3.
Here's the relevant Section for my /etc/X11/xorg.conf.
Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
# Option "SendCoreEvents" "true"
Option "AlwaysCore"
#Option "Device" "/dev/psaux"
Option "Device" "/dev/input/mouse0"
Option "Protocol" "auto-dev"
# added from web gentoo wiki
Option "LeftEdge" "1700"
Option "RightEdge" "5300"
Option "TopEdge" "1700"
Option "BottomEdge" "4200"
Option "FingerLow" "25"
Option "FingerHigh" "30"
Option "MaxTapTime" "0" #"180"
Option "MaxTapMove" "220"
Option "VertScrollDelta" "100"
Option "MinSpeed" "0.09"
Option "MaxSpeed" "0.18"
Option "AccelFactor" "0.0015"
Option "SHMConfig" "on"
EndSection
One additional comment is worthwhile. After upgrading to a 2.6.14 series kernel I needed to explicitly load the evdev module in order for my touchpad to work correctly. To do this just issue an
# modprobe evdev
and to permanently set it that way add evdev to your /etc/modules.
.config, which is a modified Debian 2.6.12 .config, can be found here.
ndiswrapper working with the Broadcom ethernet adapter. You can find them here.
I had no success with ndiswrapper and the 64 bit Broadcom drivers from Acer's site. However, after a tip from the Debian AMD64 newsgroup, I was pointed towards Linuxant's WLAN DriverLoader. I have had much success with DriverLoader, but unfortunately, after the 30 day trial period is up, you will have to pay US$ 20.
You will need to download and install DriverLoader from www.linuxant.com. I downloaded the tarball and installed from source (METHOD C at the link below). Took all of five minutes. You can find detailed instructions on how to install DriverLoader at www.linuxant.com/driverloader/wlan/install.php. You will also need to download/apply for a trial license from Linuxant at www.linuxant.com/store/. (Remember this step. The lack of it caused me much frustration.) Without a trial license you will be able to see your access point, but be unable to connect to it. Finally, you will need the 64bit Win XP drivers from here. I have contacted HP about the availability of 64 bit Win XP drivers for the Broadcom on the HP nx6125 and the message I received was "no plans to develop them yet" (go figure!).
If you only need to connect to open wireless networks and are
content to manually bring the interface up when needed, then you can
simply add a stanza like the following to your /etc/network/interfaces (assuming you're using DHCP to get an IP address)
iface eth1 inet dhcp wireless-mode Managed wireless-essid ANY
which will connect to any available wireless network when you bring the interface up with
# ifup eth1
If you want the interface to be brought up automatically, and would like something a little more sophisticated then read the next subsections.
Issue an
# apt-get install ifplugd
eth1. So to enable your wireless interface for automatic configuration just enter eth1 when asked for devices to monitor. Here is my /etc/default/ifplugd
# This file is sourced by both the init script /etc/init.d/ifplugd and # the hotplug script /etc/hotplug.d/net/ifplugd.hotplug to give default # values. The init script starts ifplugd for all interfaces listed in # INTERFACES, and the hotplug script starts ifplugd for all interfaces # listed in HOTPLUG_INTERFACES. The special value all starts one # ifplugd for all interfaces being present. INTERFACES="eth1" HOTPLUG_INTERFACES="" ARGS="-q -f -u0 -d10 -w -I" SUSPEND_ACTION="stop"
for reference. You could, of course, add eth0 as well, to automatically configure your wired ethernet interface whenever a cable is attached.
Finally, you'll need to add the following line to your /etc/network/interfaces
# wireless network interface (using ifplugd and wpa_supplicant) iface eth1 inet dhcp
Do not put auto eth1 in your /etc/network/interfaces. Ifplugd will take care of bringing up your eth1 interface whenever it detects an access point in your vicinity.
Issue an
# apt-get install wpasupplicant
You must manually configure wpa_supplicant. I have a /etc/wpa_supplicant.conf of the following form
# Minimal /etc/wpa_supplicant.conf to associate with open
# access points. Please see
# /usr/share/doc/wpasupplicant/wpa_supplicant.conf.gz for more complete
# configuration parameters.
ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
eapol_version=1
ap_scan=1
fast_reauth=1
### Associate with any open access point
### Scans/ESSID changes can be done with wpa_cli
network={
ssid=""
key_mgmt=NONE
}
### Home network
network={
ssid="the-name-of-my-home-network"
key_mgmt=WPA-PSK
psk="mycleverpassphrase"
}
The first network={..} block will associate with any
open wireless network. The second is customised to my home network. Add
networks as appropriate. You can give each network a search priority
also (RTFM).
If all went well your wireless ethernet adapter should be configured automatically whenever ifplugd
senses an access point. This auto-configuration will be completely
transparent to you. I use an open network at work and a WPA encrypted
network at home.
To get the new version working I did the following (I'm using Linuxant's
driverloader so I need to use the hostap driver):
/usr/share/doc/wpasupplicant and copied the file
/usr/share/doc/wpasupplicant/examples/wpacli-action-dhclient to
/etc/wpa_supplicant/dhclient/etc/wpa_supplicant.conf to
/etc/wpa_supplicant/wpa_supplicant.conf.localifplugd package./etc/network/interfaces so that my eth2 stanza looked
like:
allow-hotplug eth2
iface eth2 inet manual
wpa-driver hostap
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf.local
wpa-action /etc/wpa_supplicant/dhclient
/etc/wpa_supplicant/wpa_supplicant.conf.local is virtually identical to
the /etc/wpasupplicant.conf shown above.
Nothing to configure; it works out of the box. I installed kino and now I can control my Sony digital video camera and download the DV files directly to my laptop.
When I get a Bluetooth device I'll let you know ;-)