Debian GNU/Linux on a HP Compaq nx6320

Opening the box, we find...

Inside the box was a computer, a power adapter and a battery. There was a bunch of other stuff, but none of that applied to me!

I booted from an Etch pre-release CD I had floating around, most things were detected and most things worked in a basic manner. I don't run Etch though, so I was upgrading to the truly bleeding edge fairly rapidly.

Normally I run Debian Unstable, so I upgraded to that immediately and that was all fine, but with Etch being released soon many developers are putting interesting stuff into Experimental, and I wanted X.org 7.2 and Gnome 2.16 which are in there...

Packages you will want to install

To get the 1400x1050 screen resolution you will need to install '915resolution'. This seems to still be the case with the packages of X.org 7.2. I have seen some interesting sounding options in the i810 man page that might be alternative ways, but the hack that 915resolution uses is a much simpler solution since it is already packaged.

To get the wireless working you will need to install 'ipw3945d' and 'ipw3945-modules-2.6.18-4-686' (or some other package of the modules - I installed the source package and used module-assistant to build the modules because I like to build my own kernel).

What is mostly working

A Tour on the PCI Bus

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03) Supported
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) Supported, with 915resolution
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03) Supported, with 915resolution
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01) Supported, using Alsa
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01) Supported
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 01) Supported
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 01) Supported
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 01) Supported
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 01) Supported
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 01) Supported
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 01) Supported
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01) Supported
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1) Supported
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 01) Supported
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01) Supported
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI (rev 01) Supported. Your kernel needs to specify the SATA AHCI, as all recent distro kernels will.
02:06.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller Supported.
02:06.1 FireWire (IEEE 1394): Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller Not tested.
02:06.2 Mass storage controller: Texas Instruments 5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) Update: 2007-02-23 Using the driver from http://developer.berlios.de/projects/tifmxx this is now working with a 2.6.20 kernel.
02:06.3 Generic system peripheral [0805]: Texas Instruments PCIxx12 SDA Standard Compliant SD Host Controller Update: 2007-02-23 Using the driver from http://developer.berlios.de/projects/tifmxx this is now working with a 2.6.20 kernel.
02:06.4 Communication controller: Texas Instruments PCIxx12 GemCore based SmartCard controller What is this?
02:0e.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5788 Gigabit Ethernet (rev 03) Supported with "tg3" driver (standard kernel)
08:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02) Supported with ipw3945 driver (ipw3945.sf.net, but commonly packaged)

Display

Once I installed 915resolution the display just works under X.org 7.1 and X.org 7.2. After a suspend to disk I have to run 915resolution again otherwise X will be shown in 1024x768. I think I could then run xrandr to switch back to 1400x1050 at that point (to be confirmed).

Touchpad

The touchpad has a scrolling area at the right of it, which works as designed, and it also seems to handle a two-finger tap as equivalent to a two-button click (i.e. what would normally be a middle button click). It seems nice, and I will probably get used to it.

PCMCIA

I pulled out my 3G card and plugged it in and it just works.

There is also one of these new fandangled PCMCIA^WCardBus replacement whatsits, but I don't anticipate having anything that actually uses that any time soon.

USB

All USB ports seem to work as expected. I seem to get pretty high speed transfers out of my camera too.

SD * MS/Pro * MMC * SM * XD

This was something that I was hopeful would actually work, since I have a few devices that use SD cards now and it definitely seems to be the format that is taking over from Compact Flash, except for in irrelevant stuff like Sony and Olympus equipment.

Unfortunately, though I compiled all of the MMC kernel stuff into my kernel (as well as the core under "Device Drivers -> MMC in the kernel configuration there are chipset drivers under "Device Drivers -> Misc devices" - go figure ). Those drivers seem to be for a "TI PCI74xx compatible" reader, and mine seems to be a "PCIxx12" something, so perhaps there just isn't a driver Right Now and I just have to wait a few months.

Update: 2007-02-23
Using the driver from http://developer.berlios.de/projects/tifmxx this is now working with a 2.6.20 kernel.

What Ain't Tested

Bluetooth

I can see the bluetooth is there with 'lsusb', and I expect that it will all work just fine, but I don't have anything that does bluetooth, so I can't say for sure.

Modem

I don't have a poorband account anywhere, so I can't test it. It isn't something I expect to ever want to use, but it looks like an AC97 modem so I expect it will work just fine.

TV Out

Since I don't have a television.

Parallel Port

Didn't these things get replaced by network printers and USB printers a bunch of years ago?

Serial Port

Yep. It has one. Weird. I wish that they had put two USB ports there instead - it would have been a much better location for stuff like my wireless mouse to plug into.

Firewire

I must pull one of my firewire HDs out and see if this works...

What Ain't Working

Suspend / Resume

Suspend to ram sometimes works for me, but on most occasions resume has left me with a working system but no keyboard input. Some googling suggests there are ways around this, but I am not sure if it is fully reliable at this stage. I have tried with the 'irqpoll' option included on the kernel boot line, which is purported to help with other laptops, but this (a) doesn't help, and (b) lots of other stuff seems to work badly with it.

Somewhere I read a suggestion to use the 'noapic' boot option, but this won't boot. I have a vague memory that the APIC is actually required for SMP systems.

Suspend to disk works, except that X comes back without the BIOS manipulations that have been done by 915resolution, so it manages to end up in a 1024x768 screen rather than 1400x1050. This can probably be fixed by also running 'xrandr' to set the resolution back after '915resolution' has been run, or by 'chvt 1' prior to suspend, then '915resolution' on resume before 'chvt 7' to bring the X screen back. I will see... Update: 2007-02-23 Suspend to disk works reliably for me now that I "chvt 1" ... suspend to disk ... "/etc/init.d/915resolution start; chvt 7".

If the keyboard is not working after a resume from ram I can plug in a USB keyboard and that does work, but unloading and reloading the atkbd, psmouse and libps2 does not help (as I had hoped it would).

This is really important to me, so I'll keep working on it until I can either workaround the problems, or it gets to be supported by 2.6.21 or so... Hopefully sooner rather than later!

Fingerprint Reader

Well, I honestly wasn't expecting to have much luck with the fingerprint reader, and I haven't. A bit of googling did throw up Michael Crusoe's Bio API implementation which I have been unable to get to build so far, as well as the proprietary driver for the UPEK fingerprint reader, which refuses to install, probably because the Bio API isn't installed...

Looking at the output of 'lsusb' it seems that it may well not be a UPEK device, since I am told "Bus 001 Device 004: ID 08ff:2580 AuthenTec, Inc.". More investigation is clearly required.

That is all more than I expected to be there, to be honest, but unfortunately not enough to get me going. Oh well, I will have to take some heart from the fact that these devices are cute, rather than fully trustable.

If I do eventually get it working, I now know that I need to revisit this setting up the fingerprint reader page, which seems comprehensive.

Overall Impressions

Background

My main complaints with my old laptop (a very large Sony Vaio) were it's utter crap battery life (around 50 minutes when new, dropping to 35 or so now), it's poor performance relative to current dual-core CPU systems, and it's weight. I did love the screen on the Vaio, but it's docking station was becoming unreliable and various "Sony-isms" had never worked. My son was throwing some scissors around one morning and managed to spear a chunk out of the screen which also made it less appealing.

So while I was at LCA this year I took the opportunity to ask Keith Packard what laptop he would recommend. He clearly wants one of the new Panasonic Toughbooks, but they are not in my price range. He did also recommend some HP notebooks however and that is what I have gone for in the end though a slightly different model.

... and so?

I have to say that the "out of box experience" is very good. All of the important stuff "just worked" from what was on a four-month old Etch install CD. The hardware is pretty much Intel all down the line, which is the best way to go for a Linux laptop at present. The only proprietary code seems to be some firmware for the wireless, and that doesn't come with complexly encumbered distribution, so it is easily installed.

The only outstanding problems right now are keyboard failure on resume (the laptop actually works because I have managed to cut and paste commands from other bits and pieces on the screen using the mouse!).

While a few pieces of hardware are untested so far (I don't have any bluetooth devices, for example), the two that don't work are really irrelevant luxuries. The bottom line for me is that I now have 2 CPUs, 2G RAM, 100G HD, Wifi, LAN, a reasonably good screen working well with X, a decent battery life (and it also takes an additional battery, which I will get before I next leave the country).

It is a bit of a shame to not have a higher resolution screen, but it seems that Intel don't produce graphics cards beyond 1400x1050 and I'm seriously sick of the endless fiddling that has seemed to be necessary for me to use the ATI and NVidia drivers.

Overall a "B+".

Updated 2007-03-22

It seems that 915resolution is no longer needed with Xorg 7.3 (as I expected, to be honest). Using a small patch to the latest Xorg -video-intel drivers everything works and I am able to nicely expand my desktop across to another monitor when I resume at work, and contract it back when I am only using the laptop panel. Nice. Worth another blog post, so I'll write that in a minute.

Meanwhile, this bug will be fixed before Xorg 7.3 is released, I am sure, and things will work brilliantly after that!

Yep, not a UPEK fingerprint sensor

UPEK's BioAPI-compliant driver for Linux will only work with their
sensor, which (last I checked) only appears in laptops from Lenovo.

AuthenTec is a different (and bigger) player in the biometric
fingerprint sensor world. Maybe you should write them a letter
inquiring about the availability of a BioAPI 1.1 compliant Linux
driver for their sensors?

Good luck!

--
Michael R. Crusoe

[Re:] Yep, not a UPEK fingerprint sensor

A project seems to have been started in june 2007 to create a driver for the AuthenTec AES2501 : http://home.gna.org/aes2501

Sounds very similar to my

Sounds very similar to my experience with my Dell 9400. Currently I can't suspend/resume from disk because it kernel panics on resume, but previously that has been working fine and I'm prepared to ignore it for now. However the suspend to RAM keyboard failure _has_ been happening to me infrequently (say about half the time), however Ctrl+Alt+Backspace works to crash the X server and re-initialise the keyboard, which confuses me. I think this behaviour has only been happening since 2.6.19 or so...

xorg always opens in 800x600 mode

How did you use the 915resolution to overcome the lcd problem

Using 915resolution to overcome the LCD problem

For my own case, I just did "apt-get install 915resolution" which installed a small init script. This only runs on boot, normally, but I found I had to also run it on resume.

What it ends up doing is:


panelsize=`/usr/sbin/vbetool vbefp panelsize`

Then it runs:

/usr/sbin/915resolution -l

to list the modes that are already available in the BIOS. If the panel size is one of those modes, it exits.

Finally, if the panel size wasn't listed, it runs:

/usr/sbin/915resolution $mode $xres $yres

for all of the modes that are missing.

Really, that last step is all that is needed, and it could just run something like:

/usr/sbin/915resolution 5c 1400 1050 32

and then when X starts it should see the 1400 x 1050, 32bpp mode available and use it.

Cheers,
Andrew.

Copy of your xorg.conf file for Higher Resolution on the 6320

Could I possibly get a copy of how you have your xorg.conf file configured so I can get my video to go above 1024x768? Tnx

It's kind of simple, but yes...

OK, so I have had success with a non-existent xorg.conf, as far as getting a basic 1400x1050 resolution going. I currently have a few reaons for having an xorg.conf:

  • because I have an extra screen when I'm at work, and I want to use xrandr to expand my desktop across it
  • I tweak the configuration for my touchpad
  • I disable capslock and make the 'windows' key an extra meta

It could probably be shorter but anyway, here it is, in all it's glory:


Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "pc104"
        Option          "XkbLayout"     "us"
        Option          "XkbOptions"    "ctrl:nocaps,altwin:meta_win"
EndSection

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "mouse"
        Option          "Emulate3Buttons"       "true"
        Option          "CorePointer"
        Option          "Device"                "/dev/input/mice"
        Option          "Protocol"              "ImPS/2"
EndSection

Section "InputDevice"
        Identifier      "Synaptics Touchpad"
        Driver          "synaptics"
        Option          "SendCoreEvents"        "true"
        Option          "Device"                "/dev/psaux"
        Option          "Protocol"              "auto-dev"
        Option          "SHMConfig"             "true"
        Option          "MinSpeed"              "0.04"
        Option          "MaxSpeed"              "0.75"
        Option          "AccelFactor"           "0.005"
        Option          "VertScrollDelta"       "20"
        Option          "HorizScrollDelta"      "50"
        Option          "HorizEdgeScroll"       "0"
        Option          "VertEdgeScroll"        "0"
        Option          "VertTwoFingerScroll"   "1"
        Option          "HorizTwoFingerScroll"  "1"
        Option          "ScrollButtonRepeat"    "0"
EndSection

Section "Device"
        Identifier      "Intel 945GM Graphics Controller"
        Driver          "intel"
        BusID           "PCI:0:2:0"
        Option          "UseFBDev"              "true"
        Option          "NoAccel"
EndSection

Section "Monitor"
        Identifier      "Configured Monitor"
        Option          "DPMS"
        DisplaySize     304 228
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
        DefaultDepth    24
        SubSection "Display"
                Modes           "1400x1050"
                Virtual         2880 2048
        EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
        InputDevice     "Synaptics Touchpad"
EndSection

This is currently working with xserver-xorg-video-intel 1.4.1~git20080131-1 on xorg 1.4.0 (i.e. current Debian Sid).

Hope that's useful,
Andrew McMillan.

Closing lid crashes laptop

I have installed Debian 4.0 etch on and it freezes when I close the lib. I notice that there are /proc/acpi/button/lid/C238/info , /proc/acpi/button/lid/C238/state and /etc/acpi/lid.sh that is being run when the lid is closed/opened.

Has anyone else had the same problem? I'm thinking that it's a kernel bug?

Roger

Closing the lid

If you have the acpi-support package installed, and you close the lid then a script will be run to attempt to suspend the laptop in some way. If you are using the default Etch install then the kernel will not support some of the nx6320 and I would recommend building yourself a 2.6.20.9 kernel (which is what I have been using most successfully).

Even with that kernel though, the keyboard won't work after resume from ram using the version of s2ram from the 'uswsusp' package in Etch. At present I use the following script to suspend to ram:


#!/bin/bash
#

/etc/init.d/ipw3945d stop

MODULES="ipw3945"

for M in $MODULES ; do
  rmmod $M
done

sync
sleep 1
chvt 1

# Unbind the AT keyboard interface.
if [ -f /sys/bus/platform/drivers/i8042/unbind ]; then
  echo -n "i8042" > /sys/bus/platform/drivers/i8042/unbind
fi

sleep 1

# Assuage paranoia
sync

# Force the s2ram (needed until s2ram recognises this laptop).
s2ram -f

sleep 1

# Reload the modules we got rid of earliler
for M in $MODULES ; do
  modprobe $M
done

# Rebind the AT keyboard interface.
if [ -f /sys/bus/platform/drivers/i8042/bind ]; then
  echo -n "i8042" > /sys/bus/platform/drivers/i8042/bind
fi

# Using Xorg 7.3 (xserver-xorg-video-intel 2.0) it is necessary
# to switch VT a couple of times before things work correctly
chvt 7
chvt 1
chvt 7

# Restart Network Manager, which seems to help it get sorted faster
/etc/dbus-1/event.d/25NetworkManager restart


Linux on the HP nx6320

I have another guide for the nx6320 which you can read here.