ThinkPad X61s
From FrugalWiki
Contents |
Introduction
This is a subnotebook from Lenovo. The machine is not an 'IBM ThinkPad' already, it means it has Windows buttons (yuck), but there are good innovations as well which are unknown on the IBM models, for example a hardware switch for the wireless, and a FireWire port. Oh yeah, and of course the Core 2 Duo 64bit CPU with the 'Vanderpool' technology...
I have installed Frugalware-i686 0.9pre1 with kernel 2.6.25-fw6 and KDE. GRUB could not be installed; see details below.
Personal experience: The battery life is around 5 hours when using wireless. I have the 8-cell battery which extends from the back of the machine by ~4cm. The area under the right palm may get quite hot, I guess maybe the hard disk is there. The bottom of the machine is too hot to hold it in your lap. The screen is very nice, the fonts look sharp with anti-aliasing. The keyboard is comfortable but some keys are small (Backspace, Tab). The weight of the machine is around 1500 g, 1 kg lighter than my 15" T43. The CPU fan is quiet even when running. During regular work, the fan is usually on. The sound of the speaker is of low quality.
A Hungarian version of this document can be found here.
UPDATE: Screen brightness adjustment problem partially fixed!
UPDATE: X.Org/Intel font rendering/acceleration problem fixed!
UPDATE 2008-08-19: Screen brightness adjustment problem almost fixed!
Hardware information
- Model: ThinkPad X61s (7666-3EG) Made in Singapore
- Vendor: Lenovo (China)
- BIOS: LENOVO (supported by thinkpad-acpi driver)
- CPU: Intel Core 2 Duo L7500 (Low Voltage) 1.6GHz/800MHz FSB, 4MB L2 cache, Intel VT virtualization
- Memory: 1024MB DDR2 PC2-5300/667MHz (4GB max) +added 1024MB
- Graphics: Intel X3100 (Intel GM965 chipset), D-Sub VGA output connector
- Screen: 12.1" LCD screen (1024x768)
- Network
- Ethernet: Intel 82566MM Gigabit Network Connection
- Wireless: Intel PRO/Wireless 4965AGN (N disabled) MiniPCI-Express slot
- Storage
- Hard disk: WDC WD1200BEVS 120 GB SATA with HDAPS (HDD shock protection)
- Other storage: Ricoh RL5c476 PCMCIA/PC Card slot
- Other storage: Ricoh R5C822 SD/MMC card reader
- Audio: Intel HD Audio AC'97 controller
- Modem: Intel AC'97 modem
- Bluetooth:
- Pointer: TrackPoint (PS/2)
- USB: 3x USB 2.0 ports, USB boot supported
- FireWire: Ricoh R5C832 1 port
- Fingerprint reader: SGS Thomson Microelectronics Fingerprint Reader (USB bus)
- Intel Active Management Technology remote management
- Security Chip
- Data Execution Prevention (Memory Protection) against Windows malware
- Operating system: Microsoft Windows XP and a 'recovery partition (WinPE?)' pre-installed (I deleted them)
Works out of the box
- USB boot (BIOS)
- Ethernet
- Wireless (requires binary firmware to be installed)
- Suspend to RAM (under X, screen backlight goes away; switch to tty2 and back brings it back)
- Sound with alsa (after unmuting Speaker in alsamixer)
- ThinkLight
- SATA with controller in AHCI mode
- TrackPoint mouse
- SDHC slot (probably works; module sdhci is loaded)
- PCCard slot (probably works; module yenta_socket and cardmgr are active)
- FireWire (probably works; firewire* modules are loaded) including Ethernet over FireWire
- Temperature/fan speed sensors (with thinkpad-acpi driver)
Needs configuration
- CPU frequency scaling (load acpi_cpufreq and cpufreq_ondemand; BIOS powersave settings are ignored by kernel)
- ACPI power management (load battery and ac)
- Screen brightness (Fn hotkeys do not work; see below)
Does not work yet
- Volume keys
- Other Fn keys (not tested thoroughly)
Will probably never work
- Boot from SD card is not supported by BIOS
- Wireless-N mode of the card is disabled by firmware/BIOS
- Wireless card does not support sniffing (promiscuous mode)
- Modem is not recognized by the kernel
Not tested
- Fingerprint reader (should work with thinkfinger, bioapi and other utilities)
- External VGA output
- HD Active Protection
- Wake up on LAN
- Eye candy (Beryl/Compiz/3D acceleration)
- ThinkPad Ultrabase X6 docking station (I don't have any)
- Bluetooth
Installation notes for Frugalware 0.9pre1
Method of installation
I prefer the following installation scheme when running -current:
- install base and network with netinstall
- upgrade this minimal system
- install and configure X.Org (xorg-server and the video driver)
- install a desktop environment, then all the rest
Installation parameters: 2GB swap at the beginning of the disk, ext3 filesystem for / and ext2 for /boot.
Boot loader
For those who don't know, there are two versions of the GNU GRUB boot loader: grub-legacy (version 0.97 to date) which supports most filesystems but has problems with special situations, and grub2 (actual version 1.96) which has many new features, can boot JFS but it lacks many essential features. The two have different configuration files, operation and syntax.
I could not install GRUB (grub-legacy, version 0.97) to the disk MBR. In fact, it turned out only after reboot from the installer... During install, I did not check tty4 to see if there were any errors.
Problem 1: After the first reboot, the BIOS could not find 'a valid operating system' on the disk. When trying to boot from whichever device (netinstall CD or another live USB drive), I got 'Invalid or unsupported executable format', it couldn't detect any valid files in the root partition. Normally, Tab completion should find the kernel on the selected partition. This was later resolved by creating a separate 64MB ext2 partition for /boot.
Examining the beginning of the disk, it turned out that the factory installed 'recovery partition' remained on the disk. (If you have a similar problem, the simplest method to check it is the following: copy the beginning of the disk to a file with 'dd if=/dev/sda of=sda.mbr bs=1024k count=1', then look at its readable contents with 'strings sda.mbr | more'.) I flushed the MBR with overwriting it with zero, but I had to reinstall the base system.
Problem 2: After creating the /boot partition, I could boot my new system from the GRUB of the install CD. But still, already on the installed system, grubconfig crashed with segfault, grub-install complained about an invalid device. I compiled grub2 (1.96 stable release) for myself. The compilation requires the following Frugalware packages be installed: lzo binutils bison gcc kernel-headers m4. Don't forget to uninstall grub first, then go along the usual './configure; make; make install' way. It will install to /usr/local. If running 'grub-install /dev/sda' was successful, you must create a configuration file for it: /boot/grub/grub.cfg - here is mine. Adjust the device containing /boot and your root partition (hd0,3 is sda3 in Linux). I don't think the 'set root' is relevant here. NOTE: You don't need a separate /boot partition with grub2!
set default=0 set timeout=3 set root=(hd0,1) #terminal console menuentry "Frugalware" { linux (hd0,3)/boot/vmlinuz root=/dev/sda2 ro quiet }
X.Org configuration
With the xf86-video-intel driver, fonts are broken. Remove the hash mark from the line NoAccel so the option gets activated - see the section Device below:
Section "Device" ### Available Driver options are:- ### Values: <i>: integer, <f>: float, <bool>: "True"/"False", ### <string>: "String", <freq>: "<f> Hz/kHz/MHz" ### [arg]: arg optional Option "NoAccel" # [<bool>] # <=====================| #Option "SWcursor" # [<bool>] #Option "ColorKey" # <i> #Option "CacheLines" # <i> #Option "Dac6Bit" # [<bool>] #Option "DRI" # [<bool>] #Option "NoDDC" # [<bool>] #Option "ShowCache" # [<bool>] #Option "XvMCSurfaces" # <i> #Option "PageFlip" # [<bool>] Identifier "Card0" Driver "intel" VendorName "Intel Corporation" BoardName "Mobile GM965/GL960 Integrated Graphics Controller" BusID "PCI:0:2:0" EndSection
Screen brightness hack
In fact, you can adjust brightness with Fn keys outside the Linux kernel. Do the following: adjust the brightness while GRUB is loading. When X is running, switch to a text console and back to X again. The brightness will then be set to the value you selected before.
This method never worked reliably. See another, working method below.
=> UPDATE: The brightness can be adjusted with the procfs interface of thinkpad-acpi module.
Here is how to adjust the brightness:
echo up > /proc/acpi/ibm/brightness # increase brightness by 1 step echo down > /proc/acpi/ibm/brightness # decrease brightness by 1 step echo "level 0" > /proc/acpi/ibm/brightness # you can specify a value from 0 to 15
However, if you exit X or close and open the lid, the brightness will jump to the maximum again. UPDATE: this problem is now almost fixed with udev 126-2; if the brightness is previously set to level 0, it will maximize after X startup, but it will remain at the previous level if it was set higher than 0.
Note on usage of 'echo' with sudo: 'sudo echo foo > /proc/some/entry' will not work. Write a shell script instead, and run the script with (probably NOPASSWD) sudo.
Kernel modules
There are plenty of kernel modules loaded by default. It is advisable to go through the list of '/sbin/lsmod' and carefully select what is unnecessary for you. Put any unneeded modules in '/etc/modprobe.d/blacklist'. I blacklisted the PC speaker, the parallel port, the FireWire and the PCMCIA, and my wireless network profile includes a pre_up line which unloads the Ethernet module. If some of the modules don't get loaded upon boot, just add them to '/etc/sysconfig/modules'. See my notes in the section 'Needs configuration'.
Further tweaks
Install and run powertop to see what else you can do for a longer battery life. For example:
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
I adjusted /etc/sysctl.conf as follows:
vm.dirty_writeback_centisecs=0 vm.dirty_expire_centisecs=0 vm.swappiness=10
I mount my ext3 filesystems with the 'noatime' option. ("The "noatime" option keeps the kernel from logging every (read and write) access to the file.") (*)
I use the following settings to increase the response of the TrackPoint:
echo -n 150 > /sys/devices/platform/i8042/serio1/sensitivity echo -n 150 > /sys/devices/platform/i8042/serio1/speed
(*) Text copied from the Gentoo Wiki
The following settings control the CPU fan speed. WARNING: it may damage the hardware!
echo "level 7" > /proc/acpi/ibm/fan # sets fan to ~4480 rpm echo "level 6" > /proc/acpi/ibm/fan # sets fan to ~4440 rpm echo "level 5" > /proc/acpi/ibm/fan # sets fan to ~3750 rpm echo "level 4" > /proc/acpi/ibm/fan # (no effect?) echo "level 3" > /proc/acpi/ibm/fan # (no effect?) echo "level 2" > /proc/acpi/ibm/fan # sets fan to ~3500 rpm echo "level 1" > /proc/acpi/ibm/fan # sets fan to ~3380 rpm echo "level 0" > /proc/acpi/ibm/fan # DISABLES fan
Appendix: Device list
gabor@carbo:~$ lspci 00:00.0 Host bridge: Intel Corporation Mobile Memory Controller Hub (rev 0c) 00:02.0 VGA compatible controller: Intel Corporation Mobile Integrated Graphics Controller (rev 0c) 00:02.1 Display controller: Intel Corporation Mobile 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 Mobile LPC Interface Controller (rev 03) 00:1f.1 IDE interface: Intel Corporation Mobile IDE Controller (rev 03) 00:1f.2 SATA controller: Intel Corporation Mobile SATA AHCI Controller (rev 03) 00:1f.3 SMBus: Intel Corporation 82801H (ICH8 Family) SMBus Controller (rev 03) 03:00.0 Network controller: Intel Corporation Device 4230 (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) 05:00.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 21)
Appendix: Related resources
- Lenovo Shop - ThinkPad X Series
- Lenovo Support & downloads - Drivers and software - ThinkPad X61, X61s (for Windows)
- Lenovo ThinkPad X61s - ThinkWiki
- Installing Sidux (Debian Sid) on Lenovo/IBM Thinkpad X61s
- Linux.com :: Thinkpad X61s and Linux
- IBM Integrated Fingerprint Reader - ThinkWiki
- ThinkFinger (GPL driver)