Last Updated Oct. 11, 2001
Linux on a TI Travelmate 6020
Machine Overview Plan of Attack Installation Media Drives Advanced Power Management (APM) Sound X Output of dmesg Not Tested Support and Links Feedback
Features (from manufacturer's specifications)
- 120MHz Intel Pentium
- ACC 2056/2057 chipset
- 64MB EDO max
- Cirrus Logic 7548 video with 2MB RAM
- 11.3" TFT display capable of 800x600x64K
- 1.08GB hard disk
- ESS 1888 sound chip
- TI 1130 PCMCIA controller (1 Type III or 2 Type II/Type I)
- "The Point" pointing stick
- Parallel port
- PS/2 port for mouse or keyboard
- Serial port (9-pin)
- VGA port
- IrDA support
- Audio line in, line out, and microphone in jacks
- Lithium Ion battery
- 3.5" floppy drive module
- Optional 10x CD ROM drive module (mutually exclusive with floppy module)
- Overall dimensions (WxDxH) 9" x 12" x 2"
The configuration I have includes 32MB of RAM and the optional CD ROM drive. I also have a Xircom 10Mbit ethernet and a MultiTech 28.8 modem PCMCIA card.
The machine came with Windows 98 installed. I wanted to add Linux to the system without destroying the Windows installation. With there being just over a gig of hard disk space I decided to split it evenly between the two operating systems.
I used a utility called FIPS.EXE to resize the FAT partition to 500MB. See the official FIPS home page for more information. This leaves roughly 500MB for both Linux root and swap partitions.
I had originally wanted to load RedHat 7.1 because I had recently upgraded my desktop system without any major issues but immediately ran into a few problems with the laptop. I have the distribution on my desktop machine and intended to install to the laptop via FTP but there seemed to be a problem with PCMCIA support when coming out of a cold boot. I found that first booting into Windows then rebooting with the RedHat boot floppy gave me access to the PCMCIA network card. The next problem was in selecting the packages to install. I could not come up with a satisfactory set of features that would fit into the 500MB of disk space (actually ~430MB owning to a 64MB swap partition). I decided to abandon RedHat and try a different distribution.
I had installed the Slackware distribution on other systems before and decided to give it a try here. The current Slackware release is 8.0. There were no PCMCIA issues and I could select a minimum number of packages for what I was looking to accomplish but the installation was complicated by the lack of an FTP option. The only network install option is via NFS. Luckily setting up a NFS server on the desktop system was not difficult. Check out the NFS-HOWTO for further information.
The Slackware install process was relatively straightforward once the decision on what boot, root, and supplemental disks to use. I used the bareapm.i boot disk, the color.gz root disk, and the pcmcia.dsk supplemental disk. I elected to go with kernel 2.2.19 though 2.4.5 was also an option. I began with just the bare necessities then later added the X and KDE packages.
The floppy drive works without a problem. The internal 1.08GB hard disk is partitioned with roughly 500MB assigned to a FAT partition, 64MB to a Linux swap partition, and 430MB to a Linux root partition. Since the CD ROM module wasn't present during installation the link in the /dev directory is not correct. It is correctly identified as /dev/hdc when it is present though. It does not appear in my /etc/fstab but could easily be added. I changed the link in the /dev directory as follows (logged in as root):
ln -s /dev/hdc /dev/cdrom
Due to some sound problems that I thought were related to the hard disk drive performance I added the following line to /etc/rc.d/rc.local. As it turns out the sound problem was unrelated to the hard disk performance and I can't say that this line actually improves performance but it has not caused any problems. See the hdparm man page for more information.
hdparm -c1 -m16 -u1 /dev/hda
This is a little disappointing. The BIOS in the machine was upgraded already to the latest released by the manufacturer and is reported by the kernel as APM 1.1 compliant. The good news is that it does support battery level and AC status when queried, however it does not generate evens when the AC status changes. It does allow the kernel to automatically turn the power off during a system shutdown though. It seems to allow entering sleep and suspend modes however it wakes up immediately after entering either one. The BIOS release notes mention that the BIOS monitors IRQ5 and IRQ10 for activity to know when to wake up. I've ensured that these IRQs are free and yet the BIOS continues to wake up immediately. I have not tried to use the hibernate function.
The ES1888 is supported as a SoundBlaster compatible. A simple modprobe sb from the command line automatically detected the sound chip and initialized it. Since the mixer default settings include non-zero mic gain and the internal mic is placed physically close to the internal speakers I was greeted with a loud feedback squeal. This being better than nothing - I was happy.
However over the next few seconds something strange occured. The squeal got softer and softer until it could no longer be heard. Was the sound chip smart enough to automatically reduce the mic gain to eliminate the feedback? Actually no. Using the play command to play some KDE sounds resulted in silence. I needed a console program that could adjust the mixer settings after initialization to set the mic gain to zero. If one is provided with the Slackware distribution then I missed it. I went looking for an found the setmix package, downloaded it, built it, and installed it. I ran a getmix to first get a file with the current settings, then modified it so that the mic gain was zero. I then added a line to /etc/modules.conf as follows:
post-install sb /usr/local/bin/setmix -f /root/.mixrc
Now the setmix command would be run after the sb module was loaded and set the mic gain to zero. After rebooting I again loaded the sb module from the command line. This time the feedback squeal lasted less than a second and then was silent.
Then I tried to use the play command again to play some of the KDE sounds. As long as a sound was playing the volume was constant, but as time passed between playing sounds the volume steadily decreased. To make a long investigation short, I discovered that the ES1888 sound chip has hardware inputs for voume up and volume down, and that they seem to be controlled by the keyboard controller (an ACC2042). I suppose the control could also come from either of the core logic chips. In any case these hardware volume control pins both come active after power up so to the sound chip it looks like the volume down key is being pressed continuously. I have been unable to locate documentation on the system board to provide an appropriate fix, but I did find a workaround. The signals controlling the volume up and down pins assume their correct inactive state if the volume up or volume down key sequence is issued from the keyboard. This is a combination of the Fn key and PgUp for Volume Up and PgDn for Volume Down. I added another call to the setmix function in the .bashrc file in my home directory. I just have to remember to hit the volume control on the keyboard before logging in.
Just when I thought the saga was over something else came up. I tried to play a MP3 file and it played at a very slow speed. I then did a comparison of the KDE sounds on the laptop with those on my desktop and found the laptop playing them slower also. I hit the web searching newsgroups for any information. I found a number of articles describing the same problem but none with a solution that worked for me. Luckily I was able to get hold of some documentation for the ES1888 sound chip. I then dug into the kernel driver source code and found some bugs in the sample rate calculation for the ES1888. I made some modifications and rebuilt the module. I now have sound that plays at the correct speed. The patch was made to the sb_ess.c file and is available here. The patch has been incorporated into experimental kernel version 2.4.9-ac12 here.
There is still one problem with sound. It skips and breaks up when running KDE under XFree86. I don't know how to prioritize sound processing over graphics, or even if it is possible. Given the work I've put into the sound system already, I'm satisfied with the performance for now.
The version of XFree86 included with Slackware-8.0 is 4.1. It correctly detects the cirrus chipset used in the laptop but there was a little bit of trial and error in getting the configuration correct. I used the XF86Config file from the Linux on a Travelmate 6030 website as a guide, but it was meant for XFree86 version 3.2 and needed to be updated for use in 4.1. I started with the XF86Config file generated by xf86config and edited the monitors section and added the 800x600 Mode line. The acceleration totally hung the machine when X was started so I added the noaccel option. The Cirrus driver documentation hasn't been completed for version 4.1 but did have some details in earlier versions. I tried the options there that made sense and eventually found that adding the "no_mmio" option allowed the driver to run with acceleration. I currently have 800x600 with 16bbp (64K colors) working with the XF86Config file found here.
I am running the K Desktop Environment (KDE) as supplied in the Slackware-8.0 distribution. The installation went without a problem and once XFree86 was configured correctly I was able to login and type startx to launch KDE. I have thought about adding the required commands to launch KDE from boot so it can handle logins but have not yet done so.
Here is what the startx command prints out from the time it is run to the time I exit KDE.
Here is the output of the demesg command on the laptop.
- Serial Port
- Parallel Port
- VGA Port
Texas Instruments got out of the PC business and sold what they had developed to Acer. Acer has setup a website for the support of the TI Travelmate 6000 Series which contains driver downloads, specifications, user's manuals, and other information.
You can send me feedback by e-mail at email@example.com. Thanks, Craig Mahaney.