diozaka.org

abc fed ghi lkj mno rqp stu xwv yz.

Visit my Blog!

Linux on HP nx6310

The information given in this paper is outdated and not maintained anymore.

I'm the proud owner of an an HP nx6310 (EY372ET) business laptop and have successfully installed Debian GNU/Linux on it. Here's the way I proceeded.

Summary

  Intel Corporation 82801GBM/GHM (ICH7 Family) SATA Storage Controller AHCI
  Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller
  Intel Corporation Mobile 945GM/GMS/940GML Graphics Controller
  Broadcom Corporation BCM4401-B0 100Base-TX
  Intel Corporation PRO/Wireless 3945ABG
  Intel Corporation 82801G (ICH7 Family) HD Audio Controller
  Synaptics Touchpad
  CPU Frequency Scaling
  Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller
  Texas Instruments PCIxx12 Cardbus Controller
  Bluetooth
  ACPI sleep states (Suspend-to-Disk, Suspend-to-RAM)
  Modem

(green: works; blue: seems to work, but untested; yellow: doesn't work yet)

Output of lspci

00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 01)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI (rev 01)
02:06.0 CardBus bridge: Texas Instruments PCIxx12 Cardbus Controller
02:06.1 FireWire (IEEE 1394): Texas Instruments PCIxx12 OHCI Compliant IEEE 1394 Host Controller
02:0e.0 Ethernet controller: Broadcom Corporation BCM4401-B0 100Base-TX (rev 02)
08:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)

Installation

As my Sarge CD set didn't feel like detecting the internal SATA IDE controller, I downloaded the Debian Etch Beta 3 NetInstall CD and tried a standard installation without any boot parameters. Luckily, the setup procedure now passed perfectly without any incidents.

Kernel

After the setup, I downloaded the Linux 2.6.18 tarball from Kernel.org and configured it like this. The most important options are the following:

Processor type and features --->
   [*] Symmetric multi-processing support
       Subarchitecture Type (PC-compatible)
       Processor family (Pentium M)
   ...
   [*] Multi-core scheduler support
   ...
   [*] Enable kernel irq balancing
   ...

Power management options (ACPI, APM) --->
   [*] Legacy Power Management API
       ACPI Support --->
          [*] ACPI Support
          ...
       APM BIOS support --->

          [ ] APM BIOS support
       ...

Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->
   [*] PCI support
         PCI access mode (Any) --->
   [*]   PCI Express support
       PCCARD (PCMCIA/CardBus) support --->
         [M] PCCard support
         [M] 16-bit PCMCIA support
         ...
         [M] CardBus yenta-compatible bridge support

Networking --->
   ...
   [ ] Generic IEEE 802.11 Networking Stack
       (Note: We build this in a separate step)

Device Drivers --->
   Generic Driver Options --->

      [*] Select only drivers that don't need ...
      [*] Prevent firmware from being built
      [M] Userspace firmware loading support
   ATA/ATAPI/MFM/RLL support --->
      [*] ATA/ATAPI/MFM/RLL support
      [*]   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
      [*]     Include IDE/ATA-2 DISK support
      [*]     Include IDE/ATAPI CDROM support
      [*]     PCI IDE chipset support
      [*]       Sharing PCI IDE interrupts support
      [*]       Generic PCI bus-master DMA support
      [*]         Use PCI DMA by default when available
      ...
      [*]       Intel PIIXn chipsets support
      ...
   SCSI device support --->
      [*] SCSI device support
      [*]   SCSI disk support
      ...
            SCSI low-level drivers --->
              [*] Serial ATA (SATA) support
              [*]   AHCI SATA support
              [*]   Intel PIIX/ICH SATA support
    IEEE 1394 (FireWire) support --->
      [M] IEEE 1394 (FireWire) support
      [M]   OHCI-1394 support
      ...
    Network device support --->
      [*] Network device support
          Ethernet (10 or 100Mbit) --->

            [*] Ethernet (10 or 100Mbit)
            [*] EISA, VLB, PCI and on board controllers
            [M]   Broadcom 4400 ethernet support
          Wireless LAN (non-hamradio) --->
            [*] Wireless LAN drivers & Wireless Extensions
    Input device support --->
      [*] Event interface
      [*] Mouse --->
            [M] PS/2 mouse
    Character devices --->
      ...
      [M] /dev/agpgart (AGP Support)
      [M]   Intel 440LX/BX/GX, I8xx and E7x05 chipset support
      [M] Direct Rendering Manager
      [M]   Intel 830M, 845G, 852GM, 855GM, 865G
      [M]     i915 driver
    Graphics support --->

      [*] Enable firmware EDID
      [*] Support for frame buffer devices
      [*]   Enable Video Mode Handling Helpers
      [*]   Enable Tile Blitting Support
      [*]   VESA VGA graphics support
          Console display driver support --->
            [*] Video mode selection support
            [*] Framebuffer Console support
          Logo configuration --->
            [*] Bootup logo
            [*]   Standard 224-color Linux logo
      [*] Backlight & LCD device support
    Sound --->
      [*] Sound card support
          Advanced Linux Sound Architecture --->
            [M] Advanced Linux Sound Architecture
            ...
                PCI devices --->

                  [M] Intel HD Audio
          Open Sound System --->
            [ ] Open Sound System
    USB support --->
      [*] Support for Host-side USB
      [M]   EHCI HCD (USB 2.0) support
      [M]   UHCI HCD (most Intel and VIA) support
      ...

A thing I couldn't get to work is the Bluetooth adapter, but I heard from other people having success with it, so I'll go on trying. The same applies to the modem.

Bluetooth

UPDATE: Some time ago, I received an e-mail from Hans Marberg, explaining how to set up the Bluetooth adapter (thank you very much!). I tried it, but it didn't work for me: After loading the .inf file with ndiswrapper, it stated that no hardware was present, although I'm really sure it's the correct driver for my chip. As it might work for you, here's the complete message (with some additional formatting).

The file btwusb.inf can be found at the HP website in the driver/software download section for the nx6310. The package is called "Software Support for HP Integrated Module with Bluetooth Wireless Technology" (sic!) and can be extracted with WINE (or 7zip, see the comment section).

From: Hans Marberg <hmarberg@XXXXXXXXX>
Date: Sat, 25 Nov 2006 11:27:36 -0800 (PST)
To: erik@diozaka.org
Subject: bluetooth on nx6310

Hi Eric,

Thanks for your page on the nx6310 which helped me a lot in getting the
computer bought. I must say that I am fully satisfied with it running
Mandriva 2007 on it.

I can tell you a bit on how you can try to set up the bluetooth stuff.
Basically I need it to get connected to the internet using a mobile phone.

To get it up and running you need to do the folowing:

# ndiswrapper -i btwusb.inf

Check with

# ndiswrappwer -l

that you get the line
btwusb          driver installed, hardware present

If you do not see this you might have a different hardware.

If you haven't added ndiswrapper to the kernel use
# modprobe ndiswrapper

Get the packages bluez-utils and bluez-pin

So then startup
# service bluetooth start

Setup your bluetooth device hci0 using the attached hcid.conf (link)

then start the device using the following commands
# hciconfig hci0 down
# hciconfig hci0 up

Thats very important - seams that at startup the driver gets somewhat
stuck (strange /var/log/syslog entries)

Then check with
# hciconfig

You should see some lines with hci0.

Now get some other bluetooth device and use
# hcitool scan

Hope this information is of value for you, so please feel free to add
it to your page.

If you get the modem up and running that would be great. Would need it
from time to time to send some faxes.... as old fashioned communication
will never die....

 Cheers
Hans

CPU Frequency Scaling

UPDATE: Version F.0B of the BIOS finally allows CPU frequency scaling! You can download the firmware update package (if you do not have a Windows partition on your laptop like me, choose the FreeDOS version) at the HP website and run the setup with wine. Now, you can take the bootable CD image from your wine directory (probably ~/.wine/drive_c/) C:\SWSetup\sp34308\ISO\rom.iso and burn it with your favourite burning tool. Alternatively, you can run FirmwareUpdate.exe from the SWSetup/ directory and follow the installation steps. After rebooting with the CD inserted, the updating tool should start up.

After the update, you have to load the modules acpi_cpufreq and cpufreq_userspace (add them to your kernel config, if you haven't done so, yet) and install the cpufrequtils package with aptitude. The following commands should work now:

$ cpufreq-info
cpufrequtils 002: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which need to switch frequency at the same time: 0 1
  hardware limits: 1000 MHz - 1.67 GHz
  available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
  available cpufreq governors: userspace, performance
  current policy: frequency should be within 1000 MHz and 1.67 GHz.
                  The governor "userspace" may decide which speed to use
                  within this range.
  current CPU frequency is 1.67 GHz (asserted by call to hardware).
analyzing CPU 1:
  driver: acpi-cpufreq
  CPUs which need to switch frequency at the same time: 0 1
  hardware limits: 1000 MHz - 1.67 GHz
  available frequency steps: 1.67 GHz, 1.33 GHz, 1000 MHz
  available cpufreq governors: userspace, performance
  current policy: frequency should be within 1000 MHz and 1.67 GHz.
                  The governor "userspace" may decide which speed to use
                  within this range.
  current CPU frequency is 1.67 GHz (asserted by call to hardware)

# cpufreq-set -f 1000000 # minimum speed
# cpufreq-set -f 1333000 # average speed
# cpufreq-set -f 1667000 # maximum speed

WLAN

With Intel's ipw3945 driver, the wireless network adapter runs without any troubles. It's a pity that this driver has not found its way into the official kernel sources, yet, as it requires a binary regulatory daemon (ipw3945d) to make the hardware compliant to local and national policies concerning e.g. channels and transmit power levels. However, the iwlwifi project aims at integrating the work the daemon does into the firmware, so the daemon will not be needed anymore. You can find a download link and the HowTo on their website.

Apart from that, the driver's INSTALL and README files give a really comprehensive description of the installation procedure, so I don't have to. :)

The firmware needed to operate the driver can be found in the Debian non-free repository -- the package is called "firmware-ipw3945".

UPDATE: On 2006-11-12, Jurij Smakov is planning to upload ipw3945d to Debian (probably non-free). He already prepared a package (ipw3945d), which is available here. This package includes an init-script that runs the daemon on every boot-up, if the module is loaded.
It also seems that in the next release of the firmware all the work the daemon does is integrated, so it is not needed anymore. Let's keep our fingers crossed.

UPDATE: Indeed, the daemon is now available in the non-free repository.

X.org

The important parts of my xorg.conf:

...
Section "InputDevice"
        Identifier      "Synaptics Touchpad"
        Driver          "synaptics"
        Option          "SendCoreEvents"        "true"
        Option          "Device"                "/dev/psaux"
        Option          "Protocol"              "auto-dev"
        Option          "SHMConfig"             "1"
EndSection
...
Section "Device"
        Identifier      "Intel i915"
        Driver          "i810"
        BusID           "PCI:0:2:0"
EndSection
...
# Allow DRI for everyone
Section "DRI"
        Mode    0666
EndSection
...

With this configuration, the graphics adapter works with 3d acceleration. Yay! :)

Problems

Due to conflicts between ACPI and the mouse controller, the system has some problems when rebooting from Linux. A work-around is to compile PS/2 support as a module (as shown in the excerpt from my kernel configuration) and unload it before halting or rebooting the machine. You can do so by adding the line

modprobe -r psmouse

to /etc/init.d/halt and /etc/init.d/reboot.

Conclusion

I can definitely recommend this notebook, as most of the hardware devices work with a standard kernel from kernel.org without further tuning. The few devices which do not work yet, seem to be supported anyhow -- I just haven't figured out, how.

This report is listed at TuxMobil - Linux on laptops, notebooks, PDAs, mobile phones and Linux on Laptops.

Copyright (c) 2005-2010 diozaka / Erik Scharwaechter <erik@diozaka.org>