This web page documents my experiences installing and using Linux on a Compaq Presario 1200-XL106 notebook computer. This machine is fairly low-end by the standards of notebook computers in February, 2000, when I bought it, although it has a few components that are very recent and therefore require special consideration in a Linux environment. The computer is capable of running Linux, however.
There are several other machines in the Compaq Presario 1200 line, including the 1247 and several with model names of the form 1200-XL1xx. Most or all of these computers are very similar internally to the 1200-XL106. They differ in the standard amount of RAM, the screen size and type, the hard disk size, and so on. Chances are Linux issues would be similar for any of these models. If you're considering one, then, this web page may be of interest; but be sure that the model you're considering is similar internally, based on the motherboard chipset, which in this computer controls just about everything of interest.
The 1200-XL106 isn't a flashy computer by the standards of early 2000. Its basic specifications include:
Before buying this computer, I considered several others in the $1000-$1500 price range, including the Toshiba 1555CDS and 1605CDS, the Hewlett-Packard N3110 and N3210, the Compaq Presario 1247, and the eMachines eSlate 400. The prime factor in favor of the Compaq models for me was that they have keyboards that are slightly better than those of most other laptops in this price range. I had initially favored the Toshiba models because of the Toshiba Linux utilities and the good driver support for the Toshiba's underlying hardware. After spending some time using the Toshibas' Trackpoint pointing devices and the Compaq's keyboard, though, I decided I preferred the touchpad pointing device used on the other manufacturers' machines and the Compaq's keyboard. My choice of the 1200-XL106 over the 1247 was as much a matter of chance as anything else; the local Circuit City was running a $100 rebate special on all notebooks, but the 1247 was out of stock. I would ordinarily have bought the 1247, because it cost $200 less than the 1200-XL106 and I didn't think it was worth quite that much more. The rebate and the 1200-XL106's better features nudged me into buying it.
Because the computer lacks an Ethernet port, I added a Linksys EtherFast 10/100 PCMCIA Ethernet adapter. This product fits into the computer's PCMCIA slot and uses an external RJ45 connector that links to the Ethernet adapter via a short cable.
I chose to install Linux Mandrake 7.0 on the computer, primarily because I knew from others' posts that the Trident Blade3D graphics chip was only supported in XFree86 3.3.4 (or thereabouts) and above, so I wanted a very current distribution to get the latest XFree86 possible. Linux Mandrake 7.0 comes with XFree86 3.3.6. (I've got a web page devoted to Linux distributions, so check it for information on others, if you're interested. There's little on that page about notebook-specific features, though.)
The 1200-XL106 came with two partitions: A ~4.5GB C: drive for Windows 98 2nd Edition and a ~1GB D: partition with data and recovery information. I backed up both partitions to CD-R using my home network and then used PowerQuest's Partition Magic to remove the D: partition, shrink the C: partition to 2.4GB and gave the remaining 3.2GB to Linux. For simplicity's sake, I used only two logical partitions for Linux: one for swap and one for everything else. When I was finished with Partition Magic, I put the Mandrake CD in the CD-ROM drive and rebooted.
The Mandrake installer booted from the CD-ROM drive without problems, entered GUI mode, and installed smoothly. Installation was somewhat complicated by X configuration. Fearing the potential for problems, I told Mandrake not to automatically start X at system startup. I opted to install LILO in the hard disk's MBR.
When I rebooted after installing Linux, the system booted without problems into a text-mode display. When I tried startx, I got a display, but only at 640x480, and the /etc/X11/XF86Config file didn't seem to have any entries for 800x600 modes. Apparently the install had failed to detect the video chipset correctly, and so gave me plain VGA mode. I first tried using xf86config to correct the problem, but the XF86Config file it produced was unusable. I corrected the problem by running the XFdrake program, which includes the ability to test display modes during the configuration. After some experimentation, I managed to find an appropriate configuration, using the XF86_SVGA server. If you try using my XF86Config file in another distribution, note that you may need to edit it for the assumptions of your distrubition, such as font path entries.
When run with the original 32MB of RAM and Mandrake's default KDE setup, the 1200-XL106 is decidedly sluggish. (4MB of the computer's 32MB of RAM are dedicated to video support, so it's really just 28MB of RAM.) I'm not a big KDE fan to begin with, so I configured the computer to use icewm instead, resulting in much better performance. Expanding the RAM to 96MB also helped, even when running KDE.
Some of the 1200-XL106's hardware is fairly bleeding-edge stuff, at least insofar as Linux drivers are concerned. The computer uses the VIA MVP-4 chipset, which incorporates both sound and graphics functionality, as I've already mentioned. As of yet, I've had no problems with the computer's video display, aside from having to experiment a bit with the configuration to get it working, as already noted. The sound, on the other hand, presents the need for compromises under Linux, and the modem and USB ports also present challenges.
The 2.2.14 kernel included with Mandrake 7.0 includes a sound driver called via82cxxx which works with the MVP-4 chipset. Unfortunately, the version included with the 2.2.14 kernel uses SoundBlaster Pro compatibility mode, so the board only supports 8-bit sounds, and sound quality leaves a lot to be desired. What's worse, the driver supposedly works with SoundBlaster-style mixer applications, but in practice these don't work. Therefore, the system thinks it's playing sounds, but the volume is set to 0 unless the system was just booted from Windows. Perhaps using a DOS boot partition along with an appropriate DOS mixer application and an automatic call to LOADLIN.EXE to boot Linux would get around this problem, but I've not looked into the matter. I don't even know if appropriate DOS drivers exist for the MVP-4.
The 2.3.4x-series kernels include a more up-to-date via82cxxx driver. This one still uses SoundBlaster 8-bit mode, but it at least supports the AC'97 mixer, and so works without having to boot Windows first. Unfortunately, the 2.3.4x sound driver doesn't compile with the 2.2.14 kernel. I've been unable to get either of these drivers to support MIDI, except through TiMidity, which produces a very raspy sound quality because of the conversion from 16- to 8-bit sound. The documentation indicates that work is ongoing to improve the features of the driver, so future versions will support full 16-bit sound.
The 4Front shareware OSS driver set includes a beta-level driver for the VIA 82c686 that works reasonably well with the Presario -- when it doesn't crash the computer, which it does about 1/3 of the time when loading the module. The driver also produces increasingly choppy sound when playing long sound files, but it's OK for short files. Although 4Front responded to my first query relating to installation problems, they've been unresponsive to my query about their module hanging the system when starting.
The ALSA Project released a new set of drivers on March 11 (version 0.5.6) that includes a driver for the VIA 82c686a. I immediately tried this driver with a 2.2.14 kernel that I'd patched for USB support (see below). This is, by far, the best sound support available for this notebook. ALSA is a nuissance to compile and configure, but it works quite well, with full 16-bit sound support and smooth playback. I haven't gotten native ALSA MIDI functioning, but TiMidity works quite nicely with it. One caveat is that when I first tried this driver, it hung the computer. Installing the USB drivers first seems to fix that problem, or perhaps it was just a fluke the first time I tried it. One oddity of this driver is that it disables sound in Windows after a warm reboot, so I've got to power down the computer before booting Windows if I want sound in Windows.
The 2.2.x-series kernel USB support is weak at best, on any platform. The USB drivers in the 2.3.x-series kernel are far better, but still flakey on many platforms and for many devices. Unfortunately, the 1200-XL106 falls into this "flakey" category, at least through kernel 2.3.47. In theory, the machine should use the UHCI drivers. In practice, any attempt to load the drivers in kernels up to 2.3.47 results in a system hang. Later kernels fix this problem, fortunately; both 2.3.49 and 2.3.50 work fine.
I've taken to using a 2.2.14 kernel with the backport of USB support available from http://www.linux-usb.org. Doing so allows me to use the ALSA sound drivers (which have problems compiling with 2.3.x kernels, in my experience), as well as the Lucent software modem driver.
Like most notebooks today, the 1200-XL106 comes with a software modem. Compaq chose to go with a Lucent modem, which has certain advantages, because a beta version of a binary-only driver written by Lucent is available from http://www.linmodems.org. This driver was written for the standard Red Hat 6.1 2.2.12 kernel, but it does work with the 2.2.14 kernel included with Mandrake 7.0. The configuration script included in the zip file adds an entry to /etc/rc.d/rc.local that uses the -f option to insmod to force the driver to load even when the kernel version number doesn't match. The script also creates a /dev/ttyS14 driver file with appropriate major and minor versions to access the modem, and a link to that file from /dev/modem, so I can use the modem easily and in the expected manner.
For some reason, however, I wasn't able to use my preferred PPP dialer, X-ISP, with the Lucent modem. When I tried, the dialer reported that PPP exited abnormally. Fortunately, the KPPP dialer included with KDE worked better, even though I don't use KDE. The default KPPP volume-setting commands confused the Lucent modem software, though, so I removed them and it worked fine. I was able to achieve a respectable 50Kbps connection, and got appropriate actual download speeds when I checked.
The current Lucent driver doesn't work with the 2.3.x kernel series -- or at least, I can't load it even when using insmod -f because insmod reports that there are unresolved symbols in the module. There's a third-party project to develop an open source driver for the Lucent modem, but I've not tried the code. From the description, it's not yet fully functional. Personally, I don't have a lot of need for the modem, so I'm content to use the 2.3.x kernel (for better sound support) and reboot to 2.2.14 if I should need the modem.
Mandrake 7.0 comes with full PCMCIA support. The 2.3.x kernels I've tried support my PCMICA Ethernet adapter, so I've not had to muck with PCMCIA patches for 2.3.x kernels. When I tried using a 2.2.14 kernel with ALSA and a back port of USB, though, I had to go to ftp://sourceforge.org/pcmcia/ to get the full set of PCMCIA drivers for 2.2.x kernels. These compiled smoothly and work well, except for one detail: The Mandrake script for starting and stopping Ethernet networking (/etc/pcmcia/network) breaks when using the 3.1.12 PCMCIA package. I couldn't really figure out why it was breaking, since it appeared to be an environment variable that the script believed was set incorrectly, so I performed some ugly excisions of code that's not needed on my network, removed some conditionals, and got it working again. My solution is ugly but effective.
The main utility that deserves discussion is apmd, which works fine with the 2.2.14 kernel but presents certain glitches with the 2.3.4x kernels I've tried. Specifically, the Compaq keyboard includes a special function key, Fn-F4, which is used to kick the system into sleep mode. This works fine when running the 2.2.14 kernel, but if I hit this key when running 2.2.4x, it's more complex. Basically, it continues to work if there's no PCMCIA card inserted in the computer. If a PCMCIA card is inserted, though, then the system doesn't wake up properly. I ran across a description of this problem along with an alternative apmd package, but the alternative package doesn't work any better than the one included with Mandrake, and Mandrake's package is newer. In fact, Mandrake's package includes a script that appears to include code to get around the problem by shutting down the PCMCIA services, but obviously something about that code isn't working correctly with the 2.3.x kernel.
When I first wrote this web page, less than a month ago, I concluded that the Compaq Presario 1200-XL106 is less than ideal as a Linux platform, but that it's likely to improve in the near future. With the release of ALSA 0.5.6 and working USB support, it's done that. Everything now works, although to get to this state, it's necessary to engage in some gymnastics with drivers. Specifically:
In addition, you may need to upgrade XFree86 if you use a distribution that's less up-to-date than the XFree86 3.3.6 used by Mandrake 7.0.
In sum, I think that this computer is a good choice for use in Linux if you're willing to jump through a few hoops to get everything working correctly. If, like me, you want the best keyboard possible on a sub-$1500 laptop, the Compaq line deserves attention even with the extra configuration effort. If the keyboard is less important to you, you might want to look more closely at other products, which may require less in the way of unusual drivers and reconfiguration to get working.
Copyright © 2000 by Rod Smith, email@example.com
Return to my main web page.