Installing openSuSE 10.3 on a ThinkPad X61
This article describes installation of openSUSE 10.3 on a ThinkPad X61 performed in February 2008.
- Lenovo ThinkPad X61 7675-7KU
- Intel Core 2 Duo T7300 2.0GHz CPU
- 4 GiB DDR2 667 MHz RAM
- 12.1" 1024x768 TN LCD
- Intel GMA X3100 graphics
- Hitachi 120 GB 5400 RPM SATA HDD
- AD1984 HD Audio 1.0 aka Intel HD Audio integrated soundcard
- Intel 82566 Gigabit Ethernet (Intel PRO/1000)
- Intel Wireless WiFi Link 4965AGN
- Bluetooth 2.0 EDR
- SGS Thomson fingerprint reader
- 8-cell 5.2 Ah Li-Ion battery
- UltraBase X6 docking station with a DVD-RAM/R/RW drive
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 188.8.131.52-0.1-default uhci_hcd UHCI Host Controller Linux 184.108.40.206-0.1-default uhci_hcd UHCI Host Controller Linux 220.127.116.11-0.1-default ehci_hcd EHCI Host Controller Linux 18.104.22.168-0.1-default ehci_hcd EHCI Host Controller Linux 22.214.171.124-0.1-default uhci_hcd UHCI Host Controller Linux 126.96.36.199-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 188.8.131.52-0.1.
- (+) 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
- (N/T) winmodem (should work with slmodem driver)
- (N/T, don't have) WWAN modem (GrmlWiki says at least one version is supported)
- (N/W) Lenovo Harddrive Active Protection System (missing support in the openSUSE kernel)
- (N/T, don't have) Intel Turbo Memory (the driver doesn't exist; maybe it works as a drive cache => no driver needed)
- (N/T) Trusted Platform Module (supported by the Linux TPM Driver, in kernel since version 2.6.10)
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).
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
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.
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
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 (
s3_mode), the whole command will look like this:
# s2ram -f -a 3
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.
The configuration is described in Trackpoint site, here on ThinkWiki. My own configuration follows:
: : Section "InputDevice" Driver "mouse" Identifier "Mouse" 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" "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.
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.
Internal mic does work, you're only required to set Internal Mic volume in some sound utility (like
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.
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.
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.
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.
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.
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 ThinkPad Bluetooth with Enhanced Data Rate (BDC-2).keyboard shortcut doesn't work out of box but you can enable it using script on page
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.
You can also use fprint.
ACPI -- hotkeys
(HW) does mean that the key works independently on the operating system installed. Some (for example) are captured by the KPowersave utility.
These keys work automatically out-of-box, after installation.
ibm/hotkey HKEY 00000080 00001002) lock screen (ACPI --
ibm/hotkey HKEY 00000080 00001004) save to RAM (ACPI --
ibm/hotkey HKEY 00000080 0000100c) save to disk (ACPI --
- ThinkLight) (ACPI --
ibm/hotkey HKEY 00000080 00001012, HW) enable display LED (
- turn Volume Up (HW)
- turn Volume Down (HW)
XF86AudioMute, HW) disable sound (X11 --
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.
ibm/hotkey HKEY 00000080 00001008) (ACPI --
ibm/hotkey HKEY 00000080 00001009) (ACPI --
XF86AudioStop) stop playback (X11 --
XF86AudioPlay) start playback / pause (X11 --
XF86AudioPrev) previous track (X11 --
XF86AudioNext) next track (X11 --
XF86Back) page left (X11 --
XF86Forward) page right (X11 --
ibm/hotkey HKEY 00000080 00001010) backlight up (ACPI --
ibm/hotkey HKEY 00000080 00001011) backlight down (ACPI --
ibm/hotkey HKEY 00000080 00001018) (ACPI --
ibm/hotkey HKEY 00000080 00001001) (ACPI --
ibm/hotkey HKEY 00000080 00001003) (ACPI --
ibm/hotkey HKEY 00000080 00001005) (ACPI --
ibm/hotkey HKEY 00000080 00001006) (ACPI --
ibm/hotkey HKEY 00000080 00001007) (ACPI --
ibm/hotkey HKEY 00000080 00001008) (ACPI --
ibm/hotkey HKEY 00000080 00001009) (ACPI --
ibm/hotkey HKEY 00000080 0000100a) (ACPI --
ibm/hotkey HKEY 00000080 0000100b) (ACPI --
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.
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