Introduction
This manual is intended to help user to configure Gentoo distribution of the GNU/Linux operating system for Lenovo ThinkPad X200 notebook. It's supposed that user is skilled enough to install bare system from stage, compile kernel from source code, apply patches, etc.
Besides X200 users, this manual may also be useful for users of ThinkPads based on the same Centrino platform: R400, T400, X200s, X301.
This article and all information and products in it are provided on an "as is" basis, without warranty of any kind, either express or implied. Your use of this article is at your own risk.
Content
- Hardware info
- Linux support summary
- Kernel
- Video
- Sound
- Networking
- ACPI
- Hot keys
- Suspending
- HDAPS
- TrackPoint
- Fingerprint reader
- Web camera
- Media cards reader
- ThinkLight
- Benchmarks
- References
- History of changes
Hardware info
Type | Name | Technical info |
---|---|---|
CPU | Intel Core2 Duo | CPU clock: 2,4 Ghz; Bus clock: 1066Mhz; |
P8600 (Penryn) | Power: 25W; Features: SSE4.1, EM64T, IVT | |
L2 cache: 3MB; [1] | ||
North bridge | Intel GM45 | [2] |
RAM | Lenovo 43R1988 | Size: 4GB; Type: DDR3; Bus clock: 533 Mhz |
Module name: PC3-8500; [3] | ||
South bridge | Intel ICH9-M | [4] |
Video | Intel GMA | Clock speed: 533Mhz; Vertex shader: 4.0; |
4500MHD | Pixel shader: 4.0; OpenGL support: 2.1; | |
(Cantiga) | Decoding acceleration: VC-1, AVC; | |
Device id: 8086:2a42; | ||
[5], [6] | ||
Storage | Samsung | Capacity: 128GB; R/W speed: 90/70 MB/s; |
device | MMCQE28G8MUP | Size: 1.8in; [7] |
Audio | Conexant CX20561 | Device id: 8086:293e |
(Hermosa) | ||
Ethernet | Intel 82567LM | Speed: 10/100/1000 MB/s; |
Device id: 8086:10f5; [4] | ||
WiFi | Intel 5100 | Protocols: 802.11b/g/n; |
Security: WEP, WPA, WPA2; | ||
Device id: 8086:1311; [8] | ||
Atheros AR5BHB63 | Protocols: 802.11b/g; | |
Security: WEP, WPA, WPA2; | ||
Device id: 168c:001c; [9] | ||
BlueTooth | Broadcom BCM2046 | Device id: 0a5c:2145; [11] |
WAN | Ericsson F3507g | Modes: HSPA/WCDMA/EDGE/GPRS; |
GPS:stand alone and assisted; | ||
Device id: 0bdb:1900; [10] | ||
Card reader | ? | Supported formats: MMC, SD, SDHC; |
Fingerprint | AuthenTec | On-sensor fingerprint matching; |
AES2810 | Device id: 08ff:2810; [12] | |
Web camera | Lenovo | Device id: 17ef:480c |
Manufacturer: Chicony | ||
Accelerometer | Analog Devices | Dual-axis; [13] |
ADXL320 |
Logs: scanpci -v lsusb -v cat /proc/cpuinfo smartctl -a /dev/sda
Linux support summary
Feature | Status | |
---|---|---|
UltraBase | AC adapter | Works perfectly |
Battery charger | Works perfectly | |
USB ports | Works perfectly | |
Video out VGA | Works perfectly | |
DisplayPort | Works perfectly | |
Speakers | Works perfectly | |
Audio out jack | Works perfectly | |
Audio mic jack | Works perfectly | |
Disk drive | Works perfectly | |
Eject handle | Works perfectly | |
Power button | Works perfectly | |
ACPI | UltraBase insert/eject | Works perfectly |
Hot keys | Works perfectly | |
Brightness control | Works perfectly | |
Battery | Works perfectly | |
Fan | Works perfectly | |
Power management | Suspend to RAM | Works perfectly |
Suspend to disk | Works perfectly | |
CPU frequency scaling | Works perfectly | |
Video | 2D graphics | Works perfectly |
3D acceleration | Minor issues | |
Video decoding acceleration | Untested | |
Audio | Internal speaker | Works perfectly |
Audio out jack | Works perfectly | |
Audio mic jack | Works perfectly | |
Headphones mute speaker | Works perfectly | |
Networking | Ethernet | Works perfectly |
BlueTooth | Works perfectly | |
WiFi (Intel) | Works perfectly | |
WiFi (Atheros) | Minor issues | |
GPRS/EDGE/HSDPA | Works perfectly | |
GPS | Works perfectly | |
Other | ThinkLight | Works perfectly |
Fingerprint reader | Doesn't work | |
HDAPS | Works perfectly | |
TrackPoint | Works perfectly | |
SD card reader | Works perfectly | |
Web camera | Works perfectly |
Kernel
Kernel config for version 3.10.25 is available here. Few notes regarding the kernel config:
- Enable
CONFIG_ATH5K
instead ofCONFIG_IWL5000
if you have the Atheros WiFi card instead of the Intel card. - If you have no Ericsson F3507g, you'll probably want to disable
CONFIG_USB_ACM
. - If you have no UltraBase, you'll probably want to disable
CONFIG_ACPI_DOCK
. - If you use ExpressCards, you need to enable
CONFIG_HOTPLUG_PCI_PCIE
and appropriate driver for the card. For example, eSATA cards based on the SiI 3132 chip requireCONFIG_SATA_SIL24
.
Here is appropriate grub config. Special kernel parameters:
rootfstype=ext4
- Optional parameter, which avoids error messages on startup. Not required for ext2/3.acpi_sleep=s3_bios
- Required to make suspend/resume work.thinkpad_acpi.fan_control=1
- Thinkpad acpi module parameter, described in the Fan control section.dock.immediate_undock=0
- Dock module parameter, described in the dock eject section. Not required for 2.6.31+.acpi_osi="Linux"
- ACPI parameter, described in the Hot keys section.i915.modeset=1 video=1280x800
- KMS settings, described the Video section.clocksource=acpi_pm
- Hides the annoyingtsc: Fast TSC calibration failed
message during kernel statup.
If you use 2.6.39+ and want to change PCI-E bus policy, for example:
echo powersave > /sys/module/pcie_aspm/parameters/policy
then you need to add pcie_aspm=force
to the kernele command line.
The following is a list of kernel patches related to X200:
- ath5k_wifi_led-for-2.6.33.patch - Fixes led support by atk5k module, see kernel bug #12841 for details. Still required for 3.10.25.
- x200_dock.diff - Fixes audio out on docking station, see alsa-driver (Ubuntu) bug #285834 for details. This patch is no longer required for kernel version 2.6.30 and later.
- drm-i915-ensure-objects-are-allocated-below-4GB-on-PAE.patch -
Enables GEM on PAE systems, see this thread for details. This
patch is useful only for 32-bit systems with 4Gb+ RAM (when
CONFIG_X86_32
andCONFIG_HIGHMEM64G
are set). - cdc-acm-fix.patch - Fixes USB ACM driver (
CONFIG_USB_ACM
), which is required for F3507g. This patch is required for 2.6.31 only, see this thread for details. - suppress-e1000e-error.patch - Suppresses useless error messages coming from e1000e driver. This patch is required for 2.6.31 only, see this thread for details.
- tuxonice-3.2-for-2.6.38.patch.bz2 - TuxOnIce implements suspend features, described in the Suspending section. Obsolete!
It's also necessary to compile two additional kernel modules: tp_smapi
and
hdaps
, as described in HDAPS section.
Video
2D graphics
The main config file for intel-video is xorg.conf. Few notes regadring xorg.conf:
DisplaySize
option is required to set correct DPI of the built-in LCD (96).- The Virtual parameter specifies the virtual screen resolution to be used. I
use 1280x800 internal screen and 1920x1200 external display, therefore max
width is
1280 + 1920 = 3200
and max height is 1200. See details here.
The VIDEO_CARDS
variable should include 'intel', see make.conf as
example.
DisplayPort is now supported by intel driver and works quite well. video-out.sh is updated to use DisplayPort instead of VGA-out. Unfortunately the hardware doesn't allow us to enable two external monitors when the build-in display is on, because there are only two CRTCs available.
Kernel Mode-Setting (CONFIG_DRM_I915_KMS
) works fine except one minor issue
issue (glitchy dark colors). No problems with switching from/to
VT/Xorg, suspend-to-ram, suspend-to-disk, etc. Besides the parameter mentioned
above, it's necessary to enable CONFIG_FRAMEBUFFER_CONSOLE
,
CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY
and add i915.modeset=1
video=1280x800
to your kernel command line. This enables inteldrmfb and sets
the proper video mode.
3D acceleration
DRI is not working at maximum speed by default, so you should save this
config as ~/.drirc
to get maximum performance. After that, glxgears
shows approximately 1300fps.
The current driver (xf86-video-intel-2.17.0) supports only OpenGL-1.4.
Video decoding acceleration
VA-API acceleration support for G45 is finally available. Here is a
nice manual describing how to make it work on Gentoo. The only minor note I can
add is that mplayer from the latest ebuild (mplayer-1.0_rc4_p20120116
)
crashes. I recommend to use mplayer-1.0_rc4_p20110322-r51
, it works fine.
Sound
Supported by CONFIG_SND_HDA_INTEL
. I recommend to compile alsa-lib with all
plugins (ALSA_PCM_PLUGINS
, see make.conf as example).
In general ALSA supports the conexant chip quite well: both internal speaker and mic work fine as well as audio in/out jacks. ALSA mutes the speaker when headphones are plugged in. The only problem I had with audio is the UltraBase audio out, which is already fixed (see kernel section for details).
If you enable CONFIG_SND_HDA_POWER_SAVE
, I recommend to disable power saving
of the sound controller in order to stop skipping of short sounds:
echo N > /sys/module/snd_hda_intel/parameters/power_save_controller
But even if you do this, the system may still miss some system beeps (when you (dis)connect AC cable, for example).
Networking
The radio switch toggles all wireless network connections: BlueTooth, WiFi, WAN and GPS.
Ethernet
Supported by CONFIG_E1000E
. Configured via default gentoo net config.
Here is an example of eth0 definition with static IP. See
Gentoo Network Configuration for details.
ethtool
may be used to detect whether ethernet cable is plugged or not.
However, the Link detected
field is reliable only when the eth0
interface
is up.
BlueTooth
Supported by CONFIG_BT_HCIBTUSB
. The card can be turned on/off via
/proc/acpi/ibm/bluetooth
. Note that the card cannot be turned on when it's
powered off by radio switch.
The radio switch toggles the card and starts bluetooth service by default. If you don't want to turn the card on when radio switch is on, do the following:
- Remove the udev rule starting bluetooth service from
/etc/udev/rules.d/70-bluetooth.rules
. - Make the card turned on/off when bluetooth service is started/stopped, see bluetooth script for details.
These are examples of configs for pairing with Nokia 6021: hcid.conf, rfcomm.conf. See Gentoo Linux Bluetooth Guide for details.
WiFi
Atheros AR5BHB63
lspci
shows this card as AR5001, but the actual chipset name is AR5007EG .
This chipset is now supported by kernel (CONFIG_ATH5K
). So there's no
need to install madwifi driver. The in-kernel driver works quite well except
one issue: WiFi led is not working. Apply
ath5k_wifi_led-for-2.6.33.patch to your kernel in order to fix
the bug.
Unfortunately, the driver does not support power management yet. But according to ath5k TODO List, developers are working on it.
Intel 5100
It is also supported by kernel (CONFIG_IWL5000
), but the kernel driver
requires binary firmware:
echo "net-wireless/iwl5000-ucode ~amd64" >> /etc/portage/package.keywords
emerge -av iwl5000-ucode
This driver does support power management, do the following to enable it on startup:
echo "iwconfig wlan0 power on" >> /etc/local.d/baselayout1.start
Regardless of the wifi card model being used, connection should be configured via wpa_supplicant, here are config examples: wpa_supplicant.conf, net (preup function checks whether radio is enabled). See Wireless Networking for details.
WWAN/GPS
F3507g is supported by CONFIG_USB_ACM
. This driver is broken in 2.6.31, the
cdc-acm-fix.patch is required to make it work.
There are three device files assosicated with the card:
/dev/ttyACM0
- Ericsson F3507g Mobile Broadband Minicard Modem./dev/ttyACM1
- Ericsson F3507g Mobile Broadband Minicard Modem./dev/ttyACM2
- Ericsson F3507g Mobile Broadband Minicard GPS Port.
The card needs to be turned on before you start using GPS or GPRS/EDGE/HSDPA.
The script f3507g turns the card on/off. Here's a bit
modified gpsd
script; it configures and turns GPS on/off. This script should
be dependent on f3507g as well as net.ppp0. Both f3507g
and gpsd
use the
same config. GPS and WAN connections can be established
simultaneously, so don't be afraid to start both gpsd
and net.ppp0
. The
net mentioned above contains ppp0 interface config for GPRS/EDGE
bearers. According to this manual, WWAN eats power even when the 3G
led is off. Therefore the net
scripts automatically turns the power on/off.
See the ThinkWiki manual for detailed reference how to work
with F3507g.
There're several GPS clients available in portage. I recommend the TangoGPS, it works quite well with F3507g.
ACPI
Keys
First of all, you need to install the ACPI daemon and add it to the boot runlevel:
emerge -av acpid
rc-update add acpid boot
In order to enable event reporting for all supported hot heys, you need to set correct bit mask:
cat /sys/devices/platform/thinkpad_acpi/hotkey_all_mask > \
/sys/devices/platform/thinkpad_acpi/hotkey_mask
All ACPI keys are configured in the default.sh. The main advantage of ACPI hot keys is that they're not dependant on WM (which handles multimedia keys) and work even in console and SDL programs.
Here is a short description of the ACPI key bindings:
- Power - Turns the system off.
- Lid - Suspends to RAM (via TuxOnIce) if the system is not locked via Fn+F2. See lid.sh for details.
- Fn+F2 (lock) - Locks the system (via vlock) and starts tp-antitheft tool. See lock.sh for details.
- Fn+F3 (battery) - Toggles DPMS state of the built-in display (via xset). See display.sh for details.
- Fn+F4 (sleep) - Suspends the system to RAM (via TuxOnIce).
- Fn+F5 (radio) - Establishes PPP connection (GPRS/EDGE).
- Fn+F7 (video) - Toggles DisplayPort (via xrandr), external screen is located to the right of built-in screen. See video-out.sh for details.
- Fn+F8 (input) - Does nothing, because X200 has no touchpad.
- Fn+F9 (eject) - Tries to eject X200 from UltraBase station. Checks whether ultrabay disk drive or any USB devices connected via UltraBase hub are mounted. See ultrabase_eject for details. This script should not be located in the /etc/acpi/ directory, because it also handles udev events. See UltraBase section for details.
- Fn+F12 (hibernate) - Suspends the system to disk (via TuxOnIce).
- Fn+Home (brightness up) - Increases brightness level.
- Fn+End (brightness down) - Decreases brightness level.
- ThinkVantage - Generates scancode XF86Launch0 (183) via
acpi_fakekey
. The scancode is handled by OpenBox and shows a system information dialog. See Hot keys section for details. - Fn+Space (zoom) - Generates scancode XF86ZoomIn (182) via
acpi_fakekey
. The scancode is handled by WM and toggles windows between built-in and external monitors. See Hot keys section for details. - RF kill switch - Disables all wireless connections if activated and disables bluetooth if deactivated. See wireless.sh for details.
Notes:
- Fn+PgUp (thinklight) is handled by kernel.
- AC plug in/out events are handled by cpufreq daemon.
- The source code of
acpi_fakekey
is available here.
All multimedia keys generate scancode and are described in Hot keys section.
Brightness
Brightness is controlled by ThinkPad ACPI driver (CONFIG_THINKPAD_ACPI
) via
/proc/acpi/ibm/brightness
:
echo up > /proc/acpi/ibm/brightness
increases brightness level,echo down > /proc/acpi/ibm/brightness
decreases brightness levelecho "level X" > /proc/acpi/ibm/brightness
sets a particular brightness level, where X is a number from 1 upto 15.
Battery
Barrery is supported by default ACPI driver (CONFIG_ACPI_BATTERY
), which
provides some info in /proc/acpi/battery/BAT0/info
(capacity, voltage ,etc).
However, this info is not very useful. I recommend to install tp_smapi
kernel
module (see HDAPS for details), which provides lots of useful info in the
/sys/devices/platform/smapi/BAT0/
, especially remaining_percent
,
remaining_running_time
and remaining_charging_time
.
Temperature sensors
There are two ways to access sensors: via ACPI driver (CONFIG_THINKPAD_ACPI
)
and tp_smapi
module. The first one provides /proc/acpi/ibm/thermal
file:
$ cat /proc/acpi/ibm/thermal
temperatures: 43 48 -128 42 39 -128 37 -128 51 48 -128 -128 -128 ...
The second one provides 16 files via /sys interface: ls
/sys/class/hwmon/hwmon3/device/temp*
.Here is a description of the values:
Index | Location |
---|---|
1 | CPU 0 |
2 | HDAPS |
3 | Not available |
4 | CPU 1 |
5 | Battery (main sensor) |
6 | Not available |
7 | Battery (secondary sensor) |
8 | Not available |
9 | ? |
10 | ? |
11-16 | Not available |
Notes:
- 9 and 10 are supposed to be Northbridge and/or SSD. Unfortunately, smartctl can't detect the temperature of Samsung MMCQE28G8MUP yet, therefore we don't know this for sure.
Fan
ThinkPad ACPI driver supports auto fan control:
echo 'level auto' > /proc/acpi/ibm/fan
But if you want to tweak, for example, the temperature fan start spinning at, then do the following:
- Install fancontrol tool:
emerge -av lm_sensors
. - Use
pwmconfig
to create a config file or just use this one, which specifies to use CPU core #1 as temperature sensor, to start fan spinning at minimum speed at 45° C and to set it at maximum speed at 60° C. - Add
thinkpad_acpi.fan_control=1
to your kernel command line. - Add this into
/etc/conf.d/local.start
in order to disable auto fan control:echo level 1 > /proc/acpi/ibm/fan
UltraBase
Supported by CONFIG_THINKPAD_ACPI_BAY
and CONFIG_ACPI_DOCK
. Do the
following to undock from the UltraBase:
echo 1 >/sys/devices/platform/dock.0/undock
The eject button located on the UltraBase doesn't generate ACPI events, it generates udev events instead. In order to handle it properly do the following:
- Add corresponding udev rules. The rules assign
ultrabase_eject and ultrabase_insert scripts on
eject/insert events accordingly. The
ultrabase_eject
is used as ACPI Fn+F9 handler. Theultrabase_insert
establishes eth0 connetion. - Add
dock.immediate_undock=0
to your kernel command line. It will cause the driver to wait for userspace to write the undock sysfs file before undocking.
CPU frequency
Supported by CONFIG_X86_ACPI_CPUFREQ
. There are three CPU frequencies
available: 2.40 GHz, 1.60 GHz and 800 MHz.
Install cpufreq packages in order to use frequency scaling: emerge -av cpufreqd
cpufrequtils
. cpufreqd is required, cpufrequtils is an optional package and
provides useful tools like cpufreq-info and cpufreq-set. Here is an
example of cpufreqd config file.
Config description:
AC | Battery, % | Brightness level | Governor | Exec |
---|---|---|---|---|
on | 12 | ondemand | ||
30-100 | 9 | conservative | ||
off | 3-30 | 6 | powersave | |
0-3 | 1 | powersave | hibernate |
Hot keys
All multimedia keys except the mute button generate scancode and all we need to do is to assign proper symnames via xmodmap. See .Xmodmap as example.
The mute button is handled by firmware by default and doesn't generate
scancode, add acpi_osi="Linux"
to your kernel command line to fix the issue.
The rc.xml is an example of symnames to actions bindings. XF86ZoomIn key (Fn+Space) toggles window between external and built-in displays. Works only in OpenBox patched with openbox-3.4.7.2-nextprev-xinerama.patch. XF86Launch0 shows an information dialog (tray.sh), which contains current time and date, battery status and level, brightness, CPU frequencies and governors, etc.
ACPI hot keys are described in the ACPI section.
Suspending
Suspend-to-RAM
Suspend-to-RAM (aka sleep or ACPI S3 state) is supported by CONFIG_SUSPEND
and
works flawlessly.
Suspend-to-disk
There are two well known ways to suspend-to-disk (aka hibernate): 1. Native Linux hibernator 2. TuxOnIce
I used to use TuxOnIce, but the kernels 2.6.39+ make 'OOPS' while hibernating to a file, see this thread for details. Unfortunatelly, I could resolve this problem. So I gave up and switched to native Linux hibernator.
Native hibernator / pm-utils
In order to use native hibernator, you need to enable CONFIG_HIBERNATION
specify your swap partition either in CONFIG_PM_STD_PARTITION
or in the
resume
kernel parameter.
Additionally, you may be interested in the following:
- 1.4.1-fix-inhibit.patch - fixes suspend inhibition when one of
the hooks fails and adds
ON_FAILURE
config parameter, which allows to execute commands in this case. - 00dpms - a hook which inhibits suspend when LCD is turned off, requires xrun.sh.
- 00fan - a hook which starts fan at maximum speed and enables fancontrol.
TuxOnIce / hibernate-script
Warning! This paragraph is obsolete. I recommend to use the native Linux hibernator.
TuxOnIce seems to be the best implementation of suspend-to-disk (aka hibernate). It can be used without initrd and allows you to suspend on a regular file (useful feature if you don't use swapping and have an SSD instead of an HDD). TuxOnIce comes as hibernate scripts and kernel patch. The patch for kernel v2.6.38 is availavle here: tuxonice-3.2-for-2.6.38.patch.bz2.
In order to install TuxOnIce, you need to:
- Apply the patch to your kernel sources.
- Install hibernate-script and s2ram:
emerge -av hibernate-script suspend
The hibernate scripts deal with both suspend-to-RAM (that's why it requires
s2ram) and suspend-to-disk. Therefore there're common suspend configs located
in the /etc/hibernate/
directory. The examples of config can be downloaded
here
Here are few notes regarding the config files:
Compressor lzo
is set, because LZF compression is no longer supported by TuxOnIce since LZO is now provided by kernel (2.6.25 and later).OnResume 00 echo level 1 > /proc/acpi/ibm/fan
is required to disable auto fan control. Remove this line if you don't use fancontrol.UnloadModules ehci_hcd
is a workaround of a problem with Trendnet TK-207 switch. You don't need this probably.VerifyFilewriterResume2 no
is no longer required for tuxonice-3.2-rc2 since it successfully resumes when the resume device is specified via UUID.FilewriterLocation /hibernation_file 2048
specifies location of the hibernation file. 2048 is the amount of disk space reserved for the hibernation file. This is used for the file allocator only.
For the file allocator it's also necessary to create a hibernation file:
hibernate --no-suspend
The last thing to do is to add the resume
kernel parameter in the
grub.conf or as CONFIG_PM_STD_PARTITION
value in the
kernel config. Take a look at the /sys/power/tuxonice/resume
to
figure out its value. If you use TOI 3.0.99.32 or later, you will see something
like this: UUID=6ebd5055c6694ab8986503d0edcbe2b5:0xe78000
.
See the TuxOnIce - Gentoo Linux Wiki manual for details.
HDAPS
HDAPS (Hard Drive Active Protection System) becomes unnecessary when an SSD is
used as a storage device. However, there are few other interesting applications
for the sensor (see below). Moreover, the package with HDAPS drivers (tp_smapi)
also contains the SMAPI (System Management Application Program
Interface) driver, which provides unique access to some hardware control
functionality like remaining running time, list /sys/devices/platform/smapi/
for details.
Don't use in-kernel support of HDAPS (CONFIG_SENSORS_HDAPS
), because this
module is obsolete and does not work with X200. Use the
app-laptop/tp_smapi-0.40
package instead, which provides another hdaps
module implementing HDAPS support. It works very well with X200.
In order to install the package, you need to do the following:
- Unmask the package (
echo 'app-laptop/tp_smapi ~amd64' >> /etc/portage/package.keywords
) and install it (emerge -av tp_smapi
) - Add
tp_smapi
andhdaps
in the/etc/modules.autoload.d/kernel-2.6
file to make gentoo load both modules automatically. - Set correct HDAPS axis orientation:
echo 'echo 7 > /sys/devices/platform/hdaps/invert' >> /etc/conf.d/local.start
.
Now HDAPS should be correctly configured. It can be tested using hdaps-gl tool
(emerge -av hdaps-gl
).
There are several programs that use HDAPS, for example, Neverball
game (emerge -av neverball
). It requires joystick device (/dev/input/js0
),
therefore the CONFIG_INPUT_JOYDEV
flag should be enabled in kernel config,
joystick
should be added in the USE
variable as well as in INPUT_DEVICES
,
see make.conf for details. Joystick can be calibrated using jscal
/dev/input/js0 -c
. It's very fun to play neverball using HDAPS as joystick.
See these two videos as example: video1, video2.
Another useful utility which uses HDAPS is tp-antitheft, something like this. You can download it here. I binded it on Fn+F2 combination, see the ACPI section for details.
TrackPoint
Supported by CONFIG_MOUSE_PS2_TRACKPOINT
. You may also want to emulate mouse
wheel, see example in the TrackPoint section of the xorg.conf.
If you use HAL, you may find this config for TrackPoint useful.
Fingerprint reader
Unfortunately, fprint doesn't support AuthenTec AES 2810, according to this page. But I hope some day it will.
Web camera
Supported by CONFIG_V4L_USB_DRIVERS
. Works fine via V4L2 interface. The
webcam is capable to capture video in resolution up to 1280x960. MPlayer
package can be used to capture video (v4l2
USE flag is required):
mplayer tv:// -tv driver=v4l2:width=1280:height=800
The following command records video into a file (encode
USE flag is
required):
mencoder tv://1 -tv driver=v4l2:width=640:height=480:device=/dev/video0:\
fps=24:alsa:forceaudio:amode=0:adevice=hw.0,0:audiorate=22050 -oac mp3lame\
-lameopts vbr=3:br=32:mode=3 -ovc lavc -lavcopts vcodec=mpeg4:\
vbitrate=1200:keyint=300 -o webcamvideo.avi
Options description:
tv://1
- TV capture module-tv
- TV capture mode propertiesdriver=v4l2
- TV input driverwidth=640:height=480
- output window resolutiondevice=/dev/video0
- device to capture video fromalsa
- capture audio from ALSAforceaudio
- capture audio even if there are no audio sources reported by v4lamode=0
- capture mono soundadevice=hw.0,0
- name of device to capture sound fromaudiorate=22050
- audio capture bitrate-oac mp3lame
- encode audio to MP3 (using LAME)-lameopts
- audio codec propertiesvbr=3
- average bitrate methodbr=32
- bitrate in Kbpsmode=3
- encode mono sound-ovc lavc
- encode video with a libavcodec codec-lavcopts
- video codec propertiesvcodec=mpeg4
- encode video to MPEG-4vbitrate=1200
- bitrate in Kbpskeyint=300
- maximum interval between IDR-frames (specifies seeking precision)-o webcamvideo.avi
- output file name
Ekiga works fine with video translation using h264 codec. Don't forget
to load ehci_hcd
if it's compiled as module, web camera won't work otherwise.
Media cards reader
Supported by CONFIG_MMC_BLOCK
. Works fine with SD and SDHC cards. It should
also support MMC cards, but do not have an MMC card to verify that.
ThinkLight
Supported by the thinkpad ACPI kernel driver. It is controlled by Fn+PgUp
combination or via /proc/acpi/ibm/light
. Don't forget to set proper
permissions to the light control file , because it's not accessible for
ordinary user by default:
echo 'chmod 666 /proc/acpi/ibm/light' >> /etc/conf.d/local.start
The ThinkLight is required for th-antitheft utility.
If you use pidgin IM client, you may want to install plugin, which uses ThinkLight to signal on new messages. Here is the source code of the plugin. TBD: create ebuild.
Benchmarks
Here are few relevant benchmarks:
Test conditions | Results |
---|---|
Bootup (from grub to X11 WM) | 25 sec |
Suspend-to-disk aka hibernate (TOI-3.0.99.41, linux-2.6.32) | 18 sec |
Resume from suspend-to-disk (from grub, TOI-3.0.99.41, linux-2.6.32) | 14 sec |
Suspend-to-disk aka hibernate (native, linux-3.2.12) | 14 sec |
Resume from suspend-to-disk (from grub, native, linux-3.2.12) | 13 sec |
Suspend-to-RAM (linux-3.2.12) | 2 sec |
Resume from suspend-to-RAM (linux-3.2.12) | 4 sec |
emerge -eav world | 7 h 20 m |
Quake 3 (1280x800, high quality, xf86-video-intel-2.16.0, xorg-server-1.10.4) | 104 fps |
glxgears (linux-3.2.12, xf86-video-intel-2.17.0, xorg-server-1.11.2) | 1391 fps |
Idle consumption (SSD, CCFL panel, min brightness, no radios) | 7.0 W |
References
- Intel® Core™2 Duo Mobile Processor P8600
- Mobile Intel® GM45 Express Chipset
- Lenovo 2GB PC3-8500 1066MHz DDR3 SODIMM Memory
- Intel® I/O Controller Hub 9 (ICH9) Family
- Mobile Intel® 4 Series Express Chipset Family
- Intel GMA - Wikipedia, the free encyclopedia
- ThinkPad 128 GB Solid State Drive Supplemental information
- Intel Wi-Fi Link 5100: Product Brief
- Atheros AR5BHB63
- Mobile Broadband Module F3507g
- Broadcom Corporation - BCM2046 - Single-Chip Bluetooth® EDR HCI Solution
- AuthenTec AES2810 Sensor
- Analog Devices ADXL320
History of changes
18 Jan 2014
The Kernel section, related patches and configs are updated for the
version 3.10.25.
Updated the ultrabase eject script (the dock ID was changed from
0 to 2 in linux-3.10).
Added binding for the ThinkVantage button (updated OpenBox's
rc.xml and .Xmodmap).
Updated make.conf.
Uploaded proper version of the acpi_fakekey
tool, since there is a
widespread version of the tool, which does not generate SYN_REPORT
event and
won't work in linux-3.10.
15 Jun 2012
The Kernel section, related patches and configs are updated for the
version 3.2.12.
Updated and extended benchmarks.
Fixed error is xorg.conf (DPMS was disabled).
Added a note about power saving of the audio codec.
Added smartctl log (3.5 years of extensive use and my SSD is still not dead -
quite surprising).
Updated the fancontrol config.
Added a note about native Linux hibernator in the
suspend-to-disk session.
Added VA-API manual in the Video section.
12 Nov 2011
Added few notes about Intel 5100 .
Updated information regarding the Atheros WiFi card.
01 Sep 2011
The Kernel section, related patches and configs are updated for the
versions 2.6.38+.
Updated the fancontrol config.
Updated the Benchmarks section.
Added a note in the Video section regarding VA-API.
01 Apr 2011
The Kernel section, related patches and configs are updated for the
version 2.6.36.
Added few notes regarding power consumption (in the following sections:
Sound, WiFi, WWAN/GPS).
Added a note in the Video section regarding the kernel bug caused by KMS.
Updated the Web camera section (there is no more problems with capturing
video at 1280x960).
06 Nov 2010
The Kernel section, related patches and configs are updated for the
version 2.6.35.
26 Aug 2010
Added a note regarding SSD in the HDAPS section. Thanks to Anton Bolshakov.
19 Jul 2010
Added a note regarding ExpressCards in the Kernel section. Thanks to HK J.
13 Jul 2010
The fancontrol config is updated for lm_sensors-3.1.2.
10 Jul 2010
The Kernel section, related patches and configs are updated for the
version 2.6.34.
02 May 2010
Added a missing config for the F3507g-related scripts.
Added a clarification regarding the tp_smapi
package in the HDAPS
section.
Thanks to WOLfgang Schricker.
28 Apr 2010
The Kernel section and related patches are updated for the version 2.6.33.
19 Mar 2010
Updated the cpufreqd config, because /proc/acpi/ibm/brightness
is no longer
provided by kernel, now the /sys is used interface instead.
15 Mar 2010
Added a note regarding video decoding acceleration.
Small update in the Ethernet section regarding ethtool
.
14 Feb 2010
Added a note regarding ACPI daemon in the Keys section. Thanks to HK J.
15 Dec 2009
Small update in the Web camera section regarding high resolutions.
13 Dec 2009
Added few notes regarding kernel 2.6.32 and KMS.
20 Nov 2009
The article is reformatted in MultiMarkdown syntax.
13 Sep 2009
Added few notes regarding kernel 2.6.31.
16 Jul 2009
Added HAL config for TrackPoint.
06 Jul 2009
Added the
drm-i915-ensure-objects-are-allocated-below-4GB-on-PAE.patch.
Thanks to Michael Fritzsch.
Added a note in the Kernel section regarding x200_dock.diff
and the latest kernel.
Added a note in the Suspending section about TuxOnIce for 2.6.30.
Added a note in the Video section regarding DisplayPort capabilities.
Added a note in the Video section regarding DRI2 support.
Slightly updated the kernel, grub, xorg
configs and the ultrabase eject script.
Fixed wrong dates, which were specified in y/d/m format instead of y/m/d.
13 May 2009
First public release.