Das HP/Compaq nx5000 wird fast vollständig von Linux unterstützt, einige manuelle Anpassungen sind hierfür jedoch erforderlich. Die nachfolgenden Informationen beziehen auf den Betrieb unter openSUSE 10.2 (und sollten zumindest auch für 10.1 weitgehend Gültigkeit haben) mit der Desktop-Umgebung KDE. Ein Teil der Informationen bezieht sich noch auf ältere Versionen von Suse und ist inzwischen evtl. obsolet. Hierbei geht es um seltener benutze Funktionen. An den entsprechenden Stellen findet sich ein Hinweis. Nicht erwähnte Hardware sollte out-of-the-box gut funktionieren. HP/Compaq hat eine umfangreiche Übersicht zur verbauten Hardware ins Internet gestellt. Siehe zusätzlich auch LinuxHardware/NoteBooks/Compaq/nx5000/lspci. Einen optische Eindruck vom nx5000 gewinnt man am besten in dieser Flash-Präsentation.

Software

In den USA wurde das nx5000 offiziell von HP/Compaq zusammen mit SuSE Linux 9.1 angeboten. In Deutschland muss man Windows XP leider mitkaufen. Das ist u.a. deswegen schade, weil die US-Version die kommerzielle Software LinDVD enthält. Auf der HP-Treiberdownloadseite für das nx5000 gibt es bislang lediglich eine aktualisierte Version des Bios zum downloaden. Dieses neue BIOS sollte unbedingt jeder einspielen, der Wert auf volle Stromsparfunktionen des Prozessors legt. Die alte BIOS Version unterstützte kein Throttling.

Sondertasten

Alle Sondertasten lassen sich unter Linux nutzen, dies setzt jedoch einige manuelle Anpassungen voraus. Zunächst muss man im KDE-Kontrollzentrum unter

 Regionaleinstellungen -> Tastaturlayout

als Tastaturtyp Compaq Internet Keyboard (13keys) auswählen. Dieser Tastaturtyp beinhaltet die meisten, jedoch nicht alle Tasten der NX5000-Tastatur. Es fehlt noch die Unterstützung für die drei Sondertasten neben der Powertaste (Screenlock, WLAN, Präsentation) sowie für fn+f8 (Batterie-Symbol). Außerdem reicht es nicht aus, dass die Sondertasten erkannt werden, man muss ihnen auch noch Funktionen zuweisen.

Einrichtung der noch fehlenden Sondertasten

Damit die drei Sondertasten neben der Powertaste sowie fn+f8 unterstützt werden, muss man ihnen erst Keycodes zuweisen.

Hierzu muss das folgende Bash-Script als root ausgeführt werden:

 #! /bin/bash
 setkeycodes e00a 200
 setkeycodes e057 201
 setkeycodes e008 202
 setkeycodes e009 203

Anmerkung: Diese Befehle kann man durch ein init-Script auch beim Booten ausführen lassen. Die früher hier dokumentierte Methode für Suse 9.1 funktioniert aber nicht länger. Lösungsmöglichkeiten bitte hier ergänzen!

Zusätzlich muss noch das folgende Skript beim Start von KDE ausgeführt werden:

 #! /bin/bash
 xmodmap -e "keycode 168=F21"
 xmodmap -e "keycode 169=F22"
 xmodmap -e "keycode 171=F23"
 xmodmap -e "keycode 172=F24"

Man kann es z.B. unter

 ~/.kde/Autostart

abspeichern.

Nun sollten alle Sondertasten zur Verfügung stehen.

Belegungsvorschläge

Im KDE-Kontrollzentrum kann man unter

 Regionaleinstellungen & Zugangshilfen -> Tastenkombinationen

den Sondertasten die gewünschten Funktionen zuweisen.

Audio

Unter KDE 3.3.2 oder neuer läuft der KDE-Dienst KMilo im Hintergrund, der dafür sorgt, dass die Audiotasten ohne zusätzliche Konfiguration die Lautstärke über das Programm kmix einstellen. Ob KMilo läuft kann man im KDE-Kontrollzentrum unter

 KDE-Komponenten -> Diensteverwaltung -> KDE-Dienste beim Start

nachprüfen. KMilo unterstützt allerdings nicht das rote LED hinter der Mute-Taste. Um das rote LED zu aktivieren gibt es folgenden Workaround:

1. Im Ordner Autostart muss ein Script angelegt werden, welches die Mute-Taste umbenennt, damit KMilo sie nicht weiter automatisch belegt:

#
xmodmap -e "keysym XF86AudioMute = F25"

2. Nach einem Neustart kann man nun dem Mute-Knopf unter 'Tastenkombinationen' (s.o) das folgende Script zuordnen:

MUTE=`dcop kmix Mixer0 masterMute`
if $MUTE -eq "true" ; then
dcop kmix Mixer0 setMasterMute off
dcop kmix Mixer0 setMute 21 off
else
dcop kmix Mixer0 setMasterMute on
dcop kmix Mixer0 setMute 21 on
fi

Screenlock

# Die folgende Zeile sperrt den Bildschirm. Ggf. weglassen.
kdesktop_lock --forcelock
# Die folgende Zeile schaltet den Bildschirm zum Stromsparen aus. Ggf. weglassen.
xset dpms force suspend
sleep 1

fn+f3 (Standby)

Kann mit KPowersave konfiguriert werden.

WLAN-Taste

Wird automatisch belegt. Kann daneben aber zusätzlich auch beliebigen Befehlen zugeordnet werden,

Energiesparfunktionen

Damit Throttling (Stromsparfunktionen des Prozessors) funktioniert, muss ein neues Bios installiert werden,

Suspend to RAM

Suspend to Ram funktioniert mit dem Befehl

s2ram -f -a 2

out of the box. Mit KPowersave funktioniert es erst, nachdem unter

/etc/pm/config

die Zeile

S2RAM_OPTS=""

in

S2RAM_OPTS="-f -a 2"

abgeändert wird.

Festplatte

Wenn man die Festplatte im laptop-mode betreibt, kann man evtl. ebenfalls Strom sparen. Dies setzt jedoch eine umfangreiche manuelle Konfiguration voraus. Näheres steht in der Datei

/usr/src/linux/Documentation/laptop-mode.txt

die Teil des Pakets kernel-source ist.

SD-Card-Reader (Informationen beziehen sich auf openSUSE 10.3)

Als der nx5000 mit Suse 9.1 auf dem Markt kam, war dies die einzige wichtige Komponente ohne Linuxunterstützung. Zumindest mit openSUSE 10.3 funktioniert der Reader jetzt aber out-of-the-box.

Modem (Informationen beziehen sich auf Suse 9.2)

Softmodem. Wird bei der Installation erkannt und sollte funktionieren. Siehe den Kommentar zum Linux JournalTestbericht hierzu. Selber nicht ausprobiert.

IRDA (Informationen beziehen sich auf Suse 9.2 bzw. 10.1)

IRDA funktioniert sowohl im SIR als auch im FIR Modus. Getestet wurde die Funktion mit Palm Vx, Siemens S55 und Polar S720i. Im Regelfall sollte für das Übertragen von Dateien der FIR Modus ausreichen. Einige Clients (z.B. Polar Pulsuhr S720i) kommunizieren allerdings nur über SIR. Um IRDA vollständig zum Funktionieren zu bringen, müssen einige manuelle Eingriffe durchgeführt werden. Ich habe deshalb das Initscript

/etc/init.d/irda

etwas modifiziert, damit der jeweilige Modus reibungslos gestartet und beendet werden kann:

# Copyright (c) 2002 SuSE Linux AG, Nuernberg, Germany.
#
# Author: Christian Zoz <zoz@suse.de>
#
# 27/03/2005: modified by Guenther M. Erhard <guenther dot erhard at gmx dot de>
# to match HP Compaq nx5000 hardware. New options swapmode and swapattach created
# to ease the switching between FIR and SIR or starting and stopping of irattach
# in scripts.
#
# chkconfig: 2345 45 96
#
# /etc/init.d/irda
#
#   and it's symbolic link
#
# /usr/sbin/rcirda
#
### BEGIN INIT INFO
# Provides:        irda
# Required-Start:  $remote_fs $syslog
# X-UnitedLinux-Should-Start: setserial
# Required-Stop:   $remote_fs $syslog
# Default-Start:   3 5
# Default-Stop:    0 1 2 6
# Description:     attaches /dev/ircomm to the IrDA port and starts detection
### END INIT INFO
. /etc/rc.status
. /etc/sysconfig/irda
# Shell functions sourced from /etc/rc.status:
#      rc_check         check and set local and overall rc status
#      rc_status        check and set local and overall rc status
#      rc_status -v     ditto but be verbose in local rc status
#      rc_status -v -r  ditto and clear the local rc status
#      rc_failed        set local and overall rc status to failed
#      rc_reset         clear local rc status (overall remains)
#      rc_exit          exit appropriate to overall rc status
# First reset status of this service
rc_reset
if [ "$2" != "" ] ; then
    IRDA_MODE="$2"
fi
case "$1" in
    start)
        if [ "$IRDA_MODE" = "FIR" ] ; then
            echo -n "Starting service IrDA in FIR mode"
            /bin/setserial /dev/ttyS2 uart none
            /sbin/modprobe smsc-ircc2
        else
            echo -n "Starting service IrDA in SIR mode"
            /bin/setserial /dev/ttyS2 uart 16550A port 0x03e8 irq 3
            /sbin/modprobe actisys-sir
        fi
        /sbin/modprobe ircomm
        /sbin/modprobe ircomm-tty
        /sbin/modprobe irtty-sir
        sleep 2
        /bin/chmod 0666 /dev/ircomm0
        /bin/ln -sf /dev/ircomm0 /dev/pilot
        echo 1 > /proc/sys/net/irda/max_tx_window
        echo 1000 > /proc/sys/net/irda/min_tx_turn_time
        echo 2000 > /proc/sys/net/irda/max_tx_data_size
        # Set the maximum baud rate if requested
        if [ -n "$IRDA_MAX_BAUD_RATE" -a "$IRDA_MAX_BAUD_RATE" -ne "0" ] ; then
            echo $IRDA_MAX_BAUD_RATE >/proc/sys/net/irda/max_baud_rate
        fi
        ## Start daemon with startproc(8). If this fails
        ## the echo return value is set appropriate.
        ## Sometimes irattach should not run to enable communication, e.g. Polar S720i needs this
        if [ "$IRATTACH" = "yes" ] ; then
            if [ "$IRDA_MODE" = "FIR" ] ; then
                startproc /usr/sbin/irattach ${IRDA_PORT_FIR} -s >/dev/null
            else
                startproc /usr/sbin/irattach ${IRDA_PORT_SIR} -d ${DONGLE} -s >/dev/null
            fi
        fi
        # Remember status and be verbose
        rc_status -v
        ;;
    stop)
        ## Stop daemon with killproc(8) and if this fails
        ## set echo the echo return value.
        if [ "$IRDA_MODE" = "FIR" ] ; then
            echo -n "Shutting down service IrDA in FIR mode"
            killproc -TERM /usr/sbin/irattach
            sleep 2
            rmmod irtty-sir sir_dev ircomm_tty ircomm smsc_ircc2 irda > /dev/null
        else
            echo -n "Shutting down service IrDA in SIR mode"
            killproc -TERM /usr/sbin/irattach
            sleep 2
            rmmod irtty-sir ircomm_tty actisys-sir sir_dev ircomm irda > /dev/null
        fi
        # Remember status and be verbose
        rc_status -v
        ;;
    try-restart)
        $0 status >/dev/null && $0 restart
        ;;
    restart|force-reload)
        ## If first returns OK call the second, if first or
        ## second command fails, set echo return value.
        $0 stop
        $0 start
        # Remember status and be quiet
        rc_status
        ;;
    reload)
        ;;
    status)
        echo -n "Checking for service IrDA: "
        ## Check status with checkproc(8), if process is running
        ## checkproc will return with exit status 0.
        checkproc /usr/sbin/irattach
        # Remember status and be verbose
        rc_status -v
        ;;
    swapmode)
        ## To make it easier to switch between SIR and FIR
        ## this script determines the current mode and swaps
        ## to the opposite mode.
        if [ `lsmod | grep actisys | wc -l` -gt 0 ] ; then
            IRDA_MODE=SIR
            IRDA_MODE_NEW=FIR
        else
            IRDA_MODE=FIR
            IRDA_MODE_NEW=SIR
        fi
        $0 stop $IRDA_MODE
        $0 start $IRDA_MODE_NEW
        # Remember status and be quiet
        rc_status
        ;;
    swapattach)
        ## start or stops irattach depending on its current run state
        if [ `ps ax | grep irattach | wc -l` -gt 1 ] ; then
            echo -n "Stopping irattach: "
            killproc -TERM /usr/sbin/irattach
        else
            echo -n "Starting irattach: "
            if [ `lsmod | grep actisys | wc -l` -gt 0 ] ; then
                IRDA_MODE=SIR
            else
                IRDA_MODE=FIR
            fi
            if [ "$IRDA_MODE" = "FIR" ] ; then
                startproc /usr/sbin/irattach ${IRDA_PORT_FIR} -s >/dev/null
            else
                startproc /usr/sbin/irattach ${IRDA_PORT_SIR} -d ${DONGLE} -s >/dev/null
            fi
        fi
        # Remember status and be verbose
        rc_status -v
        ;;
    *)
        echo "Usage: $0 {start|stop|status|[try-]restart|[force-]reload|swapmode|swapattach}"
        exit 1
        ;;
esac
rc_exit

Damit die Kernel-Module sauber geladen werden, sind in

/etc/modprobe.conf.local

noch folgende Einträge erforderlich:

alias irda0 smsc-ircc2
alias tty-ldisc-11 irtty-sir
alias char-major-161 ircomm-tty
alias char-major-10-187 irnet

Die Konfiguration erfolgt wie üblich über die IRDA sysconfig Datei

/etc/sysconfig/irda

mit von mir erweiterten Inhalt :

## Path:        Hardware/IrDA
## Description: Settings for the infraread device
## Type:        string("",/dev/ttyS1)
## Default:     /dev/ttyS1
## ServiceRestart: irda
## 26/03/2005: modified by Guenther M. Erhard to match HP Compaq nx5000 hardware
#
# IrDA is the infrared interface often found on laptops.
# To activate permanently, call "insserv /etc/init.d/irda"
#
# Currently the UART (SIR) mode is supported in the normal configuration. The
# variable IRDA_PORT sets the used serial port. Have a look at your BIOS-Setup,
# to find out which is correct.
#
# If you have a supported FIR chipset, specify the name of the corresponding
# kernel module in IRDA_PORT, e.g. IRDA_PORT="toshoboe". FIR must be enabled in
# the BIOS setup first. Sometimes you additionally have to disable the serial
# port, which would be used in SIR mode via 'setserial /dev/ttyS<x> uart none'
#
# Set the mode you want: FIR or SIR. Beware: stop IRDA service before change!
IRDA_MODE=FIR
# Ports for the different modi
IRDA_PORT_FIR="irda0 ircc_irq=3 ircc_dma=3"
IRDA_PORT_SIR=/dev/ttyS2
# Dongle for SIR mode
DONGLE=actisys+
# Start irattach?: yes or no
IRATTACH=yes
# Start discovery of devices? yes or no
DISCOVERY=no
## Description: Maximum baud rate
## Type:        list(0,9600,19200,38400,57600,115200)
## Default:     0
#
# Sets the maximum baud rate for the IrDA serial port.
# Some devices (e.g. Nokia mobile phones) need this.
# Setting to '0' will leave the setting untouched.
#
IRDA_MAX_BAUD_RATE="115200"

Diese Dateien in das eigene System kopieren bzw. die bestehenden entsprechend modifizieren. Nach Einstellen der gewünschten Parameter und aktivieren von IRDA in YAST sollte der Kommunikation nicht mehr im Wege stehen. Als erster Test kann z.B. der Aufruf (als root) von

irdadump

dienen. Wenn irattach im Hintergrund läuft, dann sollte sich eine ähnliche Ausgabe des gefundenen Clients ergeben:

kolibri:/etc/sysconfig # irdadump
22:30:59.197691 xid:cmd a07de381 > ffffffff S=6 s=4 (14)
22:30:59.287560 xid:cmd a07de381 > ffffffff S=6 s=5 (14)
22:30:59.377549 xid:cmd a07de381 > ffffffff S=6 s=* kolibri hint=0400 [ Computer ] (23)
22:31:01.837178 xid:cmd a07de381 > ffffffff S=6 s=0 (14)
22:31:01.927160 xid:cmd a07de381 > ffffffff S=6 s=1 (14)
22:31:02.012183 xid:rsp a07de381 < 000000cb S=6 s=1 SIEMENS S55 hint=b124 [ PnP Modem Fax IrCOMM IrOBEX ] (28)
22:31:02.017145 xid:cmd a07de381 > ffffffff S=6 s=2 (14)
22:31:02.107133 xid:cmd a07de381 > ffffffff S=6 s=3 (14)
22:31:02.197119 xid:cmd a07de381 > ffffffff S=6 s=4 (14)
22:31:02.287105 xid:cmd a07de381 > ffffffff S=6 s=5 (14)
22:31:02.377092 xid:cmd a07de381 > ffffffff S=6 s=* kolibri hint=0400 [ Computer ] (23)

Weitere Hinweise zur Kommunikation mit Handies: howto.

Bluetooth-Schnittstelle

Selber nicht ausprobiert. Einem Kommentar zum Linux JournalTestbericht zufolge funktioniert es.

Firewire

Selber nicht ausprobiert. Einem Kommentar zum Linux JournalTestbericht zufolge funktioniert es.

Graphik

Unter SuSE wird die Graphikkarte automatisch erkannt. Unter SuSE 9.1 soll es mit nx5000-Versionen mit 1400×1050-Bildschirmen seltene Stabilitätsprobleme gegeben haben. Siehe hierzu den Kommentar zum Bericht im Linux Journal. Ob dies auch derzeit noch gilt, ist mir nicht bekannt.

3D-Beschleunigung

Monitor out, S-Video out und Xinerama

Monitor out funktioniert ohne Probleme. Hiermit ist z.B. der Anschluss an einen Beamer möglich. Eine manuelle Konfiguration ist nicht erforderlich. Umgeschaltet wird mit fn+f4. Einem Kommentar zum Linux JournalTestbericht zufolge funktioniert S-Video out. Bei der Konfiguration ist der Artikel in der ct 17/2004 (teilweise online) möglicherweise hilfreich. Der Anschluss an einem Ferneher funktioniert, kann die Videoeinstellungen von Yast/Sax2durcheinanderbringen. In Folge lässt sich Sax bei mir derzeit nicht starten.

TouchPad

Wird out-of-the-box mit erweiterten Funktionen unterstützt. Mot Konsolenbefehlen ist eine Feinkonfiguration möglich. Siehe hierfür die Manuals für synaptics, synclient und syndaemon. Hier mein Script im Ordner Autostart, mit dem ich das Touchpad konfiguriere:

#
# Sperrt die Maus für 0,2 Sek. nach dem Tippen:
syndaemon -i 0.2 -d
# Verhindert, dass ein Tippen mit einem Finger auf das Touchpad als einfacher Mausklick interpretiert wird:
synclient TapButton1=0
# Verhindert, dass ein Tippen mit zwei Fingern auf das Touchpad als Doppelklick interpretiert wird:
synclient TapButton2=0
# Interpretiert ein Tippen mit drei Fingern auf das Touchpad als Klick auf die mittlere Maustaste (=Einfügen)
synclient TapButton3=2
# Verhindert, dass beim Schreiben die Handfläche die Maus verschiebt:
synclient PalmDetect=1

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

LinuxHardware/NoteBooks/Compaq/nx5000 (zuletzt geändert am 2008-02-06 19:32:58 durch proxy2)