Installing Fedora Core 4 on a ThinkPad X41 Tablet
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 | |
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.
- Use Powerquest Partition Magic, QTParted or some software that can partition a basic disk with NTFS partitions to create room for Fedora Core 4.
- 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.
- 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.
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
- 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.
- The stylus may not work as a mouse immidiately. See the Stylus section below.
- 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
- 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.
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
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.
- Download the RPM:
$ wget http://www.cs.cornell.edu/~saikat/jarnal-6.60-1sg.noarch.rpm
- Install it:
# rpm -Uvh jarnal-6.60-1sg.noarch.rpm
It should create a menu entry Notes under Applications > Graphics.