Installing Fedora Core 5 on a ThinkPad X41 Tablet

From ThinkWiki
Jump to: navigation, search

Success Chart

Item Working Notes
Installation Network Installation Yes
USB Installation Yes (DVD)
Display Laptop Screen Yes X.org i810 driver
CRT / Projector Yes
Screen Rotation Yes
Stylus Yes wacom serial driver.
Power Management Software Suspend (hibernate) Yes Software Suspend 2
Suspend to Memory (ACPI sleep) Yes (mostly) Software Suspend 2
Audio Yes ALSA intel8x0 driver
Wireless 802.11b/g Yes ipw2200/madwifi drivers
Bluetooth Not Tested (should work) See Bluetooth on Fedora Core 4
Extra Buttons Keyboard Section Yes ibm-acpi driver
Tablet buttons Yes setkeycodes
Fingerprint Scanner Yes bioapi
Harddisk Active Protection Yes kernel 2.6.16, hdapsd

Installation

Installation is straight forward and identical to the Fedora Core 4 installation process mentioned here.

Configuration

X Server

Enabling the Stylus

Add the following lines to /etc/rc.d/rc.local:
(Note: You will need to be root to perform these two edits)

# Map stylus to a serial port
setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig


Add the lines in bold font to /etc/X11/xorg.conf:

 Section "ServerLayout"
        Identifier     "default"
        Screen      0  "Screen0" 0 0
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "cursor" "SendCoreEvents"
        InputDevice    "stylus" "SendCoreEvents"
EndSection

Section "InputDevice"
      Driver        "wacom"
      Identifier    "cursor"
      Option        "Device"        "/dev/ttyS0"
      Option        "Type"          "cursor"
      Option        "ForceDevice"   "ISDV4"
      Option        "Mode"          "Absolute"
      Option        "TPCButton"     "on"
EndSection

Section "InputDevice"
      Driver        "wacom"
      Identifier    "stylus"
      Option        "Device"        "/dev/ttyS0"
      Option        "Type"          "stylus"
      Option        "ForceDevice"   "ISDV4"
EndSection

Enabling Screen Rotation

Download and install the updated X server and drivers as follows:

# wget http://www.cs.cornell.edu/~saikat/xorg-x11-drv-i810-1.6.0-1.i386.rpm
# wget http://www.cs.cornell.edu/~saikat/xorg-x11-server-Xorg-1.0.99.901-5.i386.rpm
# wget http://www.cs.cornell.edu/~saikat/linuxwacom-0.7.2-3.i386.rpm
# yum localinstall xorg-x11-drv-i810-1.6.0-1.i386.rpm xorg-x11-server-Xorg-1.0.99.901-5.i386.rpm linuxwacom-0.7.2-3.i386.rpm
Hint:
Update: If you have issues using yum to install the RPM's, try:
rpm -Uvh xorg-x11-drv-i810-1.6.0-1.i386.rpm xorg-x11-server-Xorg-1.0.99.901-5.i386.rpm linuxwacom-0.7.2-3.i386.rpm

- OR -

To get working GL support as well try installing from the development yum repository

# yum --enablerepo=development update linuxwacom xorg-x11-drv-i810 xorg-x11-server-Xorg mesa-libGL mesa-libGLU

Bear in mind that the development repository could easily get update in the future to rpm's that either won't work with FC5 or maybe just have large numbers of dependants. The following versions are known to work on the X41

xorg-x11-drv-i810-1.6.0-5
xorg-x11-server-Xorg-1.1.0-23
linuxwacom-0.7.4_1-2
mesa-libGL-6.5-9
mesa-libGLU-6.5-9

Download (and verify) the following script into your path:

$ wget http://www.cs.cornell.edu/~saikat/rotate
$ chmod a+x rotate

Rotate the screen using the script:

$ rotate -h
Useage:
   rotate [left|right|inverted|normal]
 
If no option is given, rotates the screen 90 degrees to the right.

To bind the tablet's Rotate button to rotate the screen on-the-fly, add the following line to /etc/X11/Xmodmap

keycode 139 = XF86RotateWindows
Hint:
Update: Check to make sure you are using the new setkeycodes line in the Tablet Buttons section (one with 6c 120 in the command).

Create the Gnome keybindings as follows:

$ gconftool-2 -s '/apps/metacity/keybinding_commands/command_12' -t string rotate
$ gconftool-2 -s '/apps/metacity/global_keybindings/run_command_12' -t string XF86RotateWindows

Wireless Network

Install the ipw2200 driver from ATrpms.

# rpm --import http://ATrpms.net/RPM-GPG-KEY.atrpms
# cd /etc/yum.repos.d
# wget http://www.cs.cornell.edu/~saikat/atrpms.repo
# yum install atrpms-package-config ipw2200

- OR -

Alternativly you can use the ipw2200 driver that is already part of FC5 and just install the firmware from livna.org.

# rpm -Uvh http://rpm.livna.org/livna-release-5.rpm
# yum install ipw2200-firmware

If you forget to install the correct firmware, you might get this message when trying to ifup:

 tg3 device eth1 does not seem to be present, delaying initialization.

Double-check that the driver can load the required firmware, by looking into /var/log/messages. If it fails, you'll see something like this:

 kernel: ipw2200: ipw2200-bss.fw request_firmware failed: Reason -2
 kernel: ipw2200: Unable to load firmware: -2

Hibernation

Software suspend works using Software Suspend 2. To install:

# cd /etc/yum.repos.d
# wget http://mhensler.de/swsusp/download/suspend2.repo
# yum install userui-suspend2-fbsplash userui-suspend2-theme-fedorabubbles kernel-suspend2

Edit the appropriate kernel line in /etc/grub.conf and add the parameters vga=0x317 and acpi_sleep=s3_bios. For example:

title Fedora Core (<kernel.version-build>.rhfc5.cubbi_suspend2)
       root (hd0,1)
       kernel /vmlinuz-<kernel.version-build>.rhfc5.cubbi_suspend2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet vga=0x317 acpi_sleep=s3_bios
       initrd /initrd-<kernel.version-build>.rhfc5.cubbi_suspend2.img

Comment out the following line in /etc/hibernate/hibernate.conf:

# ProcSetting userui_program /sbin/suspend2ui_text

Add the following lines in /etc/hibernate/hibernate.conf:

ProcSetting userui_program /sbin/suspend2ui_fbsplash
OnResume 96 setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig

Add the following lines in /etc/hibernate/ram.conf:

Distribution fedora

Comment out the following lines in /etc/hibernate/ram.conf:

# EnableVbetool yes
# VbetoolPost yes

Make the following changes (i.e. comment out the two vbetool lines, and add the return 0 line in the resume_video function) in /etc/pm/functions-intel:

resume_video()
{
(
        # /usr/sbin/vbetool post
        # /usr/sbin/vbetool vbestate restore < /var/run/vbestate
        return 0
) >/dev/null 2>&1
}

Force the use of suspend2 by editing the appropriate lines in /etc/sysconfig/pm:

HIBERNATE_METHOD="suspend2"
HIBERNATE_RESUME_POST_VIDEO="no"

Problems with a black screen after resuming can sometimes be fixed by adding the following line to the device section in /etc/X11/xorg.conf:

Option "VBERestore" "true"

Add the following file /etc/pm/hooks/40wacom:

#!/bin/sh
setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig

Tablet Buttons

Activate mappings for the tablet buttons by adding the following lines to /etc/rc.d/rc.local:

# Map tablet hardware buttons
setkeycodes 6e 109 6d 104 69 28 6b 1 6c 120

Fingerprint Reader

The fingerprint reader is supported through the BioAPI framework. The BioAPI framework and the UPEK fingerprint reader driver can be installed as follows:

wget http://www.cs.cornell.edu/~saikat/libbiometrics-1.2.2-1.sg.i386.rpm
wget http://www.cs.cornell.edu/~saikat/libbiometrics-tfmess-1.0-1.sg.i386.rpm
yum --nogpgcheck localinstall libbiometrics-1.2.2-1.sg.i386.rpm libbiometrics-tfmess-1.0-1.sg.i386.rpm
NOTE!
This is still work-in-progress. Currently you can enroll fingerprints, and verify them through a test application. Integrating

this support into pam (and therefore logins, gdm, screensaver etc.) is in the works. Those interested in developing biometrics applications

can install libbiometrics-devel-1.2.2-1.sg.i386.rpm. SRPMS for the above are available here.

To try out enrollment and verification, run: # useraddbio

Harddrive Active Protection System (HDAPS)

Harddrive active protection system requires the hdaps kernel module (included in stock Fedora kernels), and a kernel capable of parking disks (patch included in kernel-suspend2 RPMs from the Hibernation section above). It also requires a userspace daemon to monitor the accleration sensor and park the disk head when excessive motion is detected. To install the userspace daemon, do the following:

Hint:
This requires kernel support for hdaps and head parking. Install kernel-suspend2-2.6.16-1.2084_2 or higher
# wget http://www.cs.cornell.edu/~saikat/hdapsd-20060326cvs-1.sg.i386.rpm
# yum localinstall hdapsd-20060326cvs-1.sg.i386.rpm

If software suspend is enabled, add the following line to /etc/hibernate/hibernate.conf

UnloadModules hdaps

To install the Gnome panel applet that monitors the state of the harddisk, install:

# wget http://www.cs.cornell.edu/~saikat/gnome-applet-hdaps-20060120cvs-1.sg.i386.rpm
# yum localinstall gnome-applet-hdaps-20060120cvs-1.sg.i386.rpm
NOTE!
SRPMS for the above are available here.

Software

Network, Power Management, OSD

Some useful software is not installed by default. These include:

  • tpb — On screen display for thinkpad buttons
  • Network Manager — Manages wireless and wired networks automatically
  • Gnome Power Manager — Manages ACPI power events

To install them execute:

# yum install tpb NetworkManager gnome-power-manager
# chkconfig NetworkManager on

Check your gnome-session-manager is configured to automatically start the panel applets that control Network Manager and Gnome Power Manager. Ensure the following entries are present under System > Preferences > More Preferences > Sessions > Startup Programs:

 nm-applet --sm-disable
 gnome-power-manager --sm-disable

Java 1.5

Install Sun's JRE 1.5. This is required for the jarnal program below.

  • Download the build: $ wget http://mirrors.dotsrc.org/jpackage/1.6/generic/non-free/SRPMS/java-1.5.0-sun-1.5.0.06-1jpp.nosrc.rpm
  • Create the build environment: # rpm -Uvh java-1.5.0-sun-1.5.0.05-1jpp.nosrc.rpm
  • Download the JVM from Sun's Java page and download jdk-1_5_0_06-linux-i586.bin to /usr/src/redhat/SOURCES
  • Build the RPMs: # rpmbuild -ba /usr/src/redhat/SPECS/java-1.5.0-sun.spec
  • Install the JVM: # yum localinstall /usr/src/redhat/RPMS/i586/java-1.5.0-sun-1.5.0.06-1jpp.i586.rpm
  • Install the fonts: # yum localinstall /usr/src/redhat/RPMS/i586/java-1.5.0-sun-fonts-1.5.0.06-1jpp.i586.rpm

Note: This is tailored for the latest JVM as of writing this article. Substitute the latest version numbers if this doesn't work.

Jarnal Note-Taking

Install the Jarnal note-taking application:

# wget http://www.cs.cornell.edu/~saikat/jarnal-8.14-1sg.noarch.rpm
# yum localinstall jarnal-8.14-1sg.noarch.rpm
NOTE!
SRPMS for the above are available here

External Sources