Compaq TC-1000: Fedora Core 4 Installation

Fedora Core 4 Installation on a Compaq TC-1000

Email comments and corrections

Summary

I've sold my TC-1000 on Ebay. It was fun to give it a try but it never was as useful as I imagined it would be. A couple of observations. Tablet PC's have a restricted user interface which makes interacting with them very difficult. While you can argue that hand writing is more expressive than the keyboard it is only more expressive to other humans. Communication from human to human might be more natural but from human to computer is difficult. The current pc interfaces are built around mouse and keyboard interaction. Unless you have very carefully engineered the interface working with a pen is difficult. I can imagine that tablet pc's would be great for data input. Entering forms, especially with check boxes, would be great with a wireless tablet pc but even here I would have a hard time saying it was the right solution. Wireless access is not always reliable. At best a tablet pc is going to get 3hrs. if running time and it's heavy. A pad of paper still beats the tablet pc in most respects. It's cheap. There is lots of storage. Who cares that you can store the equivalent of 300,000 sheets of paper. How many pages can you write in a day anyway? I can spill a cup of coffee on my pad of paper and probably still read what was written on it.

FC4 notes: I'm in the process of updating this for fc4. I seem to be having some problems with the pen drivers in fc4 but the audio problems are fixed and I've put in a bug report and talked with one of the xorg people and the rotation support is kind on flakey so I guess the hack for randr support is going to have to stay for now.

Update: Pen drivers are working fine. Seems to be some problem with the rc.local running setserial. The gizmod driver looks very promising for utilizing the jog dial.

Nearly flawless installation. The nvidia driver supports "on the fly" rotation. The only problem is that the pen drivers don't receive an event and remap the coordinates for the new layout.

Terminology

I'll refer to the device that is used in conjunction with the pen for input as the 'tablet' and to avoid confusion I'll refer to the entire computing device collectively as either the 'TC-1000' or 'Tablet PC'. I'll also refer to the input devices located along the side of the unit as 'side keys' or 'side buttons' which include a 'jog dial'. The three buttons located on the top border of the unit as the 'tablet keys' or 'tablet buttons' and the buttons located on the the pen itself, one on the tip and the other on the side, collectively as the 'pen buttons' and the 'pen tip button' and 'pen side button' individually.

Unresolved Problems

Pen drivers dont remap coordinates when rotated with xrandr. It's kind of hard to explain the problem because the coordinate references are changing but when rotated the movements in one axis controls movement in the opposite axis. I suppose this would be the proper operation for someone using a desktop input tablet and a monitor. When you moved the pen from yourself and away from yourself it would move the cursor up and down on the screen and after rotations and re orienting the monitor the same motion would still move the cursor up and down on the screen. I suppose the problem is that with a tablet the input tablet is affixed to the monitor so there is no way to reorient the screen with respect to the input tablet. (when you rotate the screen so you are looking at it the right way you are also rotating the input tablet). The irony is that having randr for the monitor is great but we need to NOT have randr for the input tablet.

Table of Contents

  1. Hardware Specs
  2. Installation Methods
    1. Docking Station
    2. Memory Stick
    3. PXE Boot
    4. External Drive
    5. From Windows
  3. Anaconda
  4. Hardware Configuration
    1. Ethernet
    2. Wireless
    3. Modem
    4. Sound
    5. Longrun
    6. Software Suspend
    7. PCMCIA
    8. Compact Flash
    9. Xorg
      1. Display
      2. Pen
      3. Side Keys/Buttons
    10. Swivel Keyboard/Mouse
    11. Swivel Sensor
    12. Docking Station
    13. Power Management
      1. ACPI
  5. Software Configuration
    1. Gnome
    2. Applications
  6. Screenshots
  7. Links

Files


Hardware Specs

Processor 1.0 Ghz Transmetta Crusoe TM5800
Memory 256MB PC133 expandable to 768MB via one expansion slot
Hard Drive Shock mounted 30/40/60 GB hard disk * CD-ROM drive in optional dock
Display 10.4" SVGA TFT 1024x736
BIOS Phoenix
Graphics Card Nvidia GeForce2 Go
Dimentions 10.8" x 8.5" x 0.8"
Power Lithium-Ion, 40WHr ("over 5 hours")
Communication 10/100base-T, 56K V.92 Modem, internal 802.11b wireless LAN radio (opt.)
Ports 2 USB 2.0, audio/mic, RJ-11, RJ-45, VGA, 1 PC Card Type II, 1 CF Card Type II/III
Options Multi-Bay, PC Dock, Carry Cases
Keyboard 95%-scale, 83-keys

Installation Methods

  1. Docking Station CDROM/DVD
  2. Probably the easiest method of installation. Press <F10> at boot and change boot order under "boot" menu. Make sure that cdrom is listed before hard drive.

  3. Memory Stick
  4. The TC-1000 is able to boot off of a usb memory stick/pen drive/flash drive....whatever you want to call them. Copy diskboot.img from the installation disk under images using dd if=diskboot.img of=</dev/yourusbdrive>. Insert usb drive with power off. After power on pres <F10> to access the bios. Under the boot menu highlight "hard drives" and press return. Select the flash drive and use plus and minus to move it above the hard drive. Exit and save. It should boot from the pen drive. Install as usual.

  5. PXE Boot
  6. PXE (Pre eXecution Environment) allows you to boot from the network card and requires a DHCP and TFTP server and either an NFS, FTP or HTTP server for the installation files. I have successfully booted and installed Fedora Core 4 from a PXE boot. See Fedora Core 4 installation via PXE How to. PXE booting can be either set in the BIOS by moving PXE up in the boot order or by pressing <F12> after powering on.

  7. External drive (CDROM/DVD)

    Untested. I have read that there are problems booting from external cdrom devices other than the "Dock".

  8. From Windows

    Untested. Heard reports that others have been successful with this method.

Anaconda

There are no specific needs or recommendations for the initial installation. See Fedora Core 4 Installation Guide for install instructions. For post install setup see Fedora Core 4 Tops and Tricks and Fedroa Core 4 Linux Installation Notes. These guides are not specific to the TC-1000 but most of it is relevant to the TC-1000 and are a good place to start. Further application suggestions are given later in this document.

Hardware Configuration

Ethernet

Automatically detected and configured. Use system-config-network or edit /etc/sysconfig/network-scripts/ifcfg-eth1 to change settings.

Wireless

Download and install rpm atmel firmware drivers from here or locally here. There seems to be some trouble turning off. The atmel driver doesn't suppport "iwconfig eth0 txpower off" and "iwconfig eth0 power [option] only blinks the wireless LED, I'm not sure if wireless is off or if the LED just doesn't go out. I've read somewhere that rmmod'ing the driver turns of the device. I'll have to see if there's a better way. Other than that it works fine including WEP.

Use system-config-network or edit /etc/sysconfig/network-scripts/ifcfg-eth0 to change settings.

Modem

Gentoo users have successfully configured this but I haven't gotten to this yet. Agere Modem on an AMR or VIA AC97. Supported with Smart Link Driver/Daemon. The link requires that you agree to a license so I will not post a direct link.

Sound

Auto detected and configured.

Longrun

Add the following lines to rc.local

modprobe cpuid
modprobe msr

To choose a longrun profile enter
longrun -c /dev/cpu0 -m /dev/msr0 -f [performance|economy]

It works but udev doesn't set up the devices where longrun thinks they'll be by default. You can either pass the parameters to longrun or hack udev to set up the devices where longrun looks for them by default.

Software Suspend

I managed to get it to suspend but cant resume. Here are some good links
Software suspend with linux and fedora core
www.suspend2.net

PCMCIA

Haven't tested but seems to autoconfigure fine.

Compact Flash

I think it works fine but haven't tested.

Xorg

The console "flickers" and generates random noise by default. This is fixed by using the frame buffer console, add vga=<MODE_NUMBER> to boot parameters.

You will still get the flickering and corruption when switching from X to a console but it seems to be fine when X is closed and you are just running a console

vga modes
Colors Depth 640x480 800x600 1024x768 1280x1024 1600x1200
256 8 bit 769 771 773 775 796
32,768 15 bit 784 787 790 793 797
65,536 16 bit 785 788 791 794 798
16.8M 24 bit 786 789 792 795 799

Display

nv driver

There are a few options with the nv driver to choose your layout. There are three configuration files for this. xorg.nv.conf, xorg.nv.landscape.conf, and xorg.nv.portrait.conf. Copy all three files to /etc/X11. If you are starting in graphical mode (init 5) create the following link to your prefered default layout. You may have to delete xorg.conf if it's alreay there.

ln -s /etc/X11/xorg.nv.[portrait|landscape].conf /etc/X11/xorg.conf

or you can boot to a console (init 3, edit /etc/inittab and change line id:5:initdefault to id:3:initdefault) and then start X with

startx -- -conf /etc/X/xorg.nv.conf -layout [landscape|portrait]
or
startx -- -conf /etc/X/xorg.nv.portrait.conf
or
startx -- -conf /etc/X/xorg.nv.landscape.conf

You can only pass the -conf argument as root. As non root you'll have to decide which config you would like to be your default and create a sym link from xorg.conf.

I was thinking of making a small toobar laucher run a script to relink xorg so that when you logged out and back in it would start in the other layout.

nvidia driver
The latest 1.0-7667 driver(local) from nVidia works fine and supports on the fly rotation. The nvidia installation instructions are here. The driver can also be installed from rpm from several rpm repositories but the build is specific to your installed kernel. Configured xorg.nvidia.conf

Install grandr applet. Untar, configure, make, make install. Find the file GrandrApplet.server and move it to the /usr/lib/bonobo/servers/ directory. The applet should be listed when you left click on the panel and choose "Add to panel". Or from a terminal run xrandr -o [left|right|normal|invert]. These are absolute directions so running xrandr -o left four time doesn't turn it in a circle. When you're done straining your neck to the left just type xrandr -o normal. The applet is cool but I would suggest testing it from the terminal as the pen coordinates do not get rotated and it's going to be very hard to use your pen to get the applet to change the screen back.

I'll see if I can put together an rpm for grandr.

Pen

  1. Download the serial port driver
  2. Unpack it, move 2.6 make file "mv Makefile-2.6 Makefile", and build: make ; su -c make install. (the driver will be installed for the currently running kernel. Run again if kernel is upgraded)
  3. Then load the module: su -c modprobe fpi2002
    Add the above line to /etc/rc.local to have it load at boot.
  4. Configure the serial port: setserial /dev/ttyS0 autoconfig
    Add the above to /etc/rc.local as well
  5. Download the xfree86 driver.
  6. Install the driver: cp tc1k_drv.o /usr/X11R6/lib/modules/input/
  7. Configure X or download the following xorg.nvidia.conf , xorg.nv.landscape.conf, xorg.nv.portrait.conf
  8.           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"
              #Option "InvertX"
              #Option "SwapXY"
              #Option "Rotation" "CCW|CW"
              EndSection
              

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

  9. link to the profile that you would like to default to
    ln -s /etc/xorg.[nvidia|nv.landscape|nv.portrait].conf xorg.conf
  10. Restart X

There is another problem with the pen and rotation for both the nvidia and the nv drivers. The mapping for three side buttons does not get remapped for portrait mode. It seems to send events correctly when in landscape mode but places them in the wrong place when in portrait mode. You can run xev and then run the pointer around the perimeter and look for the events to find out were it has placed them.

I hacked the tc1k drivers to add support for randr so thay they work correctly with nvidia's drivers. It only works correctly with the -o normal and -o left options but that should be good enough for now. This is a real hack job but it works. Perhaps the lame fix will shame someone with more knowledge about Xinput drivers to fix it properly. But until then it works for me. Maybe it'll work for you too. Here it is. tc1k-1.1zw1.tar.gz

Side Keys/Buttons

Gizmod may be a better solution to utilizing the buttons. There are no rpms for this package and there are some issues compiling it for FC4 but are easily fixable. There also is not rc.d start up script...yet.

The following makes the keys work in a console but not x

        setkeycodes e002 130
        setkeycodes e003 131
        setkeycodes e004 132
        setkeycodes e005 133
        setkeycodes e006 134
        setkeycodes e007 135

        loadkeys /etc/tc1000.map
        

tc1000.txt
          keycode 130 = F16
          keycode 131 = F17
          keycode 132 = Tab
          keycode 133 = Escape
          keycode 134 = Up
          keycode 135 = Down
        

Swivel Keyboard/Mouse

Fine. Some xmodmap changes. USB device.

Swivel Sensor

Apparently there is a sensor to detect when the keyboard is rotated to the front so that landscape mode can be automatically selected.

Docking Station

Drives are emulated as scsi devices

Power Management

ACPI

Haven't gotten to this yet.

Misc

configure hdparm with /etc/sysconfig/harddisks
add no atime to drive partitions in /etc/fstab
Laptop mode? article. Laptop mode tools rpms. (local) AES encryped file system?
lm_sensors config
Custom kernel

Software Configuration

Gnome

Applications

Applications

Monster dependencies
Text Input
Gok Gnome Onscreen Keyboard
xstroke Fullscreen gesture recognition for X tar
Dasher Text Input
Speech Recognition
Notes/Journal
Gournal Monster dependencies
Notemeister
Sticky Notes
Jarnal - a Java Journal
Freehand
Tabatha
OneFinger
Denim
Wavy
GpsDrive
Mozilla navigation addons
Speech recognition

Screenshots

Landscape Portrait