Hardware Specs
Processor Intel Core i3 370M 2.40GHz (3MB L2 cache)
Video Intel GMA HD - 5700MHD with external VGA and HDMI
Memory 2048MB DDR3 RAM 1333MHz
HDD Hitachi Travelstar 7K500 250GB (SATA, 7200rpm)
Optical HP DVDRAM GT30L (DVDRW, DL 24x)
Sound Intel HD Audio (Sigmatel STAC92xx) with int. michrophone
Display 13.3 inch LED TFT 1366x768 max, AntiGlare display
Networking RTL8111/8168B Gigabit ethernet and Ralink RT3090 wireless
Bluetooth Ralink (148f:1000)
Touchpad Synaptics PS/2 Clickpad
USB 3 x 2.0 USB ports
PC Express 1 x PC-Express port /34
CardReader Realtek 5-in-1 (SD/MMC/MS/MS PRO/xD)
WebCam Chicony 2MP, UVC webcam (04f2:b1ac)
Recent Changes
* May 16 native multitouch support in synaptics 1.6.0
* Dec 12 full clickpad LED support, even in synaptics 1.5.0
* Jul 30 kismet works fine, all networks detected
* Jan 19 more information on touchpad bugs
* Jan 13 identified sound chip as STAC92xx
* Jan 11 kismet working without kernel panics
* Jan 08 share the fix for blinking VGA output
* Jan 07 more acurate rfkill info in Wireless section
System Installation
If you're wondering; this laptop works fine with GNU/Linux and you
should have no doubts about buying it or switching to GNU/Linux. Just
make sure to choose a distribution that had a release recently.
lspci
00:00.0 Host bridge: Intel Corporation Core Processor DRAM Controller (rev 02)
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)
00:16.0 Communication controller: Intel Corporation 5 Series/3400 Series Chipset HECI Controller (rev 06)
00:1a.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 05)
00:1b.0 Audio device: Intel Corporation 5 Series/3400 Series Chipset High Definition Audio (rev 05)
00:1c.0 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 1 (rev 05)
00:1c.1 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 2 (rev 05)
00:1c.3 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 4 (rev 05)
00:1c.5 PCI bridge: Intel Corporation 5 Series/3400 Series Chipset PCI Express Root Port 6 (rev 05)
00:1d.0 USB Controller: Intel Corporation 5 Series/3400 Series Chipset USB2 Enhanced Host Controller (rev 05)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev a5)
00:1f.0 ISA bridge: Intel Corporation Mobile 5 Series Chipset LPC Interface Controller (rev 05)
00:1f.2 SATA controller: Intel Corporation 5 Series/3400 Series Chipset 6 port SATA AHCI Controller (rev 05)
00:1f.6 Signal processing controller: Intel Corporation 5 Series/3400 Series Chipset Thermal Subsystem (rev 05)
43:00.0 Network controller: RaLink RT3090 Wireless 802.11n 1T/1R PCIe
44:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
ff:00.0 Host bridge: Intel Corporation Core Processor QuickPath Architecture Generic Non-core Registers (rev 02)
ff:00.1 Host bridge: Intel Corporation Core Processor QuickPath Architecture System Address Decoder (rev 02)
ff:02.0 Host bridge: Intel Corporation Core Processor QPI Link 0 (rev 02)
ff:02.1 Host bridge: Intel Corporation Core Processor QPI Physical 0 (rev 02)
ff:02.2 Host bridge: Intel Corporation Core Processor Reserved (rev 02)
ff:02.3 Host bridge: Intel Corporation Core Processor Reserved (rev 02)
Kernel
At the moment I'm running a 3.3 kernel provided by Arch. It's a
very well configured kernel, very modular, and everything works OK
with it. I have no intention of compiling my own for now, so I don't
provide a kernel config file like some articles do.
Installation
I partitioned the hard drive during installation:
Disk:
/dev/sda
Partitions:
/dev/sda1 - 50MB - ext2 - /boot (* flagged bootable)
/dev/sda2 - 10GB - ext3 - /
/dev/sda3 - 2GB - swap - swap space
/dev/sda4 - extended
/dev/sda5 - 50GB - ext3 - /home
/dev/sda6 - 170GB - ext3 - /mnt/storage
I booted the core CD and walked trough the setup. With Arch Linux you
partition your drive(s), edit crucial config files like
/etc/{rc,resolv,lilo}.conf ..., and install core packages. Once the
system was running I updated the pacman (Arch package manager)
database and installed everything else; X.org, graphic and audio
drivers, libraries, window manager... everything you need on a
workstation.
System Configuration
X11
For the initial setup I run xorgconfig, then edited
xorg.conf
to fine tune it. Graphics did not run fine with the
vesa
driver, so I installed the opensource
intel driver
(xf86-video-intel) right away and that's what I'm using now.
HDMI / External VGA
Both cloned and extended displays are possible with this
chip/driver. Both the VGA and HDMI outputs are working. For a static
configuration you can take a look at my xorg.conf, but
xrandr
is widely used today for dynamic, on the fly setup and
(re)configuration.
This is the third generation Intel graphics chip I own, and the first
one which had some blinking problems with the external monitor. Each
time it was connected, even when I did not use --auto in xrandr it was
resetting the resolution several times, powering off and on the
monitor. I solved this by appending the following to the kernel, in my
lilo configuration: drm_kms_helper.poll=0
Backlight
The backlight controls (and buttons) do work trough the ACPI
video module and
hp_wmi (more about this below), but I
noticed brightness level is reset on next boot. Also the brightness
can not be controlled on the console using the keys. If need be one can
echo a value between 0 and 24 to "
/sys/class/backlight/acpi_video0/brightness"
Framebuffer
Since Linux 2.6.32 the KMS (Kernel Mode Setting) support for Intel
graphics is finally reliable. When using KMS no
vga lines are
required in your bootloader configuration, correct resolution is
auto-detected. However if correct resolution is not detected on your
external monitor you can append the following to your kernel in lilo
or grub configuration: video=VGA-1:1280x800
Synaptics
This device is a so called
ClickPad, and since version 1.6.0
xf86-input-synaptics finally has native multitouch support, without
any of the patches I previously listed here. I do however use a patch
that adds the LED support to the user-space component of the driver.
The user-space patch and a recipe for building from source you can
find
here.
If you want the touchpad LED to actually light up on LEDDoubleTap you
will need to update your
psmouse kernel module until
the functionality finds its way into the kernel. Once again you can
use the Arch Linux repository to see the simple recipe for building
the new driver, there it's packaged
as
synaptics-led.
Once you setup synaptics you also get tapping and scrolling
functionality on the touchpad it self. No special circular or pinch
gestures are working at the moment.
Extra keys
All of the extra keys work perfectly. With latest X.org, no HAL
involved. Correct scancodes and keycodes are assigned to each one. You
should also use the HP WMI hotkeys driver, a part of Linux now. Just
modprobe
hp_wmi.
ACPI
All ACPI modules work fine; battery, button, processor, thermal,
video.
In userspace you can
install
acpitool
or
ACPI
Client which replicate behavior of the old "
apm" command,
thus giving you temperature, battery... and all kind of other
information.
Processor frequency scaling is possible with this CPU (see
the
cpufreq section). Also note that newer Linux kernels no
longer have a fixed 1000Hz timer tick. The result (in theory) is huge
power savings because the CPU stays in low power mode for longer
periods during system idle. For other ways of saving power read
sections below this one, and visit
the
LessWats
project.
Suspend
You can choose between
uswsusp,
tuxonice and direct
kernel suspend/hibernate. Uswsusp is completely software based,
doesn't require any kernel modifications and gives you the possibility
to use quirks and compress (+ encrypt) images during hibernation. I
use it in combination with
pm-utils, which is now the standard
power management framework on every distribution and supports all
three mentioned suspend methods.
Hibernation and suspend (with acpi s3) works fine. It was a joy to
have both working minutes after the install. No broken BIOS surprises
like with Lenovo. I submitted the patch and in future uswsusp releases
it will be supported out of the box. No other quirks or workarounds
are needed.
acpid
To setup acpid take a look in /etc/acpi, I mapped the power key to do
a clean shutdown, Fn+Sleep to suspend, Lid closing to lock the desktop
and AC events start laptop-mode-tools. My handler file
is
here.
laptop-mode
Laptop-mode-tools is a
laptop power saving package for Linux systems (a shell script and a
bunch of config files really). I configured acpid to call it when I
switch to/from battery power. It can enable the Laptop Mode feature of
the kernel, control CPU throttling, HDD power management, remount your
partitions and setup the system do to less frequent writes, enable
power saving for Intel HDA sound cards and Intel's SATA controllers,
stop/start services and programs, remove modules... and a whole lot
more (+ restoring the system to original state when AC is plugged in).
cpufreq
Install
cpufrequtils first, then load the
acpi-cpufreq
module. Run
cpufreq-info next to see what are your options. I
chose not to use the cpufreq daemon or any utility other than
laptop-mode-tools. I configured its cpufreq module to use the
conservative governor (load
cpufreq_conservative module) while
on battery, with max and min frequencies identical to what
cpufreq-info reported as max/min. Otherwise when on AC I decided to
always use the performance governor (default, no modules to load).
APS
This machine comes with the HP 3D DriveGuard, disk protection system
like HDAPS in ThinkPad's. The driver is in the kernel, you can
load
hp_accel. However I found no good userspace tool except
for
SuSE
hp-drive-guard-client
... which unfortunately depends on Policykit and all kind of other
crap. Except for those unreasonable deps it's a nice little utility.
Multimedia
This particular Intel HDA is supported by alsa, fortunately udev will
load the modules (snd_hda_intel...) for you. First you must run
alsamixer to unmute the channels, then store your config
with
alsactl store, that's it. Built in microphone also works,
you should max out your
Capture channels in alsamixer and then
try to record something with a utility like arecord:
$ arecord -f cd -d 3 -t wav -N test.wav
If you have problems with auto-detection of the model, or the results
are not as good as you hoped for (small number of channels, low
sound...) try to specify the model in /etc/modprobe.d/sound.conf:
options snd-hda-intel model=basic
I found that
auto(detection) gives best results in terms of
mixers, support and capture. The sound is reasonably loud. The
microphone beats any that I owned previously.
I noticed that applications which rely on OSS always see PCM channel
as muted and they can't control it. Another issue was with games that
use OSS, like enemy-territory, they had no sound. This was added to
the system init (rc.local):
# OSS emulation mixer fix
# PCM alsa control isn't auto. mapped to OSS equivalent
echo 'PCM "PCM" 0' > /proc/asound/card0/oss_mixer
# Enemy Territory sound fix
echo "et.x86 0 0 direct" > /proc/asound/card0/pcm0p/oss
Webcam
This webcam is supported trough
the
UVC driver, once
installed I tested it with ffmpeg and kopete it was also reported to
work with Skype... you can also check
luvcview which I guess
gives some more control over the picture. Since Linux 2.6.26 UVC is
part of the kernel, module is
uvcvideo.
You can use the following
ffmpeg example for a quick test. I
was impressed, in a dark room it displayed a nice bright video:
$ ffmpeg -f video4linux2 -s 320x240 -r 5 -i /dev/video0 -f m4v out.m4v
Card Reader
The hardware is recognized and supported, but I only had an microSD
card for testing. Be sure that the correct modules are loaded
depending on the card you're inserting (tifm_core, tifm_sd, tifm_7xx1,
mmc_core, sdhci, sdhci_pci...).
Networking
Provided ethernet card works OK with the
r8169 module. This is
my third laptop with the chipset. I can tell you, they are very
reliable.
Wireless
This model came with a Ralink RT3090 which is a real shame. There are
two options. One using the staging, old and broken driver
called
rt2860sta or try your luck with the
opensource
rt2800pci driver. The STA driver couldn't connect to
my WPA2 AES network. With some tweaking the opensource driver did. It
was really the opposite of what I expected. However I had several huge
kernel locks with the opensource driver, you should be
cautious. Monitor mode seems to trigger it most often.
Now about those tweaks. The only way to get your card working is to
make sure to unblock RF-Kill for the device. In Arch Linux a simple
startup service takes care of it, part of the
rfkill
package. You also have to make sure one or the other driver is
blacklisted. Having them both loaded leads to connection
failures.
As for actual connecting, with
rt2800pci, you can take a look
at my connection script. It includes sample wpa_supplicant
configuration as
well. See
rt-connect.sh.
Update: since Linux 2.6.37 starting or stopping kismet (and
thus Monitor mode) has never produced a kernel panic.
I also own an Atheros PC Express card, those chips always had great
support. People at the
MadWifi
project are doing a great job. If you're buying wifi hardware
consider something with an Atheros chip and not these pathetic
products Ralink makes.
My kismet.conf looks like this:
...
ncsource=wlan0:type=mac80211,name=ralink
ncsource=wlan1,type=mac80211,name=atheros
...
# I switch these depending on cards running at the moment
enablesources=ralink
#enablesources=atheros
#enablesources=atheros,ralink
...
Bluetooth
I didn't personally verify this chipset works, others claim it
does. But from previous experience I can tell you that
once
bluetooth, btusb and the rest of the modules are loaded;
You need to install bluez-libs, bluez-utils and optional some GUI
utility, like
kdebluetooth set of tools. There are many guides
available, one that set me going in no time
was
Gentoo's
Bluetooth Guide. For more specific usage like using your mobile
phone as a modem or remote control you can check the docs on
BlueZ.
i2c / lm_sensors / hddtemp / intel_ips
I was surprised that lm_sensors picked up lots of sensors (coretemp
and acpitz-virtual modules). If you install hddtemp you can also get
thermal readings from SMART, it works OK with this HDD model. You can
get those with
smartctl as well, so it's not worth the
trouble.
Also note that I have blacklisted the
intel_ips module. It
caused the machine to freeze 3 times before I even had a chance to
figure out what the hell it does. Well, now I don't care for it.
sysctl
For the record my sysctl.conf looks like this:
#
# Kernel sysctl configuration
#
# Magic-sysrq key
kernel.sysrq=1
# Custom memory settings
vm.swappiness=1
#vm.overcommit_memory=2
vm.vfs_cache_pressure=50
Screenshot
Final Note
I would suggest to use some of these stickers instead of that ugly
sticker that comes shipped with the
laptop:
http://www.openstickers.com/
You can find my contact info on my home
page
http://sysphere.org/~anrxc/,
I would be glad to hear from you with some suggestions or solutions,
or possibly be of some help to you (but please note that I have no
time for Ubuntu users to lazy to read any kind of documentation).
Thank you, anrxc.