Difference between revisions of "Lenovo ThinkPad T420"
(→Laptop Mode Tools) |
m (→Tp_smapi: more systemd) |
||
(31 intermediate revisions by 14 users not shown) | |||
Line 1: | Line 1: | ||
− | |||
[[Category:Lenovo]] | [[Category:Lenovo]] | ||
+ | [[zh-CN:Lenovo ThinkPad T420]] | ||
This article covers the installation and configuration of Arch Linux on a Lenovo T420 laptop. | This article covers the installation and configuration of Arch Linux on a Lenovo T420 laptop. | ||
− | == Installation == | + | ==Installation== |
This laptop supports [[Unified_Extensible_Firmware_Interface|UEFI]] as well as the traditional BIOS. | This laptop supports [[Unified_Extensible_Firmware_Interface|UEFI]] as well as the traditional BIOS. | ||
Line 10: | Line 10: | ||
The rest of the installation process can be followed with the [[Official_Arch_Linux_Install_Guide|official install guide]]. | The rest of the installation process can be followed with the [[Official_Arch_Linux_Install_Guide|official install guide]]. | ||
− | == Hardware == | + | ==Hardware== |
− | All hardware | + | All hardware works out of the box except the following: |
− | === | + | ===Fingerprint reader=== |
− | + | Fingerprint reader works great with fprint and PAM (installation of fingerprint-gui recommended). | |
− | + | See [[Fprint#Setup_fingerprint-gui]] for more information. | |
− | |||
− | See [[ | + | ===Some Media Keys=== |
+ | * See [[Lenovo ThinkPad T420#Media Keys|below]] | ||
− | === Untested === | + | ===Untested=== |
− | |||
* Firewire | * Firewire | ||
− | == Laptop Settings == | + | ==Laptop Settings== |
− | === ACPI === | + | ===ACPI=== |
[[ACPI_modules|ACPI]] is well supported here. No obvious troubleshoots. | [[ACPI_modules|ACPI]] is well supported here. No obvious troubleshoots. | ||
Line 36: | Line 35: | ||
Insert the {{ic|acpi_call}} kernel module by running | Insert the {{ic|acpi_call}} kernel module by running | ||
modprobe acpi_call | modprobe acpi_call | ||
− | |||
Manually set the thresholds by calling | Manually set the thresholds by calling | ||
perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v startChargeThreshold 0 40 | perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v startChargeThreshold 0 40 | ||
perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v stopChargeThreshold 0 80 | perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v stopChargeThreshold 0 80 | ||
− | The example values 40 and 80 given here are in percent of the full battery capacity. Adjust them to your own needs. You may also want to | + | The example values 40 and 80 given here are in percent of the full battery capacity. Adjust them to your own needs. You may also want to write a simple {{ic|set-battery.service}} and enable it to set them at startup. While these values should be permanent, they will be reset any time the battery is removed. |
+ | |||
+ | [Unit] | ||
+ | Description=Set battery capacity | ||
+ | |||
+ | [Service] | ||
+ | Type=oneshot | ||
+ | ExecStart=/usr/bin/perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v stopChargeThreshold 0 80 | ||
+ | ExecStart=/usr/bin/perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v startChargeThreshold 0 40 | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | |||
Also, if you are dual booting with Windows, you can still control the battery charging thresholds with Lenovo's Power Manager which communicates directly to the battery controller. | Also, if you are dual booting with Windows, you can still control the battery charging thresholds with Lenovo's Power Manager which communicates directly to the battery controller. | ||
+ | |||
+ | When using systemd, you may want to blacklist the tp_smapi module if your systemd-modules-load.service fails, as new ThinkPads handle everything over acpi. | ||
=== CPU Frequency Scaling === | === CPU Frequency Scaling === | ||
Line 52: | Line 64: | ||
The thinkpad_acpi kernel module needs to be configured so user space programs can control the fan speed. | The thinkpad_acpi kernel module needs to be configured so user space programs can control the fan speed. | ||
− | {{hc|/etc/modprobe.d/ | + | {{hc|/etc/modprobe.d/thinkpad_acpi.conf|2=options thinkpad_acpi fan_control=1}} |
The [https://aur.archlinux.org/packages.php?ID=24359 thinkfan] configuration file also needs to know how to set the fan speed. Replace the default sensor settings with the following. | The [https://aur.archlinux.org/packages.php?ID=24359 thinkfan] configuration file also needs to know how to set the fan speed. Replace the default sensor settings with the following. | ||
Line 60: | Line 72: | ||
You can add or remove services by editing the {{ic|DAEMONS}} array in your /etc/[[rc.conf]] file. It will initially look something like this: | You can add or remove services by editing the {{ic|DAEMONS}} array in your /etc/[[rc.conf]] file. It will initially look something like this: | ||
DAEMONS=(...@thinkfan...) | DAEMONS=(...@thinkfan...) | ||
+ | |||
+ | Or, if you are using systemd, simply type | ||
+ | # systemctl enable thinkfan.service | ||
=== Laptop Mode Tools === | === Laptop Mode Tools === | ||
No significant issues were found using [[Laptop Mode Tools]]. | No significant issues were found using [[Laptop Mode Tools]]. | ||
− | + | Possible bug with [[Lenovo_ThinkPad_T420#Shutdown on Battery]] | |
− | + | {{AUR|tlp}} From the [[Arch User Repository|AUR]] is an alternative tool that can replace laptop-mode-tools. | |
− | |||
− | === Synaptics === | + | ===Synaptics=== |
TouchPad and TrackPoint do work out of the box, but the TouchPad is way too sensitive (i.e. fast) to be usable, since it is recognized as a mouse. To fix this, [[pacman|install]] the {{Pkg|xf86-input-synaptics}} package and add the following two files to your {{ic|/etc/X11/xorg.conf.d/}} directory: | TouchPad and TrackPoint do work out of the box, but the TouchPad is way too sensitive (i.e. fast) to be usable, since it is recognized as a mouse. To fix this, [[pacman|install]] the {{Pkg|xf86-input-synaptics}} package and add the following two files to your {{ic|/etc/X11/xorg.conf.d/}} directory: | ||
Line 98: | Line 112: | ||
</nowiki>}} | </nowiki>}} | ||
− | Adjust to your own needs. Read [[ | + | Adjust to your own needs. Read [[Touchpad Synaptics]] for more information. |
To adjust the speed/sensitivity of the TrackPoint add these lines in your {{ic|/etc/rc.local}} script: | To adjust the speed/sensitivity of the TrackPoint add these lines in your {{ic|/etc/rc.local}} script: | ||
Line 110: | Line 124: | ||
Possible range of values are 1-255. | Possible range of values are 1-255. | ||
− | === NVIDIA Optimus === | + | ===NVIDIA Optimus=== |
[[Bumblebee|Bumblebee]] works as intended on models with NVIDIA Optimus | [[Bumblebee|Bumblebee]] works as intended on models with NVIDIA Optimus | ||
=== Optional kernel boot arguments === | === Optional kernel boot arguments === | ||
− | Using the following kernel boot parameters | + | Using the following kernel boot parameters [http://www.phoronix.com/scan.php?page=article&item=intel_i915_power&num=1| reduces battery drain]: |
− | {{ | + | {{bc|<nowiki> |
− | |||
i915.i915_enable_rc6=1 | i915.i915_enable_rc6=1 | ||
i915.i915_enable_fbc=1 | i915.i915_enable_fbc=1 | ||
i915.lvds_downclock=1 | i915.lvds_downclock=1 | ||
+ | i915.semaphores=1 | ||
</nowiki>}} | </nowiki>}} | ||
+ | {{Note| With the current 3.6.x kernels, there appears to be a power regression with an unknown cause. It is yet to be fixed in any 3.7 versions of the kernel.}} | ||
− | == | + | ==Troubleshooting== |
=== Media Keys === | === Media Keys === | ||
Media keys that work out of the box: | Media keys that work out of the box: | ||
Line 131: | Line 146: | ||
* Mute | * Mute | ||
+ | Media Keys that Do Not work out of the box: | ||
+ | * [[Lenovo_ThinkPad_T420#Volume_up.2Fdown_not_changing_volume|Volume keys]] (Works out-of-the-box in [[Gnome|Gnome]]) | ||
+ | * Microphone mute (Will most likely require a custom kernel patch) | ||
You must find a workaround and bind the keys yourself for the rest of them. | You must find a workaround and bind the keys yourself for the rest of them. | ||
Line 152: | Line 170: | ||
{{Note|The keys should work out of the box, at least on [[KDE]].}} | {{Note|The keys should work out of the box, at least on [[KDE]].}} | ||
+ | |||
+ | === Turn touchpad on and off === | ||
+ | For some, the ({{Keypress|Fn+F8}}) key does not switch the touchpad on and off. Here is a simple keybind to add to your {{ic|~/.xbindkeysrc}} for keys to quickly change your touchpad state. For these to take effect, run {{ic|xbindkeysrc}}. This binds {{Keypress|Fn+F8}} to 'toggle the touchpad on and off'. (Tested in i3wm and xfce4, where normal {{Keypress|Fn+F8}} does not toggle the touchpad) | ||
+ | |||
+ | # Toggle the Touchpad on|off | ||
+ | "synclient TouchpadOff=`synclient -l | grep -ce TouchpadOff.*0`" | ||
+ | m:0x0 + c:199 | ||
+ | XF86TouchpadToggle | ||
+ | |||
+ | === Volume up/down not changing volume === | ||
+ | Another quick keybind for {{ic|~/.xbindkeysrc}} to change the volume (which does not work on some DEs). Again, run {{ic|xbindkeys}} for these to take effect. Taken from [[Xbindkeys]] | ||
+ | |||
+ | #increase volume | ||
+ | "amixer set Master playback 1+" | ||
+ | m:0x0 + c:123 | ||
+ | XF86AudioRaiseVolume | ||
+ | |||
+ | #decrase volume | ||
+ | "amixer set Master playback 1-" | ||
+ | m:0x0 + c:122 | ||
+ | XF86AudioLowerVolume | ||
+ | |||
+ | Also, while the mute button works, I rebound it to interface with ALSA. | ||
+ | |||
+ | # Toggle mute | ||
+ | "amixer set Master toggle" | ||
+ | m:0x0 + c:121 | ||
+ | XF86AudioMute | ||
=== Shutdown on Battery === | === Shutdown on Battery === | ||
− | + | Some users have reported that the T420 was rebooting on shutdown on battery power. There have been quite a few attempts to fix this. Three are detailed here. | |
+ | |||
+ | One way is to disable the module {{ic|ehci_hcd}}. See [[Kernel_modules#Blacklisting]] for more information. | ||
Or try disable Laptop-mode. | Or try disable Laptop-mode. | ||
− | Add | + | Add {{Ic|!laptop-mode}} to the {{Ic|DAEMONS}} array in {{ic|/etc/rc.conf}}: |
DAEMONS=(...!laptop-mode...) | DAEMONS=(...!laptop-mode...) | ||
+ | |||
+ | [https://bbs.archlinux.org/viewtopic.php?pid=1106437#p1106437 This forum post] details another way to have your computer not reboot on shutdown. Turning off the {{ic|laptop-mode}} daemon causes battery life to suffer, so when on the move and in need of a simple way to shutdown, this seems to work better. | ||
=== Hang on Reboot === | === Hang on Reboot === | ||
Line 169: | Line 219: | ||
== See also == | == See also == | ||
* [[Lenovo ThinkPad T420s]] | * [[Lenovo ThinkPad T420s]] | ||
+ | * [http://sysphere.org/~anrxc/j/articles/thinkpad-t420/index.html Arch Linux on ThinkPad T420i] |
Revision as of 23:33, 19 February 2013
zh-CN:Lenovo ThinkPad T420 This article covers the installation and configuration of Arch Linux on a Lenovo T420 laptop.
Installation
This laptop supports UEFI as well as the traditional BIOS.
There are no issues with installing Arch Linux with the latest Archiso.
The rest of the installation process can be followed with the official install guide.
Hardware
All hardware works out of the box except the following:
Fingerprint reader
Fingerprint reader works great with fprint and PAM (installation of fingerprint-gui recommended).
See Fprint#Setup_fingerprint-gui for more information.
Some Media Keys
- See below
Untested
- Firewire
Laptop Settings
ACPI
ACPI is well supported here. No obvious troubleshoots.
Tp_smapi
Unfortunately, tp_smapi is only partially supported on the Thinkpad T420. A number of features work since version 0.41. For example, the hard drive protection mechanism HDAPS now works well. See the linked wiki entry.
Some features like setting the starting threshold for charging the battery do not yet work. To control the battery charging thresholds, install the Perl script tpacpi-batAUR from the AUR.
Insert the acpi_call
kernel module by running
modprobe acpi_call
Manually set the thresholds by calling
perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v startChargeThreshold 0 40 perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v stopChargeThreshold 0 80
The example values 40 and 80 given here are in percent of the full battery capacity. Adjust them to your own needs. You may also want to write a simple set-battery.service
and enable it to set them at startup. While these values should be permanent, they will be reset any time the battery is removed.
[Unit] Description=Set battery capacity [Service] Type=oneshot ExecStart=/usr/bin/perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v stopChargeThreshold 0 80 ExecStart=/usr/bin/perl /usr/lib/perl5/vendor_perl/tpacpi-bat -v startChargeThreshold 0 40 [Install] WantedBy=multi-user.target
Also, if you are dual booting with Windows, you can still control the battery charging thresholds with Lenovo's Power Manager which communicates directly to the battery controller.
When using systemd, you may want to blacklist the tp_smapi module if your systemd-modules-load.service fails, as new ThinkPads handle everything over acpi.
CPU Frequency Scaling
CPU frequency scaling is fully supported with all of the available processor models with this laptop.
Fans
The thinkpad_acpi kernel module needs to be configured so user space programs can control the fan speed.
/etc/modprobe.d/thinkpad_acpi.conf
options thinkpad_acpi fan_control=1
The thinkfan configuration file also needs to know how to set the fan speed. Replace the default sensor settings with the following.
/etc/thinkfan.conf
sensor /sys/devices/virtual/thermal/thermal_zone0/temp
You can add or remove services by editing the DAEMONS
array in your /etc/rc.conf file. It will initially look something like this:
DAEMONS=(...@thinkfan...)
Or, if you are using systemd, simply type
# systemctl enable thinkfan.service
Laptop Mode Tools
No significant issues were found using Laptop Mode Tools.
Possible bug with Lenovo_ThinkPad_T420#Shutdown on Battery
tlpAUR From the AUR is an alternative tool that can replace laptop-mode-tools.
Synaptics
TouchPad and TrackPoint do work out of the box, but the TouchPad is way too sensitive (i.e. fast) to be usable, since it is recognized as a mouse. To fix this, install the xf86-input-synaptics package and add the following two files to your /etc/X11/xorg.conf.d/
directory:
50-thinkpad-trackpoint.conf
Section "InputClass" Identifier "ThinkPad TrackPoint" MatchProduct "TPPS/2 IBM TrackPoint" MatchDevicePath "/dev/input/event*" Option "EmulateWheel" "true" Option "EmulateWheelButton" "2" Option "XAxisMapping" "6 7" Option "YAxisMapping" "4 5" EndSection
50-twofingerscroll.conf
Section "InputClass" Identifier "two finger scrolling" Driver "synaptics" MatchProduct "SynPS/2 Synaptics TouchPad" MatchDevicePath "/dev/input/event*" Option "VertTwoFingerScroll" "on" Option "HorizTwoFingerScroll" "on" Option "EmulateTwoFingerMinW" "8" Option "EmulateTwoFingerMinZ" "40" Option "TapButton1" "1" EndSection
Adjust to your own needs. Read Touchpad Synaptics for more information.
To adjust the speed/sensitivity of the TrackPoint add these lines in your /etc/rc.local
script:
/etc/rc.local
TPDEV=/sys/devices/platform/i8042/serio1 echo -n 180 > $TPDEV/speed echo -n 200 > $TPDEV/sensitivity
Possible range of values are 1-255.
NVIDIA Optimus
Bumblebee works as intended on models with NVIDIA Optimus
Optional kernel boot arguments
Using the following kernel boot parameters reduces battery drain:
i915.i915_enable_rc6=1 i915.i915_enable_fbc=1 i915.lvds_downclock=1 i915.semaphores=1
Troubleshooting
Media Keys
Media keys that work out of the box:
- Wireless On/Off
- Backlight Brightness settings
- Thinklight
- Mute
Media Keys that Do Not work out of the box:
- Volume keys (Works out-of-the-box in Gnome)
- Microphone mute (Will most likely require a custom kernel patch)
You must find a workaround and bind the keys yourself for the rest of them.
Rebind Forward and Back keys
Keys forward and back (next to cursor keys) can be easily remapped to PageDown/PageUp.
Install xmodmap with the package xorg-server-utils
Create a ~/.Xmodmap
file with content:
keysym XF86Back = Page_Up keysym XF86Forward = Page_Down
Add this line to your ~/.xinitrc
to make it work:
xmodmap ~/.Xmodmap
You can also re-map AudioPrev (Template:Keypress) and AudioNext (Template:Keypress) to Home/End:
keysym XF86AudioNext = End keysym XF86AudioPrev = Home
Turn touchpad on and off
For some, the (Template:Keypress) key does not switch the touchpad on and off. Here is a simple keybind to add to your ~/.xbindkeysrc
for keys to quickly change your touchpad state. For these to take effect, run xbindkeysrc
. This binds Template:Keypress to 'toggle the touchpad on and off'. (Tested in i3wm and xfce4, where normal Template:Keypress does not toggle the touchpad)
# Toggle the Touchpad on|off "synclient TouchpadOff=`synclient -l | grep -ce TouchpadOff.*0`" m:0x0 + c:199 XF86TouchpadToggle
Volume up/down not changing volume
Another quick keybind for ~/.xbindkeysrc
to change the volume (which does not work on some DEs). Again, run xbindkeys
for these to take effect. Taken from Xbindkeys
#increase volume "amixer set Master playback 1+" m:0x0 + c:123 XF86AudioRaiseVolume
#decrase volume "amixer set Master playback 1-" m:0x0 + c:122 XF86AudioLowerVolume
Also, while the mute button works, I rebound it to interface with ALSA.
# Toggle mute "amixer set Master toggle" m:0x0 + c:121 XF86AudioMute
Shutdown on Battery
Some users have reported that the T420 was rebooting on shutdown on battery power. There have been quite a few attempts to fix this. Three are detailed here.
One way is to disable the module ehci_hcd
. See Kernel_modules#Blacklisting for more information.
Or try disable Laptop-mode.
Add !laptop-mode
to the DAEMONS
array in /etc/rc.conf
:
DAEMONS=(...!laptop-mode...)
This forum post details another way to have your computer not reboot on shutdown. Turning off the laptop-mode
daemon causes battery life to suffer, so when on the move and in need of a simple way to shutdown, this seems to work better.
Hang on Reboot
This is a problem on many laptops and can be fixed by blacklisting the e1000e
kernel module.
No Backlight Controls
One user has reported that the brightness controls (fn+home, fn+end) did not work in some desktop environments. This could be fixed by adding the following kernel options:
acpi_backlight=vendor acpi_osi=Linux