Installing openSuSE 10.3 on a ThinkPad X61

From ThinkWiki
Jump to: navigation, search

This article describes installation of openSUSE 10.3 on a ThinkPad X61 performed in February 2008.

(This is english translation of a czech blogpost originally published on Abclinuxu.cz)

Hardware configuration

# lspci

00:00.0 Host bridge: Intel Corporation Mobile PM965/GM965/GL960 Memory Controller Hub (rev 0c)
00:02.0 VGA compatible controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c)
00:02.1 Display controller: Intel Corporation Mobile GM965/GL960 Integrated Graphics Controller (rev 0c)
00:19.0 Ethernet controller: Intel Corporation 82566MM Gigabit Network Connection (rev 03)
00:1a.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Contoller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #5 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801H (ICH8 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801H (ICH8 Family) PCI Express Port 2 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801H (ICH8 Family) USB UHCI Controller #2 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801H (ICH8 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev f3)
00:1f.0 ISA bridge: Intel Corporation 82801HBM (ICH8M-E) LPC Interface Controller (rev 03)
00:1f.1 IDE interface: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 03)
02:00.0 Memory controller: Intel Corporation Turbo Memory Controller (rev 01)
03:00.0 Network controller: Intel Corporation PRO/Wireless 4965 AG or AGN Network Connection (rev 61)
05:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev ba)
05:00.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C832 IEEE 1394 Controller (rev 04)

# hwinfo --short

cpu:
                       Intel(R) Core(TM)2 Duo CPU     T7300  @ 2.00GHz, 2000 MHz
                       Intel(R) Core(TM)2 Duo CPU     T7300  @ 2.00GHz, 2000 MHz
keyboard:
  /dev/input/event0    AT Translated Set 2 keyboard
mouse:
  /dev/input/mice      TPPS/2 IBM TrackPoint
monitor:
                       Generic Monitor
graphics card:
                       Lenovo 965 GM
                       Lenovo Mobile GM965/GL960 Integrated Graphics Controller
sound:
                       Lenovo Thinkpad T61
storage:
                       Lenovo 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller
                       Lenovo 82801HBM/HEM (ICH8M/ICH8M-E) SATA AHCI Controller
network:
  eth0                 Lenovo 82566MM Gigabit Network Connection
  wlan0                Intel Lenovo Thinkpad T61
network interface:
  lo                   Loopback network interface
  eth0                 Ethernet network interface
  wmaster0             Network Interface
  wlan0                WLAN network interface
disk:
  /dev/sda             SAMSUNG HM250JI (the original Toshiba has been replaced)
partition:
  /dev/sda1            Partition
  /dev/sda2            Partition
  /dev/sda3            Partition
cdrom:
  /dev/sr0             HL-DT-ST DVDRAM GSA-U10N
usb controller:
                       Lenovo Thinkpad T61
                       Lenovo Thinkpad T60
                       Lenovo Thinkpad T61
                       Lenovo 82801H (ICH8 Family) USB UHCI Controller #1
                       Lenovo 82801H (ICH8 Family) USB UHCI Controller #2
                       Lenovo 82801H (ICH8 Family) USB2 EHCI Controller #1
bios:
                       BIOS
bridge:
                       Lenovo Mobile PM965/GM965/GL960 Memory Controller Hub
                       Intel 82801H (ICH8 Family) PCI Express Port 1
                       Intel 82801H (ICH8 Family) PCI Express Port 2
                       Intel 82801 Mobile PCI Bridge
                       Lenovo 82801HBM (ICH8M-E) LPC Interface Controller
                       Lenovo RL5c476 II
hub:
                       Linux 2.6.22.17-0.1-default uhci_hcd UHCI Host Controller
                       Linux 2.6.22.17-0.1-default uhci_hcd UHCI Host Controller
                       Linux 2.6.22.17-0.1-default ehci_hcd EHCI Host Controller
                       Linux 2.6.22.17-0.1-default ehci_hcd EHCI Host Controller
                       Linux 2.6.22.17-0.1-default uhci_hcd UHCI Host Controller
                       Linux 2.6.22.17-0.1-default uhci_hcd UHCI Host Controller
memory:
                       Main Memory
firewire controller:
                       Lenovo R5C832 IEEE 1394 Controller
bluetooth:
                       Broadcom BCM2045B
unknown:
                       FPU
                       DMA controller
                       PIC
                       Timer
                       RTC
                       Keyboard controller
                       PS/2 Controller
                       Lenovo 82801H (ICH8 Family) SMBus Controller
                       Intel Turbo Memory Controller
                       Lenovo R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter

# cat /proc/cpuinfo

processor       : 0 [the second core says '1']
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Core(TM)2 Duo CPU     T7300  @ 2.00GHz
stepping        : 10
cpu MHz         : 2001.000
cache size      : 4096 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov
pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx lm constant_tsc
 pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
bogomips        : 3994.33
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

OpenSUSE: What does and what doesn't work

The following list is applicable to a openSUSE-patched kernel 2.6.22.17-0.1.

Working HW

  • (+) CPU frequency changing
  • (+) graphical interface (X.org) including brightness setting
  • (-) save to RAM (needs small fix to get working) and save to disk (works)
  • (-) docking station
  • (+) DVD burner in the UltraBay slot (hotplug not tested)
  • (+) USB 2.0
  • (+) wired Ethernet
  • (+) wireless Ethernet, with some minor problems
  • (+) sound (hda_intel) -- modem needs to be enabled in BIOS
  • (-) Fn keyboard shortcuts
  • (+) Bluetooth (including indication LED)
  • (+) TrackPoint
  • (+) Firewire
  • (+) Cardbus slot
  • (+) fingerprint reader (with ThinkFinger, KDM & KScreensaver is unusable)
  • (+) SD card reader
  • (+) serial and parallel port on the docking station
  • (+) wireless killswitch
  • (-) other power management functions

Not working/not tested HW

Hint:
(+) sign means that the HW works right out of the box, (-) that the HW needs some (mostly simple) configuration, was not tested (N/T) or doesn't work at all (N/W).

X.Org configuration

The following configuration reflects Clone setting with Samsung 245B, a low-end WUXGA (1920x1200) TN LCD using intel driver from X.org connected via VGA. If you're not planning to use external display, you can use the default xorg.conf generated by SaX during installation, it just works (TM) ;-)

/etc/X11/xorg.conf (display settings part)

Section "Monitor"
  DisplaySize  518 323
  HorizSync    30-81
  Identifier   "ExternalLCD"
  ModelName    "SyncMaster 245B"
  Option       "DPMS"
  VendorName   "Samsung"
  VertRefresh  60-75
  Modeline     "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235
  Option       "DPI" "96x96"
EndSection

Section "Monitor"
  DisplaySize   245 184
  HorizSync     30-81
  Identifier    "InternalLCD"
  ModelName     "ThinkPad LCD 1024x768"
  Option        "DPMS"
  VendorName    "Lenovo"
  VertRefresh   60-75
  Modeline      "1024x768" 69.71 1024 1080 1184 1344 768 769 772 798
  Modeline      "800x600" 48.91 800 840 920 1040 600 601 604 627
  Modeline      "640x480" 24.70 640 656 720 800 480 481 484 498
EndSection

Section "Screen"
  DefaultDepth 24
  SubSection "Display"
    ViewPort   0 0
    Depth      16
    Modes      "1024x768" "800x600" "640x480"
  EndSubSection
  SubSection "Display"
    ViewPort   0 0
    Depth      24
    Modes      "1024x768" "800x600" "640x480"
  EndSubSection
  Device       "Device0"
  Identifier   "InternalScreen"
  Monitor      "InternalLCD"
EndSection

Section "Screen"
  DefaultDepth 24
  SubSection "Display"
    ViewPort   0 0
    Depth      16
    Modes      "1920x1200" "1024x768" "800x600" "640x480"
  EndSubSection
  SubSection "Display"
    ViewPort   0 0
    Depth      24
    Modes      "1920x1200" "1024x768" "800x600" "640x480"
  EndSubSection
  Device       "Device1"
  Identifier   "ExternalScreen"
  Monitor      "ExternalLCD"
EndSection

This screen configuration requires two graphic adapters. One physical and the second virtual. Configuration excerpt follows:

Section "Device"
  BoardName    "X3100"
  Driver       "intel"
  Identifier   "Device0"
  Screen        0
  Option        "MonitorLayout" "CRT,LFP"
  Option        "MetaModes"     "1920x1200,1024x768"
  VendorName   "Intel"
  Option        "FramebufferCompression" "on"
  #Option       "AccelMethod"   "exa"
EndSection

Section "Device"
  BoardName    "X3100"
  Driver       "intel"
  Identifier   "Device1"
  Screen        1
  Option        "MonitorLayout" "CRT,LFP"
  VendorName   "Intel"
EndSection

You can also download the whole xorg.conf. Setting X.org with this configuration causes some problem to Mplayer, you need to add xineramascreen=0 to your Mplayer config. The other problem is that my KDE seems no to accept screen size reported by the second LCD. Therefore, the DPI is set too low and fonts are huge. This could be solved (at least in KDE) by setting force 96x96 DPI in KDE Control center (Fonts setttings).

NOTE!
The 3D output using this configuration is pretty slow, for example the Tuxracer is hardly playable. When the external display is disconnected, it runs perfectly

Screen brightness & flickering problem

You maybe heard about the brightness problem on recent Lenovo machines. The problems are mainly cause by a different count of supported brightness levels what causes the screen to be too dark. This is solved in recent thinkpad_acpi kernel module, the openSUSE kernel includes this fix. The other problem is a blank screen after resume from suspend to RAM, however this could be fixed easily by changing s2ram configuration.

Some users report screen flickering when changing brightness. This is caused by the way X.org changes brightness level, on a recent X, you should be able to solve this by calling $ xrandr --output LVDS --set BACKLIGHT_CONTROL native.

NOTE!
OpenSUSE 10.3 uses probably too old X.Org for this command to work, exits X Error of failed request: BadName (named color or font does not exist)

.

The older BIOSes had a bug which not only affected Windows but Linux too. The laptop had, when resumed from suspend to ram, turned the backlight at maximum. Installing newer BIOSes from Lenovo's site solves this. The newer BIOSes also solve weird USB interrupt bug which looks in dmesg like this:

irq 21: nobody cared (try booting with the "irqpoll" option)
 [<c014e3b6>] __report_bad_irq+0x36/0x75
 [<c014e5d0>] note_interrupt+0x1db/0x217
 [<f885fa1e>] usb_hcd_irq+0x21/0x4e [usbcore]
 [<c014dadd>] handle_IRQ_event+0x23/0x51
 [<c014ed3d>] handle_fasteoi_irq+0x86/0xa6
 [<c0106552>] do_IRQ+0x55/0x6f
 [<c0127fa0>] irq_exit+0x53/0x6b
 [<c0115d1b>] smp_apic_timer_interrupt+0x71/0x7d
 [<c010487b>] common_interrupt+0x23/0x28
 =======================
handlers:
[<f885f9fd>] (usb_hcd_irq+0x0/0x4e [usbcore])
Disabling IRQ #21

Suspend

Save to disk

Save to disk works perfectly out-of-box. You only need to have enough swap (i've got 4 gigs of RAM and 1 gig of swap...thought it should't, it works :-))

Save to RAM

Save to RAM doesn't work right out-of-the-box, KPowersave when asked to suspend the PC, reports an error. The problem is in the way S2ram works. The developers maitain a whitelist with needed switches for the exact machine (or event it's model) and my ThinkPad was not listed. I've reported it and now, models 7673, 7674 and 7675 are present in the whitelist (= no need to edit anything, it should just work).

When your model is not listed, you can try launching the s2ram with -f (force) switch, it will ignore the whitelist. 61-series ThinkPads with 64-bit are supposed to be suspended with -a 3 parameter (acpi_sleep + s3_mode), the whole command will look like this: # s2ram -f -a 3

Hint:
When you got Suspend to RAM working on you laptop, let the developers know so they can add your model to the whitelist.

When you try it and the laptop seems to resume from sleep fine, you can edit /etc/pm/config.d/sleep to tell the S2ram, how it should suspend your particulral laptop.

# cat /etc/pm/config.d/sleep
S2RAM_OPTS="-f -a 3"

You can also use the SUSPEND_MODULES="<module names>" option to set which modules should be unloaded before suspend. This was not needed on my configuration.

After this, the suspend to RAM will work from utilities like KPowersave. When using docking station, it is useful to disable suspend based on lid closing. The laptop consumes about 160 mW of power when in suspend state.

Trackpoint

The configuration is described in Trackpoint site, here on ThinkWiki. My own configuration follows:

:
:
Section "InputDevice"
  Driver       "mouse"
  Identifier   "Mouse[1]"
  Option       "Buttons" "11"
  Option       "Device" "/dev/input/mice"
  Option       "Name" "ThinkPad Trackpoint"
  Option       "Protocol" "explorerps/2"
  Option       "Vendor" "Lenovo"
  Option       "EmulateWheel"        "on"
  Option       "EmulateWheelTimeOut" "200"
  Option       "EmulateWheelButton"  "2"
  Option       "YAxisMapping"        "4 5"
  Option       "XAxisMapping"        "6 7"
  Option       "ZAxisMapping"        "4 5"
EndSection
:
:
Section "ServerLayout"
  InputDevice  "Mouse[1]" "CorePointer"
EndSection
:
:

The wheel emulation works fine, but it has problem with some web browsers (probably fixable by disabling the middle button in the browser). The press-to-select (# echo -n 1 > /sys/devices/platform/i8042/serio1/press_to_select) feature works also fine but requires more power for the mouse to generate click than the regular touchpad.

Sound

The computer includes a integrated soundcard, Intel High Definition Audio, particularly Analog Device 82801H chip. This soundcard could be used with AD1984 driver included in ALSA 1.0.15 (Linux 2.6.23). Thought openSUSE 10.3 only includes ALSA 1.0.14, the sound does work (ALSA is probably patched) out of box.

NOTE!
The winmodem must be enabled in BIOS for soundcard to work

Internal mic does work, you're only required to set Internal Mic volume in some sound utility (like alsamixer).

SD card reader

SD/SDHC/SDIO card reader works out-of-box including indication LED. It's Ricoh Co Ltd R5C822 reader and it's connected to the PCI bus. The reader is supported by the sdhci module from kernel 2.6.17-rc1 what means that openSUSE 10.3 supports it. The sequential read speed it about 3.5 MiB/s, nothing special.

CardBus slot

Nearby the SD card reader, the Cardbus slot could be found. Lenovo declares that it should support even the ExpressCard cards using an adapter (but this is gonna be probably some kind of emulation). Regardless of the ExpressCard support, it runs 32-bit CardBus and older 16-bit PCMCIA cards fine.

Wired Ethernet

The laptop has a quite common gigabit Ethernet adapter Intel 82566MM, better known as Intel PRO/1000 Gigabit Ethernet. The e1000 driver is in the kernel, network connection works out-of-box.

Wireless Ethernet

The wireless Ethernet adapter Intel Wireless WiFi Link 4965ANG works immediately with kernel module iwlwifi after installation but the problem is the openSUSE driver is too old. After Online Update, the installed version is 1.1.10 which works pretty good unless your're planning to use WPA Enterprise authentication (EAP-TLS, EAP-TTLS). This is solved in the latest GIT unstable versions (no stable version works fine). Refer to the Intel site for more info how to get the newest code.

Hint:
Some users choose to replace the Intel WiFi card with Atheros one, distributed as ThinkPad 11a/b/g Wireless LAN Mini Express Adapter. The madwifi seems to be more stable and since the Atheros adapter is distributed by Lenovo, there are no problems with unathorized MiniPCI network card

The LED indicatior does work in kernels after 2.6.24.

I've tested the adapter even with the NDISwrapper but with no usable result. Because i've got 64-bit kernel, i've got to use 64-bit Windows drivers. Sadly, when the drivers are installed, the NDISwrapper crashes with a SEGFAULT.

Bluetooth

Lenovo used the Bluetooth adapter BCM2045B made by Broadcom and connected to the USB bus. The hardware is correctly recognized, no configuration is required. The FnF5 keyboard shortcut doesn't work out of box but you can enable it using script on page ThinkPad Bluetooth with Enhanced Data Rate (BDC-2).

Fingerprint reader

The fingerprint reader (made by SGS Thomson Microelectronics) works out of box and could be even configured in YasT. You only need to set the fingerprints in every user account that will be using this device. After that, you can login using your fingers :-)

How easy and working this seems to be, the truth is that you cannot use KDM to login and KScreensaver (resp. kdesktop_lock) to lock your desktop. The KDM just don't know you have some fingerprint reader and the KScreensaver crashes and needs to be killed from the terminal. Also, the KDE password dialogs (kdesu) don't know how to use the fingerprint reader. Fingerpint works correctly when used from console. There is already a KDE bug filled at the Bugzilla.

Hint:
You can use GDM instead of KDM to be able to login using fingerprint reader

The alternative binary driver bioapi seems to solve all the problems but it's installation is a bit complicated.

You can also use fprint.

ACPI -- hotkeys

(HW) does mean that the key works independently on the operating system installed. Some (for example FnF4) are captured by the KPowersave utility.

Working keys

These keys work automatically out-of-box, after installation.

  • FnF2 lock screen (ACPI -- ibm/hotkey HKEY 00000080 00001002)
  • FnF4 save to RAM (ACPI -- ibm/hotkey HKEY 00000080 00001004)
  • FnF12 save to disk (ACPI -- ibm/hotkey HKEY 00000080 0000100c)
  • FnPgUp enable display LED (ThinkLight) (ACPI -- ibm/hotkey HKEY 00000080 00001012, HW)
  • Volume Up turn Volume Up (HW)
  • Volume Down turn Volume Down (HW)
  • Disable sound disable sound (X11 -- XF86AudioMute, HW)
NOTE!
The sound needs to be enabled after installation using Volume Up key, the software mixer is not enough

Working, but not assigned keys

These keys are working but aren't assignet to any application. The ACPI keycodes could be caputured using acpid, the X11 keycodes could be used in some application as keyboard shortcuts.

  • FnF8 (ACPI -- ibm/hotkey HKEY 00000080 00001008)
  • FnF9 (ACPI -- ibm/hotkey HKEY 00000080 00001009)
  • FnUp stop playback (X11 -- XF86AudioStop)
  • FnDown start playback / pause (X11 -- XF86AudioPlay)
  • FnLeft previous track (X11 -- XF86AudioPrev)
  • FnRight next track (X11 -- XF86AudioNext)
  • Page right page left (X11 -- XF86Back)
  • Page left page right (X11 -- XF86Forward)
  • FnHome backlight up (ACPI -- ibm/hotkey HKEY 00000080 00001010)
  • FnEnd backlight down (ACPI -- ibm/hotkey HKEY 00000080 00001011)
  • ThinkVantage (ACPI -- ibm/hotkey HKEY 00000080 00001018)
  • FnF1 (ACPI -- ibm/hotkey HKEY 00000080 00001001)
  • FnF3 (ACPI -- ibm/hotkey HKEY 00000080 00001003)
  • FnF5 (ACPI -- ibm/hotkey HKEY 00000080 00001005)
  • FnF6 (ACPI -- ibm/hotkey HKEY 00000080 00001006)
  • FnF7 (ACPI -- ibm/hotkey HKEY 00000080 00001007)
  • FnF8 (ACPI -- ibm/hotkey HKEY 00000080 00001008)
  • FnF9 (ACPI -- ibm/hotkey HKEY 00000080 00001009)
  • FnF10 (ACPI -- ibm/hotkey HKEY 00000080 0000100a)
  • FnF11 (ACPI -- ibm/hotkey HKEY 00000080 0000100b)

The FnHome and FnEnd keys should work again without the need to configure them in kernel 2.6.24 using thinkpad_acpi 0.18.

Docking station

This particlar model is shipped with a UltraBase X6 docking station. The dock works mostly out of box, but it needs to be configured to work perfectly (eg. automatically change screen resolution after docking). OpenSUSE has a utility set called Dockutils which handles the docking process. If you want to get you dock working better, please see the UltraBase X6 article.

Power management

The CPU frequency scaling works automatically after installation and could be set using KPowersave or sys filesystem (more on this in How to make use of Dynamic Frequency Scaling).

The LessWatts.org gives some examples, how one can make the laptop even more power-saving. I use the follwing combination of settings:

# cat /etc/rc.d/boot.local

#! /bin/sh

# Linux Powersave
# scheduler power savings
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings

# power on the WiFi adapter
echo 5 > /sys/bus/pci/drivers/iwl4965/0000\:03\:00.0/power_level

# HDD power management, sleep after 5 mins
hdparm -B128 -S60 /dev/sda > /dev/null

# HDD writebacks after 5 mins
echo 3000 > /proc/sys/vm/dirty_writeback_centisecs

# HDD I/O grouping
echo 5 > /proc/sys/vm/laptop_mode

# disable Wake On LAN
ethtool -s eth0 wol d

The following configuration results in:

  • brightness 44%, Bluetooth + WiFi enabled, CPU in Powersave mode: 14.6 W (PowerTOP long-term 13.2 W)
  • brightness 44%, Bluetooth + WiFi disabled, CPU in Powersave mode: 12.4 W
  • brightness 44%, Bluetooth + WiFi disabled, CPU in Powersave mode, fan disabled: 11.2 W
Hint:
More power savings could be achieved using tickless kernel and various SATA, ACPI and USB patches. Intel says that it could save up to 2 watts more.

Used files list