arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
404 lines (294 loc) • 12.2 kB
Markdown
Installation instructions for the Lenovo Thinkpad X60 Tablet.
## Contents
* [1 Pre installation notes](#Pre_installation_notes)
* [2 Accessing the recovery partition with GRUB](#Accessing_the_recovery_partition_with_GRUB)
* [3 Configuration](#Configuration)
* [3.1 Graphics card](#Graphics_card)
* [3.2 Stylus](#Stylus)
* [3.3 Automatic rotation](#Automatic_rotation)
* [3.4 TrackPoint scrolling (wheel emulation)](#TrackPoint_scrolling_.28wheel_emulation.29)
* [4 ThinkFinger](#ThinkFinger)
* [5 Backlight](#Backlight)
* [6 Specifications](#Specifications)
## Pre installation notes
Remember to back up the restore partition if you plan to restore to Microsoft Windows, or even leave it.
As the laptop does not have a built-in CD/DVD drive you might have to use a USB stick or similar device. Look in this how to [install from USB stick](/index.php/Install_from_USB_stick "Install from USB stick") for more information.
Follow the [Installation guide](/index.php/Installation_guide "Installation guide")
## Accessing the recovery partition with GRUB
Edit your **/boot/grub/menu.lst** file and add the following:
```
# booting "Rescue and Recovery" partition from Lenovo
title Thinkpad Maintenance
unhide (hd0,0)
rootnoverify (hd0,0)
chainloader +1
```
## Configuration
### Graphics card
See [Intel graphics](/index.php/Intel_graphics "Intel graphics").
### Stylus
You can get the stylus to work by installing [xf86-input-wacom](https://www.archlinux.org/packages/?name=xf86-input-wacom).
Add the following sections to your **xorg.conf** if it doesn't work:
```
Section "ServerLayout"
...
InputDevice "Cursor" "SendCoreEvents"
InputDevice "Stylus" "SendCoreEvents"
InputDevice "Eraser" "SendCoreEvents"
...
EndSection
Section "InputDevice"
Identifier "Cursor"
Driver "wacom"
Option "Device" "/dev/ttyS0"
Option "Type" "cursor"
Option "ForceDevice" "ISDV4"
Option "KeepShape" "on"
Option "Mode" "Absolute"
Option "BottomY" "18432"
Option "BottomX" "24576"
EndSection
Section "InputDevice"
Identifier "Stylus"
Driver "wacom"
Option "Device" "/dev/ttyS0"
Option "Type" "stylus"
Option "ForceDevice" "ISDV4"
Option "KeepShape" "on"
Option "TPCButton" "off"
Option "BottomY" "18432"
Option "BottomX" "24576"
Option "Mode" "Absolute"
EndSection
Section "InputDevice"
Identifier "Eraser"
Driver "wacom"
Option "Device" "/dev/ttyS0"
Option "Type" "eraser"
Option "ForceDevice" "ISDV4"
Option "KeepShape" "on"
Option "BottomY" "18432"
Option "BottomX" "24576"
EndSection
```
Also add the following if **X -configure** does not do it:
```
Section "Monitor"
DisplaySize 245 18
...
EndSection
```
### Automatic rotation
Refer to [acpid](/index.php/Acpid "Acpid") on how to edit **handler.sh**.
Now you should be able to grab events with **acpi_listen**. My tablet creates the following events when swivelling it down:
```
ibm/hotkey HKEY 00000080 00005009
```
When swiveling up:
```
ibm/hotkey HKEY 00000080 0000500a
```
Now we can edit our **/etc/acpi/handler.sh** to grab these events when they occur. Add the following under **case "$1"** somewhere:
```
ibm/hotkey)
case "$2" in
HKEY)
case "$4" in
00005009)
#Swiveling down
/bin/sh /etc/acpi/actions/swivel-down
;;
0000500a)
#Swiveling up
/bin/sh /etc/acpi/actions/swivel-up
;;
esac
;;
esac
;;
```
If you're using [HAL](/index.php/HAL "HAL") for configuring your Xorg you'll need to get the device names used by xsetwacom. If you're using the **xorg.conf** from above you can leave the device names as they are.
```
xsetwacom --list dev
```
Will give you something like this:
```
PnP Device (WACf008) eraser ERASER
PnP Device (WACf008) touch TOUCH
PnP Device (WACf008) STYLUS
```
You'll just need to cut off the all caps identifier at the end. So the device name for the eraser in the example above would be:
```
PnP Device (WACf008) eraser
```
Now create the files specified in **handler.sh**.
**/etc/acpi/actions/swivel-down:**
```
#!/bin/bash
/usr/bin/xrandr -o inverted
xsetwacom set "Stylus" Rotate half
xsetwacom set "Cursor" Rotate half
xsetwacom set "Eraser" Rotate half
```
**/etc/acpi/actions/swivel-up:**
```
#!/bin/bash
/usr/bin/xrandr -o normal
xsetwacom set "Stylus" Rotate none
xsetwacom set "Cursor" Rotate none
xsetwacom set "Eraser" Rotate none
```
Make them executable:
```
chmod +x /etc/acpi/actions/swivel*
```
Now we only need to set up the rotate button, which can be done by finding out what X event it creates when it is pressed. You can use **xev** to find out:
```
xev | grep keycode
```
Now press the rotate button a couple of times and it should give you a keycode. The one for mine was 199.
```
state 0x0, keycode 199 (keysym 0x0, NoSymbol), same_screen YES
```
Create a file in your home directory called **.Xmodmap**, this file should contain:
```
keycode 199 = F19
```
Before we go any further we have to put the following rotate script somewhere, it could be in your home directory, or maybe in **/usr/local/bin/**:
```
#!/bin/bash
# This is a script that toggles rotation of the screen through xrandr,
# and also toggles rotation of the stylus, eraser and cursor through xsetwacom
# Check orientation
orientation=`xrandr --verbose -q | grep LVDS | awk '{print $5}'`
# Rotate the screen and stylus, eraser and cursor, according to your preferences.
if [ "$orientation" = "normal" ]; then
/usr/bin/xrandr -o right
xsetwacom set "Stylus" Rotate cw
xsetwacom set "Cursor" Rotate cw
xsetwacom set "Eraser" Rotate cw
elif [ "$orientation" = "inverted" ]; then
/usr/bin/xrandr -o left
xsetwacom set "Stylus" Rotate ccw
xsetwacom set "Cursor" Rotate ccw
xsetwacom set "Eraser" Rotate ccw
elif [ "$orientation" = "right" ]; then
/usr/bin/xrandr -o inverted
xsetwacom set "Stylus" Rotate half
xsetwacom set "Cursor" Rotate half
xsetwacom set "Eraser" Rotate half
elif [ "$orientation" = "left" ]; then
/usr/bin/xrandr -o normal
xsetwacom set "Stylus" Rotate none
xsetwacom set "Cursor" Rotate none
xsetwacom set "Eraser" Rotate none
fi
```
Make the file executable with **chmod +x** and create a **.xbindkeysrc** file in your home directory, with the following content:
```
"/path/to/rotatescript"
F19
```
Run:
```
xmodmap ~/.Xmodmap
xbindkeys
/etc/rc.d/acpid restart
```
Now rotate button and when you swivel the screen down and up it should rotate.
**Note:** You have to run:
```
xmodmap ~/.Xmodmap
xbindkeys
```
Every time you start Xorg.
You might also want to take a look at [this rotate script](http://luke.no-ip.org/x60tablet/examples/rotate) written by Luke
### TrackPoint scrolling (wheel emulation)
See [TrackPoint](/index.php/TrackPoint "TrackPoint")
## ThinkFinger
Works, read [ThinkFinger](/index.php/ThinkFinger "ThinkFinger") for reference and examples.
## Backlight
To make backlight buttons turn the backlight turn up and down you can do the following.
First edit **/etc/modprobe.d/modprobe.conf** to make the **thinkpad_acpi** module load with some special options:
**/etc/modprobe.d/modprobe.conf:**
```
options thinkpad_acpi brightness_enable=1 hotkey=enable,0xffffff
```
Restart acpid and grab the events they key combinations make with **acpi_listen**:
```
/etc/rc.d/acpid restart
acpi_listen
```
The backlight down button on my machine creates:
```
ibm/hotkey HKEY 00000080 00001010
```
backlight up button creates:
```
ibm/hotkey HKEY 00000080 00001011
```
Edit **/etc/acpi/handler.sh:**
```
ibm/hotkey)
case "$2" in
HKEY)
case "$4" in
00001010)
# backlight down
# Check current state
typeset -i state=`cat /sys/class/backlight/thinkpad_screen/brightness`
# Subtract one from the current state and echo it to the file
down=$((state-=1))
echo "$down" > /sys/class/backlight/thinkpad_screen/brightness
;;
00001011)
# backlight up
# Check current state
typeset -i state=`cat /sys/class/backlight/thinkpad_screen/brightness`
# Add one to the current state and echo it to the file
state+=1
echo "$state" > /sys/class/backlight/thinkpad_screen/brightness
;;
```
Restart acpid:
```
/etc/rc.d/acpid restart
```
## Specifications
Specifications can be found here [on ThinkWiki](http://www.thinkwiki.org/wiki/Category:X60_Tablet)
lspci
```
00:00.0 Host bridge: Intel Corporation Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub (rev 03)
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller (rev 03)
00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)
00:1b.0 Audio device: Intel Corporation 82801G (ICH7 Family) High Definition Audio Controller (rev 02)
00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)
00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)
00:1c.2 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 3 (rev 02)
00:1c.3 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 4 (rev 02)
00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)
00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)
00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)
00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)
00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)
00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02)
00:1f.2 SATA controller: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA AHCI Controller (rev 02)
00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)
02:00.0 Ethernet controller: Intel Corporation 82573L Gigabit Ethernet Controller
03:00.0 Network controller: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection (rev 02)
15:00.0 CardBus bridge: Ricoh Co Ltd RL5c476 II (rev b4)
15:00.1 FireWire (IEEE 1394): Ricoh Co Ltd R5C552 IEEE 1394 Controller (rev 09)
15:00.2 SD Host controller: Ricoh Co Ltd R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter (rev 18)
```
lsusb
```
Bus 005 Device 003: ID 0a5c:2110 Broadcom Corp.
Bus 005 Device 002: ID 0483:2016 SGS Thomson Microelectronics Fingerprint Reader
Bus 005 Device 001: ID 1d6b:0001
Bus 004 Device 001: ID 1d6b:0001
Bus 003 Device 001: ID 1d6b:0001
Bus 002 Device 001: ID 1d6b:0001
Bus 001 Device 001: ID 1d6b:0002
```