Linux Tablet PC - Debian GNU/Linux on the Compaq Tablet TC1000

Michael Rolig

Email me at michael _ rolig at alumni macalester edu.

Status

Debian X Windows Longrun ACPI
Working Working Working Working
Ethernet Wireless Sound Pen
Working Don't Have Working Working
Pen Buttons Side Keys/Buttons Swivel Keyboard Swivel Mouse
Half Working Working Working Working
USB Keyboard USB Mouse USB Storage PCMCIA/PC Card
Working Working Working Working
Compact Flash Internal Modem Swivel Sensor Docking Station
Working Not Tried Need Info. Don't Have

Links

Installing Debian GNU/Linux

I have successfully installed Debian GNU/Linux Woody & then adding packages from testing and unstable. I have no known operating system issues, and am dual-booting with Windows XP Tablet PC Edition. The howto has details about installing the minimal set of Debian components.

The TC1000 is a relatively standard Microsoft "legacy-free" system. It has a Transmeta Crusoe processor with a VIA chipset. The system has a built-in Nvidia GeForce2 Go video chipset with an approximately 12" 1024x768 LCD display. The only included ports are USB, telephone, Ethernet and external VGA video. The only built-in keyboard device is a small set of keys on the side (Enter, Escape, Tab, Arrow up/down and a special CTRL-ALT-DEL button). The Phoenix BIOS also supports the pen/digitizer at the initial boot-up. The detachable keyboard/mouse are USB devices, though the BIOS can use them at boot-time. Linux must re-initialize them with USB drivers once fully booted. USB keyboards work until the kernel boots (so it works within most boot-loaders like GRUB and SYSLOAD, but not in a Linux install program unless the kernel supports USB HID).

Configuring XFree86

The Nvidia GeForce2 Go chip is supported by the Nvidia driver version 2880 (maybe earlier) and the XFree86 driver in version 4.2.1 (maybe 4.2.0). The XFree86 driver supports portrait mode, but thus far I have experienced troubles with icon drawing under KDE and the console no longer works after starting X. The Nvidia driver does not support portrait mode, but has only a strange flickering problem when switching back to the console, so it remains usable. The Nvidia driver supports dual-head with the external monitor port and numerous configuration options using the TwinView functionality.

Installing the Nvidia Driver

The Nvidia driver requires a kernel level driver plus the XFree86 driver. This requires that you compile the kernel driver, and with Debian, is easiest if you rebuild the kernel. Debian makes this process very easy. I give instructions here that can be combined with the instructions for ACPI and PCMCIA support to yield the method I use.

  1. Get the kernel source (2.4.20 or later)
  2. Untar it in /usr/src (or somewhere else if you want)
  3. Install the kernel-package package. (apt-get install kernel-package)
  4. Install the nvidia-glx-src and nvidia-kernel-src packages. (apt-get install nvidia-glx-src nvidia-kernel-src)
  5. Build the kernel. cd /usr/src/linux ; make-kpkg kernel_image
  6. Build the modules. cd /usr/src/linux ; make-kpkg modules_image
  7. Build nvidia-glx. cd /usr/src ; tar xvfz nvidia-glx-src*.tar.gz; cd nvidia-glx-src ; make -f debian/rules binary-arch
  8. Install the newly created packages in /usr/src. (dpkg -i *.deb)
  9. Copy the XF86Config-4 file to /etc/X11/
  10. Configure the boot-loader to boot the new kernel
  11. Reboot with the new kernel and start X

Boot Profiles

See the howto

Portrait mode

If you have the Nvidia setup working and want to try portrait mode:

  1. Be sure to have version 4.2.1 or later of XFree86.
  2. Remove nvidia-glx (apt-get remove nvidia-glx)
  3. Copy this XF86Config-4 file to /etc/X11/
  4. (Re)start X (don't forget how to reboot in the blind, you won't see a console again).

Longrun

Longrun is a utility for managing the Transmeta Crusoe's advanced power management functionality. The Crusoe processor can dynamically adjust clock speed to save power when CPU utilization is low. You can adjust the power saving features to run according to an economy profile or performance profile. The economy profile takes longer to increase the processor speed when loaded to increase battery life.

Setup

  1. Install the longrun package (version 0.9-7 or greater).
  2. Create the /dev/cpu/0/msr and /dev/cpu/0/cpuid files if they don't exit
  3. Run longrun -p to show status
  4. Run longrun -f [longrun|economy] to change profiles

Boot Profiles

See the howto

wmLongrun

wmlongrun is an applet to display the current CPU speed and switch longrun profiles. If you don't have a docking bar for window maker applets, you can use the -w switch to have it run in a window of its own.

ACPI

ACPI is a recent standard for peripheral and power saving configuration and management. The TC1000 does not support the older APM (Advanced Power Management) system. ACPI support in the base Linux kernel is not very good. The Linux ACPI project has better support, which includes support for the power button on the TC1000 as well as the power-off on shutdown support. The best bet is to patch the kernel to improve the ACPI support to provide power management functionality. This allows battery management software to work.

  1. Get the kernel source (2.4.20 or later)
  2. Untar it in /usr/src (or somewhere else if you want)
  3. Apply the ACPI patch.
  4. Build the kernel. cd /usr/src/linux ; make-kpkg kernel_image.
  5. Install the newly created packages in /usr/src. (dpkg -i *.deb).
  6. Configure the boot-loader to boot the new kernel.
  7. Reboot with the new kernel and start X.

Once you boot you should now be able to press the power button and have it start shutting down. I haven't explored other features. Sleep/Suspend hung my machine. The klaptop software shows battery level and charging status.

Ethernet

The built-in Intel PRO/100 M Mobile Ethernet driver works with Intel's e100 driver that ships with linux kernel version 2.4.20. I have had no trouble with it working.

Wireless

I do not have Compaq's wireless card. Please let me know if you have tried it.

Sound

The sound card works with kernel version 2.4.20's via82cxxx driver.

Pen

The pen took some work to get going, but I have it working. The driver documentation has more information. It's fairly easy to setup, but requires a kernel driver to turn on the serial port to communicate with it and a driver for XFree86 to use it. Many thanks to Frank Bruno for help turning this on and getting a working driver.

  1. Get the kernel driver
  2. Unpack it and build: make ; su -c make install
  3. Then load the module: su -c modprobe fpi2002
  4. Configure the serial port: setserial /dev/ttyS0 autoconfig
  5. Get the xfree86 driver
  6. Install the driver: cp tc1k_drv.o /usr/X11R6/lib/modules/input/
  7. Configure X by adding the following to /etc/XF86Config-4:
    Section "InputDevice"
    Identifier "TC1000 pen"
    Driver "tc1k"
    Option "AlwaysCore" "on"
    Option "Device" "/dev/ttyS0"
    Option "BaudRate" "19200"
    Option "MaximumXPosition" "8600"
    Option "MinimumXPosition" "154"
    Option "MaximumYPosition" "6485"
    Option "MinimumYPosition" "110"
    Option "InvertY"
    EndSection

  8. Restart X
  9. You may need to adjust Min/Max X/Y positions. See the driver documentation.

Side Keys/Buttons

The Keys work without any extra effort as a standard keyboard, some keys have "normal" keycodes, others have large/non-standard keycodes. Run xmodmap to map these keys to something useful. My xmodmaprc file is available. I added the line xmodmap ${HOME}/.xmodmaprc to my .xsession file to run this at startup. You can use xev to collect information about keyboard/mouse events.

KeyKeycode
Mail130
Q131
Tab132
Red btnCTRL-ALT-DEL
Jog-Up134
Jog-Down133
Jog-InReturn

Swivel Keyboard

The swivel keyboard works great, you just need USB keyboard support. This means you need the usb-ohci, input and usbkbd modules loaded from the stock kernel distribution. See my /etc/modules file.

Swivel Mouse

Just like the keyboard, you only need USB mouse support. This means you need the usb-ohci, input and usbmouse modules loaded. DO NOT explicitly load the mousedev module, it cause problems for me, where the mouse didn't work properly. See my /etc/modules file.

USB Keyboard

I got an Apple Pro keyboard. This is a nice, compact keyboard that includes a USB 1 hub for a mouse to plug into, or other devices. Of the keyboards I could find, it's styling is the best with the tablet (IMHO). The keyboard and hub work well. My .xmodmaprc has the keycodes that work for it's extra buttons. The only annoyance is that the key-map for the Apple key/Windows key on the two keyboards is inconsistent. If you have the swivel keyboard working, plugging in the Apple keyboard

USB Mouse

I got a Logitech MX300 USB mouse to work (through the Apple keyboard hub). Again, if the eraserhead mouse on the swivel keyboard works, an external USB mouse should work. I haven't tried to get the spare button on the mouse to work, nor do I care. The scroll wheel works, see this site for more information on the scroll wheel (first hit from Google).

USB Storage

I have use the Compaq USB multi-bay with the Compaq floppy drive and the DVD/CD-RW drive. Both work with the kernel's standard USB storage support. The only gotcha is that floppy drives show up as SCSI disks and not as floppy drives, so you need to look at /dev/sd[abcd] not /dev/fd0 or /dev/floppy/0. You need to build a kernel with SCSI support and USB storage support. Load usb-storage and sd_mod modules at boot up. My /etc/modules file is available for reference. I have the hotplug package installed which helps manage insertion and deletion of USB devices (and PCMCIA). The cdrom does appear as /dev/cdrom or /dev/cdroms/[01234].

PCMCIA/PC Card

I don't use the PCMCIA support from the stock kernel, rather I get the latest pcmcia-source package and build the kernel modules. See the Linux PCMCIA site for more information on PCMCIA. I have used a 3com networking card successfully.

  1. Install the PCMCIA source: apt-get install pcmcia-source.
  2. Get the kernel source (2.4.20 or later)
  3. Untar it in /usr/src (or somewhere else if you want).
  4. Untar the pcmcia-cs.tar.gz file in /usr/src
  5. Build the modules: cd /usr/src/linux; make-kpkg modules_image
  6. Install the PCMCIA modules: dpkg -i pcmcia-modules*deb.
  7. Install the PCMCIA tools: apt-get install pcmcia-cs.
  8. Install the hotplug tools: apt-get install hotplug.

Compact Flash

The compact flash slot works. This slot is a PCMCIA device, so all you need is PCMCIA support with IDE storage support and it works. These behave just like a PCMCIA IDE device. When you insert a compact flash card, the ide_cs module should be loaded automatically. The first card should then be available as /dev/hdc1 (first partition (c) on the first device (c/a) on the second IDE bus (cd). Don't for get to un-mount the filesystem and stop the card (cardctl eject 1).

Internal Modem

I haven't tried to get this to work. Let me know if you have luck.

Swivel Sensor

There is a sensor in the swivel on the keyboard that is used to trigger a portrait/landscape mode switch of the display when you start using the keyboard. I have not tried to get this working yet, but it will require information about the hardware to get it to work. I don't know how to access this sensor yet.

Docking Station

I didn't get a docking station, so I don't know how to get it to work. Let me know if you have.

Copyright 2003 Michael Rolig

Valid HTML 4.01! Valid CSS!