Segfault > IT > Hardware > Notebook HP Probook 470 G0
First published on: 13.Jul.2013

Last change: 30.Jul.2013


Index:


Introduction

I was looking for a "normal" 17 inch notebook on which to run Linux (in my case the Gentoo distribution) - something that could replace my old Sony VPCF1, being more or less similar but without the fan spinning up every time I compiled my funny programs and which didn't become a turbine whenever I did something more serious. And yes, I know that 17' are not trendy anymore, but when working I still find them a lot more comfortable than the 15', especially because of the separate numeric keypad.

At the beginning I thought that finding a good candidate would have been easy.
After reading for a few weeks tests and reviews I started losing my confidence - for most of the notebooks people wrote that the fan was loud and/or that the notebook got hot (which just has to happen if you pack into a notebook an i7 CPU with a medium-end ATI or nVidia GPU) and the ones that did not have this problem had problems booting Linux because of the stupid SafeBoot BIOS. The few ones left had a touchpad that did not have a physical border between the palm rest area and the touch region, or between the touch region and the two buttons or between the two buttons - had once such a notbook and I really hated it.

In the end I opted for this Probook 470 G0 manufactured by Hewlett-Packard.

The 470 G0 is really nothing exciting, but can satisfy most of the requirements that a person can have when not gaming with the notebook (btw. concerning the serious gaming I never understood why somebody should do it using a notebook).
You can read the details in the sections below. All in all I'm quite happy with it.

The level "extraordinary"/"fantastic" for this notebook would have been reached if
1) the distance between the key areas of the keyboard (main keyboard, arrows, numeric keypad, special keys) would have been greater and
2) if the lower-left region of the surface on which you lay your left palm would have been cooler and/or made of metal (because the surface looks like aluminium, but in reality it's just 100% pure good old plastic). 36 degrees celsius is for me below the comfortable region (ambient temperature when this was measured was 31 degrees). On the other side, with a normal ambient temperature (today we have 25 degrees) and not doing anything special (office stuff and surfing the net), the surface temp there stays at around 34 degrees, which is ok.

Many other things could have gone wrong, so don't understand me wrong: this is still a good notebook and I would still buy it again.
Concerning the two problems mentioned above, I found a workaround for the first one (see below) and hope that the second one vanishes once the temperature here in Switzerland goes below 30 degrees celsius :) (it did - see previous comment) . This could actually become a positive point during winter :o)

Special notes:

  • the handling of the battery and the bay which hosts the HDD, RAM and WiFi-Card is just fantastic - whoever engineered was a genius.
  • the OpenSuse Linux distribution supports officially this Linux distribution (as far as I know...).
  • I am using the kernel 3.10.0. From what I saw 3.8.x did not have the driver/module for the WiFi-card.
  • The original HDD (500MBs) is a 7mm, but 9mm HDDs work as well (I'm currently using a 9mm SDD).

CPU

The CPU is a "Intel(R) Core(TM) i5-3230M CPU @ 2.60GHz".
It's really not that bad and whenever I compile code using its 4 hyperthreaded CPU cores (2 real physical cores) I get the same timings I got on my old "Intel(R) Core(TM) i7 CPU Q 740 @ 1.73GHz´╗┐" - perhaps a bit faster.

The CPU supports VT-x, but not VT-d (i7 mobile CPUs would). Who uses VT-d? Nobody, at least not on notebooks (or it's a very small nice - anybody which looks for high performance through VT-d is unlikely to use a notebook to reach such a target).


Backlight

If the hotkeys in your distribution are not recognized then issue the following command to get down the backlight to an acceptable level:
echo 1000 > /sys/class/backlight/intel_backlight/brightness

Unluckily in Gentoo the backlight keys are not recognized and in the OpenSuse liveDVD they are recognized (and you get a nice on-screen overlay) but they don't do anything (works perhaps if you install OpenSuse and get the latest updates, which I did not do in my case).

For Gentoo I wrote the following scripts:

  • screen_decrease_brightness.sh
    #CHANGEME - Settings
    BRIGHTNESSDEVICE="/sys/class/backlight/intel_backlight/brightness"
    DECREASEBY=200

    CURBRIGHTNESS=$(cat $BRIGHTNESSDEVICE)
    NEXTBRIGHTNESS=$(expr $CURBRIGHTNESS - $DECREASEBY)

    echo CURBRIGHTNESS $CURBRIGHTNESS
    echo NEXTBRIGHTNESS $NEXTBRIGHTNESS

    $(echo $NEXTBRIGHTNESS > $BRIGHTNESSDEVICE)
  • screen_increase_brightness.sh
    #CHANGEME - Settings
    BRIGHTNESSDEVICE="/sys/class/backlight/intel_backlight/brightness"
    INCREASEBY=200

    CURBRIGHTNESS=$(cat $BRIGHTNESSDEVICE)
    NEXTBRIGHTNESS=$(expr $CURBRIGHTNESS + $INCREASEBY)

    echo CURBRIGHTNESS $CURBRIGHTNESS
    echo NEXTBRIGHTNESS $NEXTBRIGHTNESS

    $(echo $NEXTBRIGHTNESS > $BRIGHTNESSDEVICE)

See the section "shortcuts" about how to run these scripts whenever you press a specific key or key combination.

I additionally disabled the screen going into powersave mode by executing automatically the following commands whenever I start X:
xset s noblank
xset s off
xset -dpms


Graphics card

Right now I'm using only the embedded Intel HD 4000 GPU ("i915" kernel module) and have the one from AMD disabled in the kernel.
Nothing special - works as usual.
The HD 4000 is more than enough to handle HD video, composite desktop and light 3D-stuff. I anyway use my desktop PC for anything more serious than this.


Framebuffer

If you end up using only the HD 4000 then you won't get any problems - display switches to the native resolution during the boot, as usual.


Touchpad

Activate all the "synaptics" entries in your kernel.
Here is the Xorg-configuration that I'm using for this device:

Section "InputDevice"
       Identifier "Mouse1"
       Driver "synaptics"
              Option "TapButton1" "1"
              Option "TapButton2" "2"
              Option "TapButton3" "3"
              Option "VertEdgeScroll" "on"
              Option "VertTwoFingerScroll" "on"
              Option "HorizEdgeScroll" "on"
              Option "HorizTwoFingerScroll" "on"
              Option "CircularScrolling" "on"
              Option "CircScrollTrigger" "2"
              Option "EmulateTwoFingerMinZ" "40"
              Option "EmulateTwoFingerMinW" "8"
              Option "CoastingSpeed" "0"
        Option "MinSpeed" "0.5"
        Option "MaxSpeed" "2.0"
        Option "AccelFactor" "0.05"
        Option "HorizHysteresis" "20"
        Option "VertHysteresis" "20"
#       Option VertScrollDelta -10
#       Option HorizScrollDelta -10
EndSection

It works very well (it's almost too sensitive => decreased a bit its sensitivity with the settings I posted above) and it supports scrolling in both 2-fingers and touchpad-edge scrolling. Didn't test the other methods.


Keyboard

The keys are technically good - I like their feedback when I type.

The whole keyboard itself basically works, but in Linux/Gentoo most of the special keys are not recognized (when running the OpenSuse liveDVD the brightness keys are recognized but they have no effect on the brightness).
See the section "shortcuts" about how to link "scripts" to key combinations.

As I mentioned the main problem is that the different key regions do not have any extra spacing - knowing if your fingers are positioned above the arrows or above the keypad is not easy without looking.
I solved this problem by sticking some slim rubber on top of my reference keys (in my case the left arrow, the ESC key the "Windows" key (which I use for some key combinations) and the 5-key on the keypad). I know where my fingers are once I feel that rubber.


Shortcuts

To link a key-combination to a specific script identify first the key combination by starting "xbindkeys -k".

Once you have the key spec, write in a file what you want to do with it. In my case it looks like this:

my_xbindkeysrc
=======================
#FOLLOWING KEYS IDENTIFIED WITH "xbindkeys -k"

"/home/scripts/X/menu/show_mainmenu"
Mod2+Mod4 + F1
"/home/scripts/X/menu/show_mainmenu"
Mod2+Mod4 + Escape

"/home/scripts/X/xbindkeys-cmds/alsa_mute_volume.sh"
Mod2 + XF86AudioMute

"/home/scripts/X/xbindkeys-cmds/alsa_decrease_volume.sh"
Mod2+Mod4 + F6

"/home/scripts/X/xbindkeys-cmds/alsa_increase_volume.sh"
Mod2+Mod4 + F7

"sudo /home/scripts/X/xbindkeys-cmds/screen_decrease_brightness.sh"
Mod2+Mod4 + KP_Subtract

"sudo /home/scripts/X/xbindkeys-cmds/screen_increase_brightness.sh"
Mod2+Mod4 + KP_Add
=======================

When you're happy with your config load it with:
xbindkeys -f /home/scripts/X/menu/ste_xbindkeysrc

Put that command somewhere so that it is loaded every time that your X starts (in Gentoo using the Enlightenment window manager then in "/etc/X11/Sessions/enlightenment" or whichever script you're using.


Audio

No problem with the audio itself - works out of the box.
Driver/Kernel module used: "snd_hda_intel".

I am using the following scripts to handle the key combinations (see the section "shortcuts" about how to link these scripts to key combinations):

  • alsa_decrease_volume.sh

    #CHANGEME - Just do some trial and error with numid starting with 1 onwards to find the master control
    NUMID=13


    #Get the full string
    CURVOLFULLSTRING=$(amixer cget numid=$NUMID | head -n 3 | tail -n 1)

    #Delete the heading text
    CURVOLSTRING=$(echo $CURVOLFULLSTRING | sed 's/: values=//g')

    #Generate the next volume we want to have
    NEXTVOL=$(($CURVOL-1))

    CURVOL=$CURVOLSTRING

    NEXTVOL=$(expr $CURVOL - 3)

    echo CURVOLFULLSTRING $CURVOLFULLSTRING
    echo CURVOLSTRING $CURVOLSTRING
    echo CURVOLPOS $CURVOLPOS
    echo CURVOL $CURVOL
    echo NEXTVOL $NEXTVOL

    #Set the new volume
    amixer cset numid=$NUMID $NEXTVOL > /dev/null
  • alsa_increase_volume.sh

    #CHANGEME - Just do some trial and error with numid starting with 1 onwards to find the master control
    NUMID=13


    #Get the full string
    CURVOLFULLSTRING=$(amixer cget numid=$NUMID | head -n 3 | tail -n 1)

    #Delete the heading text
    CURVOLSTRING=$(echo $CURVOLFULLSTRING | sed 's/: values=//g')

    #Generate the next volume we want to have
    NEXTVOL=$(($CURVOL-1))


    CURVOL=$CURVOLSTRING

    NEXTVOL=$(expr $CURVOL + 3)

    echo CURVOLFULLSTRING $CURVOLFULLSTRING
    echo CURVOLSTRING $CURVOLSTRING
    echo CURVOLPOS $CURVOLPOS
    echo CURVOL $CURVOL
    echo NEXTVOL $NEXTVOL

    #Set the new volume
    amixer cset numid=$NUMID $NEXTVOL > /dev/null

Lan

No problem - works out of the box.
Driver/Kernel module used: "r8169"


Wireless

No problem - works out of the box and is stable (Linux kernel 3.10.0 - module "rt2800pci").
To make the module work you might have to download its firmware, which you do with the following commands:
git clone git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git
cp -iv linux-firmware/rt3290.bin /lib/firmware/

If you use a new distribution and end up having the new device names like e.g. "jkdf0p" and you wish to have the old names back ("eth0") then add the following parameter to your kernel: "net.ifnames=0"


Webcam

Not tested.


Cardreader

Not tested.


Battery

The runtime with the battery initially charged at 97%, brightness set to 75%, monitor always switched on (sleep and blanking disabled) and battery-saving settings were:

  • ATI GPU enabled (battery-saving mode set in "amdcccle"): 3:10 hours
  • Only Intel GPU enabled (set in BIOS - ATI does not show up anymore with "lspci"): 4:10 hours
  • Only Intel GPU enabled (using additionally the kernel settings "i915.i915_enable_rc6=1 i915.lvds_downclock=1"): 4:20 hours

Here are the battery-saving settings I used for the above tests (doublecheck with "powertop" if anything is missing):

echo 1500 > /proc/sys/vm/dirty_writeback_centisecs

#Set the SDD to sleep already after 20 seconds.
hdparm -S 4 /dev/sda

echo 5 > /proc/sys/vm/laptop_mode

iwconfig wlan0 power on

#SATA link power Management
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
echo min_power > /sys/class/scsi_host/host1/link_power_management_policy
echo min_power > /sys/class/scsi_host/host2/link_power_management_policy
echo min_power > /sys/class/scsi_host/host3/link_power_management_policy
echo min_power > /sys/class/scsi_host/host4/link_power_management_policy
echo min_power > /sys/class/scsi_host/host5/link_power_management_policy

#Runtime PM for PCI Devices
echo auto | tee /sys/bus/pci/devices/*/power/control >/dev/null


Fan & fan noise

Unluckily the fan runs all the time. On the other side it's nothing like the fan I have on my other notebooks - its RPM almost does not change and when it does it does it smoothly. I could hear it only when I had no other background noise and all it does is a soft "wooosssh".

RPMs are not yet recognized by lm_sensors (only the CPU temp is recognized).


My xorg.conf

(dirty - pls. ignore comments and old values)

Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse1" "CorePointer"
#       InputDevice  "TouchPad" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Section "ServerFlags"
        Option "BlankTime" "20"
        Option  "AutoAddDevices"        "false"
EndSection

Section "Module"
        Load  "dbe"
#       Load  "dri"
#       Disable "dri"
#       Disable "dri2"
        Load  "extmod"
        Load  "glx"
        Load  "record"
#       Load  "xtrap"
        Load  "freetype"
        Load  "type1"
#        Load  "synaptics"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
#       Option  "XkbLayout" "de_CH"
        Option  "XkbLayout" "ch"
        Option  "XkbVariant" "de"
        Option  "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

Section "InputDevice"
        Identifier "Mouse0"
        Driver  "mouse"
        Option  "Protocol"      "IMPS/2"
        Option  "Device"        "/dev/input/mouse0" #Touchpad
        Option  "Buttons"       "5"
        Option  "ZAxisMapping" "4 5 6 7"
EndSection

Section "InputDevice"
       Identifier "Mouse1"
       Driver "synaptics"
#       Option "Protocol"       "IMPS/2"
#       Option  "Device"        "/dev/input/mouse0" #Touchpad
#       MatchIsTouchpad "on"
              Option "TapButton1" "1"
              Option "TapButton2" "2"
              Option "TapButton3" "3"
              Option "VertEdgeScroll" "on"
              Option "VertTwoFingerScroll" "on"
              Option "HorizEdgeScroll" "on"
              Option "HorizTwoFingerScroll" "on"
              Option "CircularScrolling" "on"
              Option "CircScrollTrigger" "2"
              Option "EmulateTwoFingerMinZ" "40"
              Option "EmulateTwoFingerMinW" "8"
              Option "CoastingSpeed" "0"

#       Option "MinSpeed" "2.5"
        Option "MinSpeed" "0.5"
#       Option "MaxSpeed" "1.75"
        Option "MaxSpeed" "2.0"
        Option "AccelFactor" "0.05"

#Mouse sensitivity when just repositioning slightly the finger?
#       Option "HorizHysteresis" "8"
        Option "HorizHysteresis" "20"
#       Option "VertHysteresis" "8"
        Option "VertHysteresis" "20"

#       Option VertScrollDelta -10
#       Option HorizScrollDelta -10
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
EndSection

Section "Device"
        Identifier "Card0"
        Driver  "intel"
        VendorName  "Intel Corporation"
        BoardName   "Unknown Board"
        BusID       "PCI:0:2:0"
EndSection

Section "Extensions"
        Option      "Composite"   "enable"
#        Option      "Composite"   "disable"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth 24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes   "1600x900"
        EndSubSection
EndSection


My lspci -k

00:00.0 Host bridge: Intel Corporation 3rd Gen Core processor DRAM Controller (rev 09)
        Subsystem: Hewlett-Packard Company Device 1948
00:02.0 VGA compatible controller: Intel Corporation 3rd Gen Core processor Graphics Controller (rev 09)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: i915
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: xhci_hcd
00:16.0 Communication controller: Intel Corporation 7 Series/C210 Series Chipset Family MEI Controller #1 (rev 04)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: mei_me
        Kernel modules: mei_me
00:1a.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 (rev 04)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: ehci-pci
00:1b.0 Audio device: Intel Corporation 7 Series/C210 Series Chipset Family High Definition Audio Controller (rev 04)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: snd_hda_intel
        Kernel modules: snd_hda_intel
00:1c.0 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 1 (rev c4)
        Kernel driver in use: pcieport
00:1c.2 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 3 (rev c4)
        Kernel driver in use: pcieport
00:1c.3 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 4 (rev c4)
        Kernel driver in use: pcieport
00:1c.5 PCI bridge: Intel Corporation 7 Series/C210 Series Chipset Family PCI Express Root Port 6 (rev c4)
        Kernel driver in use: pcieport
00:1d.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 (rev 04)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: ehci-pci
00:1f.0 ISA bridge: Intel Corporation HM76 Express Chipset LPC Controller (rev 04)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: lpc_ich
        Kernel modules: lpc_ich
00:1f.2 SATA controller: Intel Corporation 7 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
        Subsystem: Hewlett-Packard Company Device 1948
        Kernel driver in use: ahci
02:00.0 Unassigned class [ff00]: Realtek Semiconductor Co., Ltd. RTS5229 PCI Express Card Reader (rev 01)
        Subsystem: Device 003c:0048
03:00.0 Network controller: Ralink corp. RT3290 Wireless 802.11n 1T/1R PCIe
        Subsystem: Hewlett-Packard Company Device 18ec
        Kernel driver in use: rt2800pci
        Kernel modules: rt2800pci
03:00.1 Bluetooth: Ralink corp. RT3290 Bluetooth
        Subsystem: Hewlett-Packard Company Device 18ec
04:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168 PCI Express Gigabit Ethernet controller (rev 0c)
        Subsystem: Hewlett-Packard Company Device 194b
        Kernel driver in use: r8169
        Kernel modules: r8169