Difference between revisions of "Installing Gentoo on a ThinkPad X60 Tablet"

From ThinkWiki
Jump to: navigation, search
(Gentoo general)
(Gentoo General: suspend2-sources no longer exist. They are now tuxonice-sources.)
 
(44 intermediate revisions by 5 users not shown)
Line 1: Line 1:
This is WIP!
+
= Gentoo General =
The guide will be somewhat complete in the late summer.
 
  
 +
Some general apps are needed, these are installed:
 +
emerge thinkpad
 +
echo "thinkpad" >> /etc/modules.autoload.d/kernel-2.6
  
 +
TODO:
 +
echo "app-laptop/hdapsd" >> /etc/portage/package.keywords
 +
emerge hdapsd app-laptop/tp_smapi
 +
rc-update add hdapsd default
 +
/etc/init.d/hdapsd start
  
= Gentoo general =
+
= Sound =
In {{path|/etc/make.conf}}:
+
NOTE: If you get an hda_intel probe error on boot, you have to enable modem support in bios (don't ask why!).
VIDEO_CARDS="i810 vesa"
 
INPUT_DEVICES="keyboard mouse wacom"
 
  
= Sound =
 
 
In the kernel configuration:
 
In the kernel configuration:
 
  Device Drivers  --->
 
  Device Drivers  --->
Line 16: Line 20:
 
     PCI devices  --->
 
     PCI devices  --->
 
     <*> Intel HD Audio
 
     <*> Intel HD Audio
Now emerge alsasound and add it to the default runlevel
+
Now emerge alsa-utils and add alsasound to the default runlevel:
  emerge -av alsasound
+
  emerge -av alsa-utils
 
  rc-update add alsasound default
 
  rc-update add alsasound default
 
  /etc/init.d/alsasound start
 
  /etc/init.d/alsasound start
 +
Unmute the sound using alsamixer by pressing the m key on the Master and PCM sliders (MM=Muted / 00=Not muted)
  
 
= Display =
 
= Display =
 +
In the kernel configuration:
 +
Device Drivers  --->
 +
  Character devices  --->
 +
  <*> Direct Rendering Manager
 +
    <*> Intel 830M, 845G, 852GM, 855GM, 865G (i915 driver)  --->
 +
Now run xorgcfg which should start smoothly. Do your personal changes (none), and save the files to their default location.
 +
Edit {{path|/etc/X11/xorg.conf}} and add the following lines:
 +
Section "dri"
 +
    Mode 0666
 +
EndSection
 +
 +
Now for the rotation to work, we need to emerge some stuff, and make some editing.
 +
First, emerge some apps (note: wee need linuxwacom >= 0.7.8)
 +
echo "x11-drivers/linuxwacom" >> /etc/portage/package.keywords
 +
emerge linuxwacom sudo xhost xrandr
 +
 +
Get the rotate script from ref. A, and make some adjustments:
 +
cd /usr/local/bin
 +
wget http://luke.no-ip.org/x60tablet/examples/rotate
 +
chmod +x rotate
 +
sed "s/cursor/Cursor/" -i rotate
 +
sed "s/stylus/Stylus/" -i rotate
 +
sed "s/eraser/Eraser/" -i rotate
 +
sed 's/"%s set %s Rotate %s"/"sudo su -c \\"DISPLAY=:0.0 %s set %s Rotate %s\\""/' -i rotate
 +
sed "s/'normal': 'NONE', 'left': 'CCW', 'right': 'CW', 'inverted': 'HALF'/'normal': '0', 'left': '2', 'right': '1', 'inverted': '3'/" -i rotate
 +
 +
Put yourself into the wheel group, and setup sudo to make you run xsetwacom without password.
 +
 +
{{HINT|For the compiz-fusion to work you will need to start it like this:
 +
<nowiki>LIBGL_ALWAYS_INDIRECT=true compiz-fusion --replace --indirect-rendering ccp</nowiki>}}
 +
 +
TODO: xhost +
  
 
= Input =
 
= Input =
Line 32: Line 69:
 
     <*> User level driver support
 
     <*> User level driver support
 
   USB support  --->
 
   USB support  --->
   <*> Wacom Intuos/Graphire tablet support
+
   < > Wacom Intuos/Graphire tablet support
  
Add the following (magic) line to {{path|/etc/conf.d/local.start}}:
+
The Wacom Intus/Graphire USB Tablet should not be activated, the X60 Tablet is not an USB device.
 +
 
 +
Emerge setserial;
 +
emerge setserial
 +
and add the following (magic) line to {{path|/etc/conf.d/local.start}}:
 
  setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig
 
  setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig
  
Now add the following lines to your xorgcfg generated xorg.conf:
+
If you get 'Cannot set serial info: Invalid argument' your kernel may have slightly broken serial support (suspend2-sources-2.6.22-r2, gentoo-sources-2.6.22-r5), this is fixed in gentoo-sources-2.6.22-r9.
 +
 
 +
{{WARN|Xorg 7.3 works with current linuxwacom (0.7.8-3, 0.7.9-1), but in a strange way. Keep Xorg 7.2 unless you are going to use your pen only as mouse and only in the normal rotation.}}
 +
'''Re to ATTENTION!''' I reply to myself. In the linuxwacom 0.7.8 branch they added the support for the multitouch feature. However this "feature" makes the usage of pen almost impossible (see [http://sourceforge.net/forum/forum.php?thread_id=1777969&forum_id=236872 this forum]). I prepared a patch which removes this feature and wrote an ebuild which can apply this patch: [https://bugs.gentoo.org/show_bug.cgi?id=147537 Bugzilla Bug 147537]. However still I have small problems in Xorg 7.3: [http://sourceforge.net/tracker/index.php?func=detail&aid=1823908&group_id=69596&atid=525124 bug 1823908]
 +
 
 +
Now add the following lines to your xorgcfg generated {{path|/etc/X11/xorg.conf}}:
 
  Section "InputDevice"
 
  Section "InputDevice"
 
     Identifier  "Cursor"
 
     Identifier  "Cursor"
Line 44: Line 90:
 
     Option      "Type" "cursor"
 
     Option      "Type" "cursor"
 
     Option      "ForceDevice" "ISDV4"
 
     Option      "ForceDevice" "ISDV4"
    Option      "Mode" "Absolute"
 
 
  EndSection
 
  EndSection
 
 
  Section "InputDevice"
 
  Section "InputDevice"
 
     Identifier  "Stylus"
 
     Identifier  "Stylus"
Line 54: Line 98:
 
     Option      "ForceDevice" "ISDV4"
 
     Option      "ForceDevice" "ISDV4"
 
  EndSection
 
  EndSection
 
 
  Section "InputDevice"
 
  Section "InputDevice"
 
     Identifier  "Eraser"
 
     Identifier  "Eraser"
Line 67: Line 110:
 
  InputDevice    "Stylus" "SendCoreEvents"
 
  InputDevice    "Stylus" "SendCoreEvents"
 
  InputDevice    "Eraser" "SendCoreEvents"
 
  InputDevice    "Eraser" "SendCoreEvents"
 +
 +
=== Xournal ===
 +
The ebuild in [http://bugs.gentoo.org/show_bug.cgi?id=143177 Bug 143177] works fine for verion 0.4.1
  
 
== Touch Screen ==
 
== Touch Screen ==
According to ref. A, this doesn't work.
+
 
 +
It works for me from the box. I just unexpectedly discovered that it works. However in the "left" and "right" rotations of the screen the pointer appears approximately 3cm from the touch point. I do not know how to solve this.
 +
 
 +
However it causes a lot of problem so I prepared a sollution (see the reply to attention above: [http://www.thinkwiki.org/wiki/installing_Gentoo_on_a_ThinkPad_X60_Tablet#Pen]).
  
 
== Trackpoint ==
 
== Trackpoint ==
 
Works.
 
Works.
  
== Special keys ==
+
== Fingerprint Reader ==
 +
This actually is surprisingly easy to make work:) Just emerge thinkfinger >= 0.3;
 +
echo "sys-auth/thinkfinger" >> /etc/portage/package.keywords
 +
emerge thinkfinger
 +
and add the following line in {{path|/etc/pam.d/system-auth}}:
 +
auth      sufficient  pam_thinkfinger.so
  
=== Keys On The Monitor ===
+
The first section in the file should now look like the following:
I have currently managed to map the following buttons: Esc, up, down, left, right, center (center).
+
  auth      required    pam_env.so
They are mapped using setkeycodes. They commands can be inserted into {{path|/etc/conf.d/local.start}} like the following:
+
  auth      sufficient  pam_thinkfinger.so
  # Esc button
+
  auth      sufficient  pam_unix.so try_first_pass likeauth nullok
  setkeycodes 6b 1
 
# Up
 
setkeycodes 71 72
 
  # Down
 
setkeycodes 6f 80
 
# Left
 
setkeycodes 6e 75
 
# Right
 
setkeycodes 6d 77
 
# Center
 
setkeycodes 69 28
 
Note: This is for Danish keyboard layout.
 
To find the values for your language, the scancode (left) should be the same, but the keycode (right) might differ.
 
I found the keycodes by counting keys from the upper left corner. This gives an almost correct keycode.
 
  
setkeycodes 6c 153 # KEY_DIRECTION, panel rotate
+
All left is to read your fingerprint for your user. Run tf-tool --add-user <login>, then reboot and see if it works.
setkeycodes 68 139 # KEY_MENU, panelmenu
+
If using gdm, it should work smoothly.
setkeycodes 6b 1  # KEY_ESC, panel esc
 
  
setkeycodes 69 28  # KEY_ENTER, panel enter
+
==Thinkpad buttons==
 +
You can enable them in the kernel either built-in or as a module:
  
setkeycodes 6e 175 # MOVE        panelleft, no appropriate name
+
Location:                                                            │
setkeycodes 6d 176 # EXIT        panelright, no appropriate name
+
  -> Device Drivers                                                  │
setkeycodes 71 177 # SCROLL_UP  panelup
+
    -> Character devices
setkeycodes 6f 178 # SCROLL_DOWN paneldown
+
      <M> /dev/nvram support
  
from http://ofb.net/~wnoise/lenovo-x60-tablet/
+
In case you chose the module you will need to autoload it since it is not loaded by the udev:
 +
  echo nvram >> /etc/modules.autoload.d/kernel-2.6
  
== Fingerpring Reader ==
+
By default the /dev/nvram device is configured for root only access. In order to change it permanentely add the corresponding rule to udev. For example I did:
This actually is surprisingly easy to make work:) Just emerge thinkfinger >= 0.3 and add the following line in {{path|/etc/pam.d/system-auth}}:
+
  echo "KERNEL==\"nvram\", GROUP=\"users\"" >> /etc/udev/rules.d/50-local.rules
auth      sufficient  pam_thinkfinger.so
 
  
The first section in the file should now look like the following:
+
After that you can either configure them using app-laptop/tpb or KDE user can relay on the KMilo application configurable in the  
auth      required    pam_env.so
+
  "Control Center -> System Administration -> IBM Thinkpad Laptop".
auth      sufficient  pam_thinkfinger.so
 
  auth      sufficient  pam_unix.so likeauth nullok
 
 
 
All left is to read your fingerprint for your user. Run tf-tool --add-user <login>, then reboot and see if it works.
 
  
 
= Network =
 
= Network =
Line 126: Line 162:
 
   Ethernet (1000 Mbit)  --->
 
   Ethernet (1000 Mbit)  --->
 
     <*> Intel(R) PRO/1000 Gigabit Ethernet support
 
     <*> Intel(R) PRO/1000 Gigabit Ethernet support
 +
 +
Configure the ethernet card in {{path|/etc/conf.d/net}}:
 +
config_eth0="dhcp"
 +
eth0_dhcpcd="-t 4"
  
 
== Wireless ==
 
== Wireless ==
 
Note: Make sure that the hardware disable-switch isn't disabled - it is placed at the front/bottom of the laptop (don't make the same mistake as i did!)
 
Note: Make sure that the hardware disable-switch isn't disabled - it is placed at the front/bottom of the laptop (don't make the same mistake as i did!)
Now, emerge ipw3945 >= 1.2.0, and add ipw3945d to the default runlevel by issuing:
 
rc-update add ipw3945d default.
 
  
If someone know how to add the ipw3945 module to a blacklist so it isn't probed when booting, please note it here:)
+
In the kernel configuration:
 +
Device Drivers  --->
 +
  Network device support  --->
 +
  Wireless LAN (non-hamradio)  --->
 +
    [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
 +
Networking  --->
 +
  <*> Generic IEEE 802.11 Networking Stack
 +
  <M> IEEE 802.11i CCMP support
 +
  <M> IEEE 802.11i TKIP encryption
 +
 
 +
Now, emerge ipw3945, wireless-tools > 22 and wpa_supplicant, and add ipw3945d to the default runlevel by issuing:
 +
echo "net-wireless/wireless-tools" >> /etc/portage/package.keywords
 +
emerge ipw3945 wireless-tools wpa_supplicant
 +
rc-update add ipw3945d default
 +
/etc/init.d/ipw3945d start
 +
 
 +
Configure the wireless card in {{path|/etc/conf.d/net}}:
 +
config_eth1="dhcp"
 +
eth1_dhcpcd="-t 4"
 +
eth1_modules="wpa_supplicant"
 +
wpa_supplicant_eth1="-Dwext"
 +
 
 +
If you are a kismet user it should be configured as follows in {{path|/etc/kismet.conf}}:
 +
suiduser=<login>
 +
source=ipw3945,eth1,ipw3945
 +
 
 +
== VPN ==
 +
To come...
  
 
== Bluetooth ==
 
== Bluetooth ==
Don't know yet...
+
In the kernel configuration:
 +
Networking  --->
 +
  <*> Bluetooth subsystem support  --->
 +
  <*> L2CAP protocol support
 +
  <*> RFCOMM protocol support
 +
    [*] RFCOMM TTY support
 +
      Bluetooth device drivers  --->
 +
        <*> HCI USB driver
 +
 
 +
Now emerge bluez-utils;
 +
emerge bluez-utils
 +
and configure your display name in the device section in {{path|/etc/bluetooth/hcid.conf}}:
 +
name "Your Displayname"
 +
 
 +
Now we are ready to start
 +
rc-update add bluetooth default
 +
/etc/init.d/bluetooth start
  
 
= External Connections =
 
= External Connections =
 +
 
= ACPI =
 
= ACPI =
 +
Just emerge the acpi daemon:
 +
emerge acpid
 +
rc-update add acpid default
 +
/etc/init.d/acpid start
 +
 
= Extra Features =
 
= Extra Features =
  
 
= History =
 
= History =
 
5. July - Initial release.
 
5. July - Initial release.
 +
 +
24. July - Added Gentoo General, Sound, Some kernel configuration for the 2.6.21 kernel and new keycodes.
 +
 +
2. September - All sections are has been polished, and should work properly. Only the last ones are missing.
  
 
= External Sources =
 
= External Sources =
 
A) [http://luke.no-ip.org/x60tablet/ Linux on the X60 Tablet]
 
A) [http://luke.no-ip.org/x60tablet/ Linux on the X60 Tablet]
 +
 +
B) [http://www.comptechdoc.org/os/linux/howlinuxworks/linux_hlkeycodes.html] Keycode Table
 +
 +
 +
[[Category:Gentoo]]

Latest revision as of 15:08, 10 May 2008

Gentoo General

Some general apps are needed, these are installed:

emerge thinkpad
echo "thinkpad" >> /etc/modules.autoload.d/kernel-2.6

TODO:

echo "app-laptop/hdapsd" >> /etc/portage/package.keywords
emerge hdapsd app-laptop/tp_smapi
rc-update add hdapsd default
/etc/init.d/hdapsd start

Sound

NOTE: If you get an hda_intel probe error on boot, you have to enable modem support in bios (don't ask why!).

In the kernel configuration:

Device Drivers  --->
 Sound  --->
  Advanced Linux Sound Architecture  --->
   PCI devices  --->
    <*> Intel HD Audio

Now emerge alsa-utils and add alsasound to the default runlevel:

emerge -av alsa-utils
rc-update add alsasound default
/etc/init.d/alsasound start

Unmute the sound using alsamixer by pressing the m key on the Master and PCM sliders (MM=Muted / 00=Not muted)

Display

In the kernel configuration:

Device Drivers  --->
 Character devices  --->
  <*> Direct Rendering Manager
   <*> Intel 830M, 845G, 852GM, 855GM, 865G (i915 driver)  --->

Now run xorgcfg which should start smoothly. Do your personal changes (none), and save the files to their default location. Edit /etc/X11/xorg.conf and add the following lines:

Section "dri"
   Mode 0666
EndSection

Now for the rotation to work, we need to emerge some stuff, and make some editing. First, emerge some apps (note: wee need linuxwacom >= 0.7.8)

echo "x11-drivers/linuxwacom" >> /etc/portage/package.keywords
emerge linuxwacom sudo xhost xrandr

Get the rotate script from ref. A, and make some adjustments:

cd /usr/local/bin
wget http://luke.no-ip.org/x60tablet/examples/rotate
chmod +x rotate
sed "s/cursor/Cursor/" -i rotate
sed "s/stylus/Stylus/" -i rotate
sed "s/eraser/Eraser/" -i rotate
sed 's/"%s set %s Rotate %s"/"sudo su -c \\"DISPLAY=:0.0 %s set %s Rotate %s\\""/' -i rotate
sed "s/'normal': 'NONE', 'left': 'CCW', 'right': 'CW', 'inverted': 'HALF'/'normal': '0', 'left': '2', 'right': '1', 'inverted': '3'/" -i rotate

Put yourself into the wheel group, and setup sudo to make you run xsetwacom without password.

Hint:
For the compiz-fusion to work you will need to start it like this:
LIBGL_ALWAYS_INDIRECT=true compiz-fusion --replace --indirect-rendering ccp

TODO: xhost +

Input

Pen

In the kernel configuration:

Device Drivers  --->
 Input device support  --->
  <*> Event interface
  [*] Miscellaneous devices  --->
   <*> User level driver support
 USB support  --->
  < > Wacom Intuos/Graphire tablet support

The Wacom Intus/Graphire USB Tablet should not be activated, the X60 Tablet is not an USB device.

Emerge setserial;

emerge setserial

and add the following (magic) line to /etc/conf.d/local.start:

setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig

If you get 'Cannot set serial info: Invalid argument' your kernel may have slightly broken serial support (suspend2-sources-2.6.22-r2, gentoo-sources-2.6.22-r5), this is fixed in gentoo-sources-2.6.22-r9.

ATTENTION!
Xorg 7.3 works with current linuxwacom (0.7.8-3, 0.7.9-1), but in a strange way. Keep Xorg 7.2 unless you are going to use your pen only as mouse and only in the normal rotation.

Re to ATTENTION! I reply to myself. In the linuxwacom 0.7.8 branch they added the support for the multitouch feature. However this "feature" makes the usage of pen almost impossible (see this forum). I prepared a patch which removes this feature and wrote an ebuild which can apply this patch: Bugzilla Bug 147537. However still I have small problems in Xorg 7.3: bug 1823908

Now add the following lines to your xorgcfg generated /etc/X11/xorg.conf:

Section "InputDevice"
   Identifier  "Cursor"
   Driver      "wacom"
   Option      "Device" "/dev/ttyS0"
   Option      "Type" "cursor"
   Option      "ForceDevice" "ISDV4"
EndSection
Section "InputDevice"
   Identifier  "Stylus"
   Driver      "wacom"
   Option      "Device" "/dev/ttyS0"
   Option      "Type" "stylus"
   Option      "ForceDevice" "ISDV4"
EndSection
Section "InputDevice"
   Identifier  "Eraser"
   Driver      "wacom"
   Option      "Device" "/dev/ttyS0"
   Option      "Type" "eraser"
   Option      "ForceDevice" "ISDV4"
EndSection

And the following three lines in the end of the ServerLayout section:

InputDevice    "Cursor" "SendCoreEvents"
InputDevice    "Stylus" "SendCoreEvents"
InputDevice    "Eraser" "SendCoreEvents"

Xournal

The ebuild in Bug 143177 works fine for verion 0.4.1

Touch Screen

It works for me from the box. I just unexpectedly discovered that it works. However in the "left" and "right" rotations of the screen the pointer appears approximately 3cm from the touch point. I do not know how to solve this.

However it causes a lot of problem so I prepared a sollution (see the reply to attention above: [1]).

Trackpoint

Works.

Fingerprint Reader

This actually is surprisingly easy to make work:) Just emerge thinkfinger >= 0.3;

echo "sys-auth/thinkfinger" >> /etc/portage/package.keywords
emerge thinkfinger

and add the following line in /etc/pam.d/system-auth:

auth       sufficient   pam_thinkfinger.so

The first section in the file should now look like the following:

auth       required     pam_env.so
auth       sufficient   pam_thinkfinger.so
auth       sufficient   pam_unix.so try_first_pass likeauth nullok

All left is to read your fingerprint for your user. Run tf-tool --add-user <login>, then reboot and see if it works. If using gdm, it should work smoothly.

Thinkpad buttons

You can enable them in the kernel either built-in or as a module:

Location:                                                             │
  -> Device Drivers                                                   │
    -> Character devices
     <M> /dev/nvram support

In case you chose the module you will need to autoload it since it is not loaded by the udev:

 echo nvram >> /etc/modules.autoload.d/kernel-2.6

By default the /dev/nvram device is configured for root only access. In order to change it permanentely add the corresponding rule to udev. For example I did:

 echo "KERNEL==\"nvram\", GROUP=\"users\"" >> /etc/udev/rules.d/50-local.rules

After that you can either configure them using app-laptop/tpb or KDE user can relay on the KMilo application configurable in the

"Control Center -> System Administration -> IBM Thinkpad Laptop".

Network

Ethernet

In the kernel configuration:

Device Drivers  --->
 Network device support  --->
  Ethernet (1000 Mbit)  --->
   <*> Intel(R) PRO/1000 Gigabit Ethernet support

Configure the ethernet card in /etc/conf.d/net:

config_eth0="dhcp"
eth0_dhcpcd="-t 4"

Wireless

Note: Make sure that the hardware disable-switch isn't disabled - it is placed at the front/bottom of the laptop (don't make the same mistake as i did!)

In the kernel configuration:

Device Drivers  --->
 Network device support  --->
  Wireless LAN (non-hamradio)  --->
   [*] Wireless LAN drivers (non-hamradio) & Wireless Extensions
Networking  --->
 <*> Generic IEEE 802.11 Networking Stack
  <M> IEEE 802.11i CCMP support
  <M> IEEE 802.11i TKIP encryption

Now, emerge ipw3945, wireless-tools > 22 and wpa_supplicant, and add ipw3945d to the default runlevel by issuing:

echo "net-wireless/wireless-tools" >> /etc/portage/package.keywords
emerge ipw3945 wireless-tools wpa_supplicant
rc-update add ipw3945d default
/etc/init.d/ipw3945d start

Configure the wireless card in /etc/conf.d/net:

config_eth1="dhcp"
eth1_dhcpcd="-t 4"
eth1_modules="wpa_supplicant"
wpa_supplicant_eth1="-Dwext"

If you are a kismet user it should be configured as follows in /etc/kismet.conf:

suiduser=<login>
source=ipw3945,eth1,ipw3945

VPN

To come...

Bluetooth

In the kernel configuration:

Networking  --->
 <*> Bluetooth subsystem support  --->
  <*> L2CAP protocol support
  <*> RFCOMM protocol support
   [*] RFCOMM TTY support
      Bluetooth device drivers  --->
       <*> HCI USB driver

Now emerge bluez-utils;

emerge bluez-utils

and configure your display name in the device section in /etc/bluetooth/hcid.conf:

name "Your Displayname"

Now we are ready to start

rc-update add bluetooth default
/etc/init.d/bluetooth start

External Connections

ACPI

Just emerge the acpi daemon:

emerge acpid
rc-update add acpid default
/etc/init.d/acpid start

Extra Features

History

5. July - Initial release.

24. July - Added Gentoo General, Sound, Some kernel configuration for the 2.6.21 kernel and new keycodes.

2. September - All sections are has been polished, and should work properly. Only the last ones are missing.

External Sources

A) Linux on the X60 Tablet

B) [2] Keycode Table