Setup Arch Linux x86_64 on a Lenovo Thinkpad T400s

Last updated 2009:11:06.

Table of content

Overview
Current status
Installation
Hardware
> lspci
> lsusb
> Harddrive
> Graphic card
> Sound
> Expresscard
> USB
> eSATA
> LAN
> Wireless LAN
> UMTS
> Bluetooth
> Trackpoint
> Thinkpad buttons

Overview

I bought the T400s as a replacement for my > 5 year old T41p. I was - and I still am - really satisfied with the T41p (really, really robust machine that I have never ever experienced any problems with). So my expectations were quiet high regarding hardware quality and support - I was already kind of used to the 'old' quality that IBM offered.

You're wondering if I'm satisfied with the T400s? :-) Just one word: Yes! The quality of the hardware is excellent. It is a really light machine - a bit smaller than my old T41p. I really loved my old T41p keyboard, but I have to admit that the new Lenovo layout is a hugh improvement - unbelievable, but it really is! The only thing that I dislike is the non-hardware volume control. The mute button still is implemented 'in hardware', but the actual volume control is not anymore. I really love to use the trackpoint and it still feels as good as an IBM built trackpoint (very accurate etc.). Regarding the touchpad: I have to admit that I have never used it on the T41p and I will probably never use it on the T400s. Even though I like the feeling when touching it - the dots are a nice new feature. The screen is okay - this was the only thing I was worried about when buying this laptop (viewing angle is okay (not perfect) but it completely fits my needs and I am satisfied with the display. Please do not expect anything FlexView like...sad, but these times are over now...).

Current status (November 2009)

The table below lists provides an overview regarding the supported hardware.

Part Detailed information Module Comment
Harddrive TOSHIBA THNS128GG4BAAA-NonFDE (SSD) - I love it. Booting Arch (incl. starting up kdm) only takes 6 seconds!
Graphic Card Intel GMA 4500MHD i915 -
Sound Intel Corporation 82801I (ICH9 Family) HD Audio Controller snd_hda_intel -
Expresscard Intel Corporation 82801I (ICH9 Family) PCI Express Port - -
USB Intel Corporation 82801I (ICH9 Family) USB2 EHCI usb_core + uhci_hcd + ehci_hcd -
eSATA Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03) - Combined USB / eSATA port on the back.
LAN Intel Corporation 82567LM Gigabit Network Connection e1000e -
Wireless LAN Intel Corporation Wireless WiFi Link 5300 iwlagn (add it to the MODULES section of your rc.conf) -
UMTS Ericsson Business Mobile Networks BV cdc_adm + cdc_wdm (optional: cdc_ether) -
CD/DVD MATSHITA DVD-RAM UJ862AC - -
Bluetooth ? btusb + bluetooth -
Fingerprint reader Upek Biometric Touchchip/Touchstrip Fingerprint Sensor - Did not try to get it work since I won't use it!
Trackpoint Lenovo - -
Thinkpad buttons Lenovo - -

Completely working.
Might work - but not tested.
Not working, yet.

Installation

Just download the netinstall.iso for x86_64, burn it and install as usual and follow the Arch Linux Installation HOWTO. Of course it is also possible to setup Arch x86 (32 bit) on the T400s.

Hardware

This section describes the configuration of the T400s's hardware in detail.

lspci

00:00.0 Host bridge: Intel Corporation Mobile 4 Series Chipset Memory Controller Hub (rev 07)
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:02.1 Display controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07)
00:03.0 Communication controller: Intel Corporation Mobile 4 Series Chipset MEI Controller (rev 07)
00:03.2 IDE interface: Intel Corporation Mobile 4 Series Chipset PT IDER Controller (rev 07)
00:03.3 Serial controller: Intel Corporation Mobile 4 Series Chipset AMT SOL Redirection (rev 07)
00:19.0 Ethernet controller: Intel Corporation 82567LM Gigabit Network Connection (rev 03)
00:1a.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4 (rev 03)
00:1a.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5 (rev 03)
00:1a.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6 (rev 03)
00:1a.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2 (rev 03)
00:1b.0 Audio device: Intel Corporation 82801I (ICH9 Family) HD Audio Controller (rev 03)
00:1c.0 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 1 (rev 03)
00:1c.1 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 2 (rev 03)
00:1c.3 PCI bridge: Intel Corporation 82801I (ICH9 Family) PCI Express Port 4 (rev 03)
00:1d.0 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1 (rev 03)
00:1d.1 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2 (rev 03)
00:1d.2 USB Controller: Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3 (rev 03)
00:1d.7 USB Controller: Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1 (rev 03)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev 93)
00:1f.0 ISA bridge: Intel Corporation ICH9M-E LPC Interface Controller (rev 03)
00:1f.2 SATA controller: Intel Corporation ICH9M/M-E SATA AHCI Controller (rev 03)
00:1f.3 SMBus: Intel Corporation 82801I (ICH9 Family) SMBus Controller (rev 03)
03:00.0 Network controller: Intel Corporation Wireless WiFi Link 5300
05:00.0 SD Host controller: Ricoh Co Ltd Device e822 (rev 01)
05:00.1 System peripheral: Ricoh Co Ltd Device e230 (rev 01)

lsusb

Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 003: ID 0a5c:2145 Broadcom Corp.
Bus 004 Device 002: ID 147e:2016 Upek Biometric Touchchip/Touchstrip Fingerprint Sensor
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 0bdb:1900 Ericsson Business Mobile Networks BV
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Harddrive

You don't have to do apply any special settings in case you have an SSD. My entire SSD has just two partitions - a root partition and swap.

Here is what fdisk says:

Disk /dev/sda: 128.0 GB, 128035676160 bytes
240 heads, 63 sectors/track, 16539 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
Disk identifier: 0xdeadbeef

Device Boot      Start         End      Blocks   Id  System
/dev/sda1            1       16467   124490488+  83  Linux<
/dev/sda2        16468       16539      544320   82  Linux swap / Solaris

And here is what hdparm says (this was not messured under optimum conditions):

[user@computer ~]# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   12372 MB in  1.99 seconds = 6212.66 MB/sec
 Timing buffered disk reads:  610 MB in  3.00 seconds = 203.31 MB/sec

Graphic Card

Works out of the box.

Sound

Works out of the box. Just add your normal user to group "audio".

The only thing I'm still wonder about: kmix only shows me a Master channel and two microphones, but no PCM channel. I will investigate this when I have time (currently not a problem for me).

Expresscard

Seems to work out of the box. I don't have any Expresscard hardware - so I have not tested this.

USB

Works out of the box.

eSATA

I am confident that it works to use an external eSATA drive, but I don't own any. As soon as I have one, I will test this feature. By the way: My confidence comes from the dmesg output...

ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 4 ports 3 Gbps 0x33 impl SATA mode
ata1: SATA max UDMA/133 abar m2048@0xf2826000 port 0xf2826100 irq 27
ata2: SATA max UDMA/133 abar m2048@0xf2826000 port 0xf2826180 irq 27
ata5: SATA max UDMA/133 abar m2048@0xf2826000 port 0xf2826300 irq 27
ata6: SATA max UDMA/133 abar m2048@0xf2826000 port 0xf2826380 irq 27
ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300)
ata5: SATA link down (SStatus 0 SControl 300)
ata6: SATA link down (SStatus 0 SControl 300)

LAN

Works out of the box. In case you have an SSD within your T400s, the Gigabit network is now the bottleneck! ;-)

Wireless LAN

Works out of the box.

UMTS

Works out of the box. The Ericsson Business Mobile Networks is a USB device. Please note that you need to insert a SIM card - otherwise the UMTS module nor the GPS will work. Yes, this is correct, without a SIM card, the GPS will NOT work!
In order to get the UMTS card to work, do the following:

1.) Physically insert a SIM card and load the cdc_acm module.

2.) "dmesg" should now output the following:

[user@computer]$ dmesg
...
cdc_acm 3-4:1.1: ttyACM0: USB ACM device
cdc_acm 3-4:1.3: ttyACM1: USB ACM device
cdc_acm 3-4:1.9: ttyACM2: USB ACM device
...

And lsusb should now show the following USB device:

[user@computer]# lsusb
...
Bus 003 Device 002: ID 0bdb:1900 Ericsson Business Mobile Networks BV
...

In case the device is not shown by "lsusb", you did not load the modules or your radio devices are turned off completely (you can turn on the radio devices again by changing the switch on the right side of your Thinkpad).

3.) Now use "comgt" (aptget -S comgt) to enter the PIN number of the SIM card using /dev/ttyACM0:

[user@computer]$ sudo comgt -d /dev/ttyACM0
Enter PIN number:

4.) Enter your PIN and press enter. Please note: Your PIN will be displayed in clear text! Afterwards the card will logon the UMTS / GSM network.

5.) Edit your wvdial.conf (agt-get -S wvdial). In case you use o2 Germany and have "Internet Flat M" booked, you can use the configuration below. For other networks, please use your favourite search engine! ;-) Please note: Use the configuration below at your own risk (I found it somewhere on the Internet - I will add a reference to the original source as soon as I find the link again...). I am not responsible for any trouble or legal issues you might have with it.

[Dialer Defaults]
New PPPD = yes
Stupid Mode = 1                  
Modem Type = USB Modem       

[Dialer signal]
Modem = /dev/ttyACM1
Init1 = AT+CSQ
Init2 = AT+COPS?

[Dialer gps]
Modem = /dev/ttyACM1
Init1 = AT*E2GPSCTL=1,1,1
Init2 = AT*E2GPSNPD

[Dialer on]
Modem = /dev/ttyACM1
Init1 = AT+CFUN=1

[Dialer off]
Modem = /dev/ttyACM1
Init1 = AT+CFUN=4

[Dialer connect]
Modem = /dev/ttyACM1
Init1 = AT
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","surfo2"
Baud = 460800
ISDN = 0
Phone = *99***1#
Password = *
Username = *


6.) Type the following to initialize the UMTS card:

[user@computer]# sudo wvdial on
--> WvDial: Internet dialer version 1.61
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: AT+CFUN=1
AT+CFUN=1
OK
--> Modem initialized.
--> Configuration does not specify a valid phone number.
--> Configuration does not specify a valid login name.
--> Configuration does not specify a valid password.

7.) Type the following to connect:

[user@computer]# sudo wvdial connect

8.) The card will connect to the UMTS / GSM network now, to close the connection press Ctrl + C.

9.) You can also use the GPS now by turning it on via:

[user@computer]# sudo wvdial gps

Bluetooth

Works out of the box. Thanks to the integrated UMTS card I don't really have the need for Bluetooth anymore.

Trackpoint

Below you find the part of my xorg.conf that I used to enable x and y scrolling.

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "CorePointer"
        Option      "Protocol" "ExplorerPS/2"
        Option      "Device" "/dev/input/mice"
        Option      "Emulate3Buttons" "on"
        Option      "EmulateWheel" "on"
        Option      "EmulateWheelTimeout" "200"
        Option      "EmulateWheelButton" "2"
        Option      "YAxisMapping" "4 5"
        Option      "XAxismapping" "6 7"
	Option      "ZAxisMapping" "4 5"
EndSection

Thinkpad buttons

I have mapped all of them, yet, but this is straight forward. Use "xev" (start it under X) to figure out the key code of the button you want to map. Add the code to your ~./.Xmodmap similar as shown below for the volume up / down keys.

keycode 174 = XF86AudioLowerVolume
keycode 176 = XF86AudioRaiseVolume