Difference between revisions of "Lenovo ThinkPad T400"

From ArchWiki
Jump to: navigation, search
(New page: Category:Laptops (English) Category:HOWTOs (English) ==System Sepcification== *CPU : Intel® Core™2 Duo Processor T9400 (6M Cache, 2.53 GHz, 1066 MHz FSB) *Memory : 3GB PC3-8500...)
 
(flagged broken section links (interactive))
(Tag: wiki-scripts)
 
(111 intermediate revisions by 38 users not shown)
Line 1: Line 1:
[[Category:Laptops (English)]]
+
[[Category:Lenovo]]
[[Category:HOWTOs (English)]]
+
{{Style|Numerous spelling, grammar, and style issues.}}
 +
{{Related articles start}}
 +
{{Related|Lenovo ThinkPad T400s}}
 +
{{Related articles end}}
 +
Installation instructions for the Lenovo ThinkPad T400.
 +
 
 +
==System Specification==
 +
 
 +
Note, [[wikipedia:ThinkPad_T_Series|ThinkPad T400]] is available in a few hardware variants. Check the [http://www.thinkwiki.org ThinkWiki] where details of hardware specification are discussed in the [http://www.thinkwiki.org/wiki/Category:T400 T400] category.
 +
 
 +
Below is an overview of the T400 specifications as originally used to start this article:
  
==System Sepcification==
 
 
*CPU : Intel® Core™2 Duo Processor T9400 (6M Cache, 2.53 GHz, 1066 MHz FSB)
 
*CPU : Intel® Core™2 Duo Processor T9400 (6M Cache, 2.53 GHz, 1066 MHz FSB)
 
*Memory : 3GB PC3-8500 DDR3
 
*Memory : 3GB PC3-8500 DDR3
Line 10: Line 19:
 
*Integrated Graphics : Intel 4500MHD
 
*Integrated Graphics : Intel 4500MHD
 
*Discrete Graphics : AMD M82XT Hybrid 256 MB (ATI Mobility Radeon HD 3470)
 
*Discrete Graphics : AMD M82XT Hybrid 256 MB (ATI Mobility Radeon HD 3470)
*Screen : 14.1" WXGA+ TFT with LED Backlit
+
*Screen : 14.1" WXGA+ TFT with LED Backlight
 
*Gigabit Ethernet, Modem
 
*Gigabit Ethernet, Modem
 
*Express Card & PC Card Slots
 
*Express Card & PC Card Slots
Line 17: Line 26:
 
*No fingerprint reader
 
*No fingerprint reader
 
*No Intel Turbo Memory
 
*No Intel Turbo Memory
 +
 +
==Installation==
 +
Even with the latest BIOS update,T400 BIOS does not support EFI, but can handle GPT disk.
  
 
==Network==
 
==Network==
===Ethernet Card===
+
===Ethernet===
The kernel module to get the network card to work is e1000e. I had no problem getting it to work
+
The [[kernel module]] to get the network card to work is {{ic|e1000e}}.
  
 
===Wireless===
 
===Wireless===
The drivers are included in the 2.6.27 kernel. However, it's important to make sure that you have the correct firmware. I installed the iwlwifi-5000-ucode. See [[Wireless#iwl3945.2C_iwl4965_and_iwl5000-series|this section]] for more details.
+
Lenovo offers different options in wireless hardware:
 +
 
 +
====Intel chipset====
 +
*Wifi link 5100 and 5300
 +
 
 +
See [[Wireless network configuration#Intel]].
 +
 
 +
====Realtek chipset====
 +
 
 +
*Rtl8192SE
 +
  11b/g/n Wireless Lan Mini-PCI Express Adapter II
 +
  03:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device 8172 (rev 10)
 +
 
 +
See http://www.thinkwiki.org/wiki/ThinkPad_11b/g/n_Wireless_LAN_Mini-PCI_Express_Adapter_II for more details.
 +
 
 +
===Modem===
 +
There is a module "hsfmodem" provided by http://www.linuxant.com/.
 +
 
 +
===Bluetooth===
 +
 
 +
If you have [http://www.thinkwiki.org/wiki/Thinkpad-acpi thinkpad-acpi] kernel module loaded, you can enable and disable Bluetooth from command line. To enable:
 +
 
 +
{{bc|# echo 1 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable}}
 +
 
 +
To disable:
 +
 
 +
{{bc|# echo 0 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable}}
 +
 
 +
To disable or enable Bluetooth at startup, add one of the above commands to {{ic|/etc/rc.local}}.
  
==Graphics==
+
The bluetooth module requires {{ic|uhci_hcd}}. Make sure {{ic|/etc/modprobe.d/modprobe.conf}} does not blacklist it.
Note that it's not possible to switch the graphics adapter without rebooting and choosing between the Integrated and Discrete Graphics in the BIOS. This setting is under "config->Display". Note that I enabled the '''testing''' repository, which gave me access to :
+
 
*xorg-server version 1.5.3
+
For everything else related to Bluetooth, follow the procedure described in [[Bluetooth]] section of the Arch Wiki.
*xf86-video-intel version 2.4.2
+
 
*xf86-video-ati version 6.9
+
==Graphics/Xorg Configuration==
*xf86-video-radeonhd 1.2.3
+
Note that it's possible to switch the graphics adapter by only restarting X, but It's quite useless since you can't power up/down a graphic-card without rebooting. So it's either both graphic-card on at all times, or do the switching in the BIOS.
*catalyst version 8.11
+
 
 +
So please press the ThinkVantag-button» during boot up and enable either the Integrated or the Discrete graphics cards in your BIOS's "Config->Display" menu.
  
 
===Integrated Graphics===
 
===Integrated Graphics===
After installing [[Xorg#Installing_Xorg|xorg]], I installed the xf86-video-intel drivers [[Intel_Graphics|xf86-video-intel drivers]]. As root, I then ran '''X -configure'''. The generated xorg.conf worked fine. I did apply the [[Intel_Graphics#2D|2D]] and [[Intel_Graphics#3D|3D]] optimization, and performances in compositing window managers (like compiz or kwin) seem to have increased. I have not made any scientific measurements though.  
+
After installing [[Xorg#Installation|xorg]], I installed the [[Intel|xf86-video-intel drivers]].
  
 
===Discrete Graphics===
 
===Discrete Graphics===
All 3 ATI drivers worked. That is xf86-video-ati, xf86-video-radeonhd and flgrx (the catalyst proprietary drivers).
+
See [[ATI]] for the open-source driver or [[AMD Catalyst]] for the proprietary driver.
  
To get xf86-video-ati working, follow those [[ATI#Open-Source_ATI_Drivers|instructions]]. The same instructions apply for xf86-video-radeonhd with those 2 modifications :
+
===Switchable Graphics===
*Install xf86-video-radeonhd instead of xf86-video-ati
+
[[ATI#Hybrid graphics/AMD Dynamic Switchable Graphics]]
*Under the Device section of you xorg.conf, you should use '''Driver "radeonhd"''' instead of '''Driver "radeon"'''
 
I could not get the xf86-video-radeonhd drivers to detect my external monitor, but xf86-video-ati worked fine. Remember to remove catalyst and catalyst-utils before using an open source ATI drivers. ATI uses its own OpenGL library in it's proprietary drivers, which is included in catalyst-utils and conflicts with libgl.
 
  
To get the catalyst drivers working, I followed this [[ATI#ATI_Catalyst_proprietary_driver|procedure]]. Then, I configured it by following this [[ATI#Configuration|procedure]] . I did encounter a problem that I have not been able to solve yet : resizing a window in a compositing takes 1-2 seconds. This makes the drivers pretty much unusable.
+
===Synaptic, UltraNav===
 +
You may need to install the {{ic|xf86-input-synaptics}} package.
 +
 
 +
If you want to be able to use horizontal and vertical scroll with your touchpad add this lines to your xorg.conf
 +
 
 +
Section "Module"
 +
  ......
 +
  Load    "synaptics"
 +
EndSection
 +
 +
Section "InputDevice"
 +
  Identifier  "Touchpad"
 +
  Driver    "synaptics"
 +
  Option    "AlwaysCore"
 +
  Option    "Device" "/dev/input/mouse1"
 +
  Option    "Protocol" "auto-dev"
 +
  Option    "SendCoreEvents"  "true"
 +
  Option    "LeftEdge"    "1632"
 +
  Option    "RightEdge"    "5312"
 +
  Option    "TopEdge"    "1575"
 +
  Option    "BottomEdge"    "4281"
 +
  Option    "FingerLow"    "25"
 +
  Option    "FingerHigh"    "30"
 +
  Option    "MaxTapTime"    "180"
 +
  Option    "MaxTapMove"    "220"
 +
  Option    "VertScrollDelta"  "100"
 +
  Option    "MinSpeed"    "0.06"
 +
  Option    "MaxSpeed"    "0.12"
 +
  Option    "AccelFactor"    "0.0010"
 +
  Option    "VertEdgeScroll"  "on"
 +
  Option    "HorizEdgeScroll"  "on"
 +
  # Option HorizScrollDelta""0"                             
 +
  Option    "SHMConfig"  "on"
 +
EndSection
 +
 
 +
for trackpoint with third button paste & scroll add these few lines to xorg.conf too
 +
 
 +
Section "InputDevice"
 +
  Identifier  "Trackpoint"
 +
  Driver      "mouse"
 +
  Option "CorePointer"
 +
  Option "Device" "/dev/input/mice"
 +
  Option "Protocol" "Auto"
 +
  Option "Emulate3Buttons"
 +
  Option "Emulate3Timeout" "50"
 +
  Option "EmulateWheel" "on"
 +
  Option "EmulateWheelTimeout" "200" # adjust third button paste timeout.  
 +
  Option "EmulateWheelButton" "2"
 +
  Option "YAxisMapping" "4 5"
 +
  Option "XAxisMapping" "6 7"
 +
  Option "YAxisMapping" "4 5"
 +
EndSection
 +
 
 +
finally update your layout
 +
 
 +
Section "ServerLayout"
 +
  InputDevice    "Trackpoint" "CorePointer"
 +
  InputDevice    "Touchpad"
 +
  InputDevice    "Keyboard0" "CoreKeyboard"
 +
EndSection
  
 
==Audio==
 
==Audio==
Working, todo : document.
+
Once you have [[ALSA]] installed, fire up alsamixer and make sure that sound is not muted. You might also want to press the Volume Up or Volume Down button. It seems than the Mute button mutes everything, even system beeps. Pressing the Volume Up or Volume Down button can unmute, but not pressing the Mute button again.
 +
 
 +
Here's the modules I have loaded that are relevant to sound :
 +
  $ lsmod | grep snd
 +
  snd_seq_oss            35584  0
 +
  snd_seq_midi_event      9344  1 snd_seq_oss
 +
  snd_seq                58336  4 snd_seq_oss,snd_seq_midi_event
 +
  snd_seq_device          9364  2 snd_seq_oss,snd_seq
 +
  snd_hda_intel        474672  2
 +
  snd_hwdep              10632  1 snd_hda_intel
 +
  snd_pcm_oss            45568  0
 +
  snd_pcm                82440  2 snd_hda_intel,snd_pcm_oss
 +
  snd_timer              24720  2 snd_seq,snd_pcm
 +
  snd_page_alloc        10640  2 snd_hda_intel,snd_pcm
 +
  snd_mixer_oss          18944  1 snd_pcm_oss
 +
  snd                    64840  16    snd_seq_oss,snd_seq,snd_seq_device,snd_hda_intel,snd_hwdep,snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss
 +
  soundcore              9632  1 snd
 +
 
 +
Additionally, there is a patch for the audio driver for conexant's chipsets provided by http://www.linuxant.com which can be downloaded at http://www.linuxant.com/alsa-driver/.
  
 
==Multimedia Keys==
 
==Multimedia Keys==
Working, todo : document.
+
{{Merge|Xmodmap|everything is covered in the main article, no need to duplicate}}
 +
The screen brightness controls and the flashlight work without any tweaking. The other keys can be mapped using [[xev]] and xbindkeys. By following [http://wiki.linuxquestions.org/wiki/Configuring_keyboards#Enabling_Keyboard_Multimedia_Keys this guide] you should be able to get everything working, but here's summary :
 +
 
 +
*First, open a terminal and type <code>xev</code>. This starts the "Event tester".
 +
*Place your cursor on the "Event tester" window.
 +
*When you press a key on your keyboard or move your mouse, it should get displayed in a terminal. For instance, this is what shows up if you press Fn+F2
 +
    KeyRelease event, serial 33, synthetic NO, window 0x3000001,
 +
    root 0x86, subw 0x0, time 5537544, (76,110), root:(81,938),
 +
    state 0x0, '''keycode 146''' (keysym 0x0, '''NoSymbol'''), same_screen YES,
 +
    XLookupString gives 0 bytes:
 +
    XFilterEvent returns: False
 +
It basically says that '''keycode 146''' is not bound ('''NoSymbol''').
 +
Here are all the keycodes of all multimedia buttons:
 +
 
 +
  Volume Down : keycode 174
 +
  Volume Up : keycode 176
 +
  Fn+F2 : keycode 146
 +
  Fn+F3 : keycode 241
 +
  Fn+F4 : keycode 223
 +
  Fn+F5 : Not responding to events ??
 +
  Fn+F7 : keycode 214
 +
  Fn+F8 : keycode 249
 +
  Fn+F9 : keycode 207
 +
  Fn+F12 : keycode 165
 +
  Fn+Up : keycode 164
 +
  Fn+Down : keycode 162
 +
  Fn+Left : keycode 144
 +
  Fn+Right : keycode 153
 +
  Fn+Home : keycode 212
 +
  Fn+End : keycode 101
 +
*Type <code>xmodmap -pke > ~/.Xmodmap</code> in a terminal. This creates a file, <code>.Xmodmap</code>, containing your current keyboard mapping.
 +
*Now open the file with a text editor and find the keycodes you're interested in. You can map any keycode with a symbol from [http://wiki.linuxquestions.org/wiki/XF86_keyboard_symbols this list].
 +
*To get your new <code>.Xmodmap</code> loaded when you start X, just add <code>xmodmap ~/.Xmodmap</code> to your .xinitrc.
 +
*To get your new <code>.Xmodmap</code> loaded immediately, type <code>xmodmap ~/.Xmodmap</code> in a terminal.
 +
 
 +
To assign functions to your newly bound keys, see [[Keyboard configuration in Xorg#Keybinding]]{{Broken section link}}.
 +
 
 +
To use <code>xbindkeys</code>,
 +
*Start by installing it
 +
  pacman -S xbindkeys
 +
*Then add <code>xbindkeys &</code> to your .xinitrc.
 +
*And finally, in your home directory, create a file called <code>.xbindkeysrc.scm</code> with content that would look something like
 +
  (xbindkey '("XF86Standby") "sudo killall dhcpcd && sudo pm-suspend")
 +
  (xbindkey '("XF86AudioRaiseVolume") "amixer set Master 2dB+ unmute")
 +
  (xbindkey '("XF86AudioLowerVolume") "amixer set Master 2dB- unmute")
 +
 
 +
Note, in more recent Arch (kernel 3.4.2, xorg-server 1.12.2, laptop-mode-tools 1.61), on the T400, related keys combinations binding seems to be:
 +
*Fn+2 → XF86ScreenSaver
 +
*Fn+4 → XF86Sleep & XF86Wakeup
 +
*Fn+12 → XF86Suspend
 +
 
 +
Now, the actual action will performed on XF86Sleep or XF86Suspend is configurable in session policy, so it may vary (e.g. depending on desktop environment).
 +
If nomenclature of XF86Standby, XF86Hibernate or XF86Sleep is confusing, check the thread [http://thread.gmane.org/gmane.linux.acpi.devel/37554 suspend / hibernate nomenclature] for in-depth explanation.
 +
 
 +
===Mute===
 +
To get the mute button to work, it is necessary to pass the string <code>acpi_osi="Linux"</code> to the kernel as a boot parameter. In GRUB2, add it to the "linux" line. See [http://www.thinkwiki.org/wiki/Mute_button here] for more details.
 +
 
 +
With the 3.1 bios, it seems that the mute button works normally (set it up the same as the volume buttons with, for instance, "amixer set Master toggle").
  
 
==ACPI==
 
==ACPI==
Working, todo : document.
+
To enable the fan speed control, it's necessary to load the thinkpad_acpi with option fan_control=1. After the thinkpad_acpi module is loaded with this option, you can monitor and adjust the fan speed via /proc/acpi/ibm/fan.
 +
 
 +
==SUSPEND-RESUME==
 +
People have been having issues with suspend resume with the current intel xf86-video-intel 2.4.3.1 drivers in combination with the 4500mhd chipset. This is apparently an issue with concurrency as adding the following script (with mod 755) in /etc/pm/sleep.d fixes things. to some extent...
 +
 
 +
#!/bin/sh
 +
# Workaround for concurrency bug in xserver-xorg-video-intel 2:2.4.1-1ubuntu10.
 +
# Save this as /etc/pm/sleep.d/00CPU
 +
 +
. "/usr/lib/pm-utils/functions"
 +
 
 +
case "$1" in
 +
hibernate|suspend)
 +
for i in /sys/devices/system/cpu/cpu*/online ; do
 +
echo 0 >$i
 +
done
 +
;;
 +
thaw|resume)
 +
sleep 10 # run with one core for 10 secs
 +
for i in /sys/devices/system/cpu/cpu*/online ; do
 +
echo 1 >$i
 +
done
 +
;;
 +
*)
 +
;;
 +
esac
 +
 
 +
== Dock ==
 +
 
 +
See [[dockd]].
  
==Bluetooth==
+
From http://ubuntu-virginia.ubuntuforums.org/showpost.php?p=6105510&postcount=12 petri4 on the ubuntu forums.
TODO
 

Latest revision as of 15:49, 13 October 2018

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Numerous spelling, grammar, and style issues. (Discuss in Talk:Lenovo ThinkPad T400#)

Installation instructions for the Lenovo ThinkPad T400.

System Specification

Note, ThinkPad T400 is available in a few hardware variants. Check the ThinkWiki where details of hardware specification are discussed in the T400 category.

Below is an overview of the T400 specifications as originally used to start this article:

  • CPU : Intel® Core™2 Duo Processor T9400 (6M Cache, 2.53 GHz, 1066 MHz FSB)
  • Memory : 3GB PC3-8500 DDR3
  • WiFi : Intel WiFi Link 5300
  • Hard-Drive : 160GB, 7200rpm
  • Optical Drive : DVD Recordable
  • Integrated Graphics : Intel 4500MHD
  • Discrete Graphics : AMD M82XT Hybrid 256 MB (ATI Mobility Radeon HD 3470)
  • Screen : 14.1" WXGA+ TFT with LED Backlight
  • Gigabit Ethernet, Modem
  • Express Card & PC Card Slots
  • Integrated Bluetooth PAN
  • No camera
  • No fingerprint reader
  • No Intel Turbo Memory

Installation

Even with the latest BIOS update,T400 BIOS does not support EFI, but can handle GPT disk.

Network

Ethernet

The kernel module to get the network card to work is e1000e.

Wireless

Lenovo offers different options in wireless hardware:

Intel chipset

  • Wifi link 5100 and 5300

See Wireless network configuration#Intel.

Realtek chipset

  • Rtl8192SE
 11b/g/n Wireless Lan Mini-PCI Express Adapter II
 03:00.0 Network controller: Realtek Semiconductor Co., Ltd. Device 8172 (rev 10)

See http://www.thinkwiki.org/wiki/ThinkPad_11b/g/n_Wireless_LAN_Mini-PCI_Express_Adapter_II for more details.

Modem

There is a module "hsfmodem" provided by http://www.linuxant.com/.

Bluetooth

If you have thinkpad-acpi kernel module loaded, you can enable and disable Bluetooth from command line. To enable:

# echo 1 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable

To disable:

# echo 0 > /sys/devices/platform/thinkpad_acpi/bluetooth_enable

To disable or enable Bluetooth at startup, add one of the above commands to /etc/rc.local.

The bluetooth module requires uhci_hcd. Make sure /etc/modprobe.d/modprobe.conf does not blacklist it.

For everything else related to Bluetooth, follow the procedure described in Bluetooth section of the Arch Wiki.

Graphics/Xorg Configuration

Note that it's possible to switch the graphics adapter by only restarting X, but It's quite useless since you can't power up/down a graphic-card without rebooting. So it's either both graphic-card on at all times, or do the switching in the BIOS.

So please press the ThinkVantag-button» during boot up and enable either the Integrated or the Discrete graphics cards in your BIOS's "Config->Display" menu.

Integrated Graphics

After installing xorg, I installed the xf86-video-intel drivers.

Discrete Graphics

See ATI for the open-source driver or AMD Catalyst for the proprietary driver.

Switchable Graphics

ATI#Hybrid graphics/AMD Dynamic Switchable Graphics

Synaptic, UltraNav

You may need to install the xf86-input-synaptics package.

If you want to be able to use horizontal and vertical scroll with your touchpad add this lines to your xorg.conf

Section "Module"
 ......
 Load    "synaptics"
EndSection

Section "InputDevice"
 Identifier  "Touchpad"
 Driver    "synaptics"
 Option    "AlwaysCore"
 Option    "Device" "/dev/input/mouse1"
 Option    "Protocol" "auto-dev"
 Option    "SendCoreEvents"  "true"
 Option    "LeftEdge"    "1632"
 Option    "RightEdge"     "5312"
 Option    "TopEdge"     "1575"
 Option    "BottomEdge"    "4281"
 Option    "FingerLow"     "25"
 Option    "FingerHigh"    "30"
 Option    "MaxTapTime"    "180"
 Option    "MaxTapMove"    "220"
 Option    "VertScrollDelta"   "100"
 Option    "MinSpeed"    "0.06"
 Option    "MaxSpeed"    "0.12"
 Option    "AccelFactor"     "0.0010"
 Option    "VertEdgeScroll"  "on"
 Option    "HorizEdgeScroll"   "on"
 # Option HorizScrollDelta""0"                               
 Option    "SHMConfig"   "on"
EndSection 

for trackpoint with third button paste & scroll add these few lines to xorg.conf too

Section "InputDevice"
 Identifier  "Trackpoint"
 Driver      "mouse"
 Option "CorePointer"
 Option "Device" "/dev/input/mice"
 Option "Protocol" "Auto"
 Option "Emulate3Buttons"
 Option "Emulate3Timeout" "50"
 Option "EmulateWheel" "on"
 Option "EmulateWheelTimeout" "200" # adjust third button paste timeout. 
 Option "EmulateWheelButton" "2"
 Option "YAxisMapping" "4 5"
 Option "XAxisMapping" "6 7"
 Option "YAxisMapping" "4 5"
EndSection

finally update your layout

Section "ServerLayout"
 InputDevice    "Trackpoint" "CorePointer"
 InputDevice    "Touchpad"
 InputDevice    "Keyboard0" "CoreKeyboard"
EndSection

Audio

Once you have ALSA installed, fire up alsamixer and make sure that sound is not muted. You might also want to press the Volume Up or Volume Down button. It seems than the Mute button mutes everything, even system beeps. Pressing the Volume Up or Volume Down button can unmute, but not pressing the Mute button again.

Here's the modules I have loaded that are relevant to sound :

  $ lsmod | grep snd
  snd_seq_oss            35584  0
  snd_seq_midi_event      9344  1 snd_seq_oss
  snd_seq                58336  4 snd_seq_oss,snd_seq_midi_event
  snd_seq_device          9364  2 snd_seq_oss,snd_seq
  snd_hda_intel         474672  2
  snd_hwdep              10632  1 snd_hda_intel
  snd_pcm_oss            45568  0
  snd_pcm                82440  2 snd_hda_intel,snd_pcm_oss
  snd_timer              24720  2 snd_seq,snd_pcm
  snd_page_alloc         10640  2 snd_hda_intel,snd_pcm
  snd_mixer_oss          18944  1 snd_pcm_oss
  snd                    64840  16    snd_seq_oss,snd_seq,snd_seq_device,snd_hda_intel,snd_hwdep,snd_pcm_oss,snd_pcm,snd_timer,snd_mixer_oss
  soundcore               9632  1 snd

Additionally, there is a patch for the audio driver for conexant's chipsets provided by http://www.linuxant.com which can be downloaded at http://www.linuxant.com/alsa-driver/.

Multimedia Keys

Merge-arrows-2.pngThis article or section is a candidate for merging with Xmodmap.Merge-arrows-2.png

Notes: everything is covered in the main article, no need to duplicate (Discuss in Talk:Lenovo ThinkPad T400#)

The screen brightness controls and the flashlight work without any tweaking. The other keys can be mapped using xev and xbindkeys. By following this guide you should be able to get everything working, but here's summary :

  • First, open a terminal and type xev. This starts the "Event tester".
  • Place your cursor on the "Event tester" window.
  • When you press a key on your keyboard or move your mouse, it should get displayed in a terminal. For instance, this is what shows up if you press Fn+F2
   KeyRelease event, serial 33, synthetic NO, window 0x3000001,
   root 0x86, subw 0x0, time 5537544, (76,110), root:(81,938),
   state 0x0, keycode 146 (keysym 0x0, NoSymbol), same_screen YES,
   XLookupString gives 0 bytes:
   XFilterEvent returns: False

It basically says that keycode 146 is not bound (NoSymbol). Here are all the keycodes of all multimedia buttons:

  Volume Down : keycode 174
  Volume Up : keycode 176
  Fn+F2 : keycode 146
  Fn+F3 : keycode 241
  Fn+F4 : keycode 223
  Fn+F5 : Not responding to events ??
  Fn+F7 : keycode 214
  Fn+F8 : keycode 249
  Fn+F9 : keycode 207
  Fn+F12 : keycode 165
  Fn+Up : keycode 164
  Fn+Down : keycode 162
  Fn+Left : keycode 144
  Fn+Right : keycode 153
  Fn+Home : keycode 212
  Fn+End : keycode 101
  • Type xmodmap -pke > ~/.Xmodmap in a terminal. This creates a file, .Xmodmap, containing your current keyboard mapping.
  • Now open the file with a text editor and find the keycodes you're interested in. You can map any keycode with a symbol from this list.
  • To get your new .Xmodmap loaded when you start X, just add xmodmap ~/.Xmodmap to your .xinitrc.
  • To get your new .Xmodmap loaded immediately, type xmodmap ~/.Xmodmap in a terminal.

To assign functions to your newly bound keys, see Keyboard configuration in Xorg#Keybinding[broken link: invalid section].

To use xbindkeys,

  • Start by installing it
  pacman -S xbindkeys
  • Then add xbindkeys & to your .xinitrc.
  • And finally, in your home directory, create a file called .xbindkeysrc.scm with content that would look something like
  (xbindkey '("XF86Standby") "sudo killall dhcpcd && sudo pm-suspend")
  (xbindkey '("XF86AudioRaiseVolume") "amixer set Master 2dB+ unmute")
  (xbindkey '("XF86AudioLowerVolume") "amixer set Master 2dB- unmute")

Note, in more recent Arch (kernel 3.4.2, xorg-server 1.12.2, laptop-mode-tools 1.61), on the T400, related keys combinations binding seems to be:

  • Fn+2 → XF86ScreenSaver
  • Fn+4 → XF86Sleep & XF86Wakeup
  • Fn+12 → XF86Suspend

Now, the actual action will performed on XF86Sleep or XF86Suspend is configurable in session policy, so it may vary (e.g. depending on desktop environment). If nomenclature of XF86Standby, XF86Hibernate or XF86Sleep is confusing, check the thread suspend / hibernate nomenclature for in-depth explanation.

Mute

To get the mute button to work, it is necessary to pass the string acpi_osi="Linux" to the kernel as a boot parameter. In GRUB2, add it to the "linux" line. See here for more details.

With the 3.1 bios, it seems that the mute button works normally (set it up the same as the volume buttons with, for instance, "amixer set Master toggle").

ACPI

To enable the fan speed control, it's necessary to load the thinkpad_acpi with option fan_control=1. After the thinkpad_acpi module is loaded with this option, you can monitor and adjust the fan speed via /proc/acpi/ibm/fan.

SUSPEND-RESUME

People have been having issues with suspend resume with the current intel xf86-video-intel 2.4.3.1 drivers in combination with the 4500mhd chipset. This is apparently an issue with concurrency as adding the following script (with mod 755) in /etc/pm/sleep.d fixes things. to some extent...

#!/bin/sh
# Workaround for concurrency bug in xserver-xorg-video-intel 2:2.4.1-1ubuntu10.
# Save this as /etc/pm/sleep.d/00CPU 

. "/usr/lib/pm-utils/functions"
 
case "$1" in
	hibernate|suspend)
		for i in /sys/devices/system/cpu/cpu*/online ; do
			echo 0 >$i
		done
		;;
	thaw|resume) 
		sleep 10	# run with one core for 10 secs
		for i in /sys/devices/system/cpu/cpu*/online ; do
			echo 1 >$i
		done
		;;
	*)
		;;
esac

Dock

See dockd.

From http://ubuntu-virginia.ubuntuforums.org/showpost.php?p=6105510&postcount=12 petri4 on the ubuntu forums.