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 : 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)|
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).
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.
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.
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.
Using the driver from http://developer.berlios.de/projects/tifmxx this is now working with a 2.6.20 kernel.
What Ain't Tested
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.
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.
Since I don't have a television.
Didn't these things get replaced by network printers and USB printers a bunch of years ago?
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.
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!
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.
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+".
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!