Installing Fedora Core 4 on a ThinkPad X41 Tablet

From ThinkWiki
Jump to: navigation, search
NOTE!


Success Chart

Item Working Notes
Installation Network Installation Yes
USB Installation Yes (DVD)
Display Laptop Screen Yes both vesa driver, and i810 (with Intel 915 support)
CRT / Projector Yes with i810 driver. (screen/crt are exclusive with vesa)
On-the-fly Screen Rotation No
Stylus Yes wacom serial driver.
Power Management Software Suspend (hibernate) Yes Software Suspend 2
Suspend to Memory (ACPI sleep) No Tested on 2.6.12-1.1398

(Problems with SATA and Linux)

Audio Yes ALSA intel8x0 driver
Wireless 802.11b/g Yes ipw2200/madwifi drivers
Bluetooth Yes
Extra Buttons Keyboard Section Yes ibm-acpi driver
Tablet buttons Yes setkeycodes
Fingerprint Scanner No See Integrated Fingerprint Reader.
Harddisk Active Protection No See Active Protection System.

Installation

The X41 Tablet requires a dock to use an optical drive. The BIOS can, however, boot from USB or the network.

Preparation

The X41 Tablet comes installed with Windows XP Tablet edition. Before installing Fedora, the harddrive needs to be repartitioned and certain parameters need to be written down for later use.

  1. Use Powerquest Partition Magic, QTParted or some software that can partition a basic disk with NTFS partitions to create room for Fedora Core 4.
  2. Under windows, note the serial port and the irq used by the Wacom stylus device. This information is listed under Control Panel > System > Hardware > Device Manager > HID > Wacom Stylus > Resources. On the 18695CU model, the port is 0200-0207 and irq is 5.
  3. Note the MAC address of the ethernet card and the wireless card. These are on a stickers under the laptop labled LAN MAC Address and 802.11b/g MAC Address.

USB Boot Preparation

From the Fedora Core 4 DVD, write the bootimage to a USB device.

 dd if=images/diskboot.img of=/dev/sdb

where /dev/sdb is the USB device. Note: The destination is /dev/sdb and not /dev/sdb1. Also perhaps due to a BIOS problem or image problem, USB booting may not always work.


If installing from Windows, you can download dd for windows and run:

 dd if=C:\diskboot.img of=\\.\X:

where X: is the location of your flash drive. The image file is located in CD1 of the Fedore Core at images\diskboot.img

PXE Boot Preparation

PXE boot requires the X41 Tablet to be connected to a wired ethernet network that is configured for DHCP and TFTP. This can be accomplished by connecting the tablet to another host over a ethernet corssover cable.

Configure the DHCP server to hand out boot instructions. In the /etc/dhcpd.conf file, include:

 host pxeclient {
     hardware ethernet 00:0a:e4:35:a9:12;         # X41 Tablet LAN MAC Adress noted above
     filename "/pxelinux.0";
     fixed-address 192.168.1.60;                  # IP Address for X41 Tablet
     next-server 192.168.1.1;                     # IP Address of TFTP server
 }

Note: Replace the italicized fields above with appropriate values for your hardware. A sample dhcpd.conf file can be found here.

Configure the TFTP server. If the TFPT server uses xinetd, you may need to enable it in /etc/xinetd.d/tftp by setting disable = no. Also note root of the server. This is usually /tftpboot. Copy the pxelinux files present on the FC4 disk in images/pxelinux/ to the TFTP root. You will need two additional files pxelinux.0 and pxelinux.cfg/default.

$ find /tftpboot
/tftpboot
/tftpboot/pxelinux.0
/tftpboot/initrd.img
/tftpboot/vmlinuz
/tftpboot/pxelinux.cfg
/tftpboot/pxelinux.cfg/default


Contents of /tftpboot/pxelinux.cfg/default:

 DEFAULT vm
 SERIAL 0 9600
 label vm
 kernel vmlinuz
 append initrd=initrd.img ramdisk_size=9372 root=/dev/rd/0

Installing

Restart the X41 Tablet. If you are using a USB key, insert it before switching on the tablet. Press F12 during startup to display the temporary boot device screen. Select either USB HDD or Netowkr Boot based on your medium of choice. This should bring up the Fedora Core installer. Once the installer has started up, Fedora Core can be installed over the web, ftp, nfs, USB disk etc. The rest of the installation is straight forward and described in detail here.

NOTE!
There may be some screen corruption or shimmering effects in the graphical installer. This can be fixed after installation is complete as explained in the X Server Configuration below. The shimmering can be overcome by simply closing and reopening the tablet lid. The graphics refresh that occurs resolves this issue until the next reboot

Boot Loader

If you are keeping Windows installed on the tablet, and would also like the recovery environment to work, it is simplest to use the standard Windows bootloader (ntldr) to control booting of linux. When you install FC5 and get to the option page for installing the bootloader, let it use its option of installing grub, but make sure you select the configure advanced options checkbox. Then click next and you will get the options page for Grub. Choose the option to install grub on the boot partion only and NOT to the MBR. Finish the Fedora Install. Now when you reboot it will go straight to windows as it did before you installed Fedora. In Windows download dd for Windows. Now extract the program and log in as a user with admin privledges. Now we use dd to extract the bootsector from the boot partition.

dd if=\\?\Device\Harddisk0\Partition3 of=C:\BOOTSECT.LIN bs=512 count=1

where the 3 in "Partition3" refers to boot partition \dev\sda3. Change the number if you used a different boot partition. Now edit the file C:\BOOT.INI. This is a hidden, readonly, system file, so you may have to change your folder settings to show hidden and system files, and then change the file attributes to be not readonly. Now add the following line to the operating systems section.

C:\BOOTSECT.LIN="Fedora Core 5"

Then change the timeout value to whatever time you want before the system automatically boots. Now you can change the default option to C:\BOOTSECT.LIN if you want Linux to boot automatically or leave windows as default. Now restore the attributes to boot.ini and it is probably good to make bootsect.lin hidden and read only. Now when you reboot the machine you will have the option to select what OS to boot and if you press the blue AccessIBM or ThinkVantage button before this screen appears the preboot environment will start up as it normally would have.

Configuration

X Server

The X41 Tablet, uses an Intel integrated 915 video device. This is supported by the i810 driver and can be selected from the graphical xserver screen by selecting the Intel 915 option. Note: The i810 driver on xorg-6.8.2 and earlier DO NOT support the card. Use the vesa (generic) option for such servers. The LCD screen is a 1024x768 display. The stylus requires the linuxwacom package. This should automatically be installed as part of FC4. If you update FC4 with the latest rpms the i810 driver will work. You can use system-config-display to change the driver, but do it before adding configuration for stylus since it will drop the stylus related settings. For some additional information about rotating the screen and installing FC4 see http://www.dklevine.com/general/software/tc1000/x41f4.html


NOTE!
  1. The first time vesa (generic) is selected, there may appear to be some screen corruption or shimmering effects. It should go away after a reboot.
  2. The stylus may not work as a mouse immidiately. See the Stylus section below.
  3. Screen rotation on-the-fly currently does not work. It may be possible to pass a kernel parameter at boot time to rotate the framebuffer into a portrait orientation, but this has not been confirmed.


Sample /etc/X11/xorg.conf

 Section "ServerLayout"
 	  Identifier     "single head configuration"
 	Screen      0  "Screen0" 0 0
 	InputDevice    "Mouse0" "CorePointer"
 	InputDevice    "Keyboard0" "CoreKeyboard"
 	InputDevice    "cursor" "SendCoreEvents"
 	InputDevice    "stylus" "SendCoreEvents"
 EndSection
 
 Section "Files"
 	RgbPath      "/usr/X11R6/lib/X11/rgb"
 	FontPath     "unix/:7100"
 EndSection
 
 Section "Module"
 	Load  "dbe"
 	Load  "extmod"
 	Load  "fbdevhw"
 	Load  "glx"
 	Load  "record"
 	Load  "freetype"
 	Load  "type1"
 	Load  "dri"
 EndSection
 
 Section "InputDevice"
 	Identifier  "Keyboard0"
 	Driver      "kbd"
 	Option	    "XkbModel" "pc105"
 	Option	    "XkbLayout" "us"
 EndSection
 
 Section "InputDevice"
 	Identifier  "Mouse0"
 	Driver      "mouse"
 	Option	    "Protocol" "IMPS/2"
 	Option	    "Device" "/dev/input/mice"
 	Option	    "ZAxisMapping" "4 5"
 	Option	    "Emulate3Buttons" "yes"
 EndSection
 
 Section "InputDevice"
       Driver        "wacom"
       Identifier    "cursor"
       Option        "Device"        "/dev/ttyS0"
       Option        "Type"          "cursor"
       Option        "ForceDevice"   "ISDV4"
       Option        "Mode"          "Absolute"
       Option        "Button3"	      "2"
       Option        "Button2"	      "3"
       Option        "TPCButton"     "on"
 EndSection
 
 Section "InputDevice"
       Driver        "wacom"
       Identifier    "stylus"
       Option        "Device"        "/dev/ttyS0"
       Option        "Type"          "stylus"
       Option        "ForceDevice"   "ISDV4"
 EndSection
 
 Section "Monitor"
 	Identifier   "Monitor0"
 	VendorName   "Monitor Vendor"
 	ModelName    "LCD Panel 1024x768"
 	HorizSync    31.5 - 48.5
 	VertRefresh  40.0 - 70.0
 	Option	    "dpms"
 EndSection
 
 Section "Device"
   # The i810 driver under xorg-6.8.2 and earlier DO NOT support the
   # Intel Integrated 915 chipset. Use the generic vesa driver on old
   # versions. 
 	Identifier  "Videocard0"
 	Driver      "vesa"
   #   Driver      "i810"
 	VendorName  "Intel"
 	BoardName   "Intel 915"
   # Once the i810 supports the chipset, this section can be changed
   # to use the new driver by using the appropriate Driver line
 EndSection
 
 Section "Screen"
 	Identifier "Screen0"
 	Device     "Videocard0"
 	Monitor    "Monitor0"
 	DefaultDepth     16
 	SubSection "Display"
 		Viewport   0 0
 		Depth     16
 		Modes    "1024x768" "800x600" "640x480"
 	EndSubSection
 EndSection
 
 Section "DRI"
 	Group        0
 	Mode         0666
 EndSection

Stylus

The stylus is not recognized in Fedora Core at startup. Connect /dev/ttyS0 to the stylus by including the following line in /etc/rc.d/rc.local.

 setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig

If stylus problems persist, try upgrading to the latest linuxwacom package: linuxwacom-0.6.8-5.i386.rpm

NOTE!
  • When the stylus goes out of range from the screen, the mouse cursor warps to the top-left corner. When the mouse comes back in range, the cursor should warp back to the right spot. This can be particularly annoying if the temporary jump causes focus and menus to change. This is a known bug in the wacom X driver.

Audio

Audio works out of the box on X41 Tablets with the ALSA intel8x0 driver. Note: Sometimes the mixer settings are muted on startup resulting in no sound. This can be fixed using any alsa mixer such as aumix, amixer, gnome-volume-control etc. If the mixers are being repeatedly muted, then first unmute them and set them to desirable levels. As root, execute the command # /usr/sbin/alsactl store. Finally, add the following line to /etc/rc.d/rc.local.

 /usr/sbin/alsactl restore

ACPI

ACPI events are supported out of the box with ibm-acpi. Install it by executing:

$ wget http://www.cs.cornell.edu/~saikat/ibm-acpi-0.11-2.fc4.i386.rpm
# rpm -Uvh ibm-acpi-0.11-2.fc4.i386.rpm

Change the button bindings in /etc/acpi/events. If you do not plan to use Suspend to Disk (below), set the power button to halt the system instead of hibernating by changing /etc/acpi/events/hibernate.

Suspend

Suspend to Disk (Hibernation)

Software suspend works using Software Suspend 2. Follow the installation directions at http://mhensler.de/swsusp/. To automatically fix the stylus lock-up after resuming, add the following line to /etc/hibernate/hibernate.conf

OnResume 96 setserial /dev/ttyS0 port 0x0200 irq 5 autoconfig

If the stylus still locks up, see the Stylus section for the latest driver. ACPI power events are not delivered if AC status changes during hibernation. To tune the laptop after resume, add the following line to /etc/hibernate/hibernate.conf

OnResume 20 /etc/acpi/actions/battery.sh

Suspend to Memory (ACPI Sleep)

ACPI suspend to memory does not work with the 2.6.12 and earlier kernels because the X41 Tablet uses SATA access to the harddisk and the kernel SATA driver is not power-aware. See Problems with SATA and Linux for further discussion and solutions. (should be fixed in 2.6.15)

In any case, in /etc/grub.conf append the kernel parameter: acpi_sleep=s3_bios

This is required to fix the problem where the screen doesn't turn back on after resuming from ACPI sleep.

ATTENTION!
Do NOT attempt ACPI sleep on the X41 Tablet running kernel 2.6.12 or earlier since the harddisk SATA driver doesn't resume properly. This can result in FILESYSTEM CORRUPTION.

Extra Buttons

Extra buttons work out-of-the-box. The package tpb provides some on-screen feedback for the volume, brightness and thinklight buttons. # setkeycodes can be used to map the tablet buttons (details).

To map the Tablet Up and Down buttons to Page Up and Page Down keys, and the Tablet Enter and Esc buttons to their respective counterparts, add the following to /etc/rc.d/rc.local.

setkeycodes 6e 109 6d 104 69 28 6b 1

Wireless Card

Intel 2200BG MiniPCI Card
The 802.11b/g card is supported by the ipw2200 driver. The easiest way to install it is to get the package from ATRpms. (Warning: please be warned about ATrpms: http://fedoraproject.org/wiki/JohnMahowald/ATrpmsWarning

$ wget http://dl.atrpms.net/all/atrpms-kickstart-28-1.rhfc4.at.i386.rpm
# rpm -Uvh atrpms-kickstart-28-1.rhfc4.at.i386.rpm
# apt-get update && apt-get dist-upgrade
# apt-get install ipw2200-firmware

Atheros MiniPCI Card
Some (newer) X41 Tablets use the Atheros chipset (which requires madwifi drivers) Goto http://www.atrpms.net/dist/fc4/madwifi/ Download madwifi-ng, madwifi-ng-hal-kmdl, and madwifi-ng-kmdl the appropriate build and CPU (uname -a)

# rpm -ivh madwifi*.rpm

Reboot

# ifconfig ath0 up
# iwconfig ath0 key (your key)
# iwconfig ath0 essid (your ssid)
# dhclient ath0
NOTE!
Feel free to create a script to execute the previous four lines as needed.
Visit http://madwifi.sf.net for more information about the Atheros madwifi drivers.

Bluetooth

Some (newer) X41 Tablets support bluetooth. A fully updated FC4 installation natively supports the bluetooth adapter in the X41. You can use hcitool, hciattach, and hciconfig to configure and connect to other bluetooth devices.

Software

Network Manager

NetworkManager is a rather useful utility included in Fedora Core 4 that provides windows-like ease of configuring wireless and wired network as and when they are available. Give it a try by enabling it in the initscripts by running # chkconfig NetworkManager on && /etc/init.d/NetworkManager restart as root and running $ NetworkManagerInfo from a X session. The first command needs to be executed only once, while the second should be executed after every login. This can be automated by adding it to the list of startup programs in Desktop > Preferences > More Preferences > Sessions > Startup Programs.

Sun's Java

Sun's Java VM is needed by the Jarnal application below. Due to licensing issues, the JVM cannot be packaged but needs to be build by the end user. JPackage provides a build environment as follows:

  • Download the build: $ wget http://mirrors.dotsrc.org/jpackage/1.6/generic/non-free/SRPMS/java-1.5.0-sun-1.5.0.05-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_05-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: # rpm -Uvh /usr/src/redhat/RPMS/i586/java-1.5.0-sun-1.5.0.05-1jpp.i586.rpm
  • Install the fonts: # rpm -Uvh /usr/src/redhat/RPMS/i586/java-1.5.0-sun-fonts-1.5.0.05-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. As of 2006/04/11 the downloadable build environment is 1.5.0.06 but the JVM stays at jdk-1_5_0_05. The rpmbuild fails. You can download this patch to /usr/src/redhat/SPEC and type # patch -p java_spec.path before the rpmbuild step. It will work then.

Jarnal

Jarnal is a Notetaking application, much like Microsoft Journal for windows. It requires Sun's Java VM above.

It should create a menu entry Notes under Applications > Graphics.