Linux on the Thinkpad X41 Tablet

The quick summary is short: everything works fine. The only untested piece of hardware in my laptop is the modem, and it's been some years since the last time I used one.

I will not repeat what others have done so well, so please do as I did and follow the instructions to Install Fedora Core 5 (FC5) on the Thinkpad X41 Tablet.

The set-up for the fingerprint reader is a bit more complex, but again, there's a page at ThinkWiki that provides a script to do it automatically on FC5: Howto enable the fingerprint reader.

Instead of repeating what you can find there, I'll concentrate on what's unique about my installation.

Fvwm on the X41 Tablet

Gnome worked nicely from the default installation, but I'm a hard-core user of Fvwm since the early 90's … and I was just not ready to change window manager yet. While the default configuration is truly awful, and has driven away many potential users, my personal setup has been evolving steadily for a decade and is often mistaken for some fancy Gnome/KDE theme.

Screen rotation

Rotates fine, but screen dimensions are not updated in fvwm, requires a Restart.

Using multiple desktops leaves windows messed up after rotation. I have tried using the Placeagain Function on all windows, but does not seem to work as expected.

Tablet special keys

The keys have to be defined first in /etc/rc.local to produce scancodes. I've assigned them keys not present in a regular keyboard:

# Tablet Menu Key maps to key 121 (code 134)
setkeycodes 68 121
# Tablet Rotate maps to key 120 (code 139)
setkeycodes 6c 120
# Tablet Ctrl-Alt-Del Key maps to key 122 (code 210)
setkeycodes 67 122

Next you have to map the keycodes to symbols that Fvwm will understand in a ~/.Xmodmap file:

keycode 134 = F29
keycode 139 = XF86RotateWindows
keycode 210 = F30

Finally, tell Fvwm what to do on a keypress:

Key F29                 A   N   Popup DesktopMenu
Key XF86RotateWindows   A   N   Exec myrotate
Key F30                 A   N   Exec sudo /usr/sbin/hibernate

Dynamic menus

Not really Tablet specific, but I use them as a Fvwm-integrated replacement for Tabatha. The fvwm-dyn-menu script dynamically generates a menu from a directory structure. It generates a menu entry for each file in the directory, and a submenu for each directory. a sample directory entry looks like this (example is simple, and mostly self-explanatory):

name=On-Screen Keyboard
order=06
icon=key.png
exec=xvkbd

Instead of specifying a shell command, you can specify a Fvwm command using the “cmd” key instead of “exec”:

name=Device Power Status
icon=power.png
cmd=Popup X41Power
order=98

Dual-head mode

The relevant parts of my /etc/X11/xorg.conf file.

This first part defines the layout of screens. I have defined two configurations: the “single” screen mode is selected whenever I work on the laptop alone. The “xinerama” mode whenever I am working at my office, with the external screen connected.

Please note that the stylus does not work correctly when is dual-head mode. The driver thinks that the physical laptop screen (the tablet) must cover the entire X desktop, causing the pointer to warp from one screen to the other.

Section "ServerFlags"
  (...)
  Option "DefaultServerLayout" "single"
EndSection      

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

Section "ServerLayout"
  Identifier     "xinerama"
  Screen      0 "Screen0" 0 0
  Screen      1 "Screen1" RightOf "Screen0"
  InputDevice    "Mouse0" "CorePointer"
  InputDevice    "Keyboard0" "CoreKeyboard"
  InputDevice    "cursor" "SendCoreEvents"
  InputDevice    "stylus" "SendCoreEvents"
  Option "Xinerama" "On"
EndSection

This second part is what defines the two graphic cards, the two monitors, and the two screens.

Section "Device"
    Identifier  "i915I"
    Driver      "i810"
    VendorName  "Intel Corp."
    BoardName   "Mobile Graphics Controller"
    BusID       "PCI:0:2:0"
    Screen      0
    Option      "MonitorLayout" "CRT,LFP"
EndSection

Section "Device"
    Identifier  "i915E"
    Driver      "i810"
    VendorName  "Intel Corp."
    BoardName   "Mobile Graphics Controller"
    BusID       "PCI:0:2:0"
    Screen      1
    Option      "MonitorLayout" "CRT,LFP"EndSection
    
Section "Monitor"
    Identifier  "LCD"
    HorizSync   31-90
    VertRefresh 59-75
    Option      "MonitorLayout" "CRT,LFP"
    Option      "DPMS"
EndSection
    
Section "Monitor"
    Identifier  "CRT"
    HorizSync   31-90
    VertRefresh 54-61
    Option      "DPMS"
EndSection

Section "Screen"
    Identifier  "Screen0"
    Device      "i915I"
    Monitor     "LCD"
    DefaultDepth 24
    SubSection  "Display"
                    Depth   24
                    Modes   "1280x1024" "1024x768" "800x600" "640x480"
                    #Modes   "1024x768" "800x600" "640x480"
    EndSubSection
EndSection

Section "Screen"
    Identifier  "Screen1"
    Device      "i915E"
    Monitor     "CRT"
    DefaultDepth 24
    SubSection  "Display"
                    Depth   24
                    #Modes   "1280x1024" "1024x768" "800x600" "640x480"
                    Modes   "1280x1024"
    EndSubSection
EndSection

Making the Tablet work in Dual-Head / Xinerama

One you start X in dual-head mode (be it multi-head or Xinerama) the tablet pen does not work as expected: it tries to map the tablet surface (the LCD screen) on the entire X desktop resolution, spanning multiple screens. This results in the pointer not being under the pen tip.

The way to fix this behavior is to explicitly tell the wacom driver that the pen should only cover the first screen. Add the following option to the setup of your wacom devices:

    Option "ScreenNo" "0"

As an important limitation, be aware that screen rotation (xrandr) and Xinerama do not mix well. If you are working in dual-head mode, forget about screen rotations in Xinerama mode. Rotation still works well in Multi-head mode, without the Xinerama extension.

Trouble with the Intel PRO/Wireless 2915ABG

Works fine, but does not associate with some old 802.11b Access Points, like my Linksys. I've had to resort to using my old Orinoco PCMCIA card to connect to the wireless network at home. If anybody knows how to fix this (either from the latop or from the AP), please contact me!

$ iwconfig eth1
Warning: Driver for device eth1 has been compiled with version 20
of Wireless Extension, while this program supports up to version 19.
Some things may be broken...

eth1      unassociated  ESSID:"..."  Nickname:"..."
          Mode:Managed  Channel=0  Access Point: Not-Associated   
          Bit Rate:0 kb/s   Tx-Power=20 dBm   Sensitivity=8/0  
          Retry limit:7   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Note: it's the unassociated part that causes the problem …

Tablet software

  • Xournal - Note-taking application

Great functionality, and it's only in its early versions! Light-weight, loads very fast (unlike Jarnal, which has more features, but requires Java).

  • xvkbd - Virtual keyboard

May not be the most feature-rich one, but works nicely and has RPM packages available.

Actually the only gesture recognizer that I've been able to get working. Xstroke seems to have vanished from the face of the Earth, and xscribble never worked for me.

  • TAbiWord - Tablet extension to AbiWord

The TAbiWord Home Page says code will be released in SourceForge, but no files have been released. If anyone know what happened to this project, please let me know!

Configuration files


This page is listed in TuxMobil.org

Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.5 License.

x41tablet.txt · Last modified: 2007/10/19 09:51 (external edit)
Driven by DokuWiki Recent changes RSS feed