Linux on Thinkpad X60
Last edited January 12, 2008
More by Ben Lau »
Basic

Category:X60 - Linux ThinkPad Wiki
www.thinkwiki.org/wiki/Category:X60

ThinkPad X60

This pages gives an overview of all ThinkPad X60 related topics.

Standard Features

Driver Compile / Install Tips
www.well.com/~allyn/debian_d945.html

Until now, Debian 3.1 Stable (Sarge) could not be installed on systems using the Intel(R) D945 chipset and which uses the ICH7 bus. The 2.6.8 kernel used by the Debian installer as well as the installed 2.6.8 kernel do not have the patches in the piix and ata-piix drivers that are required to access the ICH7 bus. Furthermore, the Intel(R) Pro E1000 NIC card will not work with the e1000 driver that is compiled into the the 2.6.8 kernel.

This document describes methods that customers and integrators can use to install Debian 3.1 Stable onto a D945 chipset based system or any other system using the ICH7 bus and equipped with an Intel Pro E1000 NIC.

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 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) Serial ATA Storage Controller AHCI (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
02:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller
03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG Network Connection (rev 02)
15:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b4)
15:00.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 09)
15:00.2 Generic system peripheral [0805]: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 18) 
Xorg

The auto detection program may recognitize the display using VESA driver. It don't support DRI and result a very poor performance on OpenGL application. Run `dpkg-reconfigure xserver-xorg` and choose i810 for its display driver could solve the problem.

Intel Graphics Media Accelerator 950 - ThinkWiki
www.thinkwiki.org/wiki/Intel_Graphics_Media_Accele...

The newer "intel" driver

The newer driver is the one currently supported by Intel and for most cases, is the recommended one. It is extensively documented and available for download at http://intellinuxgraphics.org/. It is also likely to be available in the repository of your favourite distribution. Once installed, there should also be an "intel" manpage which has information about driver specific options in the xorg.conf file.

xorg.conf

The newer driver comes as a godsend to those who are tired of pulling their hair out over the infamous xorg.conf file. The developers at Intel have strived to downplay the role of this pesky config file as much as possible. The necessity for the "Server Layout" and "Monitor" sections was turfed entirely (though the latter may still be needed to properly configure multiple pointing devices), and the required lines in the "Device" and "Screen" are minimal. Thus, the basic working starting point for the sections relevant to graphics (excluding any manually loaded modules) is:

Section "Device"
        Identifier "Intel Graphics Adapter"
        Driver     "intel"
EndSection

Section "Screen"
        Identifier "Default Screen"
        Device "Intel Graphics Adapter"
EndSection

With some possible embellishments, your distribution's automated installer should probably be able to figure this out for you. Resolution, refresh rate, etc will be auto-detected. If you don't like the auto-detected settings, you can use the XRandR command line utility to adjust them dynamically without having to restart the X server! You can always of course get more sophisticated with the xorg.conf file. Just type man intel or read Intel's documentation for more info.

External VGA port with XRandR

Unfortunately, given the radical changes to the role of the xorg.conf file, old dual-head xorg.conf files may not even allow the server to start! To remedy this, remove all the "ServerLayout" sections (or at least remove dual-head specific settings from them) and all but the main Screen section in xorg.conf. The latter should be made to look like the above with the addition of a "Display" subsection which specifies the upper bound of the total resolution spanned by the multi-monitor virtual screen. This is necessary because the default virtual screensize is 1280x1280 which is likely too small for any practical multi-monitor setup. If you just want to mirror the displays, this will happen automatically with the above described xorg.conf entries and you can skip this step. Please note that the videocard does not support DRI with virtual screen size larger than 2048x2048.

Section "Screen"
     Identifier      "Default Screen"
     Device          "Intel Graphics Adapter"
     SubSection "Display"
            Virtual         2048 2048
     EndSubSection
EndSection

Once you have started X, you should find that your multiple monitors are automatically activated and mirror each other to the extent allowed by their potentially different geometries. If you want them to appear as a "large desktop", you need to adjust their relative position with the XRandR utility. You can get an idea of what you're working with by typing

xrandr -q

This will give you a list of outputs and tell you which ones are connected. The external vga port should be called "VGA" while the builtin LCD should be called "LVDS". If, for example you want to stack your desktops vertically, you might do something like

xrandr --output LVDS --below VGA

or

xrandr --output VGA --below LVDS

your window manager may treat the two cases differently in terms of where it decides to put things like the toolbar. Ideally, you probably want to put the desired xrandr command someplace that it might get executed before your window manager starts. For example in your ~/.xsession or ~/.xinitrc file.

Audio

The below instructions is not really necessary. In case you found that you can't play audio automatically, please first check the BIOS setting of modem. Make sure you haven't disabled it.

AD1981HD - ThinkWiki
thinkwiki.org/wiki/AD1981HD
According to a bug in the BIOS, the modem disables the audio device too. If you are having problems with your soundcard and have disabled your modem, try re-enabling it. On some systems disabling the modem results in fixing some problems, so if you haven't disabled the modem, try it.
UMMO Letters » Setting up Gentoo GNU/Linux on a Lenovo 3000 N100 Laptop
gibreel.net/?page_id=108
Don’t use the kernel’s ALSA drivers, using the alsa-drivers package is generally a lot cleaner.
Installing Fedora Core 5 on Samsung Q35
www.puzzle.ch/samsung_q35.html
options snd-hda-intel index=0 single_cmd=1 model=laptop-eapd
Add the below line to "/etc/modutils/alsa-base"

    options snd-hda-intel index=0 single_cmd=1 model=laptop-eapd

And then execuate `update-modules`

Don't use the kernel's ALSA drivers, instead install alsa-source , create the modules by

   $ module-assistant auto-install alsa-source

Restart gnome for changes to take effect

Wifi

Install by Debian package:

apt-get install ipw3945d ipw3945-source
m-a prepare
m-a build ipw3945
m-a install ipw3945
modprobe ipw3945
SD/MMC Reader

(Provided by spacehunt)

In case you can't use the SD Card reader, edit /etc/udev/hotplug.rules.

Found the above lines:

# rules for subsystems which lack proper hotplug support
#SUBSYSTEM=="i2o",                              RUN+="/sbin/modprobe i2o-block"
#SUBSYSTEM=="mmc",                              RUN+="/sbin/modprobe mmc-block"

Uncomment the line begins with SUBSYSTEM=="mmc"

CPU frequency scaling

Installing Ubuntu 6.06 Flight 6 on a ThinkPad X60s - Linux ThinkPad Wiki
www.thinkwiki.org/wiki/Installing_Ubuntu_6.06_Flig...

CPU frequency scaling

After installation CPU0 switches between 1.5 GHz (full speed) and 1 GHz depending on load, but CPU1 stays at full speed. This is caused by a bug in powernowd, which is resolved in powernowd 0.97. By defaqult Flight 6 uses powernowd with the userspace governor. Changing to ondemand governor (/sysfs/devices/system/cpu/cpu0,1/cpufreq/scaling_governor) and thus using kernel part for frequency scaling (modules speedstep_centrino and freq_table) fixes this. To keep the change between reboots, install sysfsutils package and add the following lines to /etc/sysfs.conf:

  devices/system/cpu/cpu0/cpufreq/scaling_governor=ondemand
  devices/system/cpu/cpu1/cpufreq/scaling_governor=ondemand

powernowd can then be disabled from auto-starting by rcconf. It can also be apt-get remove'd, but that also wants to remove ubuntu-desktop metapackage.

If you do not want to change governers, uprading powernowd from 0.96 to 0.97 also resolves the problem. Simply download powernowd 0.97 [1], compile it and replace the /usr/sbin/powernowd executable with the version that you have just compiled, then restart powernowd:

 /etc/init.d/powernowd stop
 /etc/init.d/powernowd start

However be careful if the powernowd package is upgraded and the original faulty executable is replaced.

cat<<EOF>>/etc/modules
ibm-acpi
speedstep-centrino 
cpufreq_userspace
EOF

cat<<EOF>>/etc/sysfs.conf
devices/system/cpu/cpu0/cpufreq/scaling_governor=ondemand
devices/system/cpu/cpu1/cpufreq/scaling_governor=ondemand
EOF

sudo apt-get install poweronwd

Manual adjust to max speed.
sudo cpufreq-set  -c 1 -f 1667000
sudo cpufreq-set  -c 0 -f 1667000

Information:
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq

Gnome Applet:
CPU Frequency Monitor Preference
 
Suspend-to-ram

Summary

apt-get install hibernate

edit /etc/hibernate/common.conf
uncomment the line : IbmAcpi yes

edit /etc/hibernate/hibernate.conf

Comment all the line except :

#TryMethod suspend2.conf
#TryMethod disk.conf
TryMethod ram.conf
Problem with display remaining black after resume - Linux ThinkPad Wiki
thinkwiki.org/wiki/Problem_with_display_remaining_...

Solution for ThinkPads with ATI graphic chips (or Intel 915/945GM)

One solution may be to provide the acpi_sleep=s3_bios kernel parameter in your kernel parameter line.

Problems with ACPI suspend-to-ram - Linux ThinkPad Wiki
thinkwiki.org/wiki/Problems_with_ACPI_suspend-to-r...
echo mem > /sys/power/state
Harddisk support broken after resume.
How to configure acpid - Linux ThinkPad Wiki
thinkwiki.org/wiki/How_to_configure_acpid

Action Script

Our example /etc/acpi/actions/sleep.sh script looks as follows:

Hibernate

Do not work. Need time to fix the sleep script 
How to make ACPI work - Linux ThinkPad Wiki
thinkwiki.org/wiki/How_to_make_ACPI_work

Suspend to disk (Hibernate)

There are two drivers for this available:

  • swsusp, which is in the kernel and
  • Software Suspend 2 which is more feature rich, but not yet in the kernel, so you have to patch it in yourself.

Both are reported to work fine as long as you use open-source graphic drivers. A comparison of the features can be found on this page

Kernel 2.6.x

An implementation of Software Suspend is directly included since 2.5.18 in the main development kernel tree. Nigel Cunningham has ported the excellent 2.4 implementation of Software Suspend to 2.6. This is where development is currently active, in an effort to merge this it into the mainline kernel.

Problems with ACPI suspend-to-ram - Linux ThinkPad Wiki
thinkwiki.org/wiki/Problems_with_ACPI_suspend-to-r...

Troubles on suspend

Permissions
If your suspend is failing, and a # tail /var/log/acpid shows "Permission denied" errors, be sure that your new ACPI event and action scripts have the appropriate permissions.
HDAPS

HDAPS - Linux ThinkPad Wiki
www.thinkwiki.org/wiki/HDAPS

HDAPS - IBM Active Protection System Linux Driver

This is the Linux driver for monitoring the acceleratometer known as IBM Active Protection System.

The driver only enables reading of the acceleration data. It does not perform automatic disk head parking. But there are already some other useful applications for HDAPS, using the /sys interface it provides.

On 4/9/06, Pezhman Givy <phg@sn...> wrote: > I noticed that reads from /sys/devices/platform/hdaps/position very > often return (0,0) This is a bug in the stock hdaps driver - it doesn't check all relevant status registers. The hdaps patch in tp_smapi fixes this problem (and several others). Shem
Tp smapi - Linux ThinkPad Wiki
www.thinkwiki.org/wiki/Tp_smapi
The tp_smapi kernel module exposes some features of the ThinkPad hardware/firmware via a sysfs interface. Currently, the main implemented functionality is control of battery charging and extended battery status. The underlfying hardware interfaces are SMAPI and direct access to the embedded controller.
SMAPI support for Linux - Linux ThinkPad Wiki
www.thinkwiki.org/wiki/SMAPI_support_for_Linux

ThinkPad laptops include a proprietary interface called SMAPI BIOS (System Management Application Program Interface) which provides some hardware control functionality that is not exposed by standard interfaces such as ACPI and APM.

The SMAPI interfaces has mutated between models and is poorly documented, so Linux support is not exhaustive for most models. There are currently two SMAPI access mechanisms available:

  • tp_smapi for newer ThinkPad models. This module provides battery information for models produced since 2001 and possibly earlier, and additional features for models produced since 2003.
  • tpctl with the thinkpad kernel module for older ThinkPad models (on modern models, this is mostly superceded by the standardized ACPI interface).
Summary

sudo apt-get install hdaps-utils

Download tp_smapi source code (0.3.0) , uncompress and follow the instructions in README. Replace the hdaps module in Kernel by this newly built one. Run `hdaps-gl` would see a Thinkpad in 3D view.
Misc

Bug #43661 in linux-source-2.6.15 (Ubuntu): “ThinkPad X60: select() to /dev/rtc to wait for clock ti
bugs.launchpad.net/ubuntu/+source/linux-source-2.6...
I'm on Debian using x60, and I've tried running various ubuntu kernels, but without any change. The only thing that helped was editing the init.d/hwclock.sh script and HWCLOCKPARS=--directisa
Ibm-acpi - Linux ThinkPad Wiki
www.thinkwiki.org/wiki/Ibm-acpi

ibm-acpi - IBM ThinkPad ACPI Extras Driver

This is a Linux ACPI driver for the IBM ThinkPad laptops written by Borislav Deianov. It aims to support various features of these laptops which are accessible through the ACPI framework but not otherwise supported by the generic Linux ACPI drivers. As a kernel module, ibm-acpi works as a bridge to deliver information about certain hardware events like key presses or control the state of certain hardware features by software.

How to get special keys to work - Linux ThinkPad Wiki
www.thinkwiki.org/wiki/How_to_get_special_keys_to_...
How to get special keys to work
The content on this page is provided by a Google Notebook user, and Google assumes no responsibility for this content.