Andy Schofield - Linux on an HP TC1100 Tabletpc

This records my experience in using linux on a tc1100. Any use you make of these resources as done purely at your own risk.

News

  • 5th July 2005: Now running CentOS4 as a long term solution to the upgrade treadmill. Specific instructions for hardware setup are here.
  • 21st Mar 2005: updated the patches for linux 2.6.11.
  • 2nd Nov 2004: updated the patches for linux 2.6.9.
  • 28th May 2004: Installed Fedora Core 2. Did fresh install. ACPI works much better out of the box (it uses a 2.6 kernel). Have still compiled a custom kernel to get the pen to work using the patches below.
  • 11th May 2004: RF kill switch can be toggled. Big thanks to Jamey Hicks.
  • 7th May 2004: Pen is now working! Big thanks to Chris Kemp for this.
  • 14th April 2004: Kernel 2.6.5 recognizes acpi battery and allows the wireless/bluetooth to work (inheriting the RF status from windows).
  • More news...

Quick links to kernel patches

The specification of the tc1100

The TC1100 is a centrino tabletpc capable of acting as a hybrid laptop with a detachable keyboard and pointer. The full spec and details can be found here.

What works and what doesn't under linux

Device My Current Status Comments
Graphics card

Works
(both in landscape and portrait modes)

Some flickering issues when switching back to VGA mode after an X session making the VGA unusable afterwards. This can be cured by using framebuffers (see below). Note: Issue is solved using nvidia drivers release (5336).
Sound card Works Module i810_audio and ac97_codec under 2.4 kernels and snd-intel8x0 under 2.6 kernels.
Keyboard and pointer Works A usb-hid device (Jing-Mold USB K/B+Mouse)
Ethernet card Works Broadcom - kernel module b44. Alternatively the broadcom supplied one (bcm4400) which seems to work better if you have updated the broadcom windows drivers.
WiFi (wireless) Works

Requires kernel 2.6.5 or greater. (For more details see below).

Bluetooth Works See above. Device is recognized and works.
Pen Works Needs a kernel patch to initialize the device under acpi. See below for the details.
InfraRed Works This uses the nsc-ircc module. Note setserial finds /dev/ttyS1 first and this needs to be undone before loading the module (see below).
ACPI Mostly works This is off by default in FC1. Activate it by adding acpi=on to the kernel boot parameters. It will then power down correctly. Battery status requires kernel 2.6.5 or greater. ACPI sleep states suspend, mem and disk are not stable (suspend and disk restart immediately, and suspend stops but does not restart correctly).
Modem Works The newer smartlink drivers (for example, 2.9.6) work perfectly. Just follow the README.
Jog dial Works  At least it works as an up/down arrow and enter key.

Installation of Fedora Core 1

Creating partitions. I use partitionmagic to shrink the single 37GB NTFS partition that this machine comes with. Now, on arrival my machine had a filesystem error which caused problems for partitionmagic. Use the command prompt under XP to check your C drive:
chkdsk c:
If this reports any errors, run it again but now with the option to fix. It will run check and fix the file system at the next reboot:
chkdsk c: /f
I had to do this four times before the error (in the volume bitmap file) was fixed. Then you can resize the partition.

Performing the installation: I used a Sony MPD-AP20U usb2 portable CDRW/DVD. The tablet booted off the installation disks without problems. However, if you perform a graphical install, the keyboard and pointer no longer works. The tablet buttons (but not pen) do work and you can get along way in the installation using the jog dial - until you have to enter the root password and then you are stuck. So you need to do a text install. This works without problems.

Getting the pen to work: While there have been reports (Mika Salminen) that this works out of the box with XFree version 4.3.0.1, I have had to perform the following steps to get the device working.

  • Download and apply this kernel patch (based on a driver from Chris Kemp). The patch is for kernel 2.6.11. You also need to apply this patch for post 2.6.10 kernels.
    [There is an older patch made against kernel 2.6.9 and an even older patch made against kernel 2.6.6 which should work with 2.6.5].
    You need to select the wacom_acpi driver in the list of serial drivers.
  • Install the linuxwacom drivers.
  • To test the pen is working:
    • Load the module (modprobe wacom_acpi) if it is not compiled into your kernel.
    • The port needs some more initalization which can be achieved by doing echo "1" > /dev/ttyS4
    • Then execute wacdump -f c100 /dev/ttyS4
  • To get the pen to work as a point device you need to modify your /etc/X11/XF86config file as described in the linuxwacom howto. There are two steps: add the input device and tell the server to use the devices.

Graphics card setup

  • Getting the VGA screen to work: (Update: nvidia drivers release 5336 solve this issue making the rest of this section unecessary unless you want a 1024x768 text mode). While the VGA screen works initially, it flickers and becomes unreadable on quitting the X-windowing system. Restarting X and/or using an external monitor worked fines. Using the nvidia drivers makes no difference and it looks like a refresh rate under VGA is too high. The only way round this I found is to use VESA framebuffers (and even then not all modes avoid this problem). If you compile only the vesafb modules into the kernel and add vga=792 to your kernel boot parameters you will get a 1024x768 screen with 24bit colour and the mode will work on leaving X. Other VESA modes exist but some seem to have the flickering problem.
  • My XF86Config file for screen rotation. It was based on that used by many on a TC1000.
    • The default screen layout is in landscape mode using the nvidia drivers with the pen enabled as an input device. This is started using startx
    • The alternative is the screen in portrait mode using the nv drivers (nvidia ones won't do rotation). Using these drivers will give the VGA flickering issue discussed above unless you use framebuffers. The pen is also enabled and some calibration has been done but your mileage may vary. This is started using startx -- -layout "Rotate"
    • The randr driver which allows the screen to be rotated while X is running only works with the Vesa driver and I have not bothered with this. Enabling the option seems to break the nv driver rotation.

About the wireless device: Its an IntelPro LAN 2100 mini PCI card which is not supported in Fedora core but there are various drivers now available.
Some use the windows drivers. I have tried:

  • the linuxant one (it finds and apparently initializes the card but no power to the device. (Version 1.52).
  • ndiswrapper. Similar to the above. (Version 0.5).

There is now an intel supported development driver which is in early stages but is more promising for the long run. Versions 0.40 and later seem to work without problems.

However, for any of the above drivers (and the bluetooth) to function there is an RF kill switch which needs to be switched on. This is what the Qmenu in windows does for you. Your kernel also needs to have enough ACPI functionality to inherit whatever state the RF kill switch was in under windows. As of writing this now works in vanilla kernel 2.6.5 but not earlier kernels.

RF switch: Alternatively you can download and apply the following patch to a 2.6.9 kernel - (it should still work for 2.6.11 kernel but for older kernels try this one). This is based on a driver written by Jamey Hicks and you will find it in the ACPI section of the kernel configuration. With this driver loaded you can toggle the state of the wifi in linux using the command:
echo "on" > /proc/acpi/wmi/WMID/wlan
to swtich it on and you can switch it off with the obvious
echo "off" > /proc/acpi/wmi/WMID/wlan
Windows will inherit the state you leave the wifi in under linux.

Getting the Infrared to work: You need to disable the serial port found on /dev/ttyS1 by adding a line like
setserial /dev/ttyS1 uart none
somewhere in your init scripts. (In Fedora core you can create a file /etc/rc.serialconf which contains this line. It is then sourced in /etc/rc.sysinit.) You then need to load the module. You can do this with
modprobe nsc-ircc
irattach irda0 -s
irdadump will then show infrared devices in the vicinity.

Diagnostic information

Here is how the fedora core 1 kernel sees this machine as well as some other diagnostic info:

  • Output of dmesg for fedora core 1 stock kernel.
  • Output of lspci -v for fedora core 1 stock kernel.
  • Output of dmesg for kernel 2.4.25 with acpi patches (20040220) and acpi debugging on.
  • Output of lspci -vv for kernel 2.4.25.
  • Output of acpidmp for kernel 2.4.25
  • Output of dmidecode for kernel 2.4.25

Older news

  • 12th March 2004: tried out the ipw2100 wireless driver but "Radio disabled by RF switch".
  • 8th March 2004: Infrared works, the modem works and I have cured the flickering issue in console mode. Not much other news. I am using 2.4.25 and will wait until Fedora Core 2 comes out before switching properly to the 2.6 kernel.
  • 16th December 2003: Tried out kernel-2.6.0-test11 in an attempt to get more devices working but this produced no more functionality than I had with the out-of-the-box FC1 below. I am in the same position that I was earlier - it is a functioning fine as a laptop but without many whistles and bells.
  • 29th November 2003: Installed Fedora core 1. No customizations done yet and that is unlikely to change until after term finishes.

 

Useful Links

Other sites that may help include: