Debian on a Fujitsu Lifebook T4020D

After the death of Nostromo, the HP tx1000 I was using, I needed a new machine, and quickly. As it turns out, the only machine available on such short notice was a Fujitsu Lifebook T4020D, one of several that we had recently purchased secondhand. The machine had XP Tablet Edition installed, but I was more interested in seeing how well Linux would work on this laptop.
After my experience with Debian on the tx1000, I have to say I was very pleased with how well the hardware in the Fujitsu was supported. Most everything worked out of the box, and the detailed information is below.

Notes on the OS:

I started this document while installing Debian Lenny. Since then I've upgraded my system to Squeeze (testing at the time of writing.) Since Squeeze is currently a moving target, some of this documentation is less than perfectly accurate.

Specifications

CPU: Intel(R) Pentium(R) M processor 1.73GHz (from /proc/cpuinfo)
lspci output:

00:00.0 Host bridge: Intel Corporation Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller (rev 04)
00:02.0 VGA compatible controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04)
00:1c.0 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 (rev 04)
00:1c.1 PCI bridge: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 (rev 04)
00:1d.0 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 (rev 04)
00:1d.1 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 (rev 04)
00:1d.2 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 (rev 04)
00:1d.7 USB Controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev d4)
00:1e.2 Multimedia audio controller: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller (rev 04)
00:1e.3 Modem: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller (rev 04)
00:1f.0 ISA bridge: Intel Corporation 82801FBM (ICH6M) LPC Interface Bridge (rev 04)
00:1f.1 IDE interface: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 82801FBM (ICH6M) SATA Controller (rev 04)
00:1f.3 SMBus: Intel Corporation 82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller (rev 04)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5751M Gigabit Ethernet PCI Express (rev 11)
06:03.0 CardBus bridge: O2 Micro, Inc. OZ711MP1/MS1 MemoryCardBus Controller (rev 20)
06:03.1 CardBus bridge: O2 Micro, Inc. OZ711MP1/MS1 MemoryCardBus Controller (rev 20)
06:03.2 SD Host controller: O2 Micro, Inc. Integrated MMC/SD Controller
06:03.3 Bridge: O2 Micro, Inc. Integrated MS/xD Controller
06:05.0 Ethernet controller: Atheros Communications Inc. AR5413 802.11abg NIC (rev 01)
06:06.0 FireWire (IEEE 1394): Texas Instruments TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link)

What works out of the box:

  • Sound
  • Wired Ethernet
  • Wireless Ethernet
  • Suspend to RAM
  • Suspend to Disk

What kinda works out of the box:

  • Tablet buttons (they generate keycodes but will need to be programmed in Keyboard properties)

What doesn't work out of the box:

Tablet Digitizer

Getting it working:

  • Install wacom-tools, xserver-xorg-input-wacom, setserial
  • Run
    setserial /dev/ttyS0 port 0x0220 irq 4 autoconfigure

    to set up the serial port

  • Run
    wacdump

    You should be able to influence the terminal output with your stylus.

  • Run
    dpkg-reconfigure setserial

    and choose 'Autosave Once'

  • Add the following to xorg.conf:
    Section "InputDevice"
        Driver "wacom"
        Identifier "stylus"
        Option "Type" "stylus"
        Option "SendCoreEvents" "true"
        Option "Device" "/dev/ttyS0"
        Option "ForceDevice" "ISDV4" # Tablet PC ONLY
    EndSection

    Section "InputDevice"
        Driver "wacom"
        Identifier "eraser"
        Option "Type" "eraser"
        Option "Device" "/dev/ttyS0"
        Option "ForceDevice" "ISDV4" # Tablet PC ONLY
    EndSection

    Section "InputDevice"
        Driver "wacom"
        Identifier "cursor"
        Option "Type" "cursor"
        Option "Device" "/dev/ttyS0"
        Option "ForceDevice" "ISDV4" # Tablet PC ONLY
    EndSection

    Section "ServerLayout"
            Screen          "Default Screen"
            InputDevice     "Generic Keyboard"
            InputDevice     "Configured Mouse" "Core Pointer"
            InputDevice     "cursor"
            InputDevice     "stylus"
            InputDevice     "eraser"
    EndSection

Tablet Rotation

NB: Though I haven't done any rigorous testing, I've seen occasions where suspending while the tablet is rotated into portrait mode results in the digitizer losing its calibration. This poses a problem as I've not discovered a way to re-calibrate the digitizer. However, it seems that resetting the X server re-aligns the digitizer so that the tablet works correctly again. I'm just going to ensure that I don't suspend the laptop while the tablet is in portrait mode.

Run the following commands to rotate the tablet:

xrandr -o right
xsetwacom setstylus Rotate 1

Run the following commands to fix the tablet:

xrandr -o normal
xsetwacom setstylus Rotate 0

The following script can be made to rotate the tablet back and forth:

#!/bin/sh

ROTATE=`xsetwacom get stylus Rotate`

case $ROTATE in

        0)
        # Display is normal
        xrandr -o right
        xsetwacom set stylus Rotate 1
        ;;

        1)
        # Display is rotated
        xrandr -o normal
        xsetwacom set stylus Rotate 0
        ;;
esac

To bind this to the rotate button on the tablet:

  • Open gconf-editor. Browse to apps -> metacity -> keybinding_commands
  • Assign the path to the rotation script to a command (like command_1)
  • Browse to apps -> metacity -> global_keybindings
  • Assign "XF86WWW" (no quotes) to run_command_1 (or whatever command number you used)

On screen keyboard

  • Install matchbox-keyboard
  • Run gconf-editor. Navigate to apps -> gnome_screensaver
  • Set "embedded_keyboard_command" to "matchbox-keyboard --xid"
  • Set "embedded_keyboard_enabled" to "1"

Now, when you lock the screen, you'll have an on-screen keyboard to enter your password. Just don't do it where other people can see it (like on a projector), as the cursor is visible.

Pageup/Pagedown on the tablet

  • Create an .xmodmap file with the following content:
    keycode 151 = Next
    keycode 159 = Prior
  • Go to System -> Preferences -> Sessions from the Gnome panel. Add a Startup application that runs the command "xmodmap .xmodmap"
  • Log out and back in. You may see a warning about loading modmaps the first time. Just load your .xmodmap and press OK. Make sure the "don't bug me again" box is checked.

What I haven't tested:

  • Modem
  • Card reader